<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>163657</bug_id>
          
          <creation_ts>2016-10-19 01:05:57 -0700</creation_ts>
          <short_desc>[DOMJIT] Add a way for DOMJIT::Patchpoint to express effects</short_desc>
          <delta_ts>2016-10-24 19:58:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162544</blocked>
    
    <blocked>162980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1241878</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-19 01:05:57 -0700</bug_when>
    <thetext>Let&apos;s start with a very simple one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242185</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-19 16:37:57 -0700</bug_when>
    <thetext>Ideally, we would like to express precise clobbering rules from DOMJIT code.
But it seems too intrusive...

So, let&apos;s start with a super simple one. DOMJIT offers preset of mutations. Like, Pure, NoSideEffect, SideEffect. Pure will reads World and def(). NoSideEffect reads World and write HeapObjectCount (Since it will create a DOM wrapper in many cases). And SideEffect reads World and write Heap!

For example,

nodeType =&gt; Pure
firstChild =&gt; NoSideEffect
appendChild() =&gt; SideEffect

We note that checks are already separated from CallDOM. So we don&apos;t need to account the exceptions by Checks for CallDOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242822</commentid>
    <comment_count>2</comment_count>
      <attachid>292333</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 01:30:09 -0700</bug_when>
    <thetext>Created attachment 292333
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242824</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 02:02:00 -0700</bug_when>
    <thetext>DOMJIT CallDOM ops get CSE-ed &amp; LICM-ed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243096</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 14:25:58 -0700</bug_when>
    <thetext>Discussed with Fil and Saam.
We should have some hierarchy based abstract heap in DOMJIT side.
This hierarchy will be encoded to the pair of integers.
And these integers will be told to DFG and FTL.
Then, DFG and FTL constructs DOMState heap with this integer.
It can offer more detailed DOM abstract heap than just telling it as DOMState. And it offers more chance to perform LICM &amp; CSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243251</commentid>
    <comment_count>5</comment_count>
      <attachid>292457</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 21:02:29 -0700</bug_when>
    <thetext>Created attachment 292457
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243445</commentid>
    <comment_count>6</comment_count>
      <attachid>292521</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 17:02:28 -0700</bug_when>
    <thetext>Created attachment 292521
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243447</commentid>
    <comment_count>7</comment_count>
      <attachid>292522</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 17:46:21 -0700</bug_when>
    <thetext>Created attachment 292522
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243449</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-22 17:47:42 -0700</bug_when>
    <thetext>Attachment 292522 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243450</commentid>
    <comment_count>9</comment_count>
      <attachid>292523</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 17:55:23 -0700</bug_when>
    <thetext>Created attachment 292523
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243461</commentid>
    <comment_count>10</comment_count>
      <attachid>292526</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 19:30:15 -0700</bug_when>
    <thetext>Created attachment 292526
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243470</commentid>
    <comment_count>11</comment_count>
      <attachid>292529</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 20:10:30 -0700</bug_when>
    <thetext>Created attachment 292529
Patch

I think it is almost completed. I need to add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243473</commentid>
    <comment_count>12</comment_count>
      <attachid>292530</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 20:29:41 -0700</bug_when>
    <thetext>Created attachment 292530
Patch

Add dumps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243481</commentid>
    <comment_count>13</comment_count>
      <attachid>292535</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 21:53:37 -0700</bug_when>
    <thetext>Created attachment 292535
Patch

Fix bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243482</commentid>
    <comment_count>14</comment_count>
      <attachid>292536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 21:56:07 -0700</bug_when>
    <thetext>Created attachment 292536
Patch

Fix bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243487</commentid>
    <comment_count>15</comment_count>
      <attachid>292539</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-22 23:03:40 -0700</bug_when>
    <thetext>Created attachment 292539
Patch

More fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243490</commentid>
    <comment_count>16</comment_count>
      <attachid>292541</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-23 00:26:21 -0700</bug_when>
    <thetext>Created attachment 292541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243492</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-23 00:30:01 -0700</bug_when>
    <thetext>OK, ready for reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243493</commentid>
    <comment_count>18</comment_count>
      <attachid>292542</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-23 00:43:35 -0700</bug_when>
    <thetext>Created attachment 292542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243494</commentid>
    <comment_count>19</comment_count>
      <attachid>292543</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-23 00:52:05 -0700</bug_when>
    <thetext>Created attachment 292543
Patch

Add more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243851</commentid>
    <comment_count>20</comment_count>
      <attachid>292543</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-24 13:14:11 -0700</bug_when>
    <thetext>Comment on attachment 292543
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=292543&amp;action=review

r=me with comments

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +        Told heap range is represented as DOMJIT::HeapRange. DFG will handle

Told?

&gt; Source/JavaScriptCore/dfg/DFGAbstractHeap.h:271
&gt; +        if (kind() == DOMState &amp;&amp; other.kind() == DOMState) {
&gt; +            Payload currentPayload = payload();
&gt; +            Payload otherPayload = other.payload();
&gt; +            if (currentPayload.isTop() || otherPayload.isTop())
&gt; +                return true;
&gt; +            return DOMJIT::HeapRange::fromRaw(currentPayload.value32()).overlaps(DOMJIT::HeapRange::fromRaw(otherPayload.value32()));
&gt; +        }

Why is this necessary given your above implementation?

&gt; Source/JavaScriptCore/dfg/DFGClobberSet.cpp:96
&gt; +            if (clobber.payload().isTop())
&gt; +                continue;

Why not just return &quot;true&quot; here or skip this check altogether since the below check should handle it?

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:922
&gt; +                write(Heap); // We do not assume that DOM operations will write(Stack).

I think this is what you mean by the comment: &quot;We assume that DOM operations will not write(Stack)&quot;.

Also, is this a valid assumption? What&apos;s guaranteeing this? It seems like if the dom operation calls arbitrary JS code, it&apos;s possible to write(Stack) via function.arguments or whatever.

&gt; Source/JavaScriptCore/domjit/DOMJITEffect.h:40
&gt; +    bool exitsSideways { false };

I&apos;d defer having this field until later when it&apos;s used (or if it ever becomes used).

&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.cpp:37
&gt; +

Style: extra new line not needed

&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:42
&gt; +    {

Please assert that end =&gt; being to protect against overflow.

&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:50
&gt; +    enum RawRepresentationTag { RawRepresentation };
&gt; +    explicit constexpr HeapRange(RawRepresentationTag, uint32_t value)
&gt; +        : m_begin(static_cast&lt;uint16_t&gt;(value &gt;&gt; 16))
&gt; +        , m_end(static_cast&lt;uint16_t&gt;(value))
&gt; +    {
&gt; +    }

Nit: Seems maybe more complicated  than needed. I would do this instead:
*bitwise_cast&lt;uint32_t*&gt;(this) = value

&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:59
&gt; +    uint32_t rawRepresentation() { return (static_cast&lt;uint32_t&gt;(m_begin) &lt;&lt; 16) | m_end; }

And here just do:
return bitwise_cast&lt;uint32_t&gt;(*this);

And then have a static assert like:
sizeof(HeapRange) == sizeof(uint32_t).

Anyways, this isn&apos;t super important, but I think it&apos;s more straight forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243927</commentid>
    <comment_count>21</comment_count>
      <attachid>292543</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 15:44:24 -0700</bug_when>
    <thetext>Comment on attachment 292543
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=292543&amp;action=review

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:30
&gt;&gt; +        Told heap range is represented as DOMJIT::HeapRange. DFG will handle
&gt; 
&gt; Told?

I should rephrase this as `The heap range told by the WebCore`.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractHeap.h:271
&gt;&gt; +        }
&gt; 
&gt; Why is this necessary given your above implementation?

Yup, it is not necessary. isStrictSubtypeOf should cover the case since we guarantee that DOMState heap range is a tree. Dropped.

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberSet.cpp:96
&gt;&gt; +                continue;
&gt; 
&gt; Why not just return &quot;true&quot; here or skip this check altogether since the below check should handle it?

Nice, yeah, we can return true here since we found the direct write of DOMState(TOP). Of course, we can handle this in the subsequent generic path (while ... path), but returning true here is a little bit efficient. Changed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:922
&gt;&gt; +                write(Heap); // We do not assume that DOM operations will write(Stack).
&gt; 
&gt; I think this is what you mean by the comment: &quot;We assume that DOM operations will not write(Stack)&quot;.
&gt; 
&gt; Also, is this a valid assumption? What&apos;s guaranteeing this? It seems like if the dom operation calls arbitrary JS code, it&apos;s possible to write(Stack) via function.arguments or whatever.

Yeah, at least, the current DOMJIT getter meets this requirements.
But it is not safe. I&apos;ll change this to write(World) to make this safer for the default case.

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITEffect.h:40
&gt;&gt; +    bool exitsSideways { false };
&gt; 
&gt; I&apos;d defer having this field until later when it&apos;s used (or if it ever becomes used).

Yeah, right. Dropped.

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.cpp:37
&gt;&gt; +
&gt; 
&gt; Style: extra new line not needed

Fixed.

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:42
&gt;&gt; +    {
&gt; 
&gt; Please assert that end =&gt; being to protect against overflow.

Added.

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:50
&gt;&gt; +    }
&gt; 
&gt; Nit: Seems maybe more complicated  than needed. I would do this instead:
&gt; *bitwise_cast&lt;uint32_t*&gt;(this) = value

Interesting. I&apos;ve changed. It should work in both little / big endianness environments since raw representation does not consider about the begin and end position.
And if we do that, I think changing HeapRange like,

union {
    struct {
        uint16_t m_begin;
        uint16_t m_end;
    };
    uint32_t m_raw;
};

is required to take care of alignment thingy.
And defining the constructor like,

m_raw = value;

is simpler I think. Changed.

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:59
&gt;&gt; +    uint32_t rawRepresentation() { return (static_cast&lt;uint32_t&gt;(m_begin) &lt;&lt; 16) | m_end; }
&gt; 
&gt; And here just do:
&gt; return bitwise_cast&lt;uint32_t&gt;(*this);
&gt; 
&gt; And then have a static assert like:
&gt; sizeof(HeapRange) == sizeof(uint32_t).
&gt; 
&gt; Anyways, this isn&apos;t super important, but I think it&apos;s more straight forward.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243934</commentid>
    <comment_count>22</comment_count>
      <attachid>292543</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-24 15:49:34 -0700</bug_when>
    <thetext>Comment on attachment 292543
Patch

LGTM too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243942</commentid>
    <comment_count>23</comment_count>
      <attachid>292543</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-24 16:00:27 -0700</bug_when>
    <thetext>Comment on attachment 292543
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=292543&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberSet.cpp:96
&gt;&gt;&gt; +                continue;
&gt;&gt; 
&gt;&gt; Why not just return &quot;true&quot; here or skip this check altogether since the below check should handle it?
&gt; 
&gt; Nice, yeah, we can return true here since we found the direct write of DOMState(TOP). Of course, we can handle this in the subsequent generic path (while ... path), but returning true here is a little bit efficient. Changed.

Wouldn&apos;t the `if (DOMJIT::HeapRange::fromRaw(clobber.payload().value32()).overlaps(range))` right below also be true? That&apos;s what I was thinking when I said drop the check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243947</commentid>
    <comment_count>24</comment_count>
      <attachid>292543</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 16:12:55 -0700</bug_when>
    <thetext>Comment on attachment 292543
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=292543&amp;action=review

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberSet.cpp:96
&gt;&gt;&gt;&gt; +                continue;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why not just return &quot;true&quot; here or skip this check altogether since the below check should handle it?
&gt;&gt; 
&gt;&gt; Nice, yeah, we can return true here since we found the direct write of DOMState(TOP). Of course, we can handle this in the subsequent generic path (while ... path), but returning true here is a little bit efficient. Changed.
&gt; 
&gt; Wouldn&apos;t the `if (DOMJIT::HeapRange::fromRaw(clobber.payload().value32()).overlaps(range))` right below also be true? That&apos;s what I was thinking when I said drop the check.

No. If the payload is `Top`, this abstract heap does not hold any DOMJIT::HeapRange.
This is consistent to the other AbstractHeap. For example, `supertype()` is defined as follows,

            if (payload().isTop()) {
                if (kind() == Stack)
                    return World;
                return Heap;
            }
            return AbstractHeap(kind());

If the payload is not top, the supertype() is the same kind with the top().
The hierarchy is,

Heap &lt;- DOMState(TOP) &lt;- DOMState(some heap range including DOMJIT::HeapRange::top()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243952</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 16:37:23 -0700</bug_when>
    <thetext>Committed r207787: &lt;http://trac.webkit.org/changeset/207787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243983</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 17:15:52 -0700</bug_when>
    <thetext>VC++ build errors appear. Looking...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243990</commentid>
    <comment_count>27</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 17:33:56 -0700</bug_when>
    <thetext>Committed r207793: &lt;http://trac.webkit.org/changeset/207793&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243997</commentid>
    <comment_count>28</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-10-24 17:48:18 -0700</bug_when>
    <thetext>** The following JSC stress test failures have been introduced:
	stress/domjit-exception-ic.js.ftl-eager-no-cjit
	stress/domjit-exception.js.ftl-eager
	stress/domjit-exception.js.ftl-eager-no-cjit
	stress/domjit-exception.js.ftl-no-cjit-no-inline-validate
	stress/domjit-exception.js.ftl-no-cjit-validate-sampling-profiler
	stress/domjit-getter-complex.js.ftl-eager-no-cjit
	stress/domjit-getter-complex.js.ftl-no-cjit-no-inline-validate
	stress/domjit-getter-complex.js.ftl-no-cjit-validate-sampling-profiler
	stress/domjit-getter-poly.js.ftl-eager-no-cjit
	stress/domjit-getter-poly.js.ftl-no-cjit-no-inline-validate
	stress/domjit-getter-poly.js.ftl-no-cjit-validate-sampling-profiler
	stress/domjit-getter-proto.js.ftl-eager
	stress/domjit-getter-proto.js.ftl-eager-no-cjit
	stress/domjit-getter-proto.js.ftl-no-cjit-no-inline-validate
	stress/domjit-getter-proto.js.ftl-no-cjit-validate-sampling-profiler
	stress/domjit-getter-super-poly.js.ftl-eager-no-cjit
	stress/domjit-getter.js.default
	stress/domjit-getter.js.ftl-eager-no-cjit
	stress/domjit-getter.js.ftl-no-cjit-no-inline-validate
	stress/domjit-getter.js.ftl-no-cjit-validate-sampling-profiler

https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20JSC%20%28Tests%29/builds/9987</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243998</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 17:49:02 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; ** The following JSC stress test failures have been introduced:
&gt; 	stress/domjit-exception-ic.js.ftl-eager-no-cjit
&gt; 	stress/domjit-exception.js.ftl-eager
&gt; 	stress/domjit-exception.js.ftl-eager-no-cjit
&gt; 	stress/domjit-exception.js.ftl-no-cjit-no-inline-validate
&gt; 	stress/domjit-exception.js.ftl-no-cjit-validate-sampling-profiler
&gt; 	stress/domjit-getter-complex.js.ftl-eager-no-cjit
&gt; 	stress/domjit-getter-complex.js.ftl-no-cjit-no-inline-validate
&gt; 	stress/domjit-getter-complex.js.ftl-no-cjit-validate-sampling-profiler
&gt; 	stress/domjit-getter-poly.js.ftl-eager-no-cjit
&gt; 	stress/domjit-getter-poly.js.ftl-no-cjit-no-inline-validate
&gt; 	stress/domjit-getter-poly.js.ftl-no-cjit-validate-sampling-profiler
&gt; 	stress/domjit-getter-proto.js.ftl-eager
&gt; 	stress/domjit-getter-proto.js.ftl-eager-no-cjit
&gt; 	stress/domjit-getter-proto.js.ftl-no-cjit-no-inline-validate
&gt; 	stress/domjit-getter-proto.js.ftl-no-cjit-validate-sampling-profiler
&gt; 	stress/domjit-getter-super-poly.js.ftl-eager-no-cjit
&gt; 	stress/domjit-getter.js.default
&gt; 	stress/domjit-getter.js.ftl-eager-no-cjit
&gt; 	stress/domjit-getter.js.ftl-no-cjit-no-inline-validate
&gt; 	stress/domjit-getter.js.ftl-no-cjit-validate-sampling-profiler
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Release%20JSC%20%28Tests%29/builds/9987

Thanks. I&apos;m now investigating and it should be fixed soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244013</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 18:21:35 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; ** The following JSC stress test failures have been introduced:
&gt; &gt; 	stress/domjit-exception-ic.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-exception.js.ftl-eager
&gt; &gt; 	stress/domjit-exception.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-no-inline-validate
&gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; 	stress/domjit-getter-complex.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-getter-complex.js.ftl-no-cjit-no-inline-validate
&gt; &gt; 	stress/domjit-getter-complex.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; 	stress/domjit-getter-poly.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-getter-poly.js.ftl-no-cjit-no-inline-validate
&gt; &gt; 	stress/domjit-getter-poly.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; 	stress/domjit-getter-proto.js.ftl-eager
&gt; &gt; 	stress/domjit-getter-proto.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-getter-proto.js.ftl-no-cjit-no-inline-validate
&gt; &gt; 	stress/domjit-getter-proto.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; 	stress/domjit-getter-super-poly.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-getter.js.default
&gt; &gt; 	stress/domjit-getter.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-getter.js.ftl-no-cjit-no-inline-validate
&gt; &gt; 	stress/domjit-getter.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20El%20Capitan%20Release%20JSC%20%28Tests%29/builds/9987
&gt; 
&gt; Thanks. I&apos;m now investigating and it should be fixed soon.

This issue is fixed by https://trac.webkit.org/changeset/207789.
When defining write(World) / write(Stack), we need to correctly figure out the written stack positions.
But after discussing with Saam and Filip, we found that this CallDOM never writes Stack.
So, write(World) is changed to write(Heap). And the corresponding setup is not necessary any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244023</commentid>
    <comment_count>31</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 18:28:42 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; (In reply to comment #28)
&gt; &gt; &gt; ** The following JSC stress test failures have been introduced:
&gt; &gt; &gt; 	stress/domjit-exception-ic.js.ftl-eager-no-cjit
&gt; &gt; &gt; 	stress/domjit-exception.js.ftl-eager
&gt; &gt; &gt; 	stress/domjit-exception.js.ftl-eager-no-cjit
&gt; &gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-no-inline-validate
&gt; &gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; &gt; 	stress/domjit-getter-complex.js.ftl-eager-no-cjit
&gt; &gt; &gt; 	stress/domjit-getter-complex.js.ftl-no-cjit-no-inline-validate
&gt; &gt; &gt; 	stress/domjit-getter-complex.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; &gt; 	stress/domjit-getter-poly.js.ftl-eager-no-cjit
&gt; &gt; &gt; 	stress/domjit-getter-poly.js.ftl-no-cjit-no-inline-validate
&gt; &gt; &gt; 	stress/domjit-getter-poly.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; &gt; 	stress/domjit-getter-proto.js.ftl-eager
&gt; &gt; &gt; 	stress/domjit-getter-proto.js.ftl-eager-no-cjit
&gt; &gt; &gt; 	stress/domjit-getter-proto.js.ftl-no-cjit-no-inline-validate
&gt; &gt; &gt; 	stress/domjit-getter-proto.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; &gt; 	stress/domjit-getter-super-poly.js.ftl-eager-no-cjit
&gt; &gt; &gt; 	stress/domjit-getter.js.default
&gt; &gt; &gt; 	stress/domjit-getter.js.ftl-eager-no-cjit
&gt; &gt; &gt; 	stress/domjit-getter.js.ftl-no-cjit-no-inline-validate
&gt; &gt; &gt; 	stress/domjit-getter.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; &gt; 
&gt; &gt; &gt; https://build.webkit.org/builders/
&gt; &gt; &gt; Apple%20El%20Capitan%20Release%20JSC%20%28Tests%29/builds/9987
&gt; &gt; 
&gt; &gt; Thanks. I&apos;m now investigating and it should be fixed soon.
&gt; 
&gt; This issue is fixed by https://trac.webkit.org/changeset/207789.
&gt; When defining write(World) / write(Stack), we need to correctly figure out
&gt; the written stack positions.
&gt; But after discussing with Saam and Filip, we found that this CallDOM never
&gt; writes Stack.
&gt; So, write(World) is changed to write(Heap). And the corresponding setup is
&gt; not necessary any more.

OK, validated. Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244034</commentid>
    <comment_count>32</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 18:49:38 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244035</commentid>
    <comment_count>33</comment_count>
      <attachid>292699</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 18:49:39 -0700</bug_when>
    <thetext>Created attachment 292699
Patch

EWS checking for Windows bot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244041</commentid>
    <comment_count>34</comment_count>
      <attachid>292701</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 19:03:59 -0700</bug_when>
    <thetext>Created attachment 292701
Patch

EWS checking for Windows bot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244055</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 19:58:16 -0700</bug_when>
    <thetext>Committed r207799: &lt;http://trac.webkit.org/changeset/207799&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244057</commentid>
    <comment_count>36</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 19:58:42 -0700</bug_when>
    <thetext>*** Bug 163931 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292333</attachid>
            <date>2016-10-21 01:30:09 -0700</date>
            <delta_ts>2016-10-21 21:02:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161021012631.patch</filename>
            <type>text/plain</type>
            <size>21295</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
M2M4YjIyOWQxZmQwNjJiYTcxMTAxOWM2MDIwYzE1MjRlNWE0MzU4Li5hNDU3Mzc1NTA1ZmI4NzUz
ZTdjODJmY2ZhYzVjZTEwMmM1ODhjNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxNi0xMC0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdMSUNNUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkxJQ01QaGFzZTo6YXR0ZW1wdEhvaXN0KToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhbGxET01EYXRh
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9NRGF0YSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OmNhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEVmZmVjdC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaC4K
KyAgICAgICAgKiBkb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ2FsbERPTSk6CisKIDIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBkaXNhbGxvdyByZWZlcmVuY2VzIHRvIGBhd2FpdGAg
aW4gQXN5bmNGdW5jdGlvbiBmb3JtYWwgcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmN2U1ZDA2
M2M5OWJhZWQzYjdlMDA4ZGIxYWZjMjYyMzU0YzQ5MDguLmM0ZDlmZDc1MTY4MDNhMWEzYjEwMzBj
MThiZjI2M2I4YjFiMWU0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0y
MSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9N
SklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVjdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJVC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OmNoZWNrTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTm9kZVR5cGVET01KSVQ6
OmNhbGxET00pOgorCiAyMDE2LTEwLTIwICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtDU1MgUGFyc2VyXSBNYWtlIHN1cmUgdG8gaGFuZGxlIHByZWZpeGVkIHRyYW5z
Zm9ybS1zdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZWNkMWIyZTdlY2My
MTcyZGM0YjMyNTBmZGU5YjdmYTBlYTI4NmM5Li5lODM4Y2ViMzEwNDI0NDgxZWJiODIxZTJmMjZj
YWMzYjk2ZWM2NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE3Miw2ICsy
MTcyLDcgQEAKIAkJRTNCRkQwQkIxREFGODA4NzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQ
YXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtcy5jcHAgKi87IH07CiAJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBE
T01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIERPTUpJ
VEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi87IH07CiAJCUUzQzA4RTNDMURBNDFCODEw
MDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0
Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5Q0FBMURCOUE0RDYwMEQx
RUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87
IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFC
ODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTQ1MzgsNiArNDUzOSw3IEBACiAJCUUzQkZE
MEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNl
UGF0Y2hwb2ludFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZE
MEJBMURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hw
b2ludFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQx
QjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklURWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzQ0IxRTI0MURBNzU0MEEwMEZBMUU1NiAvKiBET01KSVRTbG93UGF0aENh
bGxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNsb3dQYXRoQ2Fs
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczODksNiArNzM5MSw3IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUzNTU1Qjg5MURBRTAzQTIwMEYz
NjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovLAorCQkJCUUzQzc5Q0FBMURCOUE0
RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBD
N0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAw
Mzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLywKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBG
M0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovLApAQCAtNzYxOCw2ICs3NjIxLDcg
QEAKIAkJCQlBRDJGQ0I4OTFEQUVCRjNGMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjYzMThCRTk5NTAwMDZDRUJDQyAvKiBDb2RlR2Vu
ZXJhdG9yUmVwbGF5SW5wdXRzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJRTNDNzlDQUIxREI5QTRE
QzAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjIx
OEJFOTk0NjAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHkg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkUxMTZCMTBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJEN0U2OTE0NDc5OTk2MDA0ODEzMTUgLyogQ29k
ZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggYTEyZjA5Y2Ix
Yjk0YTBhMzA0MzYzNzBjNzJhYTIxYzVlZDgxOTVmYi4uZGZiOGVjNjZlM2ZhNzRmYzYyOWI3YTY0
OTc3MjY2YjY5NTgwNDc1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjI4OSwxMCArMjI4OSwy
MSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmaWx0ZXJDbGFzc0luZm8odmFs
dWUsIG5vZGUtPmNsYXNzSW5mbygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
Q2FsbERPTToKLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xv
YmJlckxpbWl0KTsKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgRE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7
CisgICAgICAgIHN3aXRjaCAocGF0Y2hwb2ludC0+ZWZmZWN0KSB7CisgICAgICAgIGNhc2UgRE9N
SklUOjpFZmZlY3Q6OlJlYWRXb3JsZFdyaXRlSGVhcDoKKyAgICAgICAgY2FzZSBET01KSVQ6OkVm
ZmVjdDo6UmVhZEhlYXBXcml0ZUhlYXA6CisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRE9NSklUOjpFZmZlY3Q6OlJlYWRIZWFwV3JpdGVIZWFwT2JqZWN0Q291bnQ6Cisg
ICAgICAgIGNhc2UgRE9NSklUOjpFZmZlY3Q6OlJlYWRIZWFwOgorICAgICAgICBjYXNlIERPTUpJ
VDo6RWZmZWN0OjpQdXJlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Zm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuYWxy
ZWFkeUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA0ODg0MjA2YjNm
NTZkNzRlNmYyNmVmNTZiNThjZmFhNTY1NzBkODk5Li40NGUxYmIxNTMwZmRjMzgyNTEyNTc0ZDA2
NzY4ZmRlZjc3NDIwMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtMjY3Myw2ICsyNjczLDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJ
ZFZhcmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorc3RhdGljIHZv
aWQgYmxlc3NDYWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CisgICAg
c3dpdGNoIChwYXRjaHBvaW50LT5lZmZlY3QpIHsKKyAgICBjYXNlIERPTUpJVDo6RWZmZWN0OjpS
ZWFkV29ybGRXcml0ZUhlYXA6CisgICAgY2FzZSBET01KSVQ6OkVmZmVjdDo6UmVhZEhlYXBXcml0
ZUhlYXA6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRE9NSklUOjpFZmZlY3Q6OlJlYWRIZWFw
V3JpdGVIZWFwT2JqZWN0Q291bnQ6CisgICAgY2FzZSBET01KSVQ6OkVmZmVjdDo6UmVhZEhlYXA6
CisgICAgY2FzZSBET01KSVQ6OkVmZmVjdDo6UHVyZToKKyAgICAgICAgbm9kZS0+Y2xlYXJGbGFn
cyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0
IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlhbnQuZG9tSklUKCkpCkBAIC0yNjkxLDE0ICsy
NzA2LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVz
dWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmCiAgICAgLy8gV2UgZG8gbm90IG5lZWQg
dG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBp
cyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMu
CiAgICAgYWRkVG9HcmFwaChDaGVja0RPTSwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIo
KSksIE9wSW5mbyhkb21KSVQtPnRoaXNDbGFzc0luZm8oKSksIHRoaXNOb2RlKTsKIAorICAgIENh
bGxET01EYXRhKiBjYWxsRE9NRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NRGF0YS5hZGQoKTsKICAg
ICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTVBhdGNocG9pbnQgPSBkb21K
SVQtPmNhbGxET00oKTsKICAgICBtX2dyYXBoLm1fZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNh
bGxET01QYXRjaHBvaW50LnB0cigpKTsKKworICAgIGNhbGxET01EYXRhLT5kb21KSVQgPSBkb21K
SVQ7CisgICAgY2FsbERPTURhdGEtPnBhdGNocG9pbnQgPSBjYWxsRE9NUGF0Y2hwb2ludC5wdHIo
KTsKKwogICAgIGlmIChjYWxsRE9NUGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewog
ICAgICAgICBOb2RlKiBnbG9iYWxPYmplY3QgPSBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwg
dGhpc05vZGUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9i
YWxPYmplY3Qgb2YgdGhpc05vZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBl
ci4KICAgICB9CiAgICAgYWRkVmFyQXJnQ2hpbGQodGhpc05vZGUpOwotICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9N
LCBPcEluZm8oY2FsbERPTVBhdGNocG9pbnQucHRyKCkpLCBPcEluZm8ocHJlZGljdGlvbikpKTsK
KyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9N
LCBPcEluZm8oY2FsbERPTURhdGEpLCBPcEluZm8ocHJlZGljdGlvbikpOworICAgIGJsZXNzQ2Fs
bERPTShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgY2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5Mzg3MmU1MDgxODBkMmI1
ZjJjYzZiNmFiYzg0NGMuLjIzNWNkYTUyOTI4ZDU4ZWZjZTczN2YyOTNhYzgwZDI1OGJjYTdlNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eU5v
ZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9N
UGF0Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTkw
NywxMCArOTA4LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y2FzZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAgICAgd3JpdGUoSGVhcCk7
CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBz
d2l0Y2ggKHBhdGNocG9pbnQtPmVmZmVjdCkgeworICAgICAgICBjYXNlIERPTUpJVDo6RWZmZWN0
OjpSZWFkV29ybGRXcml0ZUhlYXA6CisgICAgICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAg
ICAgIHdyaXRlKEhlYXApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIERPTUpJ
VDo6RWZmZWN0OjpSZWFkSGVhcFdyaXRlSGVhcDoKKyAgICAgICAgICAgIHJlYWQoSGVhcCk7Cisg
ICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2Fz
ZSBET01KSVQ6OkVmZmVjdDo6UmVhZEhlYXBXcml0ZUhlYXBPYmplY3RDb3VudDoKKyAgICAgICAg
ICAgIHJlYWQoSGVhcCk7CisgICAgICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CisgICAg
ICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjYXNlIERPTUpJVDo6RWZmZWN0OjpSZWFkSGVhcDoKKyAgICAgICAgICAgIHJlYWQoSGVh
cCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgRE9NSklUOjpFZmZlY3Q6OlB1
cmU6CisgICAgICAgICAgICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4oKSA8PSBBZGphY2VuY3lMaXN0
OjpTaXplKSB7CisgICAgICAgICAgICAgICAgRWRnZSBlZGdlc1tBZGphY2VuY3lMaXN0OjpTaXpl
XTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtQ2hp
bGRyZW4oKTsgKytpKQorICAgICAgICAgICAgICAgICAgICBlZGdlc1tpXSA9IGdyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIGkpOworICAgICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUoQ2FsbERPTSwg
QWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgZWRnZXNbMF0sIGVkZ2VzWzFdLCBl
ZGdlc1syXSksIG5vZGUtPmNhbGxET01EYXRhKCktPmRvbUpJVCkpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlYWQoSGVhcCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGNh
c2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMzNjMGNmMTkyMDg1YjUwMDRi
MjAwODllMmQzYjA2OTI5MDQ4ODU5OC4uZjk1MWMyZWEwZmEzYjMzMTEyMzRhY2IyNzYyMDMxN2Ey
NTNlMTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsK
IAogICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAgICAgIGludCBjaGlsZEluZGV4ID0g
MDsKLSAgICAgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBu
b2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgpOworICAgICAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CiAg
ICAgICAgICAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCBj
aGlsZEluZGV4KyspKTsgLy8gR2xvYmFsT2JqZWN0LgogICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgrKykpOyAvLyBET00uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNzZiMmJhZWM3MTZjMmYzNmI2YmU1
NDM2MGE5ZDMzZGQ0YTE0ZjNhYy4uZjk1N2Y1Y2ZiZDc4OGVkZDYyNjg5NWZmMWRlMzUwNzEzNmQx
NDE4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTAxLDYgKzkwMSw3
IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8TG9h
ZFZhcmFyZ3NEYXRhPiBtX2xvYWRWYXJhcmdzRGF0YTsKICAgICBCYWc8U3RhY2tBY2Nlc3NEYXRh
PiBtX3N0YWNrQWNjZXNzRGF0YTsKICAgICBCYWc8TGF6eUpTVmFsdWU+IG1fbGF6eUpTVmFsdWVz
OworICAgIEJhZzxDYWxsRE9NRGF0YT4gbV9jYWxsRE9NRGF0YTsKICAgICBWZWN0b3I8SW5saW5l
VmFyaWFibGVEYXRhLCA0PiBtX2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVC
bG9jayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVM
aXZlbmVzczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUtpbGxzPj4gbV9ieXRlY29kZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
SUNNUGhhc2UuY3BwCmluZGV4IGU2MDk3NjRlODU5Y2Y4MGRkYWM1OGIzYzQyYzA3MDVjMTJlOTI2
M2EuLjk3ZTFlYWFkYWU5YTA0ODAwMmVlZGEzN2ZlN2E1NmFlOWU0ZTZiYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCBj
bGFzcyBMSUNNUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAvLyBJdCBqdXN0IHNvIGhh
cHBlbnMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIHdlIGN1cnJlbnRseSBrbm93IGhvdyB0byBob2lz
dAogICAgICAgICAvLyBkb24ndCBoYXZlIHZhci1hcmcgY2hpbGRyZW4uIFRoYXQgbWF5IGNoYW5n
ZSBhbmQgdGhlbiB3ZSBjYW4gZml4IHRoaXMKICAgICAgICAgLy8gY29kZS4gQnV0IGZvciBub3cg
d2UganVzdCBhc3NlcnQgdGhhdCdzIHRoZSBjYXNlLgotICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG5vZGUsICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSk7CisgICAgICAgIC8v
IERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFy
Z3MpKTsKICAgICAgICAgCiAgICAgICAgIG5vZGVSZWYgPSBtX2dyYXBoLmFkZE5vZGUoQ2hlY2ss
IG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCBjOTQxMWQ1MGNmYmE5YzU0YjAyYzM0ODY0OTdlNDAzNDEy
N2FkZGJjLi5jMmQwY2IwMjU3ZGZiZGNmYTUxYTAzMGVjOWRhMzVlNDMxMjNjNTVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTksNiArNTksNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIG5hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0
Y2hwb2ludDsKIGNsYXNzIENhbGxET01QYXRjaHBvaW50OwogfQpAQCAtMjMxLDYgKzIzMiwxMSBA
QCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyBy
ZXR1cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAorc3RydWN0IENh
bGxET01EYXRhIHsKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUIHsgbnVsbHB0ciB9
OworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgeyBudWxscHRyIH07
Cit9OworCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUg
b3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkBAIC0yMzM2LDE1ICsyMzQyLDE1IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6UGF0Y2hw
b2ludCo+KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNDYWxsRE9NUGF0Y2hwb2ludCgpIGNvbnN0
CisgICAgYm9vbCBoYXNDYWxsRE9NRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
b3AoKSA9PSBDYWxsRE9NOwogICAgIH0KIAotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IGNhbGxET01QYXRjaHBvaW50KCkKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGhhc0NhbGxET01QYXRjaHBvaW50KCkpOwotICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXM8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCo+KCk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mby5hczxDYWxsRE9NRGF0YSo+KCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXND
bGFzc0luZm8oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCBhZTg0NTYzOWQ2Y2NmZjQ2MGQyOGQxY2U0ZDhjOTZmMjVkNTdh
YTQxLi4wMDU5M2Y2N2ZmYmI2NGVhYTI4ZDkzOWRhMmNmY2JkZWY4YzdiMzZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzIyNSw3
ICs3MjI1LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRj
aHBvaW50KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkKIHsKLSAgICBET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTVBhdGNocG9pbnQoKTsKKyAgICBET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+
cGF0Y2hwb2ludDsKIAogICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKICAgICBWZWN0b3I8
RlBSUmVnPiBmcFNjcmF0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRF
ZmZlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYzczODdmNmU0MTZhMGIwMDk3ODk4ZDAyMGY4MmI4YmUwMjA0
NGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRFZmZlY3QuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2VudW0gY2xhc3MgRWZmZWN0IHsKKyAg
ICBSZWFkV29ybGRXcml0ZUhlYXAsCisgICAgUmVhZEhlYXBXcml0ZUhlYXAsCisgICAgUmVhZEhl
YXBXcml0ZUhlYXBPYmplY3RDb3VudCwKKyAgICBSZWFkSGVhcCwKKyAgICBQdXJlLAorfTsKKwor
fSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRQYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBh
dGNocG9pbnQuaAppbmRleCBiYjlmNWU0ZjliODdmMjEzNzUzZmFiOGE1OWYwMDc5OGRmNjkwZjI5
Li5jOTU2YWQxY2I4MWQ1NWEzZDdlZjE0Y2YwZmY2MWE4OGNjOWNjNWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaApAQCAtMjgsNiArMjgs
NyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNs
dWRlICJET01KSVRFZmZlY3QuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CkBAIC02MSw2ICs2Miw3IEBAIGNsYXNzIFBhdGNo
cG9pbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludD4gewogCiAgICAg
dWludDhfdCBudW1HUFNjcmF0Y2hSZWdpc3RlcnMgeyAwIH07CiAgICAgdWludDhfdCBudW1GUFNj
cmF0Y2hSZWdpc3RlcnMgeyAwIH07CisgICAgRWZmZWN0IGVmZmVjdCB7IEVmZmVjdDo6UmVhZEhl
YXBXcml0ZUhlYXAgfTsKIAogcHJvdGVjdGVkOgogICAgIFBhdGNocG9pbnQoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
YTY1N2UwNmM3ODkxOWMyMmM5OGRjYWEzZGIzMzFhZTkxY2ZkMzFkZC4uM2MzZThkYTUzZmNlZjIw
ZGQ4NDk4NTM2ZmYxMzE3YzFhY2M3ZWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTA2NCw3ICs5MDY0LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQogICAgIHsKLSAgICAgICAgRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludCogZG9tSklUID0gbV9ub2RlLT5jYWxsRE9NUGF0Y2hwb2lu
dCgpOworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUt
PmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CiAgICAgICAgIGludCBjaGlsZEluZGV4ID0gMDsK
IAogICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2Rl
RE9NSklULmNwcAppbmRleCBiOTY5M2FjYWE3NTJhNDQ0OGQ0MTZjYzA0MTc3NzJjMDAwZTg3Y2Iy
Li42M2FkNGVhYTdjNTQxODE5MGI2MzQyMTVjM2U3ZjgxMTJkMWQ0MTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApAQCAtNTUsNiArNTUsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBXcmFwcGVkTm9kZT4KIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5l
ckd1YXJkUmVxdWlyZW1lbnQgaXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50KQogewogICAgIFJl
ZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gRE9NSklUOjpF
ZmZlY3Q6OlJlYWRIZWFwV3JpdGVIZWFwT2JqZWN0Q291bnQ7CiAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1d
KENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewog
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKQEAg
LTg2LDYgKzg3LDcgQEAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVh
dGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYKIHN0YXRpYyBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBjaGVja05vZGUoKQogewogICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+
IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IERPTUpJVDo6RWZmZWN0OjpQdXJlOwogICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwog
ICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9k
ZShqaXQsIHBhcmFtc1swXS5ncHIoKSkpOwpAQCAtMTU4LDYgKzE2MCw3IEBAIFJlZjxET01KSVQ6
OlBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tET00oKQogUmVmPERPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7CiAgICAg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBET01KSVQ6
OkVmZmVjdDo6UHVyZTsKICAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0ID0gZmFs
c2U7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwg
RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292457</attachid>
            <date>2016-10-21 21:02:29 -0700</date>
            <delta_ts>2016-10-22 17:02:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161021205849.patch</filename>
            <type>text/plain</type>
            <size>35229</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
M2M4YjIyOWQxZmQwNjJiYTcxMTAxOWM2MDIwYzE1MjRlNWE0MzU4Li4zNDI1MDZlZmFhODY1MGNi
OWY3Njc5ZjA5NzQyOTExZDFkMzhhNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNi0xMC0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmJsZXNzQ2FsbERP
TSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRl
cik6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGgu
aDoKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpM
SUNNUGhhc2U6OmF0dGVtcHRIb2lzdCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWxsRE9NRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Y2FsbERPTURhdGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhbGxET01Q
YXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9NUGF0
Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00pOgorICAg
ICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6
RE9NSklUOjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXAuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRQYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpz
ZXRQYXJlbnQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6aXNSb290KToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmlzQ29tcHV0ZWQpOgorICAgICAg
ICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6cmFuZ2UpOgorICAgICAgICAqIGRvbWppdC9E
T01KSVRFZmZlY3QuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRQYXRjaHBvaW50LmguCisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQu
aC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OkhlYXBSYW5nZSk6CisgICAgICAg
IChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpiZWdpbik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
SGVhcFJhbmdlOjplbmQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6cmF3UmVw
cmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3Ig
Ym9vbCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3ApOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRQYXRjaHBvaW50Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxs
RE9NKToKKwogMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtKU0NdIGRpc2FsbG93IHJlZmVyZW5jZXMgdG8gYGF3YWl0YCBpbiBBc3luY0Z1
bmN0aW9uIGZvcm1hbCBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY3ZTVkMDYzYzk5YmFlZDNi
N2UwMDhkYjFhZmMyNjIzNTRjNDkwOC4uZmI0MDFjOWYzNjJkMDgwMzk5Y2NmMzc2NTNkNTdmMjE1
NDI2OGIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTIxICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBh
IHdheSBmb3IgRE9NSklUOjpQYXRjaHBvaW50IHRvIGV4cHJlc3MgZWZmZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSk6CisgICAgICAgICogZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50LmguCisgICAgICAgICogZG9taml0L0pTTm9kZURP
TUpJVC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Tm9kZVR5cGVET01KSVQ6OmNhbGxET00pOgorCiAyMDE2LTEwLTIwICBEYXZlIEh5YXR0ICA8aHlh
dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2VyXSBNYWtlIHN1cmUgdG8gaGFuZGxl
IHByZWZpeGVkIHRyYW5zZm9ybS1zdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBhZWNkMWIyZTdlY2MyMTcyZGM0YjMyNTBmZGU5YjdmYTBlYTI4NmM5Li5lODM4Y2ViMzEwNDI0
NDgxZWJiODIxZTJmMjZjYWMzYjk2ZWM2NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE3Miw2ICsyMTcyLDcgQEAKIAkJRTNCRkQwQkIxREFGODA4NzAwNjVERUEyIC8qIERP
TUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01K
SVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi87IH07CiAJCUUzQkZEMEJDMURBRjgw
OEUwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQkExREFGODA3QzAw
NjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi87IH07CiAJCUUz
QzA4RTNDMURBNDFCODEwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3
OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5
Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAgKi87IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4ODc0
MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNG
MjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTQ1MzgsNiArNDUz
OSw3IEBACiAJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklURWZmZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0IxRTI0MURBNzU0MEEwMEZBMUU1NiAvKiBE
T01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5
QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczODksNiAr
NzM5MSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUzNTU1
Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovLAorCQkJ
CUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLywKIAkJCQlFM0ZG
NzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkJRTND
MDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLywKIAkJCQlFMzdB
RDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovLApAQCAt
NzYxOCw2ICs3NjIxLDcgQEAKIAkJCQlBRDJGQ0I4OTFEQUVCRjNGMDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0MEE0
NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjYzMThCRTk5NTAwMDZD
RUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJ
RTNDNzlDQUIxREI5QTREQzAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTlDQzBCNjIxOEJFOTk0NjAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1
dHNUZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk4NkUxMTZCMTBGRTc1QUM4MDBCNTEy
QkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJEN0U2OTE0NDc5OTk2
MDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCAwYWJkNTAyN2IyNmFlYjM5NGYyOWMw
MzhmZDlmMmQ1OTJlNmMxNjM5Li40ODkyNmRkZTE0NWZiMDI1ZjUwNWZlNDg2NmI4NWY3NTIxNDg5
MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKQEAg
LTczLDYgKzczLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KE1hdGhEb3RSYW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKICAgICBt
YWNybyhBYnNvbHV0ZSkgXAorICAgIC8qIERPTUpJVCB0ZWxscyB0aGUgaGVhcCByYW5nZSB3aXRo
IHRoZSBwYWlyIG9mIGludGVnZXJzLiAqL1wKKyAgICBtYWNybyhET01TdGF0ZSkgXAogICAgIC8q
IFVzZSB0aGlzIGZvciB3cml0ZXMgb25seSwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1heSBmaXJl
IHdhdGNocG9pbnRzLiBVc3VhbGx5IHRoaXMgaXMgbmV2ZXIgZGlyZWN0bHkgd3JpdHRlbiBidXQg
aW5zdGVhZCB3ZSB0ZXN0IHRvIHNlZSBpZiBhIG5vZGUgY2xvYmJlcnMgdGhpczsgaXQganVzdCBz
byBoYXBwZW5zIHRoYXQgeW91IGhhdmUgdG8gd3JpdGUgd29ybGQgdG8gY2xvYmJlciBpdC4gKi9c
CiAgICAgbWFjcm8oV2F0Y2hwb2ludF9maXJlKSBcCiAgICAgLyogVXNlIHRoZXNlIGZvciByZWFk
cyBvbmx5LCBqdXN0IHRvIGluZGljYXRlIHRoYXQgaWYgdGhlIHdvcmxkIGdvdCBjbG9iYmVyZWQs
IHRoZW4gdGhpcyBvcGVyYXRpb24gd2lsbCBub3Qgd29yay4gKi9cCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
aW5kZXggYTEyZjA5Y2IxYjk0YTBhMzA0MzYzNzBjNzJhYTIxYzVlZDgxOTVmYi4uZGZiOGVjNjZl
M2ZhNzRmYzYyOWI3YTY0OTc3MjY2YjY5NTgwNDc1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAt
MjI4OSwxMCArMjI4OSwyMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmaWx0
ZXJDbGFzc0luZm8odmFsdWUsIG5vZGUtPmNsYXNzSW5mbygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgQ2FsbERPTToKLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAg
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRh
KCktPnBhdGNocG9pbnQ7CisgICAgICAgIHN3aXRjaCAocGF0Y2hwb2ludC0+ZWZmZWN0KSB7Cisg
ICAgICAgIGNhc2UgRE9NSklUOjpFZmZlY3Q6OlJlYWRXb3JsZFdyaXRlSGVhcDoKKyAgICAgICAg
Y2FzZSBET01KSVQ6OkVmZmVjdDo6UmVhZEhlYXBXcml0ZUhlYXA6CisgICAgICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9NSklUOjpFZmZlY3Q6OlJlYWRIZWFwV3JpdGVIZWFw
T2JqZWN0Q291bnQ6CisgICAgICAgIGNhc2UgRE9NSklUOjpFZmZlY3Q6OlJlYWRIZWFwOgorICAg
ICAgICBjYXNlIERPTUpJVDo6RWZmZWN0OjpQdXJlOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA0ODg0MjA2YjNmNTZkNzRlNmYyNmVmNTZiNThjZmFhNTY1NzBkODk5Li40NGUxYmIxNTMw
ZmRjMzgyNTEyNTc0ZDA2NzY4ZmRlZjc3NDIwMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjY3Myw2ICsyNjczLDIxIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uc3QgR2V0QnlJZFZhcmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAorc3RhdGljIHZvaWQgYmxlc3NDYWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgRE9NSklU
OjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBh
dGNocG9pbnQ7CisgICAgc3dpdGNoIChwYXRjaHBvaW50LT5lZmZlY3QpIHsKKyAgICBjYXNlIERP
TUpJVDo6RWZmZWN0OjpSZWFkV29ybGRXcml0ZUhlYXA6CisgICAgY2FzZSBET01KSVQ6OkVmZmVj
dDo6UmVhZEhlYXBXcml0ZUhlYXA6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRE9NSklUOjpF
ZmZlY3Q6OlJlYWRIZWFwV3JpdGVIZWFwT2JqZWN0Q291bnQ6CisgICAgY2FzZSBET01KSVQ6OkVm
ZmVjdDo6UmVhZEhlYXA6CisgICAgY2FzZSBET01KSVQ6OkVmZmVjdDo6UHVyZToKKyAgICAgICAg
bm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50IHJlc3Vs
dE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlhbnQuZG9tSklUKCkp
CkBAIC0yNjkxLDE0ICsyNzA2LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJ
VEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmCiAgICAgLy8g
V2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdoZW4gdGhlIGN1
c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1Y3R1cmUgdHJh
bnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja0RPTSwgT3BJbmZvKGNoZWNrRE9N
UGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhkb21KSVQtPnRoaXNDbGFzc0luZm8oKSksIHRoaXNO
b2RlKTsKIAorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9N
RGF0YS5hZGQoKTsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTVBh
dGNocG9pbnQgPSBkb21KSVQtPmNhbGxET00oKTsKICAgICBtX2dyYXBoLm1fZG9tSklUUGF0Y2hw
b2ludHMuYXBwZW5kKGNhbGxET01QYXRjaHBvaW50LnB0cigpKTsKKworICAgIGNhbGxET01EYXRh
LT5kb21KSVQgPSBkb21KSVQ7CisgICAgY2FsbERPTURhdGEtPnBhdGNocG9pbnQgPSBjYWxsRE9N
UGF0Y2hwb2ludC5wdHIoKTsKKwogICAgIGlmIChjYWxsRE9NUGF0Y2hwb2ludC0+cmVxdWlyZUds
b2JhbE9iamVjdCkgewogICAgICAgICBOb2RlKiBnbG9iYWxPYmplY3QgPSBhZGRUb0dyYXBoKEdl
dEdsb2JhbE9iamVjdCwgdGhpc05vZGUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChnbG9iYWxP
YmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05vZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3Jl
YXRlIGEgRE9NV3JhcHBlci4KICAgICB9CiAgICAgYWRkVmFyQXJnQ2hpbGQodGhpc05vZGUpOwot
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoTm9kZTo6
VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTVBhdGNocG9pbnQucHRyKCkpLCBPcEluZm8o
cHJlZGljdGlvbikpKTsKKyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IGFkZFRvR3JhcGgoTm9kZTo6
VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTURhdGEpLCBPcEluZm8ocHJlZGljdGlvbikp
OworICAgIGJsZXNzQ2FsbERPTShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRPcGVyYW5kKSwgY2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5
Mzg3MmU1MDgxODBkMmI1ZjJjYzZiNmFiYzg0NGMuLjFmNjRhN2E3NTc1NWU3NDNhY2E4YzUzNDYw
NmFkZGVkODVmODZhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRl
ICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKQEAgLTkwNywxMCArOTA4LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAg
ICAgd3JpdGUoSGVhcCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBv
aW50OworICAgICAgICBzd2l0Y2ggKHBhdGNocG9pbnQtPmVmZmVjdCkgeworICAgICAgICBjYXNl
IERPTUpJVDo6RWZmZWN0OjpSZWFkV29ybGRXcml0ZUhlYXA6CisgICAgICAgICAgICByZWFkKFdv
cmxkKTsKKyAgICAgICAgICAgIHdyaXRlKEhlYXApOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjYXNlIERPTUpJVDo6RWZmZWN0OjpSZWFkSGVhcFdyaXRlSGVhcDoKKyAgICAgICAgICAg
IHJlYWQoSGVhcCk7CisgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBET01KSVQ6OkVmZmVjdDo6UmVhZEhlYXBXcml0ZUhlYXBPYmplY3RD
b3VudDoKKyAgICAgICAgICAgIHJlYWQoRE9NU3RhdGUpOworICAgICAgICAgICAgLy8gRE9NV3Jh
cHBlciBpcyBjYWNoZWQuIEV2ZW4gaWYgaXQgaXMgbmV3bHkgY3JlYXRlZCwgaXQgaXMgbm90IG9i
c2VydmFibGUgdG8gdXNlcnMuCisgICAgICAgICAgICAvLyBTbyBpdCBpcyBkaWZmZXJlbnQgZnJv
bSBhbGxvY2F0aW9ucy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBET01KSVQ6
OkVmZmVjdDo6UmVhZEhlYXA6CisgICAgICAgICAgICByZWFkKERPTVN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBET01KSVQ6OkVmZmVjdDo6UHVyZToKKyAgICAgICAg
ICAgIGlmIChub2RlLT5udW1DaGlsZHJlbigpIDw9IEFkamFjZW5jeUxpc3Q6OlNpemUpIHsKKyAg
ICAgICAgICAgICAgICBFZGdlIGVkZ2VzW0FkamFjZW5jeUxpc3Q6OlNpemVdOworICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1DaGlsZHJlbigpOyArK2kp
CisgICAgICAgICAgICAgICAgICAgIGVkZ2VzW2ldID0gZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
aSk7CisgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShDYWxsRE9NLCBBZGphY2VuY3lMaXN0
KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBlZGdlc1swXSwgZWRnZXNbMV0sIGVkZ2VzWzJdKSwgbm9k
ZS0+Y2FsbERPTURhdGEoKS0+ZG9tSklUKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmVhZChIZWFwKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgY2FzZSBBcnJheWlmeToK
ICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzM2MwY2YxOTIwODViNTAwNGIyMDA4OWUyZDNiMDY5
MjkwNDg4NTk4Li5mOTUxYzJlYTBmYTNiMzMxMTIzNGFjYjI3NjIwMzE3YTI1M2UxMjA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3MTIsNyAr
MTcxMiw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogCiAgICAgICAgIGNh
c2UgQ2FsbERPTTogewogICAgICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOwotICAgICAgICAg
ICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01Q
YXRjaHBvaW50KCk7CisgICAgICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRj
aHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKICAgICAgICAgICAgIGlm
IChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgrKykp
OyAvLyBHbG9iYWxPYmplY3QuCiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAppbmRleCA3NmIyYmFlYzcxNmMyZjM2YjZiZTU0MzYwYTlkMzNkZDRh
MTRmM2FjLi5mOTU3ZjVjZmJkNzg4ZWRkNjI2ODk1ZmYxZGUzNTA3MTM2ZDE0MTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC05MDEsNiArOTAxLDcgQEAgY2xhc3MgR3Jh
cGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+
IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nl
c3NEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNWYWx1ZXM7CisgICAgQmFnPENh
bGxET01EYXRhPiBtX2NhbGxET01EYXRhOwogICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURhdGEs
IDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1
bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwogICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+PiBtX2J5
dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJ
Q01QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAK
aW5kZXggZTYwOTc2NGU4NTljZjgwZGRhYzU4YjNjNDJjMDcwNWMxMmU5MjYzYS4uOTdlMWVhYWRh
ZTlhMDQ4MDAyZWVkYTM3ZmU3YTU2YWU5ZTRlNmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIGNsYXNzIExJQ01QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIC8vIEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0IGFs
bCBvZiB0aGUgbm9kZXMgd2UgY3VycmVudGx5IGtub3cgaG93IHRvIGhvaXN0CiAgICAgICAgIC8v
IGRvbid0IGhhdmUgdmFyLWFyZyBjaGlsZHJlbi4gVGhhdCBtYXkgY2hhbmdlIGFuZCB0aGVuIHdl
IGNhbiBmaXggdGhpcwogICAgICAgICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFzc2Vy
dCB0aGF0J3MgdGhlIGNhc2UuCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShu
b2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICAgICAgLy8gREZHX0FTU0VSVCht
X2dyYXBoLCBub2RlLCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAg
ICAKICAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShDaGVjaywgb3JpZ2luYWxPcmln
aW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGM5NDExZDUwY2ZiYTljNTRiMDJjMzQ4NjQ5N2U0MDM0MTI3YWRkYmMuLmMyZDBj
YjAyNTdkZmJkY2ZhNTFhMDMwZWM5ZGEzNWU0MzEyM2M1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC01OSw2ICs1OSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNw
YWNlIERPTUpJVCB7CitjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQYXRjaHBvaW50OwogY2xh
c3MgQ2FsbERPTVBhdGNocG9pbnQ7CiB9CkBAIC0yMzEsNiArMjMyLDExIEBAIHN0cnVjdCBTdGFj
a0FjY2Vzc0RhdGEgewogICAgIEZsdXNoZWRBdCBmbHVzaGVkQXQoKSB7IHJldHVybiBGbHVzaGVk
QXQoZm9ybWF0LCBtYWNoaW5lTG9jYWwpOyB9CiB9OwogCitzdHJ1Y3QgQ2FsbERPTURhdGEgewor
ICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgeyBudWxscHRyIH07CisgICAgRE9NSklU
OjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCB7IG51bGxwdHIgfTsKK307CisKIC8vID09
PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4g
dGhlIGRhdGEgZmxvdyBncmFwaC4KQEAgLTIzMzYsMTUgKzIzNDIsMTUgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RE9NSklUOjpQYXRjaHBvaW50Kj4oKTsKICAg
ICB9CiAKLSAgICBib29sIGhhc0NhbGxET01QYXRjaHBvaW50KCkgY29uc3QKKyAgICBib29sIGhh
c0NhbGxET01EYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IENhbGxE
T007CiAgICAgfQogCi0gICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogY2FsbERPTVBhdGNo
cG9pbnQoKQorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0YSgpCiAgICAgewogICAgICAgICBB
U1NFUlQoaGFzQ2FsbERPTVBhdGNocG9pbnQoKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5h
czxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50Kj4oKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzPENhbGxET01EYXRhKj4oKTsKICAgICB9CiAKICAgICBib29sIGhhc0NsYXNzSW5mbygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IGFlODQ1NjM5ZDZjY2ZmNDYwZDI4ZDFjZTRkOGM5NmYyNWQ1N2FhNDEuLjAwNTkzZjY3
ZmZiYjY0ZWFhMjhkOTM5ZGEyY2ZjYmRlZjhjN2IzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjI1LDcgKzcyMjUsNyBAQCBz
dGF0aWMgdm9pZCBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgVmVjdG9yPAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2Fs
bERPTShOb2RlKiBub2RlKQogewotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNo
cG9pbnQgPSBub2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgpOworICAgIERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50Owog
CiAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOwogICAgIFZlY3RvcjxGUFJSZWc+IGZwU2Ny
YXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmY1YjQwYzMzZDgzYjkwZWUzNTE0ZGIxNjkwNmQ4YTAw
NzcwZjk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcC5oIgorCisjaWYgRU5BQkxFKEpJ
VCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCit2b2lkIEFic3RyYWN0
SGVhcDo6Y29tcHV0ZSh1bnNpZ25lZCBiZWdpbikKK3sKKyAgICB1bnNpZ25lZCBjdXJyZW50ID0g
YmVnaW47CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pIHsKKyAgICAgICAgY2hp
bGQtPmNvbXB1dGUoY3VycmVudCk7CisgICAgICAgIGN1cnJlbnQgPSBjaGlsZC0+cmFuZ2UoKS5l
bmQoKTsKKyAgICB9CisgICAgQVNTRVJUKGJlZ2luIDwgVUlOVDE2X01BWCk7CisgICAgQVNTRVJU
KGN1cnJlbnQgPD0gVUlOVDE2X01BWCk7CisgICAgbV9yYW5nZSA9IEhlYXBSYW5nZShiZWdpbiwg
Y3VycmVudCk7Cit9CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZWY5MjcxYzNhYzAw
NTlhMDVjNGNkOTJlMTg3ZWMyNGRlODEyNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgorCisjaWYgRU5BQkxFKEpJVCkKKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBBYnN0cmFjdEhlYXAg
eworcHVibGljOgorICAgIEFic3RyYWN0SGVhcCgpID0gZGVmYXVsdDsKKworICAgIHZvaWQgc2V0
UGFyZW50KEFic3RyYWN0SGVhcCogcGFyZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Bh
cmVudCk7CisgICAgICAgIHBhcmVudC0+bV9jaGlsZHJlbi5hcHBlbmQodGhpcyk7CisgICAgICAg
IG1fcGFyZW50ID0gcGFyZW50OworICAgIH0KKworICAgIGJvb2wgaXNSb290KCkgY29uc3QgeyBy
ZXR1cm4gIW1fcGFyZW50OyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbXB1dGUo
dW5zaWduZWQgYmVnaW4pOworCisgICAgYm9vbCBpc0NvbXB1dGVkKCkgY29uc3QgeyByZXR1cm4g
ISFtX3JhbmdlOyB9CisgICAgSGVhcFJhbmdlIHJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5n
ZTsgfQorCitwcml2YXRlOgorICAgIEFic3RyYWN0SGVhcCogbV9wYXJlbnQgeyBudWxscHRyIH07
CisgICAgVmVjdG9yPEFic3RyYWN0SGVhcCo+IG1fY2hpbGRyZW4geyB9OworICAgIEhlYXBSYW5n
ZSBtX3JhbmdlOworfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklURWZmZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM3Mzg3ZjZlNDE2YTBiMDA5Nzg5OGQw
MjBmODJiOGJlMDIwNDRlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitlbnVtIGNsYXNz
IEVmZmVjdCB7CisgICAgUmVhZFdvcmxkV3JpdGVIZWFwLAorICAgIFJlYWRIZWFwV3JpdGVIZWFw
LAorICAgIFJlYWRIZWFwV3JpdGVIZWFwT2JqZWN0Q291bnQsCisgICAgUmVhZEhlYXAsCisgICAg
UHVyZSwKK307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxYzMyZmYwNWFjYzE0M2UyZGUzNzYx
MzAwZDdmZjE0OGE0ZjE2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworY2xhc3Mg
SGVhcFJhbmdlIHsKK3B1YmxpYzoKKyAgICBIZWFwUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBI
ZWFwUmFuZ2UodWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKKyAgICAgICAgOiBtX2JlZ2lu
KGJlZ2luKQorICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICB7CisgICAgfQorCisgICAgZW51bSBS
YXdSZXByZXNlbnRhdGlvblRhZyB7IFJhd1JlcHJlc2VudGF0aW9uIH07CisgICAgZXhwbGljaXQg
SGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKKyAgICAgICAg
OiBtX2JlZ2luKHZhbHVlID4+IDE2KQorICAgICAgICAsIG1fZW5kKHZhbHVlKSAvLyBEcm9wIHVw
cGVyIDMyYml0LgorICAgIHsKKyAgICB9CisKKyAgICB1aW50MTZfdCBiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fYmVnaW47IH0KKyAgICB1aW50MTZfdCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2Vu
ZDsgfQorICAgIHVpbnQzMl90IHJhd1JlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gKHN0YXRpY19j
YXN0PHVpbnQzMl90PihtX2JlZ2luKSA8PCAxNikgfCBtX2VuZDsgfQorCisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsK
KyAgICB9CisKKyAgICBzdGF0aWMgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIEhlYXBSYW5nZSgw
LCBVSU5UMTZfTUFYKTsgfQorCitwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYmVnaW4geyBVSU5U
MTZfTUFYIH07CisgICAgdWludDE2X3QgbV9lbmQgeyBVSU5UMTZfTUFYIH07Cit9OworCit9IH0K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VFBhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hw
b2ludC5oCmluZGV4IGJiOWY1ZTRmOWI4N2YyMTM3NTNmYWI4YTU5ZjAwNzk4ZGY2OTBmMjkuLmM5
NTZhZDFjYjgxZDU1YTNkN2VmMTRjZjBmZjYxYTg4Y2M5Y2M1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUg
IkRPTUpJVEVmZmVjdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKQEAgLTYxLDYgKzYyLDcgQEAgY2xhc3MgUGF0Y2hwb2lu
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQYXRjaHBvaW50PiB7CiAKICAgICB1aW50
OF90IG51bUdQU2NyYXRjaFJlZ2lzdGVycyB7IDAgfTsKICAgICB1aW50OF90IG51bUZQU2NyYXRj
aFJlZ2lzdGVycyB7IDAgfTsKKyAgICBFZmZlY3QgZWZmZWN0IHsgRWZmZWN0OjpSZWFkSGVhcFdy
aXRlSGVhcCB9OwogCiBwcm90ZWN0ZWQ6CiAgICAgUGF0Y2hwb2ludCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhNjU3
ZTA2Yzc4OTE5YzIyYzk4ZGNhYTNkYjMzMWFlOTFjZmQzMWRkLi4zYzNlOGRhNTNmY2VmMjBkZDg0
OTg1MzZmZjEzMTdjMWFjYzdlZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC05MDY0LDcgKzkwNjQsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTSgpCiAgICAgewotICAgICAgICBET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7
CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2Fs
bERPTURhdGEoKS0+cGF0Y2hwb2ludDsKICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOwogCiAg
ICAgICAgIExWYWx1ZSBnbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdhNjc5
YjJmZjE4NTg4OTY1ZjI1ZjFmNTM4MGIxZmZlMDc1NTM2ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQ+CisKKyNpZiBFTkFCTEUoSklUKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQoreworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9N
RU1CRVIobmFtZSwgcGFyZW50KSBuYW1lLnNldFBhcmVudCgmcGFyZW50KTsKKyAgICBET01KSVRf
QUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfTUVNQkVSKQorI3VuZGVmIERPTUpJVF9J
TklUSUFMSVpFX01FTUJFUgorCisgICAgUm9vdC5jb21wdXRlKDApOworfQorCitjb25zdCBET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpp
bnN0YW5jZSgpCit7CisgICAgTmV2ZXJEZXN0cm95ZWQ8RE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeT4gcmVwb3NpdG9yeTsKKyAgICByZXR1cm4gcmVwb3NpdG9yeS5nZXQoKTsKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1NTE5MTQ5YmI5YzQ3YWU0YmZiNWM2YTQ0MTI5
MzIxMzA2ZjljM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRGVzY3JpYmUgeW91ciBhYnN0cmFjdCBoZWFwIGhpZXJh
cmNoeSBoZXJlLgorLy8gVihBYnN0cmFjdEhlYXBOYW1lLCBQYXJlbnQpCisjZGVmaW5lIERPTUpJ
VF9BQlNUUkFDVF9IRUFQX0xJU1QoVikgXAorICAgIFYoTm9kZV9maXJzdENoaWxkLCBSb290KSBc
CisgICAgVihOb2RlX2xhc3RDaGlsZCwgUm9vdCkgXAorICAgIFYoTm9kZV9wYXJlbnROb2RlLCBS
b290KSBcCisgICAgVihOb2RlX25leHRTaWJsaW5nLCBSb290KSBcCisgICAgVihOb2RlX3ByZXZp
b3VzU2libGluZywgUm9vdCkgXAorCisKK2NsYXNzIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5JiBpbnN0YW5jZSgpOworCisgICAgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBSb290Owor
CisjZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6
OkFic3RyYWN0SGVhcCBuYW1lOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklU
X0RFRklORV9NRU1CRVIpCisjdW5kZWYgRE9NSklUX0RFRklORV9NRU1CRVIKKworCitwcml2YXRl
OgorICAgIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCmluZGV4IGI5NjkzYWNhYTc1MmE0
NDQ4ZDQxNmNjMDQxNzc3MmMwMDBlODdjYjIuLjYzYWQ0ZWFhN2M1NDE4MTkwYjYzNDIxNWMzZTdm
ODExMmQxZDQxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01K
SVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC01
NSw2ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZWROb2RlPgogc3RhdGljIFJlZjxE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0
cmRpZmZfdCBvZmZzZXQsIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudCBpc0NvbnRhaW5lckd1
YXJkUmVxdWlyZW1lbnQpCiB7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBh
dGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBwYXRj
aHBvaW50LT5lZmZlY3QgPSBET01KSVQ6OkVmZmVjdDo6UmVhZEhlYXBXcml0ZUhlYXBPYmplY3RD
b3VudDsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0
Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBh
cmFtc1swXS5qc1ZhbHVlUmVncygpOwpAQCAtODYsNiArODcsNyBAQCBzdGF0aWMgUmVmPERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlm
Zl90IG9mZgogc3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrTm9kZSgpCiB7CiAg
ICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2lu
dDo6Y3JlYXRlKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gRE9NSklUOjpFZmZlY3Q6OlB1
cmU7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwg
RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9N
SklUSGVscGVyczo6YnJhbmNoSWZOb3ROb2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CkBAIC0x
NTgsNiArMTYwLDcgQEAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklU
OjpjaGVja0RPTSgpCiBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBl
RE9NSklUOjpjYWxsRE9NKCkKIHsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
cGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIHBh
dGNocG9pbnQtPmVmZmVjdCA9IERPTUpJVDo6RWZmZWN0OjpQdXJlOwogICAgIHBhdGNocG9pbnQt
PnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFt
cykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3Mo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292521</attachid>
            <date>2016-10-22 17:02:28 -0700</date>
            <delta_ts>2016-10-22 17:46:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022165847.patch</filename>
            <type>text/plain</type>
            <size>46314</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi5kY2Y0ZDk2ZDU2M2FhNzVl
NjllZTQxMTFmZGQ1OWJhZmQ2MzMyOTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RIZWFwOjppc1N0cmljdFN1YnR5cGVPZik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RIZWFwOjpvdmVybGFwcyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmJsZXNzQ2FsbERPTSk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAq
IGRmZy9ERkdMSUNNUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxJQ01QaGFzZTo6YXR0
ZW1wdEhvaXN0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NhbGxET01EYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9N
RGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbGxET01QYXRjaHBvaW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXAuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRD
YWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6
c2V0UGFyZW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmlzUm9vdCk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjppc0NvbXB1dGVkKToKKyAgICAg
ICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OnJhbmdlKToKKyAgICAgICAgKiBkb21qaXQv
RE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklURWZmZWN0
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERP
TVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0
ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpFZmZlY3Q6OmZvckNoZWNrKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZl
Y3Q6Om11c3RHZW5lcmF0ZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OkhlYXBSYW5nZSk6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpiZWdpbik6CisgICAgICAgIChKU0M6OkRPTUpJ
VDo6SGVhcFJhbmdlOjplbmQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0
b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6SGVhcFJhbmdlOjpub25lKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Omlz
U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om92ZXJsYXBzKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorCiAyMDE2LTEwLTIxICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBib3RoIHRo
ZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzc5
YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uYzgyYzY0NjhkODNlYmE0M2M4
YzdhOWE4MTE1MjE5NzAxM2ZiYmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0yMiAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklU
XSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVjdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL01hdGhF
eHRyYXMuaDoKKyAgICAgICAgKFdURjo6bm9uRW1wdHlSYW5nZXNPdmVybGFwKToKKwogMjAxNi0x
MC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgV0FTTSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIxOTgzYjk2NzE0YjJiMjdm
ZDgwZWE5NDkwZTE4ZjA0ZDdkMDkyODkuLjEyNjk4ZTllYjZkNzlkYjNlNzdiNGE2NTY4MzU2YjE0
MTk0MjlhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNi0xMC0yMiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQg
YSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01Q
YXRjaHBvaW50LmguCisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSk6CisgICAgICAgICogZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIGRvbWpp
dC9ET01KSVRIZWxwZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFu
Y2hJZk5vdFdvcmxkSXNOb3JtYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklU
SGVscGVyczo6YnJhbmNoSWZOb3RXZWFrSXNMaXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVEhlbHBlcnM6OnRyeUxvb2tVcFdyYXBwZXJDYWNoZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjp0b1dyYXBwZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZET01XcmFwcGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RE9NV3JhcHBlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vZGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RO
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElm
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFu
Y2hJZk5vdEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVy
czo6YnJhbmNoSWZEb2N1bWVudFdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3REb2N1bWVudFdyYXBwZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q2FsbERPTUZvck9mZnNldEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja05vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET00pOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTm9k
ZVR5cGVET01KSVQ6OmNhbGxET00pOgorCiAyMDE2LTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZ3JhZGluZyBjdXN0b20gZWxlbWVudCBzaG91bGQg
ZW5xdWV1ZSBhdHRyaWJ1dGVDaGFuZ2VkIGFuZCBjb25uZWN0ZWQgY2FsbGJhY2tzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2YWEwODRlODExZGEzMTRkYTZjZmI0NzAxYTMzMzhm
YjMwYzMzNzEuLmI5YWU3YTE5MWVlYzQ0MzU3ZmE3OTg5NWNhM2MzNWQ4MmM4MWM0MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTc3LDYgKzIxNzcsNyBAQAogCQlFM0JGRDBC
QjFEQUY4MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkx
REFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAq
LzsgfTsKIAkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRj
aHBvaW50UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9p
bnRQYXJhbXMuaCAqLzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBh
dGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDNzlDQUIxREI5QTRE
QzAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
RDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
ICovOyB9OwpAQCAtNDU0OCw2ICs0NTQ5LDcgQEAKIAkJRTNCRkQwQjkxREFGODA3QzAwNjVERUEy
IC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCRkQwQkExREFGODA3QzAwNjVERUEy
IC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01K
SVRQYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFBh
dGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNDNzlDQUExREI5QTRE
NjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRFZmZlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDQjFF
MjQxREE3NTQwQTAwRkExRTU2IC8qIERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2xvd1BhdGhDYWxscy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVs
ZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5Qzcx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzQwNCw2ICs3NDA2LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxE
T01QYXRjaHBvaW50LmggKi8sCisJCQkJRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJ
VEVmZmVjdC5oICovLAogCQkJCUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRHZXR0
ZXJTZXR0ZXIuaCAqLywKIAkJCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0
Y2hwb2ludC5oICovLAogCQkJCUUzN0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQYXRj
aHBvaW50UGFyYW1zLmggKi8sCkBAIC03NjMyLDYgKzc2MzUsNyBAQAogCQkJCTBGOTZFQkIzMTY2
NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc3RjE4MjIxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1
dHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9N
SklURWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0Mg
LyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAog
CQkJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmlu
ZGV4IDBhYmQ1MDI3YjI2YWViMzk0ZjI5YzAzOGZkOWYyZDU5MmU2YzE2MzkuLmU5OTEyODNjMTgx
YTZkYjAxMjRmYzU1NzVkM2I3YzdmYzUxYTYwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgpAQCAtNzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxT
dGF0ZSkgXAogICAgIG1hY3JvKEFic29sdXRlKSBcCisgICAgLyogRE9NSklUIHRlbGxzIHRoZSBo
ZWFwIHJhbmdlIHdpdGggdGhlIHBhaXIgb2YgaW50ZWdlcnMuICovXAorICAgIG1hY3JvKERPTVN0
YXRlKSBcCiAgICAgLyogVXNlIHRoaXMgZm9yIHdyaXRlcyBvbmx5LCB0byBpbmRpY2F0ZSB0aGF0
IHRoaXMgbWF5IGZpcmUgd2F0Y2hwb2ludHMuIFVzdWFsbHkgdGhpcyBpcyBuZXZlciBkaXJlY3Rs
eSB3cml0dGVuIGJ1dCBpbnN0ZWFkIHdlIHRlc3QgdG8gc2VlIGlmIGEgbm9kZSBjbG9iYmVycyB0
aGlzOyBpdCBqdXN0IHNvIGhhcHBlbnMgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSB3b3JsZCB0byBj
bG9iYmVyIGl0LiAqL1wKICAgICBtYWNybyhXYXRjaHBvaW50X2ZpcmUpIFwKICAgICAvKiBVc2Ug
dGhlc2UgZm9yIHJlYWRzIG9ubHksIGp1c3QgdG8gaW5kaWNhdGUgdGhhdCBpZiB0aGUgd29ybGQg
Z290IGNsb2JiZXJlZCwgdGhlbiB0aGlzIG9wZXJhdGlvbiB3aWxsIG5vdCB3b3JrLiAqL1wKQEAg
LTIzMyw2ICsyMzYsMTUgQEAgY2xhc3MgQWJzdHJhY3RIZWFwIHsKICAgICBib29sIGlzU3RyaWN0
U3VidHlwZU9mKGNvbnN0IEFic3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBBYnN0cmFjdEhlYXAgY3VycmVudCA9ICp0aGlzOworICAgICAgICBpZiAoY3VycmVudC5raW5k
KCkgPT0gRE9NU3RhdGUgJiYgb3RoZXIua2luZCgpID09IERPTVN0YXRlKSB7CisgICAgICAgICAg
ICBQYXlsb2FkIGN1cnJlbnRQYXlsb2FkID0gY3VycmVudC5wYXlsb2FkKCk7CisgICAgICAgICAg
ICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQoKTsKKyAgICAgICAgICAgIGlm
IChjdXJyZW50UGF5bG9hZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChvdGhlci5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgcmV0dXJuIERPTUpJVDo6SGVhcFJhbmdlKGN1cnJlbnRQYXlsb2Fk
LnZhbHVlMzIoKSkuaXNTdHJpY3RTdWJ0eXBlT2YoRE9NSklUOjpIZWFwUmFuZ2Uob3RoZXJQYXls
b2FkLnZhbHVlMzIoKSkpOworICAgICAgICB9CiAgICAgICAgIHdoaWxlIChjdXJyZW50LmtpbmQo
KSAhPSBXb3JsZCkgewogICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuc3VwZXJ0eXBlKCk7
CiAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBvdGhlcikKQEAgLTI0OCw3ICsyNjAsMTYgQEAg
Y2xhc3MgQWJzdHJhY3RIZWFwIHsKICAgICAKICAgICBib29sIG92ZXJsYXBzKGNvbnN0IEFic3Ry
YWN0SGVhcCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gKnRoaXMgPT0gb3Ro
ZXIgfHwgaXNTdHJpY3RTdWJ0eXBlT2Yob3RoZXIpIHx8IG90aGVyLmlzU3RyaWN0U3VidHlwZU9m
KCp0aGlzKTsKKyAgICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGlmIChraW5kKCkgPT0gRE9NU3RhdGUgJiYgb3RoZXIua2luZCgpID09
IERPTVN0YXRlKSB7CisgICAgICAgICAgICBQYXlsb2FkIGN1cnJlbnRQYXlsb2FkID0gcGF5bG9h
ZCgpOworICAgICAgICAgICAgUGF5bG9hZCBvdGhlclBheWxvYWQgPSBvdGhlci5wYXlsb2FkKCk7
CisgICAgICAgICAgICBpZiAoY3VycmVudFBheWxvYWQuaXNUb3AoKSB8fCBvdGhlclBheWxvYWQu
aXNUb3AoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVy
biBET01KSVQ6OkhlYXBSYW5nZShjdXJyZW50UGF5bG9hZC52YWx1ZTMyKCkpLm92ZXJsYXBzKERP
TUpJVDo6SGVhcFJhbmdlKG90aGVyUGF5bG9hZC52YWx1ZTMyKCkpKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gaXNTdHJpY3RTdWJ0eXBlT2Yob3RoZXIpIHx8IG90aGVyLmlzU3RyaWN0U3Vi
dHlwZU9mKCp0aGlzKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Rpc2pvaW50KGNvbnN0IEFi
c3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggYTEyZjA5Y2Ix
Yjk0YTBhMzA0MzYzNzBjNzJhYTIxYzVlZDgxOTVmYi4uZjA5ZDQxYjdiN2NhMzMzYTI0MDliMWU1
NDViNTU4NDBkY2YwZmEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjI4OSwxMCArMjI4OSwx
MyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmaWx0ZXJDbGFzc0luZm8odmFs
dWUsIG5vZGUtPmNsYXNzSW5mbygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
Q2FsbERPTToKLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xv
YmJlckxpbWl0KTsKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgRE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7
CisgICAgICAgIGlmIChwYXRjaHBvaW50LT5lZmZlY3Qud3JpdGVzKQorICAgICAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAg
Zm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuYWxy
ZWFkeUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA0ODg0MjA2YjNm
NTZkNzRlNmYyNmVmNTZiNThjZmFhNTY1NzBkODk5Li5hNWIwNGNhNjYxNDVhYjUzZTY2Mjg3N2Fk
YTdkMjM3ZDRjYjI5ZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtMjY3Myw2ICsyNjczLDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJ
ZFZhcmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorc3RhdGljIHZv
aWQgYmxlc3NDYWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CisgICAg
aWYgKCFwYXRjaHBvaW50LT5lZmZlY3QubXVzdEdlbmVyYXRlKCkpCisgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7Cit9CisKIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQm
IHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewog
ICAgIGlmICghdmFyaWFudC5kb21KSVQoKSkKQEAgLTI2OTEsMTQgKzI2OTgsMjEgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25z
dCBHZXRCeUlkVmFyaWFudCYKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBlbWl0IENoZWNrQ2Vs
bCB0aGluZ3kgaGVyZS4gV2hlbiB0aGUgY3VzdG9tIGFjY2Vzc29yIGlzIHJlcGxhY2VkIHRvIGRp
ZmZlcmVudCBvbmUsIFN0cnVjdHVyZSB0cmFuc2l0aW9uIG9jY3Vycy4KICAgICBhZGRUb0dyYXBo
KENoZWNrRE9NLCBPcEluZm8oY2hlY2tET01QYXRjaHBvaW50LnB0cigpKSwgT3BJbmZvKGRvbUpJ
VC0+dGhpc0NsYXNzSW5mbygpKSwgdGhpc05vZGUpOwogCisgICAgQ2FsbERPTURhdGEqIGNhbGxE
T01EYXRhID0gbV9ncmFwaC5tX2NhbGxET01EYXRhLmFkZCgpOwogICAgIFJlZjxET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50PiBjYWxsRE9NUGF0Y2hwb2ludCA9IGRvbUpJVC0+Y2FsbERPTSgpOwog
ICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2FsbERPTVBhdGNocG9pbnQu
cHRyKCkpOworCisgICAgY2FsbERPTURhdGEtPmRvbUpJVCA9IGRvbUpJVDsKKyAgICBjYWxsRE9N
RGF0YS0+cGF0Y2hwb2ludCA9IGNhbGxET01QYXRjaHBvaW50LnB0cigpOworCiAgICAgaWYgKGNh
bGxET01QYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIE5vZGUqIGds
b2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlzTm9kZSk7CiAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKGdsb2JhbE9iamVjdCk7IC8vIEdsb2JhbE9iamVjdCBvZiB0aGlz
Tm9kZSBpcyBhbHdheXMgdXNlZCB0byBjcmVhdGUgYSBET01XcmFwcGVyLgogICAgIH0KICAgICBh
ZGRWYXJBcmdDaGlsZCh0aGlzTm9kZSk7Ci0gICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9wSW5mbyhjYWxsRE9N
UGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSkpOworICAgIE5vZGUqIGNhbGxE
T01Ob2RlID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9wSW5mbyhjYWxsRE9N
RGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgYmxlc3NDYWxsRE9NKGNhbGxET01Ob2Rl
KTsKKyAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBjYWxsRE9NTm9kZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKaW5kZXggZjkyOTMzN2FmZTkzODcyZTUwODE4MGQyYjVmMmNjNmI2YWJjODQ0Yy4u
Y2M2ZTRkMzdiMmNkNmJjZDU4MmY0YzQ2OTY3YzAyNGI5YWY2N2Q5MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJERkdIZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlICJERkdMYXp5Tm9kZS5oIgogI2luY2x1ZGUg
IkRGR1B1cmVWYWx1ZS5oIgorI2luY2x1ZGUgIkRPTUpJVENhbGxET01QYXRjaHBvaW50LmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtOTA3LDEwICs5MDgsMzAgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2Rl
LT5jbGFzc0luZm8oKSkpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIENhbGxET006Ci0g
ICAgICAgIHJlYWQoV29ybGQpOwotICAgICAgICB3cml0ZShIZWFwKTsKKyAgICBjYXNlIENhbGxE
T006IHsKKyAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CisgICAgICAgIERPTUpJVDo6RWZmZWN0IGVm
ZmVjdCA9IHBhdGNocG9pbnQtPmVmZmVjdDsKKyAgICAgICAgaWYgKGVmZmVjdC5yZWFkcykgewor
ICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkp
CisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC5yZWFkcy5yYXdSZXBy
ZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVmZmVjdC53cml0ZXMpIHsK
KyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJVDo6SGVhcFJhbmdlOjp0b3Ao
KSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsgLy8gV2UgZG8gbm90IGFzc3VtZSB0aGF0
IERPTSBvcGVyYXRpb25zIHdpbGwgd3JpdGUoU3RhY2spLgorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHdyaXRlKEFic3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LndyaXRlcy5y
YXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVmZmVjdC5wdXJl
KSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vZGUtPm51bUNoaWxkcmVuKCkg
PD0gQWRqYWNlbmN5TGlzdDo6U2l6ZSwgIkN1cnJlbnRseSB3ZSBvbmx5IGFsbG93IHB1cmUgQ2Fs
bERPTSB0byBoYXZlIHVwIHRvIDMgY2hpbGRyZW4uIik7CisgICAgICAgICAgICBFZGdlIGVkZ2Vz
W0FkamFjZW5jeUxpc3Q6OlNpemVdOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgICAgICAgICBlZGdlc1tpXSA9
IGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGkpOworICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShD
YWxsRE9NLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBlZGdlc1swXSwgZWRn
ZXNbMV0sIGVkZ2VzWzJdKSwgbm9kZS0+Y2FsbERPTURhdGEoKS0+ZG9tSklUKSk7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2Fz
ZSBBcnJheWlmeVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCmluZGV4IDNmMTM4NDJjYWY0YjVjNmVlMWYwOWM1NGFhM2Q4YTAwNjIzNmM1MjkuLmYzNWI2
NmNlMTdlNDAzOTgyZDAyOGFmMzgyYjkxYmQ2MDg1N2VhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExOCw3ICsxMTgsNiBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNl
IEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6Ci0gICAgY2FzZSBDYWxsRE9N
OgogICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0
U2NvcGU6CkBAIC0yOTksNiArMjk4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICBjYXNlIENyZWF0ZVJl
c3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKKyAgICBjYXNlIENhbGxET006CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzM2MwY2YxOTIwODVi
NTAwNGIyMDA4OWUyZDNiMDY5MjkwNDg4NTk4Li5mOTUxYzJlYTBmYTNiMzMxMTIzNGFjYjI3NjIw
MzE3YTI1M2UxMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTE3MTIsNyArMTcxMiw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogCiAgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgaW50IGNoaWxkSW5k
ZXggPSAwOwotICAgICAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2lu
dCA9IG5vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgICAgICBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2lu
dDsKICAgICAgICAgICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIGNoaWxkSW5kZXgrKykpOyAvLyBHbG9iYWxPYmplY3QuCiAgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERP
TS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA3NmIyYmFlYzcxNmMyZjM2
YjZiZTU0MzYwYTlkMzNkZDRhMTRmM2FjLi5mOTU3ZjVjZmJkNzg4ZWRkNjI2ODk1ZmYxZGUzNTA3
MTM2ZDE0MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC05MDEsNiAr
OTAxLDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJh
ZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vz
c0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNW
YWx1ZXM7CisgICAgQmFnPENhbGxET01EYXRhPiBtX2NhbGxET01EYXRhOwogICAgIFZlY3RvcjxJ
bmxpbmVWYXJpYWJsZURhdGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8
Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRl
Y29kZUxpdmVuZXNzOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlS2lsbHM+PiBtX2J5dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xJQ01QaGFzZS5jcHAKaW5kZXggZTYwOTc2NGU4NTljZjgwZGRhYzU4YjNjNDJjMDcwNWMx
MmU5MjYzYS4uOTdlMWVhYWRhZTlhMDQ4MDAyZWVkYTM3ZmU3YTU2YWU5ZTRlNmJiMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcApAQCAtMzM5LDcgKzMzOSw3
IEBAIGNsYXNzIExJQ01QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIC8vIEl0IGp1c3Qg
c28gaGFwcGVucyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgd2UgY3VycmVudGx5IGtub3cgaG93IHRv
IGhvaXN0CiAgICAgICAgIC8vIGRvbid0IGhhdmUgdmFyLWFyZyBjaGlsZHJlbi4gVGhhdCBtYXkg
Y2hhbmdlIGFuZCB0aGVuIHdlIGNhbiBmaXggdGhpcwogICAgICAgICAvLyBjb2RlLiBCdXQgZm9y
IG5vdyB3ZSBqdXN0IGFzc2VydCB0aGF0J3MgdGhlIGNhc2UuCi0gICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICAg
ICAgLy8gREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFz
VmFyQXJncykpOwogICAgICAgICAKICAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShD
aGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGM5NDExZDUwY2ZiYTljNTRiMDJjMzQ4NjQ5N2U0
MDM0MTI3YWRkYmMuLmMyZDBjYjAyNTdkZmJkY2ZhNTFhMDMwZWM5ZGEzNWU0MzEyM2M1NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OSw2ICs1OSw3IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFz
cyBQYXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTVBhdGNocG9pbnQ7CiB9CkBAIC0yMzEsNiArMjMy
LDExIEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZsdXNoZWRBdCBmbHVzaGVkQXQo
KSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9jYWwpOyB9CiB9OwogCitzdHJ1
Y3QgQ2FsbERPTURhdGEgeworICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgeyBudWxs
cHRyIH07CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCB7IG51bGxw
dHIgfTsKK307CisKIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNp
bmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KQEAgLTIzMzYsMTUgKzIzNDIs
MTUgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RE9NSklUOjpQ
YXRjaHBvaW50Kj4oKTsKICAgICB9CiAKLSAgICBib29sIGhhc0NhbGxET01QYXRjaHBvaW50KCkg
Y29uc3QKKyAgICBib29sIGhhc0NhbGxET01EYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBvcCgpID09IENhbGxET007CiAgICAgfQogCi0gICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludCogY2FsbERPTVBhdGNocG9pbnQoKQorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0YSgp
CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzQ2FsbERPTVBhdGNocG9pbnQoKSk7Ci0gICAgICAg
IHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50Kj4oKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvLmFzPENhbGxET01EYXRhKj4oKTsKICAgICB9CiAKICAgICBib29s
IGhhc0NsYXNzSW5mbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDVlNjRiYWY5M2M3YmMxMjcxNmNhNzc4MjMyNTc0ODk2
NDMyZjg5OTEuLjMzOWZlMjczODAzMDgzYWMwNjA2NTVhM2QxZDA2MTljZDIzMTE4NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03
MjI1LDcgKzcyMjUsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0Zv
clBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwgVmVjdG9yPAogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQogewotICAgIERPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgpOworICAg
IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0
YSgpLT5wYXRjaHBvaW50OwogCiAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOwogICAgIFZl
Y3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmY1YjQwYzMzZDgzYjkw
ZWUzNTE0ZGIxNjkwNmQ4YTAwNzcwZjk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCkBAIC0wLDAgKzEsNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcC5o
IgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQg
eworCit2b2lkIEFic3RyYWN0SGVhcDo6Y29tcHV0ZSh1bnNpZ25lZCBiZWdpbikKK3sKKyAgICB1
bnNpZ25lZCBjdXJyZW50ID0gYmVnaW47CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRy
ZW4pIHsKKyAgICAgICAgY2hpbGQtPmNvbXB1dGUoY3VycmVudCk7CisgICAgICAgIGN1cnJlbnQg
PSBjaGlsZC0+cmFuZ2UoKS5lbmQoKTsKKyAgICB9CisgICAgQVNTRVJUKGJlZ2luIDwgVUlOVDE2
X01BWCk7CisgICAgQVNTRVJUKGN1cnJlbnQgPD0gVUlOVDE2X01BWCk7CisgICAgbV9yYW5nZSA9
IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7Cit9CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBjZWY5MjcxYzNhYzAwNTlhMDVjNGNkOTJlMTg3ZWMyNGRlODEyNWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgorCisj
aWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitj
bGFzcyBBYnN0cmFjdEhlYXAgeworcHVibGljOgorICAgIEFic3RyYWN0SGVhcCgpID0gZGVmYXVs
dDsKKworICAgIHZvaWQgc2V0UGFyZW50KEFic3RyYWN0SGVhcCogcGFyZW50KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3BhcmVudCk7CisgICAgICAgIHBhcmVudC0+bV9jaGlsZHJlbi5hcHBl
bmQodGhpcyk7CisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OworICAgIH0KKworICAgIGJvb2wg
aXNSb290KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyZW50OyB9CisKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNvbXB1dGUodW5zaWduZWQgYmVnaW4pOworCisgICAgYm9vbCBpc0NvbXB1dGVk
KCkgY29uc3QgeyByZXR1cm4gISFtX3JhbmdlOyB9CisgICAgSGVhcFJhbmdlIHJhbmdlKCkgY29u
c3QgeyByZXR1cm4gbV9yYW5nZTsgfQorCitwcml2YXRlOgorICAgIEFic3RyYWN0SGVhcCogbV9w
YXJlbnQgeyBudWxscHRyIH07CisgICAgVmVjdG9yPEFic3RyYWN0SGVhcCo+IG1fY2hpbGRyZW4g
eyB9OworICAgIEhlYXBSYW5nZSBtX3JhbmdlOworfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2lu
dC5oCmluZGV4IDY5NTgyMGM1YTU5ZDYzZGVkYTQyZjgzZDRmOGI0Nzg1Y2M5YTgzYTAuLjRlZGIy
MzMyYTdhOWQ3ZDQyYjEwYTQxNDZmOTBhODEyMjQ2YWM1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRFZmZlY3Qu
aCIKICNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQu
aCIKIApAQCAtNDUsNiArNDYsOCBAQCBjbGFzcyBDYWxsRE9NUGF0Y2hwb2ludCA6IHB1YmxpYyBQ
YXRjaHBvaW50IHsKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyOTgwCiAgICAgYm9vbCByZXF1aXJlR2xvYmFsT2JqZWN0IHsgdHJ1ZSB9OwogCisgICAg
RWZmZWN0IGVmZmVjdCB7IH07CisKIHByaXZhdGU6CiAgICAgQ2FsbERPTVBhdGNocG9pbnQoKSA9
IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRFZmZlY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODZkMDg5NzRhMGY3ZTYyMjM1ZDEwMTZhOTU3ZjMwNWUwNWM0NmUwZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZm
ZWN0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgi
CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7
CisKK3N0cnVjdCBFZmZlY3QgeworICAgIEhlYXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9w
KCkgfTsKKyAgICBIZWFwUmFuZ2Ugd3JpdGVzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworCisgICAg
Ym9vbCBleGl0c1NpZGV3YXlzIHsgZmFsc2UgfTsKKworICAgIC8vIEZJWE1FOiBGdXJ0aGVyIHdl
IHdvdWxkIGxpa2UgdG8gZXh0ZW5kIHRvIHJlcHJlc2VudCB0aGUgaGVhcCBsb2NhdGlvbiBmb3Ig
dGhlIHB1cmUgdmFsdWUuCisgICAgYm9vbCBwdXJlIHsgZmFsc2UgfTsKKworICAgIHN0YXRpYyBF
ZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJh
bmdlKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJlYWRz
ID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAgICAg
ICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgRWZmZWN0IGZvclB1cmUoSGVh
cFJhbmdlIHJlYWRSYW5nZSA9IEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2Ugd3JpdGVSYW5n
ZSA9IEhlYXBSYW5nZTo6bm9uZSgpKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAg
ICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0g
d3JpdGVSYW5nZTsKKyAgICAgICAgZWZmZWN0LnB1cmUgPSB0cnVlOworICAgICAgICByZXR1cm4g
ZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yQ2hlY2soSGVhcFJhbmdlIHJl
YWRSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpCisgICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0
OworICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7CisgICAgICAgIGVmZmVjdC53cml0
ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0LnB1cmUgPSB0cnVlOworICAg
ICAgICBlZmZlY3QuZXhpdHNTaWRld2F5cyA9IHRydWU7CisgICAgICAgIHJldHVybiBlZmZlY3Q7
CisgICAgfQorCisgICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIHdyaXRlcyB8fCBleGl0c1NpZGV3YXlzOworICAgIH0KK307CisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJh
bmdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM5Y2Q0YmE5MGQxZmYwNWMzMjdjODI1MWZjMTQ2ZTQ5NmY3ODVjOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5n
ZS5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworY2xhc3MgSGVhcFJhbmdlIHsKK3B1YmxpYzoKKyAg
ICBjb25zdGV4cHIgSGVhcFJhbmdlKCkgPSBkZWZhdWx0OworCisgICAgY29uc3RleHByIEhlYXBS
YW5nZSh1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVn
aW4pCisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIFJhd1Jl
cHJlc2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24gfTsKKyAgICBleHBsaWNpdCBIZWFw
UmFuZ2UoUmF3UmVwcmVzZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVlKQorICAgICAgICA6IG1f
YmVnaW4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlID4+IDE2KSkKKyAgICAgICAgLCBtX2Vu
ZChzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICB1aW50
MTZfdCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KKyAgICB1aW50MTZfdCBlbmQo
KSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQorICAgIHVpbnQzMl90IHJhd1JlcHJlc2VudGF0aW9u
KCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2JlZ2luKSA8PCAxNikgfCBtX2Vu
ZDsgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9iZWdpbiAhPSBtX2VuZDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2JlZ2luID09
IG90aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7CisgICAgfQorCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgdG9wKCkgeyByZXR1cm4gSGVhcFJhbmdlKDAsIFVJTlQx
Nl9NQVgpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJu
IEhlYXBSYW5nZShVSU5UMTZfTUFYLCBVSU5UMTZfTUFYKTsgfSAvLyBFbXB0eSByYW5nZS4KKwor
ICAgIGJvb2wgaXNTdHJpY3RTdWJ0eXBlT2YoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGlmICghKnRoaXMgfHwgIW90aGVyKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBtX2JlZ2luIDw9IG90aGVyLm1fYmVnaW4gJiYgb3RoZXIu
bV9lbmQgPD0gbV9lbmQ7CisgICAgfQorCisgICAgYm9vbCBpc1N1YnR5cGVPZihjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCEqdGhpcyB8fCAhb3RoZXIp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgqdGhpcyA9PSBvdGhlcikK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gaXNTdHJpY3RTdWJ0eXBl
T2Yob3RoZXIpOworICAgIH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgSGVhcFJhbmdlJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJhbmdlc092ZXJsYXAobV9i
ZWdpbiwgbV9lbmQsIG90aGVyLm1fYmVnaW4sIG90aGVyLm1fZW5kKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgdWludDE2X3QgbV9iZWdpbiB7IFVJTlQxNl9NQVggfTsKKyAgICB1aW50MTZfdCBt
X2VuZCB7IFVJTlQxNl9NQVggfTsKK307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhNjU3ZTA2Yzc4OTE5YzIy
Yzk4ZGNhYTNkYjMzMWFlOTFjZmQzMWRkLi4zYzNlOGRhNTNmY2VmMjBkZDg0OTg1MzZmZjEzMTdj
MWFjYzdlZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC05MDY0LDcgKzkwNjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
dm9pZCBjb21waWxlQ2FsbERPTSgpCiAgICAgewotICAgICAgICBET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgIERP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTURhdGEoKS0+
cGF0Y2hwb2ludDsKICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOwogCiAgICAgICAgIExWYWx1
ZSBnbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKaW5kZXggMWQyZmMxODRlMGMwNDBmZjc5YzFi
NDYxNTJkOTNlNTM3NmViY2EzNy4uYzEwOTNmYTY4MDY4MWEyMjY2M2IyOWI3NzIyMTEyZjdkOTlj
YmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL01hdGhFeHRyYXMuaApAQCAtNDQ0LDEyICs0NDQsOCBAQCBpbmxpbmUgYm9vbCBu
b25FbXB0eVJhbmdlc092ZXJsYXAoVCBsZWZ0TWluLCBUIGxlZnRNYXgsIFQgcmlnaHRNaW4sIFQg
cmlnaHRNYXgpCiB7CiAgICAgQVNTRVJUKGxlZnRNaW4gPCBsZWZ0TWF4KTsKICAgICBBU1NFUlQo
cmlnaHRNaW4gPCByaWdodE1heCk7Ci0gICAgCi0gICAgaWYgKGxlZnRNaW4gPD0gcmlnaHRNaW4g
JiYgbGVmdE1heCA+IHJpZ2h0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmln
aHRNaW4gPD0gbGVmdE1pbiAmJiByaWdodE1heCA+IGxlZnRNaW4pCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBsZWZ0TWF4ID4gcmlnaHRNaW4g
JiYgcmlnaHRNYXggPiBsZWZ0TWluOwogfQogCiAvLyBQYXNzIHJhbmdlcyB3aXRoIHRoZSBtaW4g
YmVpbmcgaW5jbHVzaXZlIGFuZCB0aGUgbWF4IGJlaW5nIGV4Y2x1c2l2ZS4gRm9yIGV4YW1wbGUs
IHRoaXMgc2hvdWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFmYTM2NjIwOGFiMTIzMzU0MGY2
ZGI0NmIxY2I0MzFlNzU3MDU3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgiCisKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQ+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7IG5hbWVzcGFjZSBET01KSVQgeworCitBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5KCkKK3sKKyAgICBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIERPTUhl
YXA7CisjZGVmaW5lIERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXAgbmFtZSMjSGVhcDsKKyAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNU
KERPTUpJVF9ERUZJTkVfSEVBUCkKKyN1bmRlZiBET01KSVRfREVGSU5FX0hFQVAKKworI2RlZmlu
ZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5hbWUsIHBhcmVudCkgbmFtZSMjSGVhcC5zZXRQYXJl
bnQoJnBhcmVudCMjSGVhcCk7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRf
REVGSU5FX0hFQVApCisjdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfSEVBUAorCisgICAgRE9NSGVh
cC5jb21wdXRlKDApOworCisjZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBw
YXJlbnQpIG5hbWUgPSBuYW1lIyNIZWFwLnJhbmdlKCk7CisgICAgRE9NSklUX0FCU1RSQUNUX0hF
QVBfTElTVChET01KSVRfREVGSU5FX0hFQVApCisjdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVN
QkVSCit9CisKK2NvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6Omluc3RhbmNlKCkKK3sKKyAgICBOZXZlckRlc3Ryb3llZDxBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5PiByZXBvc2l0b3J5OworICAgIHJldHVybiByZXBvc2l0b3J5LmdldCgpOworfQorCit9
IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGM2MTc1MjUwMjk2ZWM3MmUzNGRjZGQ1
ODNhMzU5NGU5YzYwYWZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFj
ZSBET01KSVQgeworCisvLyBEZXNjcmliZSB5b3VyIGFic3RyYWN0IGhlYXAgaGllcmFyY2h5IGhl
cmUuCisvLyBWKEFic3RyYWN0SGVhcE5hbWUsIFBhcmVudCkKKyNkZWZpbmUgRE9NSklUX0FCU1RS
QUNUX0hFQVBfTElTVChWKSBcCisgICAgVihOb2RlLCBET00pIFwKKyAgICBWKE5vZGVfZmlyc3RD
aGlsZCwgTm9kZSkgXAorICAgIFYoTm9kZV9sYXN0Q2hpbGQsIE5vZGUpIFwKKyAgICBWKE5vZGVf
cGFyZW50Tm9kZSwgTm9kZSkgXAorICAgIFYoTm9kZV9uZXh0U2libGluZywgTm9kZSkgXAorICAg
IFYoTm9kZV9wcmV2aW91c1NpYmxpbmcsIE5vZGUpIFwKKworCitjbGFzcyBBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5IHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKEFic3RyYWN0SGVhcFJlcG9zaXRvcnkp
OworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
JiBpbnN0YW5jZSgpOworCisgICAgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007CisKKyNkZWZp
bmUgRE9NSklUX0RFRklORV9NRU1CRVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6SGVhcFJh
bmdlIG5hbWU7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01F
TUJFUikKKyN1bmRlZiBET01KSVRfREVGSU5FX01FTUJFUgorCitwcml2YXRlOgorICAgIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkoKTsKK307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUSGVscGVycy5oCmluZGV4IDE4MDZiMmFmYTFjNDcxYzAzMDQ2MzBiODAzOGYwMzIz
ZjZlMzYxZWIuLmE4NWJjZGNhYjU4MWViMDFiZTBjMzBmOTZmMzVlY2Q5NGQ0ZDE2ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtMzIsOCArMzIsNyBAQAogCiAjaWYg
RU5BQkxFKEpJVCkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIERPTUpJVEhlbHBl
cnMgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogdXNpbmcgSlND
OjpDQ2FsbEhlbHBlcnM7CiB1c2luZyBKU0M6OkdQUlJlZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pT
Tm9kZURPTUpJVC5jcHAKaW5kZXggYjk2OTNhY2FhNzUyYTQ0NDhkNDE2Y2MwNDE3NzcyYzAwMGU4
N2NiMi4uNjhhOTg3OWRmZDk1YWVkZjdjZThlNzgxYWY1Y2U2MmNmZGJkMmVmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIFJl
ZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNz
KHB0cmRpZmZfdCBvZmYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHNjcmF0Y2gsIG9mZnNldCksIHNjcmF0Y2gpOwogICAgICAgICBudWxsQ2FzZXMuYXBwZW5kKGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaCkpOwogCi0gICAgICAg
IERPTUpJVEhlbHBlcnM6OnRvV3JhcHBlcjxXcmFwcGVkTm9kZT4oaml0LCBwYXJhbXMsIHNjcmF0
Y2gsIGdsb2JhbE9iamVjdCwgcmVzdWx0LCB0b1dyYXBwZXJTbG93PFdyYXBwZWROb2RlPiwgcGFy
YW1zWzFdLnZhbHVlKCkpOworICAgICAgICBET01KSVQ6OnRvV3JhcHBlcjxXcmFwcGVkTm9kZT4o
aml0LCBwYXJhbXMsIHNjcmF0Y2gsIGdsb2JhbE9iamVjdCwgcmVzdWx0LCB0b1dyYXBwZXJTbG93
PFdyYXBwZWROb2RlPiwgcGFyYW1zWzFdLnZhbHVlKCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbnVsbENhc2VzLmxpbmsoJmppdCk7
CkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05v
ZGUoKQogICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBh
dGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0Nh
bGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKERPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1sw
XS5ncHIoKSkpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoSWZO
b3ROb2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIHJldHVybiBmYWlsdXJlQ2Fz
ZXM7CiAgICAgfSk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CkBAIC0xMDIsNyArMTAyLDEwIEBA
IFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjaGVja0RPTSgp
CiAKIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6
Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9k
ZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZp
cnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1
aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9y
T2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBD
b250YWluZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRS
ZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IERPTUpJVDo6
RWZmZWN0Ojpmb3JSZWFkV3JpdGUoaGVhcC5Ob2RlX2ZpcnN0Q2hpbGQsIERPTUpJVDo6SGVhcFJh
bmdlOjpub25lKCkpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI2xhc3RD
aGlsZC4KQEAgLTExMyw3ICsxMTYsMTAgQEAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxh
c3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2lu
dD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNh
bGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5v
ZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5l
ckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hw
b2ludCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9k
ZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNl
dCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBv
aW50LT5lZmZlY3QgPSBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKGhlYXAuTm9kZV9sYXN0
Q2hpbGQsIERPTUpJVDo6SGVhcFJhbmdlOjpub25lKCkpOworICAgIHJldHVybiBwYXRjaHBvaW50
OwogfQogCiAvLyBOb2RlI25leHRTaWJsaW5nLgpAQCAtMTI0LDcgKzEzMCwxMCBAQCBSZWY8RE9N
SklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVm
PERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERP
TSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9k
ZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50
OjpOb3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVD
YWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0
KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdCA9IERPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkV3JpdGUoaGVhcC5Ob2RlX25l
eHRTaWJsaW5nLCBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKTsKKyAgICByZXR1cm4gcGF0Y2hw
b2ludDsKIH0KIAogLy8gTm9kZSNwcmV2aW91c1NpYmxpbmcuCkBAIC0xMzUsNyArMTQ0LDEwIEBA
IFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNr
RE9NKCkKIAogUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxp
bmdET01KSVQ6OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0
QWNjZXNzPE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRh
aW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFw
ID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8g
cGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJl
dmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6
Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IERPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkV3JpdGUoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZywgRE9NSklUOjpIZWFwUmFuZ2U6
Om5vbmUoKSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjcGFyZW50Tm9k
ZS4KQEAgLTE0Niw3ICsxNTgsMTAgQEAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVu
dE5vZGVET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2Fs
bERPTUZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnROb2RlTWVtb3J5
T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAg
IGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3Rh
bmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vz
czxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnROb2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFp
bmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9pbnQtPmVmZmVj
dCA9IERPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkV3JpdGUoaGVhcC5Ob2RlX3BhcmVudE5vZGUsIERP
TUpJVDo6SGVhcFJhbmdlOjpub25lKCkpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAv
LyBOb2RlI25vZGVUeXBlLgpAQCAtMTU4LDYgKzE3Myw3IEBAIFJlZjxET01KSVQ6OlBhdGNocG9p
bnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tET00oKQogUmVmPERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7CiAgICAgUmVmPERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBET01KSVQ6OkVmZmVjdDo6
Zm9yUHVyZSgpOwogICAgIHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsK
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01K
SVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292522</attachid>
            <date>2016-10-22 17:46:21 -0700</date>
            <delta_ts>2016-10-22 17:55:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022174240.patch</filename>
            <type>text/plain</type>
            <size>64621</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi45NWVlYTU2NTRkNmVmMWZi
MTc4ZmFmMDYwZGFjNzFiZDUwYTFmZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6Om92
ZXJsYXBzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlclNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q2xvYmJlclNldDo6Y29udGFpbnMpOgor
ICAgICAgICAoSlNDOjpERkc6OkNsb2JiZXJTZXQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBkZmcv
REZHQ2xvYmJlclNldC5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpMSUNNUGhhc2U6OmF0dGVtcHRIb2lzdCk6CisgICAgICAgICogZGZnL0RG
R05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWxsRE9NRGF0YSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2FsbERPTURhdGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0NhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpjYWxsRE9NUGF0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNhbGxET00pOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBv
aW50LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpjb21wdXRlKToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAg
KEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OnNldFBhcmVudCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6QWJzdHJhY3RIZWFwOjppc1Jvb3QpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3Ry
YWN0SGVhcDo6aXNDb21wdXRlZCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFw
OjpyYW5nZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50Lmg6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVEVmZmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkV3JpdGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVm
ZmVjdDo6Zm9yUHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JDaGVjayk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0R2VuZXJhdGUpOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6OkRP
TUpJVDo6SGVhcFJhbmdlOjpkdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6SGVhcFJhbmdlKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcpOgorICAgICAgICAoSlND
OjpET01KSVQ6OkhlYXBSYW5nZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBS
YW5nZTo6ZW5kKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnJhd1JlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIGJvb2wp
OgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3ApOgorICAgICAgICAoSlNDOjpET01KSVQ6Okhl
YXBSYW5nZTo6bm9uZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N0cmlj
dFN1YnR5cGVPZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N1YnR5cGVP
Zik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvdmVybGFwcyk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NKToKKwogMjAxNi0xMC0yMSAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdl
dEJ5SWQgbmVlZHMgdG8gcGFzcyBpbiBOZWVkc1RvU3BpbGwgYWxvbmcgYm90aCB0aGUgY2VsbCBz
cGVjdWxhdGlvbiBhbmQgdW50eXBlZCBzcGVjdWxhdGlvbiBwYXRoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc3OWFlNGNkYjlm
NWJlNmJjY2E4NDA5YTBkMjc0N2E5M2Y0NGQ3MmYuLmM4MmM2NDY4ZDgzZWJhNDNjOGM3YTlhODEx
NTIxOTcwMTNmYmJjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMjIgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEg
d2F5IGZvciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6
CisgICAgICAgIChXVEY6Om5vbkVtcHR5UmFuZ2VzT3ZlcmxhcCk6CisKIDIwMTYtMTAtMjAgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIFdBU00gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTk4M2I5NjcxNGIyYjI3ZmQ4MGVhOTQ5
MGUxOGYwNGQ3ZDA5Mjg5Li4xNWIzYjNmNTllOGM0ZmY4NTYzNjViZjlmYjU1Yzk4OGM4YzI0NGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTYtMTAtMjIgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZv
ciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
Q2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKToKKyAgICAgICAgKiBk
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAg
ICogZG9taml0L0RPTUpJVEhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBl
cnM6OmJyYW5jaElmTm90V29ybGRJc05vcm1hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdFdlYWtJc0xpdmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dHJ5TG9va1VwV3JhcHBlckNhY2hlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OnRvV3JhcHBlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkRPTVdyYXBwZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RET01X
cmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5j
aElmTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFu
Y2hJZk5vdE5vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6
YnJhbmNoSWZFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBl
cnM6OmJyYW5jaElmTm90RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01K
SVRIZWxwZXJzOjpicmFuY2hJZkRvY3VtZW50V3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdERvY3VtZW50V3JhcHBlcik6IERlbGV0
ZWQuCisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJVC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAtMjIgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkaW5nIGN1c3RvbSBlbGVtZW50
IHNob3VsZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQgYW5kIGNvbm5lY3RlZCBjYWxsYmFja3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMWNiMjk0NzM3YjI0NGYyMWRi
N2E5NTM5NzllNDkyYjczMDA0MmQ4Li44N2Y3M2U1YTA3MGNjMTIyMWZjOGQ0MjMyMjVjMzcxODYw
NjQ5ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MTMsNiArNDEz
LDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkaXNhc3NlbWJsZXIvdWRpczg2
L3VkaXM4Nl9zeW4taW50ZWwuYwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5bi5j
CiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcAorICAgIGRvbWppdC9ET01KSVRI
ZWFwUmFuZ2UuY3BwCisKICAgICBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAogICAgIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFkYTMxNGRhNmNm
YjQ3MDFhMzMzOGZiMzBjMzM3MS4uZmFiMjE5ODI2YjM5Nzc1NzdkNWUwZDM0NTNjZjNjZDJjZTA1
MWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjMsNiArMjE2MywxMCBA
QAogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTVBhdGNocG9pbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5
MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4NTMw
MEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1v
ZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERD
NSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTM1Q0ExNTMxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJ
VEhlYXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLzsg
fTsKKwkJRTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1
NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNUNBMTU1MURCQzNBNUYwMEY4MzUxNiAvKiBET01K
SVRBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5j
cHAgKi87IH07CisJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNB
MTUwMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FCNDNFMDA3
M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlFMzVFMDM2
MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5jcHAgKi87IH07CkBAIC0yMTc3LDYgKzIxODEsNyBAQAogCQlFM0JGRDBCQjFEQUY4
MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkxREFGODA3
QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLzsgfTsK
IAkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuaCAqLzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4
RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDNzlDQUIxREI5QTREQzAwRDFF
Q0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2
NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNF
Rjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9
OwpAQCAtNDUzMyw2ICs0NTM4LDEwIEBACiAJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBE
T01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUxvYWRlclByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUxMUI3REM4NTMwMEM1
MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNUNBMTRGMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTAxREJDM0E1NjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRBYnN0cmFjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklU
SGVhcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlYXBS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3
M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NTQ4LDYgKzQ1NTcsNyBAQAogCQlFM0JGRDBCOTFEQUY4MDdD
MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQ
YXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0JGRDBCQTFEQUY4MDdD
MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhG
IC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M3OUNB
QTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVEVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTbG93UGF0aENhbGxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDAzLDggKzc0MTMsMTMgQEAKIAkJRTNGRjc1MkQxRDlD
RTlFQTAwQzdFMTZEIC8qIGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0
SGVhcC5jcHAgKi8sCisJCQkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcC5oICovLAogCQkJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxs
RE9NUGF0Y2hwb2ludC5oICovLAorCQkJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01K
SVRFZmZlY3QuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0
dGVyU2V0dGVyLmggKi8sCisJCQkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhl
YXBSYW5nZS5jcHAgKi8sCisJCQkJRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhl
YXBSYW5nZS5oICovLAogCQkJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRj
aHBvaW50LmggKi8sCiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklU
UmVnLmggKi8sCkBAIC03NjMyLDYgKzc2NDcsNyBAQAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhC
QURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4
MjIxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlD
QzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4g
SGVhZGVycyAqLywKKwkJCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdl
bmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTg2RTEx
NkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywK
QEAgLTgyOTksNiArODMxNSw3IEBACiAJCQkJQUQyRkNDMUYxREI1OUNCMjAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUz
NTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZCMUMxNjI1QkUwMDMy
M0Y2NyAvKiBCM0NGRy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDE3LDYgKzg0MzQsNyBAQAogCQkJ
CTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLAog
CQkJCURDMDE4NDE5MUQxMEMxODkwMDU3QjA1MyAvKiBKSVRXb3JrbGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzNUNBMTU0MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFu
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2Rl
bHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERD
NSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTkyNCw2ICs5
OTQyLDcgQEAKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNFNDBEMUI2MThCNjYw
MEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzVD
QTE1MzFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5
U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyog
UHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5NDIsNiArOTk2MSw3IEBACiAJ
CQkJODY0MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDI4MDg0MzEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQ0MTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdF
eHBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNTUxREJDM0E1RjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQwQzdB
MDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NTQwQzdBMTFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVy
U2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEhlYXAuY3BwCmluZGV4IDFlMTEwMTkwMmRiMjVlYWQ3ZjhkN2VmOTliNDljNDg0MWMx
OGQxMWQuLmNkNjk0YmJlYmFjODA3ZDUxOGY2NmM0N2NhYWFiNmU3OGU5MWQyM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAKQEAgLTQ1LDYgKzQ1
LDEwIEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAg
ICAgb3V0LnByaW50KGtpbmQoKSk7CiAgICAgaWYgKGtpbmQoKSA9PSBJbnZhbGlkQWJzdHJhY3RI
ZWFwIHx8IGtpbmQoKSA9PSBXb3JsZCB8fCBraW5kKCkgPT0gSGVhcCB8fCBwYXlsb2FkKCkuaXNU
b3AoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChraW5kKCkgPT0gRE9NU3RhdGUpIHsKKyAg
ICAgICAgb3V0LnByaW50KCIoIiwgRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcocGF5bG9hZCgp
LnZhbHVlMzIoKSksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgb3V0LnByaW50
KCIoIiwgcGF5bG9hZCgpLCAiKSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEhlYXAuaAppbmRleCAwYWJkNTAyN2IyNmFlYjM5NGYyOWMwMzhmZDlmMmQ1OTJl
NmMxNjM5Li5mNTFmODJmZTEzN2UyNWEzZjc5YTUyYjFmMTFiMGM1MzMxYTMwODNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgi
CiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTczLDYgKzc0LDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE1hdGhEb3RSYW5kb21TdGF0ZSkgXAog
ICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKICAgICBtYWNybyhBYnNvbHV0ZSkgXAorICAgIC8q
IERPTUpJVCB0ZWxscyB0aGUgaGVhcCByYW5nZSB3aXRoIHRoZSBwYWlyIG9mIGludGVnZXJzLiAq
L1wKKyAgICBtYWNybyhET01TdGF0ZSkgXAogICAgIC8qIFVzZSB0aGlzIGZvciB3cml0ZXMgb25s
eSwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1heSBmaXJlIHdhdGNocG9pbnRzLiBVc3VhbGx5IHRo
aXMgaXMgbmV2ZXIgZGlyZWN0bHkgd3JpdHRlbiBidXQgaW5zdGVhZCB3ZSB0ZXN0IHRvIHNlZSBp
ZiBhIG5vZGUgY2xvYmJlcnMgdGhpczsgaXQganVzdCBzbyBoYXBwZW5zIHRoYXQgeW91IGhhdmUg
dG8gd3JpdGUgd29ybGQgdG8gY2xvYmJlciBpdC4gKi9cCiAgICAgbWFjcm8oV2F0Y2hwb2ludF9m
aXJlKSBcCiAgICAgLyogVXNlIHRoZXNlIGZvciByZWFkcyBvbmx5LCBqdXN0IHRvIGluZGljYXRl
IHRoYXQgaWYgdGhlIHdvcmxkIGdvdCBjbG9iYmVyZWQsIHRoZW4gdGhpcyBvcGVyYXRpb24gd2ls
bCBub3Qgd29yay4gKi9cCkBAIC0yMzMsNiArMjM2LDE1IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7
CiAgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBj
b25zdAogICAgIHsKICAgICAgICAgQWJzdHJhY3RIZWFwIGN1cnJlbnQgPSAqdGhpczsKKyAgICAg
ICAgaWYgKGN1cnJlbnQua2luZCgpID09IERPTVN0YXRlICYmIG90aGVyLmtpbmQoKSA9PSBET01T
dGF0ZSkgeworICAgICAgICAgICAgUGF5bG9hZCBjdXJyZW50UGF5bG9hZCA9IGN1cnJlbnQucGF5
bG9hZCgpOworICAgICAgICAgICAgUGF5bG9hZCBvdGhlclBheWxvYWQgPSBvdGhlci5wYXlsb2Fk
KCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFBheWxvYWQuaXNUb3AoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAob3RoZXJQYXlsb2FkLmlzVG9wKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gRE9NSklU
OjpIZWFwUmFuZ2U6OmZyb21SYXcoY3VycmVudFBheWxvYWQudmFsdWUzMigpKS5pc1N0cmljdFN1
YnR5cGVPZihET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhvdGhlclBheWxvYWQudmFsdWUzMigp
KSk7CisgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGN1cnJlbnQua2luZCgpICE9IFdvcmxkKSB7
CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5zdXBlcnR5cGUoKTsKICAgICAgICAgICAg
IGlmIChjdXJyZW50ID09IG90aGVyKQpAQCAtMjQ4LDcgKzI2MCwxNiBAQCBjbGFzcyBBYnN0cmFj
dEhlYXAgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhl
cikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAqdGhpcyA9PSBvdGhlciB8fCBpc1N0cmlj
dFN1YnR5cGVPZihvdGhlcikgfHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBlT2YoKnRoaXMpOworICAg
ICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSAmJiBvdGhlci5raW5kKCkgPT0gRE9NU3RhdGUpIHsK
KyAgICAgICAgICAgIFBheWxvYWQgY3VycmVudFBheWxvYWQgPSBwYXlsb2FkKCk7CisgICAgICAg
ICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQoKTsKKyAgICAgICAgICAg
IGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpIHx8IG90aGVyUGF5bG9hZC5pc1RvcCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIERPTUpJVDo6SGVh
cFJhbmdlOjpmcm9tUmF3KGN1cnJlbnRQYXlsb2FkLnZhbHVlMzIoKSkub3ZlcmxhcHMoRE9NSklU
OjpIZWFwUmFuZ2U6OmZyb21SYXcob3RoZXJQYXlsb2FkLnZhbHVlMzIoKSkpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikgfHwgb3RoZXIuaXNTdHJp
Y3RTdWJ0eXBlT2YoKnRoaXMpOwogICAgIH0KICAgICAKICAgICBib29sIGlzRGlzam9pbnQoY29u
c3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBhMTJm
MDljYjFiOTRhMGEzMDQzNjM3MGM3MmFhMjFjNWVkODE5NWZiLi5mMDlkNDFiN2I3Y2EzMzNhMjQw
OWIxZTU0NWI1NTg0MGRjZjBmYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yMjg5LDEwICsy
Mjg5LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZpbHRlckNsYXNzSW5m
byh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBDYWxsRE9NOgotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjbG9iYmVyTGltaXQpOworICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hw
b2ludDsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPmVmZmVjdC53cml0ZXMpCisgICAgICAgICAg
ICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAg
ICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwogICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUo
KS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkp
IHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDQ4ODQy
MDZiM2Y1NmQ3NGU2ZjI2ZWY1NmI1OGNmYWE1NjU3MGQ4OTkuLmE1YjA0Y2E2NjE0NWFiNTNlNjYy
ODc3YWRhN2QyMzdkNGNiMjlkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjczLDYgKzI2NzMsMTMgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBH
ZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0
aWMgdm9pZCBibGVzc0NhbGxET00oTm9kZSogbm9kZSkKK3sKKyAgICBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsK
KyAgICBpZiAoIXBhdGNocG9pbnQtPmVmZmVjdC5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgbm9k
ZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFy
aWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
CiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQpAQCAtMjY5MSwxNCArMjY5OCwyMSBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQs
IGNvbnN0IEdldEJ5SWRWYXJpYW50JgogICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGVtaXQgQ2hl
Y2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNjZXNzb3IgaXMgcmVwbGFjZWQg
dG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24gb2NjdXJzLgogICAgIGFkZFRv
R3JhcGgoQ2hlY2tET00sIE9wSW5mbyhjaGVja0RPTVBhdGNocG9pbnQucHRyKCkpLCBPcEluZm8o
ZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9kZSk7CiAKKyAgICBDYWxsRE9NRGF0YSog
Y2FsbERPTURhdGEgPSBtX2dyYXBoLm1fY2FsbERPTURhdGEuYWRkKCk7CiAgICAgUmVmPERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET01QYXRjaHBvaW50ID0gZG9tSklULT5jYWxsRE9N
KCk7CiAgICAgbV9ncmFwaC5tX2RvbUpJVFBhdGNocG9pbnRzLmFwcGVuZChjYWxsRE9NUGF0Y2hw
b2ludC5wdHIoKSk7CisKKyAgICBjYWxsRE9NRGF0YS0+ZG9tSklUID0gZG9tSklUOworICAgIGNh
bGxET01EYXRhLT5wYXRjaHBvaW50ID0gY2FsbERPTVBhdGNocG9pbnQucHRyKCk7CisKICAgICBp
ZiAoY2FsbERPTVBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpIHsKICAgICAgICAgTm9k
ZSogZ2xvYmFsT2JqZWN0ID0gYWRkVG9HcmFwaChHZXRHbG9iYWxPYmplY3QsIHRoaXNOb2RlKTsK
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2xvYmFsT2JqZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9m
IHRoaXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIuCiAgICAgfQog
ICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNOb2RlKTsKLSAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJl
c3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgQ2FsbERPTSwgT3BJbmZvKGNh
bGxET01QYXRjaHBvaW50LnB0cigpKSwgT3BJbmZvKHByZWRpY3Rpb24pKSk7CisgICAgTm9kZSog
Y2FsbERPTU5vZGUgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgQ2FsbERPTSwgT3BJbmZvKGNh
bGxET01EYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICBibGVzc0NhbGxET00oY2FsbERP
TU5vZGUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGNhbGxET01O
b2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlclNldC5jcHAKaW5kZXggZDQ2MzBlMzcwY2IwYmFjMjNkOTk0MmY1ZmZjZTM4ZmI1
OGRhMmRlYy4uYjFhOTU3OGM3NWRhYjAxODJiZjg4Njg3ZjVjNzAzODA1Y2M5M2ZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCkBAIC03NCwxMyArNzQs
NDkgQEAgYm9vbCBDbG9iYmVyU2V0Ojpjb250YWlucyhBYnN0cmFjdEhlYXAgaGVhcCkgY29uc3QK
ICAgICBIYXNoTWFwPEFic3RyYWN0SGVhcCwgYm9vbD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBt
X2Nsb2JiZXJzLmZpbmQoaGVhcCk7CiAgICAgaWYgKGl0ZXIgPT0gbV9jbG9iYmVycy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAgICBpZiAo
aXRlci0+dmFsdWUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChoZWFwLmtpbmQoKSA9
PSBET01TdGF0ZSAmJiAhaGVhcC5wYXlsb2FkKCkuaXNUb3AoKSkgeworICAgICAgICAvLyBET01T
dGF0ZSBoZWFwIGhhcyBpdHMgb3duIGhpZXJhcmNoeS4gRm9yIGRpcmVjdCBoZWFwIGNsb2JiZXJz
IHRoYXQgcGF5bG9hZCBpcyBub3QgVG9wLAorICAgICAgICAvLyB3ZSBzaG91bGQgcXVlcnkgd2hl
dGhlciB0aGUgY2xvYmJlciBvdmVybGFwcyB3aXRoIHRoZSBnaXZlbiBoZWFwLgorICAgICAgICBE
T01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9IERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGhlYXAu
cGF5bG9hZCgpLnZhbHVlMzIoKSk7CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogbV9jbG9iYmVy
cykgeworICAgICAgICAgICAgYm9vbCBkaXJlY3QgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAg
aWYgKCFkaXJlY3QpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBBYnN0
cmFjdEhlYXAgY2xvYmJlciA9IHBhaXIua2V5OworICAgICAgICAgICAgaWYgKGNsb2JiZXIua2lu
ZCgpICE9IERPTVN0YXRlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKGNsb2JiZXIucGF5bG9hZCgpLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAoRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY2xvYmJlci5wYXls
b2FkKCkudmFsdWUzMigpKS5vdmVybGFwcyhyYW5nZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIENs
b2JiZXJTZXQ6Om92ZXJsYXBzKEFic3RyYWN0SGVhcCBoZWFwKSBjb25zdAogewogICAgIGlmICht
X2Nsb2JiZXJzLmZpbmQoaGVhcCkgIT0gbV9jbG9iYmVycy5lbmQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKGhlYXAua2luZCgpID09IERPTVN0YXRlICYmICFoZWFwLnBheWxvYWQo
KS5pc1RvcCgpKSB7CisgICAgICAgIC8vIERPTVN0YXRlIGhlYXAgaGFzIGl0cyBvd24gaGllcmFy
Y2h5LiBGb3IgZGlyZWN0IGhlYXAgY2xvYmJlcnMgdGhhdCBwYXlsb2FkIGlzIG5vdCBUb3AsCisg
ICAgICAgIC8vIHdlIHNob3VsZCBxdWVyeSB3aGV0aGVyIHRoZSBjbG9iYmVyIG92ZXJsYXBzIHdp
dGggdGhlIGdpdmVuIGhlYXAuCisgICAgICAgIERPTUpJVDo6SGVhcFJhbmdlIHJhbmdlID0gRE9N
SklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoaGVhcC5wYXlsb2FkKCkudmFsdWUzMigpKTsKKyAgICAg
ICAgZm9yIChhdXRvIHBhaXIgOiBtX2Nsb2JiZXJzKSB7CisgICAgICAgICAgICBib29sIGRpcmVj
dCA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBpZiAoIWRpcmVjdCkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIEFic3RyYWN0SGVhcCBjbG9iYmVyID0gcGFpci5rZXk7
CisgICAgICAgICAgICBpZiAoY2xvYmJlci5raW5kKCkgIT0gRE9NU3RhdGUpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoY2xvYmJlci5wYXlsb2FkKCkuaXNUb3Ao
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChET01KSVQ6Okhl
YXBSYW5nZTo6ZnJvbVJhdyhjbG9iYmVyLnBheWxvYWQoKS52YWx1ZTMyKCkpLm92ZXJsYXBzKHJh
bmdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KICAg
ICB3aGlsZSAoaGVhcC5raW5kKCkgIT0gV29ybGQpIHsKICAgICAgICAgaGVhcCA9IGhlYXAuc3Vw
ZXJ0eXBlKCk7CiAgICAgICAgIGlmIChjb250YWlucyhoZWFwKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyU2V0LmgKaW5kZXggNzI5ZjM5YjExODUxOGE5NTU1ZWM0NjE2NmVl
YWY3ZGRlZDRhYmU0NS4uMzg5ZDgzYzk3ZjZkYzQ0NmZiOGYxZGZlYWIwNzk1ZmZiYWI0YWEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmgKQEAgLTU3LDYgKzU3
LDcgQEAgY2xhc3MgQ2xvYmJlclNldCB7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAgIC8v
IENhbGxzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERvIG5v
dCBjYWxsIGZvciBub24gZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3QgaGFu
ZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxBYnN0
cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBzdXBl
cigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCBmOTI5MzM3YWZlOTM4NzJlNTA4MTgwZDJiNWYyY2M2YjZhYmM4NDRjLi5jYzZlNGQzN2IyY2Q2
YmNkNTgyZjRjNDY5NjdjMDI0YjlhZjY3ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRGR0hlYXBMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkRGR0xhenlOb2RlLmgiCiAjaW5jbHVkZSAiREZHUHVyZVZhbHVl
LmgiCisjaW5jbHVkZSAiRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC05MDcsMTAgKzkwOCwzMCBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29u
c3QgV3JpdGVGdQogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmNsYXNzSW5mbygp
KSk7CiAgICAgICAgIHJldHVybjsKIAotICAgIGNhc2UgQ2FsbERPTToKLSAgICAgICAgcmVhZChX
b3JsZCk7Ci0gICAgICAgIHdyaXRlKEhlYXApOworICAgIGNhc2UgQ2FsbERPTTogeworICAgICAg
ICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURh
dGEoKS0+cGF0Y2hwb2ludDsKKyAgICAgICAgRE9NSklUOjpFZmZlY3QgZWZmZWN0ID0gcGF0Y2hw
b2ludC0+ZWZmZWN0OworICAgICAgICBpZiAoZWZmZWN0LnJlYWRzKSB7CisgICAgICAgICAgICBp
ZiAoZWZmZWN0LnJlYWRzID09IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAg
ICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWFk
KEFic3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LnJlYWRzLnJhd1JlcHJlc2VudGF0aW9uKCkp
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZWZmZWN0LndyaXRlcykgeworICAgICAgICAgICAg
aWYgKGVmZmVjdC53cml0ZXMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAg
ICAgICAgIHdyaXRlKEhlYXApOyAvLyBXZSBkbyBub3QgYXNzdW1lIHRoYXQgRE9NIG9wZXJhdGlv
bnMgd2lsbCB3cml0ZShTdGFjaykuCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
d3JpdGUoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0
aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZWZmZWN0LnB1cmUpIHsKKyAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uobm9kZS0+bnVtQ2hpbGRyZW4oKSA8PSBBZGphY2VuY3lM
aXN0OjpTaXplLCAiQ3VycmVudGx5IHdlIG9ubHkgYWxsb3cgcHVyZSBDYWxsRE9NIHRvIGhhdmUg
dXAgdG8gMyBjaGlsZHJlbi4iKTsKKyAgICAgICAgICAgIEVkZ2UgZWRnZXNbQWRqYWNlbmN5TGlz
dDo6U2l6ZV07CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVt
Q2hpbGRyZW4oKTsgKytpKQorICAgICAgICAgICAgICAgIGVkZ2VzW2ldID0gZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgaSk7CisgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKENhbGxET00sIEFkamFj
ZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGVkZ2VzWzBdLCBlZGdlc1sxXSwgZWRnZXNb
Ml0pLCBub2RlLT5jYWxsRE9NRGF0YSgpLT5kb21KSVQpKTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5VG9T
dHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggM2Yx
Mzg0MmNhZjRiNWM2ZWUxZjA5YzU0YWEzZDhhMDA2MjM2YzUyOS4uZjM1YjY2Y2UxN2U0MDM5ODJk
MDI4YWYzODJiOTFiZDYwODU3ZWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcApAQCAtMTE4LDcgKzExOCw2IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKLSAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBD
aGVja0RPTToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBHZXRTY29wZToKQEAgLTI5
OSw2ICsyOTgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhwOgogICAgIGNhc2UgQ3JlYXRlUmVzdDoKICAgICBjYXNl
IFRvTG93ZXJDYXNlOgorICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIAogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDMzYzBjZjE5MjA4NWI1MDA0YjIwMDg5ZTJk
M2IwNjkyOTA0ODg1OTguLmY5NTFjMmVhMGZhM2IzMzExMjM0YWNiMjc2MjAzMTdhMjUzZTEyMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTcx
Miw3ICsxNzEyLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAKICAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBpbnQgY2hpbGRJbmRleCA9IDA7Ci0gICAg
ICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTVBhdGNocG9pbnQoKTsKKyAgICAgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OwogICAgICAgICAg
ICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRl
eCsrKSk7IC8vIEdsb2JhbE9iamVjdC4KICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspKTsgLy8gRE9NLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDc2YjJiYWVjNzE2YzJmMzZiNmJlNTQzNjBhOWQz
M2RkNGExNGYzYWMuLmY5NTdmNWNmYmQ3ODhlZGQ2MjY4OTVmZjFkZTM1MDcxMzZkMTQxODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTkwMSw2ICs5MDEsNyBAQCBjbGFz
cyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgQmFnPExvYWRWYXJhcmdz
RGF0YT4gbV9sb2FkVmFyYXJnc0RhdGE7CiAgICAgQmFnPFN0YWNrQWNjZXNzRGF0YT4gbV9zdGFj
a0FjY2Vzc0RhdGE7CiAgICAgQmFnPExhenlKU1ZhbHVlPiBtX2xhenlKU1ZhbHVlczsKKyAgICBC
YWc8Q2FsbERPTURhdGE+IG1fY2FsbERPTURhdGE7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxl
RGF0YSwgND4gbV9pbmxpbmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBz
dGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7
CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVLaWxscz4+
IG1fYnl0ZWNvZGVLaWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTElDTVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNl
LmNwcAppbmRleCBlNjA5NzY0ZTg1OWNmODBkZGFjNThiM2M0MmMwNzA1YzEyZTkyNjNhLi45N2Ux
ZWFhZGFlOWEwNDgwMDJlZWRhMzdmZTdhNTZhZTllNGU2YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgY2xhc3MgTElD
TVBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgLy8gSXQganVzdCBzbyBoYXBwZW5zIHRo
YXQgYWxsIG9mIHRoZSBub2RlcyB3ZSBjdXJyZW50bHkga25vdyBob3cgdG8gaG9pc3QKICAgICAg
ICAgLy8gZG9uJ3QgaGF2ZSB2YXItYXJnIGNoaWxkcmVuLiBUaGF0IG1heSBjaGFuZ2UgYW5kIHRo
ZW4gd2UgY2FuIGZpeCB0aGlzCiAgICAgICAgIC8vIGNvZGUuIEJ1dCBmb3Igbm93IHdlIGp1c3Qg
YXNzZXJ0IHRoYXQncyB0aGUgY2FzZS4KLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2Rl
LCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOworICAgICAgICAvLyBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSk7CiAg
ICAgICAgIAogICAgICAgICBub2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKENoZWNrLCBvcmlnaW5h
bE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKaW5kZXggYzk0MTFkNTBjZmJhOWM1NGIwMmMzNDg2NDk3ZTQwMzQxMjdhZGRiYy4u
YzJkMGNiMDI1N2RmYmRjZmE1MWEwMzBlYzlkYTM1ZTQzMTIzYzU1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTU5LDYgKzU5LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBu
YW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIFBhdGNocG9pbnQ7
CiBjbGFzcyBDYWxsRE9NUGF0Y2hwb2ludDsKIH0KQEAgLTIzMSw2ICsyMzIsMTEgQEAgc3RydWN0
IFN0YWNrQWNjZXNzRGF0YSB7CiAgICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZs
dXNoZWRBdChmb3JtYXQsIG1hY2hpbmVMb2NhbCk7IH0KIH07CiAKK3N0cnVjdCBDYWxsRE9NRGF0
YSB7CisgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCB7IG51bGxwdHIgfTsKKyAgICBE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50IHsgbnVsbHB0ciB9OworfTsKKwog
Ly8gPT09IE5vZGUgPT09CiAvLwogLy8gTm9kZSByZXByZXNlbnRzIGEgc2luZ2xlIG9wZXJhdGlv
biBpbiB0aGUgZGF0YSBmbG93IGdyYXBoLgpAQCAtMjMzNiwxNSArMjM0MiwxNSBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OlBhdGNocG9pbnQqPigp
OwogICAgIH0KIAotICAgIGJvb2wgaGFzQ2FsbERPTVBhdGNocG9pbnQoKSBjb25zdAorICAgIGJv
b2wgaGFzQ2FsbERPTURhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
Q2FsbERPTTsKICAgICB9CiAKLSAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBjYWxsRE9N
UGF0Y2hwb2ludCgpCisgICAgQ2FsbERPTURhdGEqIGNhbGxET01EYXRhKCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChoYXNDYWxsRE9NUGF0Y2hwb2ludCgpKTsKLSAgICAgICAgcmV0dXJuIG1fb3BJ
bmZvLmFzPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqPigpOworICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8Q2FsbERPTURhdGEqPigpOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ2xhc3NJbmZv
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggNWU2NGJhZjkzYzdiYzEyNzE2Y2E3NzgyMzI1NzQ4OTY0MzJmODk5MS4uMzM5
ZmUyNzM4MDMwODNhYzA2MDY1NWEzZDFkMDYxOWNkMjMxMTg1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyMjUsNyArNzIyNSw3
IEBAIHN0YXRpYyB2b2lkIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludChT
cGVjdWxhdGl2ZUpJVCogaml0LCBWZWN0b3I8CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDYWxsRE9NKE5vZGUqIG5vZGUpCiB7Ci0gICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCog
cGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgRE9NSklUOjpDYWxs
RE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9p
bnQ7CiAKICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CiAgICAgVmVjdG9yPEZQUlJlZz4g
ZnBTY3JhdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZjViNDBjMzNkODNiOTBlZTM1MTRkYjE2OTA2
ZDhhMDA3NzBmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwLmgiCisKKyNpZiBFTkFC
TEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3ZvaWQgQWJz
dHJhY3RIZWFwOjpjb21wdXRlKHVuc2lnbmVkIGJlZ2luKQoreworICAgIHVuc2lnbmVkIGN1cnJl
bnQgPSBiZWdpbjsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikgeworICAgICAg
ICBjaGlsZC0+Y29tcHV0ZShjdXJyZW50KTsKKyAgICAgICAgY3VycmVudCA9IGNoaWxkLT5yYW5n
ZSgpLmVuZCgpOworICAgIH0KKyAgICBBU1NFUlQoYmVnaW4gPCBVSU5UMTZfTUFYKTsKKyAgICBB
U1NFUlQoY3VycmVudCA8PSBVSU5UMTZfTUFYKTsKKyAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJl
Z2luLCBjdXJyZW50KTsKK30KKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNlZjkyNzFj
M2FjMDA1OWEwNWM0Y2Q5MmUxODdlYzI0ZGU4MTI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgiCisKKyNpZiBFTkFCTEUoSklU
KQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIEFic3RyYWN0
SGVhcCB7CitwdWJsaWM6CisgICAgQWJzdHJhY3RIZWFwKCkgPSBkZWZhdWx0OworCisgICAgdm9p
ZCBzZXRQYXJlbnQoQWJzdHJhY3RIZWFwKiBwYXJlbnQpCisgICAgeworICAgICAgICBBU1NFUlQo
IW1fcGFyZW50KTsKKyAgICAgICAgcGFyZW50LT5tX2NoaWxkcmVuLmFwcGVuZCh0aGlzKTsKKyAg
ICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25z
dCB7IHJldHVybiAhbV9wYXJlbnQ7IH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29t
cHV0ZSh1bnNpZ25lZCBiZWdpbik7CisKKyAgICBib29sIGlzQ29tcHV0ZWQoKSBjb25zdCB7IHJl
dHVybiAhIW1fcmFuZ2U7IH0KKyAgICBIZWFwUmFuZ2UgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X3JhbmdlOyB9CisKK3ByaXZhdGU6CisgICAgQWJzdHJhY3RIZWFwKiBtX3BhcmVudCB7IG51bGxw
dHIgfTsKKyAgICBWZWN0b3I8QWJzdHJhY3RIZWFwKj4gbV9jaGlsZHJlbiB7IH07CisgICAgSGVh
cFJhbmdlIG1fcmFuZ2U7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKaW5kZXggNjk1
ODIwYzVhNTlkNjNkZWRhNDJmODNkNGY4YjQ3ODVjYzlhODNhMC4uNGVkYjIzMzJhN2E5ZDdkNDJi
MTBhNDE0NmY5MGE4MTIyNDZhYzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEVmZmVjdC5oIgogI2luY2x1ZGUg
IkRPTUpJVFBhdGNocG9pbnQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC00NSw2
ICs0Niw4IEBAIGNsYXNzIENhbGxET01QYXRjaHBvaW50IDogcHVibGljIFBhdGNocG9pbnQgewog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKICAg
ICBib29sIHJlcXVpcmVHbG9iYWxPYmplY3QgeyB0cnVlIH07CiAKKyAgICBFZmZlY3QgZWZmZWN0
IHsgfTsKKwogcHJpdmF0ZToKICAgICBDYWxsRE9NUGF0Y2hwb2ludCgpID0gZGVmYXVsdDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NmQwODk3NGEwZjdlNjIyMzVkMTAxNmE5NTdmMzA1ZTA1YzQ2ZTBmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAtMCww
ICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKworI2lmIEVOQUJM
RShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworc3RydWN0IEVm
ZmVjdCB7CisgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhl
YXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CisKKyAgICBib29sIGV4aXRzU2lk
ZXdheXMgeyBmYWxzZSB9OworCisgICAgLy8gRklYTUU6IEZ1cnRoZXIgd2Ugd291bGQgbGlrZSB0
byBleHRlbmQgdG8gcmVwcmVzZW50IHRoZSBoZWFwIGxvY2F0aW9uIGZvciB0aGUgcHVyZSB2YWx1
ZS4KKyAgICBib29sIHB1cmUgeyBmYWxzZSB9OworCisgICAgc3RhdGljIEVmZmVjdCBmb3JSZWFk
V3JpdGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgewor
ICAgICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7
CisgICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOworICAgICAgICByZXR1cm4gZWZm
ZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZShIZWFwUmFuZ2UgcmVhZFJh
bmdlID0gSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZSB3cml0ZVJhbmdlID0gSGVhcFJhbmdl
Ojpub25lKCkpCisgICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3Qu
cmVhZHMgPSByZWFkUmFuZ2U7CisgICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOwor
ICAgICAgICBlZmZlY3QucHVyZSA9IHRydWU7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
fQorCisgICAgc3RhdGljIEVmZmVjdCBmb3JDaGVjayhIZWFwUmFuZ2UgcmVhZFJhbmdlID0gSGVh
cFJhbmdlOjp0b3AoKSkKKyAgICB7CisgICAgICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVm
ZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKKyAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5n
ZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QucHVyZSA9IHRydWU7CisgICAgICAgIGVmZmVjdC5l
eGl0c1NpZGV3YXlzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisKKyAg
ICBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd3JpdGVz
IHx8IGV4aXRzU2lkZXdheXM7CisgICAgfQorfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzYzdhZGJkOGU1MGIwZGRjN2ZhYTVmZTA5MjY5ZmFiZTk3NDI3MGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklU
SGVhcFJhbmdlLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERPTUpJVCB7CisKK3ZvaWQgSGVhcFJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0Cit7CisgICAgb3V0LnByaW50ZigiMHgleC0weCV4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJlZ2luKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKCkpKTsKK30KKworCit9IH0KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhl
YXBSYW5nZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZDVkNGNmOWRmYzc1ZGNkMjI2NjA5YTc0ODVhYmMzMjY5N2NhZmZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFw
UmFuZ2UuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworY2xhc3MgSGVhcFJhbmdlIHsKK3B1
YmxpYzoKKyAgICBjb25zdGV4cHIgSGVhcFJhbmdlKCkgPSBkZWZhdWx0OworCisgICAgY29uc3Rl
eHByIEhlYXBSYW5nZSh1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kKQorICAgICAgICA6IG1f
YmVnaW4oYmVnaW4pCisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisKKyAgICBl
bnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24gfTsKKyAgICBleHBs
aWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2
YWx1ZSkKKyAgICAgICAgOiBtX2JlZ2luKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZSA+PiAx
NikpCisgICAgICAgICwgbV9lbmQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKSkKKyAgICB7
CisgICAgfQorCisgICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShSYXdSZXByZXNlbnRhdGlvbiwgdmFsdWUp
OworICAgIH0KKworICAgIHVpbnQxNl90IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsg
fQorICAgIHVpbnQxNl90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgdWludDMy
X3QgcmF3UmVwcmVzZW50YXRpb24oKSB7IHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1f
YmVnaW4pIDw8IDE2KSB8IG1fZW5kOyB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2JlZ2luICE9IG1fZW5kOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbiAmJiBtX2VuZCA9PSBvdGhl
ci5tX2VuZDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSB0b3AoKSB7
IHJldHVybiBIZWFwUmFuZ2UoMCwgVUlOVDE2X01BWCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IEhlYXBSYW5nZSBub25lKCkgeyByZXR1cm4gSGVhcFJhbmdlKFVJTlQxNl9NQVgsIFVJTlQxNl9N
QVgpOyB9IC8vIEVtcHR5IHJhbmdlLgorCisgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25z
dCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCEqdGhpcyB8fCAh
b3RoZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgqdGhpcyA9PSBv
dGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4g
PD0gb3RoZXIubV9iZWdpbiAmJiBvdGhlci5tX2VuZCA8PSBtX2VuZDsKKyAgICB9CisKKyAgICBi
b29sIGlzU3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVPZihvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBv
dmVybGFwcyhjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFdURjo6cmFuZ2VzT3ZlcmxhcChtX2JlZ2luLCBtX2VuZCwgb3RoZXIubV9iZWdpbiwgb3Ro
ZXIubV9lbmQpOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYmVnaW4geyBVSU5U
MTZfTUFYIH07CisgICAgdWludDE2X3QgbV9lbmQgeyBVSU5UMTZfTUFYIH07Cit9OworCit9IH0K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYTY1N2UwNmM3ODkxOWMyMmM5OGRjYWEzZGIzMzFhZTkxY2ZkMzFkZC4uM2MzZThk
YTUzZmNlZjIwZGQ4NDk4NTM2ZmYxMzE3YzFhY2M3ZWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTA2NCw3ICs5MDY0LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQogICAgIHsKLSAg
ICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogZG9tSklUID0gbV9ub2RlLT5jYWxsRE9N
UGF0Y2hwb2ludCgpOworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBkb21KSVQg
PSBtX25vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CiAgICAgICAgIGludCBjaGlsZElu
ZGV4ID0gMDsKIAogICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmlu
ZGV4IDFkMmZjMTg0ZTBjMDQwZmY3OWMxYjQ2MTUyZDkzZTUzNzZlYmNhMzcuLmMxMDkzZmE2ODA2
ODFhMjI2NjNiMjliNzcyMjExMmY3ZDk5Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01hdGhFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQ0NCwx
MiArNDQ0LDggQEAgaW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwg
VCBsZWZ0TWF4LCBUIHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQogewogICAgIEFTU0VSVChsZWZ0TWlu
IDwgbGVmdE1heCk7CiAgICAgQVNTRVJUKHJpZ2h0TWluIDwgcmlnaHRNYXgpOwotICAgIAotICAg
IGlmIChsZWZ0TWluIDw9IHJpZ2h0TWluICYmIGxlZnRNYXggPiByaWdodE1pbikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBs
ZWZ0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbGVmdE1heCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsKIH0KIAogLy8g
UGFzcyByYW5nZXMgd2l0aCB0aGUgbWluIGJlaW5nIGluY2x1c2l2ZSBhbmQgdGhlIG1heCBiZWlu
ZyBleGNsdXNpdmUuIEZvciBleGFtcGxlLCB0aGlzIHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiNmE3MGZlZWFiZDcxYzUzYmNjMmFlNzMwMWIxZDI0N2E0NTRiNjhkLi5hMjViZTc1Mjlh
OGM4Y2UxYjgyZWY4NDNjZmEzYTAwN2NkNTI1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTUzOCw2ICsxNTM4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgZG9tL2RlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAKICAgICBkb21qaXQvSlNOb2RlRE9NSklULmNwcAogCiAgICAg
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NzVhZDAyZGQzMjRj
MTE2ZGRkOGJiOTQ2MTg0NzA4ZjQ4OTg0ZDIuLmRiMTQ0ZTFjNzgxMTdiYzdmZjBiN2YxMDVhZTJi
ZmE2OTNlMTk3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYxNjksNiArNjE2OSw4IEBACiAJCUUxRkY4RjZEMTgwREI1QkUw
MDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURBNzIxOTAwMDE5NDAx
MiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAg
Ki87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcy
MThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzVDQTE0RDFEQkMzQTNG
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CisJCUUzNUNBMTRF
MURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTND
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwogCQlFMzc3
RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8q
IE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgz
ODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlF
Mzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CkBAIC0xMzk1MSw2ICsxMzk1Myw4
IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjZCMTgw
REI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjI2ODQsNiArMjI2ODgsOCBAQAogCQlFM0FGQTk2MzFEQTZFOEFG
MDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAgKi8sCisJCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQw
MTIgLyogRE9NSklUSGVscGVycy5oICovLAogCQkJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAv
KiBKU05vZGVET01KSVQuY3BwICovLAogCQkJKTsKQEAgLTI2NjI2LDYgKzI2NjMyLDcgQEAKIAkJ
CQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRv
a2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVDQTE0RTFEQkMzQTQy
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzI4LDYgKzI4NzM1
LDcgQEAKIAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3Jl
VGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyog
Rm9udENhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVD
b2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExZmEzNjYyMDhh
YjEyMzM1NDBmNmRiNDZiMWNiNDMxZTc1NzA1NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oIgorCisjaW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCit7CisgICAgSlNDOjpET01KSVQ6OkFic3RyYWN0
SGVhcCBET01IZWFwOworI2RlZmluZSBET01KSVRfREVGSU5FX0hFQVAobmFtZSwgcGFyZW50KSBK
U0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUjI0hlYXA7CisgICAgRE9NSklUX0FCU1RSQUNU
X0hFQVBfTElTVChET01KSVRfREVGSU5FX0hFQVApCisjdW5kZWYgRE9NSklUX0RFRklORV9IRUFQ
CisKKyNkZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQpIG5hbWUjI0hl
YXAuc2V0UGFyZW50KCZwYXJlbnQjI0hlYXApOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJ
U1QoRE9NSklUX0RFRklORV9IRUFQKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX0hFQVAKKwor
ICAgIERPTUhlYXAuY29tcHV0ZSgwKTsKKworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9NRU1C
RVIobmFtZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5nZSgpOworICAgIERPTUpJVF9B
QlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQKQorI3VuZGVmIERPTUpJVF9JTklU
SUFMSVpFX01FTUJFUgorfQorCitjb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpCit7CisgICAgTmV2ZXJEZXN0cm95ZWQ8QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeT4gcmVwb3NpdG9yeTsKKyAgICByZXR1cm4gcmVwb3NpdG9yeS5nZXQo
KTsKK30KKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhjNjE3NTI1MDI5NmVj
NzJlMzRkY2RkNTgzYTM1OTRlOWM2MGFmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gRGVzY3JpYmUgeW91ciBhYnN0cmFjdCBoZWFwIGhp
ZXJhcmNoeSBoZXJlLgorLy8gVihBYnN0cmFjdEhlYXBOYW1lLCBQYXJlbnQpCisjZGVmaW5lIERP
TUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoVikgXAorICAgIFYoTm9kZSwgRE9NKSBcCisgICAgVihO
b2RlX2ZpcnN0Q2hpbGQsIE5vZGUpIFwKKyAgICBWKE5vZGVfbGFzdENoaWxkLCBOb2RlKSBcCisg
ICAgVihOb2RlX3BhcmVudE5vZGUsIE5vZGUpIFwKKyAgICBWKE5vZGVfbmV4dFNpYmxpbmcsIE5v
ZGUpIFwKKyAgICBWKE5vZGVfcHJldmlvdXNTaWJsaW5nLCBOb2RlKSBcCisKKworY2xhc3MgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeSB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeSYgaW5zdGFuY2UoKTsKKworICAgIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgRE9N
OworCisjZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgSlNDOjpET01K
SVQ6OkhlYXBSYW5nZSBuYW1lOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklU
X0RFRklORV9NRU1CRVIpCisjdW5kZWYgRE9NSklUX0RFRklORV9NRU1CRVIKKworcHJpdmF0ZToK
KyAgICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCk7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNlL1dl
YkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAppbmRleCAxODA2YjJhZmExYzQ3MWMwMzA0NjMw
YjgwMzhmMDMyM2Y2ZTM2MWViLi5hODViY2RjYWI1ODFlYjAxYmUwYzMwZjk2ZjM1ZWNkOTRkNGQx
NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTMyLDggKzMyLDcg
QEAKIAogI2lmIEVOQUJMRShKSVQpCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBE
T01KSVRIZWxwZXJzIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAK
IHVzaW5nIEpTQzo6Q0NhbGxIZWxwZXJzOwogdXNpbmcgSlNDOjpHUFJSZWc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9KU05vZGVET01KSVQuY3BwCmluZGV4IGI5NjkzYWNhYTc1MmE0NDQ4ZDQxNmNjMDQx
Nzc3MmMwMDBlODdjYjIuLjY4YTk4NzlkZmQ5NWFlZGY3Y2U4ZTc4MWFmNWNlNjJjZmRiZDJlZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IHN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2ZmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoLCBvZmZzZXQpLCBzY3JhdGNoKTsKICAgICAgICAgbnVsbENhc2Vz
LmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gpKTsK
IAotICAgICAgICBET01KSVRIZWxwZXJzOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGppdCwgcGFy
YW1zLCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxXcmFwcGVk
Tm9kZT4sIHBhcmFtc1sxXS52YWx1ZSgpKTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8V3Jh
cHBlZE5vZGU+KGppdCwgcGFyYW1zLCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9X
cmFwcGVyU2xvdzxXcmFwcGVkTm9kZT4sIHBhcmFtc1sxXS52YWx1ZSgpKTsKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG51bGxDYXNlcy5s
aW5rKCZqaXQpOwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgUmVmPERPTUpJVDo6UGF0Y2hwb2lu
dD4gY2hlY2tOb2RlKCkKICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0g
RE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFt
cykgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUoaml0
LCBwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVQ6
OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1swXS5ncHIoKSkpOwogICAgICAgICByZXR1cm4g
ZmFpbHVyZUNhc2VzOwogICAgIH0pOwogICAgIHJldHVybiBwYXRjaHBvaW50OwpAQCAtMTAyLDcg
KzEwMiwxMCBAQCBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6
Y2hlY2tET00oKQogCiBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hp
bGRET01KSVQ6OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0
QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWlu
ZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudDo6UmVxdWlyZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRl
Q2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVy
Tm9kZSopICsgQ29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRh
aW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3Qg
PSBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKGhlYXAuTm9kZV9maXJzdENoaWxkLCBET01K
SVQ6OkhlYXBSYW5nZTo6bm9uZSgpKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8g
Tm9kZSNsYXN0Q2hpbGQuCkBAIC0xMTMsNyArMTE2LDEwIEBAIFJlZjxET01KSVQ6OlBhdGNocG9p
bnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPERPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQogewotICAgIHJldHVy
biBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBD
b250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwg
SXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYg
aGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBh
dXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1Rf
T0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRN
ZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gRE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZShoZWFw
Lk5vZGVfbGFzdENoaWxkLCBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKTsKKyAgICByZXR1cm4g
cGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNuZXh0U2libGluZy4KQEAgLTEyNCw3ICsxMzAsMTAg
QEAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RP
TSgpCiAKIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01K
SVQ6OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNz
PE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRS
ZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50
ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0U2libGluZ01l
bW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsK
KyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKGhl
YXAuTm9kZV9uZXh0U2libGluZywgRE9NSklUOjpIZWFwUmFuZ2U6Om5vbmUoKSk7CisgICAgcmV0
dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjcHJldmlvdXNTaWJsaW5nLgpAQCAtMTM1LDcg
KzE0NCwxMCBAQCBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9N
SklUOjpjaGVja0RPTSgpCiAKIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUHJl
dmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2FsbERP
TUZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQo
KSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgY29uc3Qg
YXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsK
KyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+
KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVx
dWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBET01KSVQ6
OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKGhlYXAuTm9kZV9wcmV2aW91c1NpYmxpbmcsIERPTUpJVDo6
SGVhcFJhbmdlOjpub25lKCkpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2Rl
I3BhcmVudE5vZGUuCkBAIC0xNDYsNyArMTU4LDEwIEBAIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+
IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50
Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVp
cmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01Gb3JP
ZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgp
LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBv
aW50LT5lZmZlY3QgPSBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKGhlYXAuTm9kZV9wYXJl
bnROb2RlLCBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKTsKKyAgICByZXR1cm4gcGF0Y2hwb2lu
dDsKIH0KIAogLy8gTm9kZSNub2RlVHlwZS4KQEAgLTE1OCw2ICsxNzMsNyBAQCBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKCkKIFJlZjxET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNhbGxET00oKQogewogICAg
IFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxs
RE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gRE9NSklU
OjpFZmZlY3Q6OmZvclB1cmUoKTsKICAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0
ID0gZmFsc2U7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMm
IGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292523</attachid>
            <date>2016-10-22 17:55:23 -0700</date>
            <delta_ts>2016-10-22 19:30:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022175142.patch</filename>
            <type>text/plain</type>
            <size>64600</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi45NWVlYTU2NTRkNmVmMWZi
MTc4ZmFmMDYwZGFjNzFiZDUwYTFmZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6Om92
ZXJsYXBzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlclNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q2xvYmJlclNldDo6Y29udGFpbnMpOgor
ICAgICAgICAoSlNDOjpERkc6OkNsb2JiZXJTZXQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBkZmcv
REZHQ2xvYmJlclNldC5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpMSUNNUGhhc2U6OmF0dGVtcHRIb2lzdCk6CisgICAgICAgICogZGZnL0RG
R05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWxsRE9NRGF0YSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2FsbERPTURhdGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0NhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpjYWxsRE9NUGF0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNhbGxET00pOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBv
aW50LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpjb21wdXRlKToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAg
KEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OnNldFBhcmVudCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6QWJzdHJhY3RIZWFwOjppc1Jvb3QpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3Ry
YWN0SGVhcDo6aXNDb21wdXRlZCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFw
OjpyYW5nZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50Lmg6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVEVmZmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkV3JpdGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVm
ZmVjdDo6Zm9yUHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JDaGVjayk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0R2VuZXJhdGUpOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6OkRP
TUpJVDo6SGVhcFJhbmdlOjpkdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6SGVhcFJhbmdlKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcpOgorICAgICAgICAoSlND
OjpET01KSVQ6OkhlYXBSYW5nZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBS
YW5nZTo6ZW5kKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnJhd1JlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIGJvb2wp
OgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3ApOgorICAgICAgICAoSlNDOjpET01KSVQ6Okhl
YXBSYW5nZTo6bm9uZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N0cmlj
dFN1YnR5cGVPZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N1YnR5cGVP
Zik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvdmVybGFwcyk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NKToKKwogMjAxNi0xMC0yMSAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdl
dEJ5SWQgbmVlZHMgdG8gcGFzcyBpbiBOZWVkc1RvU3BpbGwgYWxvbmcgYm90aCB0aGUgY2VsbCBz
cGVjdWxhdGlvbiBhbmQgdW50eXBlZCBzcGVjdWxhdGlvbiBwYXRoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc3OWFlNGNkYjlm
NWJlNmJjY2E4NDA5YTBkMjc0N2E5M2Y0NGQ3MmYuLmM4MmM2NDY4ZDgzZWJhNDNjOGM3YTlhODEx
NTIxOTcwMTNmYmJjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMjIgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEg
d2F5IGZvciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6
CisgICAgICAgIChXVEY6Om5vbkVtcHR5UmFuZ2VzT3ZlcmxhcCk6CisKIDIwMTYtMTAtMjAgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIFdBU00gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTk4M2I5NjcxNGIyYjI3ZmQ4MGVhOTQ5
MGUxOGYwNGQ3ZDA5Mjg5Li42MjNmMTlmOTI4ZDc5Y2YzZjI1NjVhNDU2NGExYWMxZTM3YjZlMDQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMTAtMjIgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZv
ciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
Omluc3RhbmNlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxE
T01QYXRjaHBvaW50LmguCisgICAgICAgICogZG9taml0L0RPTUpJVEhlbHBlcnMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V29ybGRJc05vcm1hbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdFdlYWtJ
c0xpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dHJ5TG9v
a1VwV3JhcHBlckNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBl
cnM6OnRvV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJz
OjpicmFuY2hJZkRPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklU
SGVscGVyczo6YnJhbmNoSWZOb3RET01XcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZFbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RWxlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkRvY3VtZW50V3JhcHBl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5v
dERvY3VtZW50V3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJ
VC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmly
c3RDaGlsZERPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxk
RE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJ
VDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklU
OjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxs
RE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisK
IDIwMTYtMTAtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VXBncmFkaW5nIGN1c3RvbSBlbGVtZW50IHNob3VsZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQg
YW5kIGNvbm5lY3RlZCBjYWxsYmFja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAwMWNiMjk0NzM3YjI0NGYyMWRiN2E5NTM5NzllNDkyYjczMDA0MmQ4Li44N2Y3M2U1YTA3
MGNjMTIyMWZjOGQ0MjMyMjVjMzcxODYwNjQ5ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC00MTMsNiArNDEzLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Nl9zeW4taW50ZWwuYwogICAgIGRpc2Fzc2Vt
Ymxlci91ZGlzODYvdWRpczg2X3N5bi5jCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
LmNwcAorICAgIGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCisKICAgICBmdGwvRlRMQWJzdHJh
Y3RIZWFwLmNwcAogICAgIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGZ0
bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggODZhYTA4NGU4MTFkYTMxNGRhNmNmYjQ3MDFhMzMzOGZiMzBjMzM3MS4uZmFiMjE5ODI2YjM5
Nzc1NzdkNWUwZDM0NTNjZjNjZDJjZTA1MWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNjMsNiArMjE2MywxMCBAQAogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyog
RE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9N
UGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYz
NTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CiAJ
CUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4
NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTM1Q0ExNTMx
REJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyog
RE9NSklUSGVhcFJhbmdlLmNwcCAqLzsgfTsKKwkJRTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8q
IERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNUNBMTU1
MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2
IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi87IH07CisJCUUzNUNBMTU2MURCQzNBNUYwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuY3BwICovOyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CkBAIC0yMTc3LDYgKzIx
ODEsNyBAQAogCQlFM0JGRDBCQjFEQUY4MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBh
dGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNCRkQwQjkxREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRj
aHBvaW50UGFyYW1zLmNwcCAqLzsgfTsKIAkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERP
TUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklU
QWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAw
Mzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRj
aHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTNDNzlDQUIxREI5QTREQzAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFF
Q0E0IC8qIERPTUpJVEVmZmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmly
b25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsg
fTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4
MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNC
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwpAQCAtNDUzMyw2ICs0NTM4LDEwIEBACiAJCUUzNTU1
Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9k
dWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRGMURCQzNBNTYwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJ
VEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01K
SVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MjFE
QkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3
QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTQ4LDYgKzQ1NTcs
NyBAQAogCQlFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9N
SklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNj
ZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEVmZmVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9N
SklUU2xvd1BhdGhDYWxscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRTbG93UGF0aENhbGxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVs
ZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDAzLDggKzc0
MTMsMTMgQEAKIAkJRTNGRjc1MkQxRDlDRTlFQTAwQzdFMTZEIC8qIGRvbWppdCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM1Q0ExNEYxREJDM0E1NjAw
RjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi8sCisJCQkJRTM1Q0ExNTAxREJDM0E1
NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovLAogCQkJCUUzNTU1Qjg5MURBRTAz
QTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovLAorCQkJCUUzQzc5Q0FB
MURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNF
QTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi8sCisJCQkJRTM1Q0ExNTExREJD
M0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8sCisJCQkJRTM1Q0ExNTIxREJD
M0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICovLAogCQkJCUUzQzA4RTNCMURBNDFC
N0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi8sCiAJCQkJRTM3QUQ4M0ExREE0OTI4
MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFE
QTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmggKi8sCkBAIC03NjMyLDYgKzc2NDcsNyBAQAog
CQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5l
cmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlFM0M3OUNBQjFEQjlBNERD
MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4
QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBp
biBIZWFkZXJzICovLAogCQkJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2Rl
T3JpZ2luLmggaW4gSGVhZGVycyAqLywKQEAgLTgyOTksNiArODMxNSw3IEBACiAJCQkJQUQyRkND
MUYxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVt
b3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENG
MTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNUNBMTU2MURCQzNB
NUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzNGQ0ZCMUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0NGRy5oIGluIEhlYWRlcnMgKi8sCkBA
IC04NDE3LDYgKzg0MzQsNyBAQAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNy
b3Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCURDMDE4NDE5MUQxMEMxODkwMDU3QjA1MyAvKiBK
SVRXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNUNBMTU0MURCQzNBNUMw
MEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0Q3
MTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlFMzc5NEU3
NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTkyNCw2ICs5OTQyLDcgQEAKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFD
M0EwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRDNFNDBEMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMzVDQTE1MzFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVh
cFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAv
KiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdF
QzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUz
OUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTk5NDIsNiArOTk2MSw3IEBACiAJCQkJODY0MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJl
Z0V4cE1hdGNoZXNBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MzEwN0VDMDkz
MDAxM0U3QjIgLyogUmVnRXhwT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQ0
MTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk2NTQwQzdBMDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9m
ZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQwQzdBMTFCODJFMUMzMDAwRjZCNzkgLyog
UmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMzE0MTUxODE0
NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDFlMTEwMTkwMmRi
MjVlYWQ3ZjhkN2VmOTliNDljNDg0MWMxOGQxMWQuLmNkNjk0YmJlYmFjODA3ZDUxOGY2NmM0N2Nh
YWFiNmU3OGU5MWQyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SGVhcC5jcHAKQEAgLTQ1LDYgKzQ1LDEwIEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KGtpbmQoKSk7CiAgICAgaWYgKGtp
bmQoKSA9PSBJbnZhbGlkQWJzdHJhY3RIZWFwIHx8IGtpbmQoKSA9PSBXb3JsZCB8fCBraW5kKCkg
PT0gSGVhcCB8fCBwYXlsb2FkKCkuaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChr
aW5kKCkgPT0gRE9NU3RhdGUpIHsKKyAgICAgICAgb3V0LnByaW50KCIoIiwgRE9NSklUOjpIZWFw
UmFuZ2U6OmZyb21SYXcocGF5bG9hZCgpLnZhbHVlMzIoKSksICIpIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgb3V0LnByaW50KCIoIiwgcGF5bG9hZCgpLCAiKSIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCAwYWJkNTAyN2Iy
NmFlYjM5NGYyOWMwMzhmZDlmMmQ1OTJlNmMxNjM5Li5mNTFmODJmZTEzN2UyNWEzZjc5YTUyYjFm
MTFiMGM1MzMxYTMwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5j
bHVkZSAiRE9NSklUSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAg
LTczLDYgKzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KE1hdGhEb3RSYW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKICAgICBt
YWNybyhBYnNvbHV0ZSkgXAorICAgIC8qIERPTUpJVCB0ZWxscyB0aGUgaGVhcCByYW5nZSB3aXRo
IHRoZSBwYWlyIG9mIGludGVnZXJzLiAqL1wKKyAgICBtYWNybyhET01TdGF0ZSkgXAogICAgIC8q
IFVzZSB0aGlzIGZvciB3cml0ZXMgb25seSwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1heSBmaXJl
IHdhdGNocG9pbnRzLiBVc3VhbGx5IHRoaXMgaXMgbmV2ZXIgZGlyZWN0bHkgd3JpdHRlbiBidXQg
aW5zdGVhZCB3ZSB0ZXN0IHRvIHNlZSBpZiBhIG5vZGUgY2xvYmJlcnMgdGhpczsgaXQganVzdCBz
byBoYXBwZW5zIHRoYXQgeW91IGhhdmUgdG8gd3JpdGUgd29ybGQgdG8gY2xvYmJlciBpdC4gKi9c
CiAgICAgbWFjcm8oV2F0Y2hwb2ludF9maXJlKSBcCiAgICAgLyogVXNlIHRoZXNlIGZvciByZWFk
cyBvbmx5LCBqdXN0IHRvIGluZGljYXRlIHRoYXQgaWYgdGhlIHdvcmxkIGdvdCBjbG9iYmVyZWQs
IHRoZW4gdGhpcyBvcGVyYXRpb24gd2lsbCBub3Qgd29yay4gKi9cCkBAIC0yMzMsNiArMjM2LDE1
IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7CiAgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25z
dCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgQWJzdHJhY3RIZWFw
IGN1cnJlbnQgPSAqdGhpczsKKyAgICAgICAgaWYgKGN1cnJlbnQua2luZCgpID09IERPTVN0YXRl
ICYmIG90aGVyLmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAgICAgUGF5bG9hZCBjdXJy
ZW50UGF5bG9hZCA9IGN1cnJlbnQucGF5bG9hZCgpOworICAgICAgICAgICAgUGF5bG9hZCBvdGhl
clBheWxvYWQgPSBvdGhlci5wYXlsb2FkKCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFBheWxv
YWQuaXNUb3AoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBp
ZiAob3RoZXJQYXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY3VycmVudFBheWxv
YWQudmFsdWUzMigpKS5pc1N0cmljdFN1YnR5cGVPZihET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJh
dyhvdGhlclBheWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGN1
cnJlbnQua2luZCgpICE9IFdvcmxkKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5z
dXBlcnR5cGUoKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50ID09IG90aGVyKQpAQCAtMjQ4LDcg
KzI2MCwxNiBAQCBjbGFzcyBBYnN0cmFjdEhlYXAgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMo
Y29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAq
dGhpcyA9PSBvdGhlciB8fCBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikgfHwgb3RoZXIuaXNTdHJp
Y3RTdWJ0eXBlT2YoKnRoaXMpOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSAmJiBvdGhl
ci5raW5kKCkgPT0gRE9NU3RhdGUpIHsKKyAgICAgICAgICAgIFBheWxvYWQgY3VycmVudFBheWxv
YWQgPSBwYXlsb2FkKCk7CisgICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVy
LnBheWxvYWQoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpIHx8IG90
aGVyUGF5bG9hZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgcmV0dXJuIERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGN1cnJlbnRQYXlsb2FkLnZh
bHVlMzIoKSkub3ZlcmxhcHMoRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcob3RoZXJQYXlsb2Fk
LnZhbHVlMzIoKSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVP
ZihvdGhlcikgfHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBlT2YoKnRoaXMpOwogICAgIH0KICAgICAK
ICAgICBib29sIGlzRGlzam9pbnQoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCBhMTJmMDljYjFiOTRhMGEzMDQzNjM3MGM3MmFhMjFjNWVkODE5
NWZiLi5mMDlkNDFiN2I3Y2EzMzNhMjQwOWIxZTU0NWI1NTg0MGRjZjBmYTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0yMjg5LDEwICsyMjg5LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgIGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgIGNhc2UgQ2FsbERP
TTogeworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9k
ZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPmVm
ZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRv
cCgpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAg
ICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRD
b25zdGFudHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDQ4ODQyMDZiM2Y1NmQ3NGU2ZjI2ZWY1NmI1OGNmYWE1NjU3MGQ4
OTkuLmE1YjA0Y2E2NjE0NWFiNTNlNjYyODc3YWRhN2QyMzdkNGNiMjlkZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjczLDYg
KzI2NzMsMTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgdm9pZCBibGVzc0NhbGxET00oTm9kZSogbm9kZSkK
K3sKKyAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICBpZiAoIXBhdGNocG9pbnQtPmVmZmVjdC5tdXN0
R2VuZXJhdGUoKSkKKyAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
K30KKwogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQpA
QCAtMjY5MSwxNCArMjY5OCwyMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRH
ZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JgogICAgIC8vIFdl
IGRvIG5vdCBuZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0
b20gYWNjZXNzb3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5z
aXRpb24gb2NjdXJzLgogICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhjaGVja0RPTVBh
dGNocG9pbnQucHRyKCkpLCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9k
ZSk7CiAKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEgPSBtX2dyYXBoLm1fY2FsbERPTURh
dGEuYWRkKCk7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET01QYXRj
aHBvaW50ID0gZG9tSklULT5jYWxsRE9NKCk7CiAgICAgbV9ncmFwaC5tX2RvbUpJVFBhdGNocG9p
bnRzLmFwcGVuZChjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSk7CisKKyAgICBjYWxsRE9NRGF0YS0+
ZG9tSklUID0gZG9tSklUOworICAgIGNhbGxET01EYXRhLT5wYXRjaHBvaW50ID0gY2FsbERPTVBh
dGNocG9pbnQucHRyKCk7CisKICAgICBpZiAoY2FsbERPTVBhdGNocG9pbnQtPnJlcXVpcmVHbG9i
YWxPYmplY3QpIHsKICAgICAgICAgTm9kZSogZ2xvYmFsT2JqZWN0ID0gYWRkVG9HcmFwaChHZXRH
bG9iYWxPYmplY3QsIHRoaXNOb2RlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2xvYmFsT2Jq
ZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0
ZSBhIERPTVdyYXBwZXIuCiAgICAgfQogICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNOb2RlKTsKLSAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKE5vZGU6OlZh
ckFyZywgQ2FsbERPTSwgT3BJbmZvKGNhbGxET01QYXRjaHBvaW50LnB0cigpKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pKSk7CisgICAgTm9kZSogY2FsbERPTU5vZGUgPSBhZGRUb0dyYXBoKE5vZGU6OlZh
ckFyZywgQ2FsbERPTSwgT3BJbmZvKGNhbGxET01EYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsK
KyAgICBibGVzc0NhbGxET00oY2FsbERPTU5vZGUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0T3BlcmFuZCksIGNhbGxET01Ob2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKaW5kZXggZDQ2MzBlMzcw
Y2IwYmFjMjNkOTk0MmY1ZmZjZTM4ZmI1OGRhMmRlYy4uYjFhOTU3OGM3NWRhYjAxODJiZjg4Njg3
ZjVjNzAzODA1Y2M5M2ZjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJTZXQuY3BwCkBAIC03NCwxMyArNzQsNDkgQEAgYm9vbCBDbG9iYmVyU2V0Ojpjb250YWlucyhB
YnN0cmFjdEhlYXAgaGVhcCkgY29uc3QKICAgICBIYXNoTWFwPEFic3RyYWN0SGVhcCwgYm9vbD46
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2Nsb2JiZXJzLmZpbmQoaGVhcCk7CiAgICAgaWYgKGl0
ZXIgPT0gbV9jbG9iYmVycy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBpdGVyLT52YWx1ZTsKKyAgICBpZiAoaXRlci0+dmFsdWUpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChoZWFwLmtpbmQoKSA9PSBET01TdGF0ZSAmJiAhaGVhcC5wYXlsb2FkKCkuaXNU
b3AoKSkgeworICAgICAgICAvLyBET01TdGF0ZSBoZWFwIGhhcyBpdHMgb3duIGhpZXJhcmNoeS4g
Rm9yIGRpcmVjdCBoZWFwIGNsb2JiZXJzIHRoYXQgcGF5bG9hZCBpcyBub3QgVG9wLAorICAgICAg
ICAvLyB3ZSBzaG91bGQgcXVlcnkgd2hldGhlciB0aGUgY2xvYmJlciBvdmVybGFwcyB3aXRoIHRo
ZSBnaXZlbiBoZWFwLgorICAgICAgICBET01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9IERPTUpJVDo6
SGVhcFJhbmdlOjpmcm9tUmF3KGhlYXAucGF5bG9hZCgpLnZhbHVlMzIoKSk7CisgICAgICAgIGZv
ciAoYXV0byBwYWlyIDogbV9jbG9iYmVycykgeworICAgICAgICAgICAgYm9vbCBkaXJlY3QgPSBw
YWlyLnZhbHVlOworICAgICAgICAgICAgaWYgKCFkaXJlY3QpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBBYnN0cmFjdEhlYXAgY2xvYmJlciA9IHBhaXIua2V5OworICAg
ICAgICAgICAgaWYgKGNsb2JiZXIua2luZCgpICE9IERPTVN0YXRlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGNsb2JiZXIucGF5bG9hZCgpLmlzVG9wKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoRE9NSklUOjpIZWFwUmFu
Z2U6OmZyb21SYXcoY2xvYmJlci5wYXlsb2FkKCkudmFsdWUzMigpKS5vdmVybGFwcyhyYW5nZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiBib29sIENsb2JiZXJTZXQ6Om92ZXJsYXBzKEFic3RyYWN0SGVhcCBo
ZWFwKSBjb25zdAogewogICAgIGlmIChtX2Nsb2JiZXJzLmZpbmQoaGVhcCkgIT0gbV9jbG9iYmVy
cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGhlYXAua2luZCgpID09IERP
TVN0YXRlICYmICFoZWFwLnBheWxvYWQoKS5pc1RvcCgpKSB7CisgICAgICAgIC8vIERPTVN0YXRl
IGhlYXAgaGFzIGl0cyBvd24gaGllcmFyY2h5LiBGb3IgZGlyZWN0IGhlYXAgY2xvYmJlcnMgdGhh
dCBwYXlsb2FkIGlzIG5vdCBUb3AsCisgICAgICAgIC8vIHdlIHNob3VsZCBxdWVyeSB3aGV0aGVy
IHRoZSBjbG9iYmVyIG92ZXJsYXBzIHdpdGggdGhlIGdpdmVuIGhlYXAuCisgICAgICAgIERPTUpJ
VDo6SGVhcFJhbmdlIHJhbmdlID0gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoaGVhcC5wYXls
b2FkKCkudmFsdWUzMigpKTsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2Nsb2JiZXJzKSB7
CisgICAgICAgICAgICBib29sIGRpcmVjdCA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBpZiAo
IWRpcmVjdCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEFic3RyYWN0
SGVhcCBjbG9iYmVyID0gcGFpci5rZXk7CisgICAgICAgICAgICBpZiAoY2xvYmJlci5raW5kKCkg
IT0gRE9NU3RhdGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAo
Y2xvYmJlci5wYXlsb2FkKCkuaXNUb3AoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGlmIChET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhjbG9iYmVyLnBheWxvYWQo
KS52YWx1ZTMyKCkpLm92ZXJsYXBzKHJhbmdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KICAgICB3aGlsZSAoaGVhcC5raW5kKCkgIT0gV29ybGQpIHsK
ICAgICAgICAgaGVhcCA9IGhlYXAuc3VwZXJ0eXBlKCk7CiAgICAgICAgIGlmIChjb250YWlucyho
ZWFwKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmgKaW5kZXggNzI5
ZjM5YjExODUxOGE5NTU1ZWM0NjE2NmVlYWY3ZGRlZDRhYmU0NS4uMzg5ZDgzYzk3ZjZkYzQ0NmZi
OGYxZGZlYWIwNzk1ZmZiYWI0YWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyU2V0LmgKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgQ2xvYmJlclNldCB7CiAgICAgdm9p
ZCBjbGVhcigpOwogICAgIAogICAgIC8vIENhbGxzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBD
bG9iYmVyU2V0LgorICAgIC8vIERvIG5vdCBjYWxsIGZvciBub24gZGVidWdnaW5nIHB1cnBvc2Uu
IE90aGVyd2lzZSwgeW91IG11c3QgaGFuZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBjYXJlZnVsbHku
CiAgICAgCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0OwogICAgIEhh
c2hTZXQ8QWJzdHJhY3RIZWFwPiBzdXBlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBmOTI5MzM3YWZlOTM4NzJlNTA4MTgwZDJiNWYyY2M2
YjZhYmM4NDRjLi5jYzZlNGQzN2IyY2Q2YmNkNTgyZjRjNDY5NjdjMDI0YjlhZjY3ZDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkRGR0hlYXBMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkRGR0xhenlOb2RlLmgi
CiAjaW5jbHVkZSAiREZHUHVyZVZhbHVlLmgiCisjaW5jbHVkZSAiRE9NSklUQ2FsbERPTVBhdGNo
cG9pbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC05MDcsMTAg
KzkwOCwzMCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoUHVyZVZhbHVl
KG5vZGUsIG5vZGUtPmNsYXNzSW5mbygpKSk7CiAgICAgICAgIHJldHVybjsKIAotICAgIGNhc2Ug
Q2FsbERPTToKLSAgICAgICAgcmVhZChXb3JsZCk7Ci0gICAgICAgIHdyaXRlKEhlYXApOworICAg
IGNhc2UgQ2FsbERPTTogeworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRj
aHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICAgICAgRE9NSklU
OjpFZmZlY3QgZWZmZWN0ID0gcGF0Y2hwb2ludC0+ZWZmZWN0OworICAgICAgICBpZiAoZWZmZWN0
LnJlYWRzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LnJlYWRzID09IERPTUpJVDo6SGVhcFJh
bmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByZWFkKEFic3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LnJl
YWRzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZWZmZWN0
LndyaXRlcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC53cml0ZXMgPT0gRE9NSklUOjpIZWFw
UmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHdyaXRlKEhlYXApOyAvLyBXZSBkbyBub3Qg
YXNzdW1lIHRoYXQgRE9NIG9wZXJhdGlvbnMgd2lsbCB3cml0ZShTdGFjaykuCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZl
Y3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ZWZmZWN0LnB1cmUpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uobm9kZS0+bnVt
Q2hpbGRyZW4oKSA8PSBBZGphY2VuY3lMaXN0OjpTaXplLCAiQ3VycmVudGx5IHdlIG9ubHkgYWxs
b3cgcHVyZSBDYWxsRE9NIHRvIGhhdmUgdXAgdG8gMyBjaGlsZHJlbi4iKTsKKyAgICAgICAgICAg
IEVkZ2UgZWRnZXNbQWRqYWNlbmN5TGlzdDo6U2l6ZV07CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytpKQorICAgICAgICAgICAgICAg
IGVkZ2VzW2ldID0gZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgaSk7CisgICAgICAgICAgICBkZWYo
UHVyZVZhbHVlKENhbGxET00sIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGVk
Z2VzWzBdLCBlZGdlc1sxXSwgZWRnZXNbMl0pLCBub2RlLT5jYWxsRE9NRGF0YSgpLT5kb21KSVQp
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgY2FzZSBBcnJheWlm
eToKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggM2YxMzg0MmNhZjRiNWM2ZWUxZjA5YzU0YWEzZDhhMDA2MjM2
YzUyOS4uZjM1YjY2Y2UxN2U0MDM5ODJkMDI4YWYzODJiOTFiZDYwODU3ZWFlNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTE4LDcgKzExOCw2IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKLSAgICBj
YXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RPTToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAg
ICAgY2FzZSBHZXRTY29wZToKQEAgLTI5OSw2ICsyOTgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhwOgogICAgIGNh
c2UgQ3JlYXRlUmVzdDoKICAgICBjYXNlIFRvTG93ZXJDYXNlOgorICAgIGNhc2UgQ2FsbERPTToK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNl
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDMz
YzBjZjE5MjA4NWI1MDA0YjIwMDg5ZTJkM2IwNjkyOTA0ODg1OTguLmY5NTFjMmVhMGZhM2IzMzEx
MjM0YWNiMjc2MjAzMTdhMjUzZTEyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTcxMiw3ICsxNzEyLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAKICAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBp
bnQgY2hpbGRJbmRleCA9IDA7Ci0gICAgICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTVBhdGNocG9pbnQoKTsKKyAgICAgICAgICAgIERP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgp
LT5wYXRjaHBvaW50OwogICAgICAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxP
YmplY3QpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIEdsb2JhbE9iamVjdC4KICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4
KyspKTsgLy8gRE9NLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDc2YjJi
YWVjNzE2YzJmMzZiNmJlNTQzNjBhOWQzM2RkNGExNGYzYWMuLmY5NTdmNWNmYmQ3ODhlZGQ2MjY4
OTVmZjFkZTM1MDcxMzZkMTQxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
QEAgLTkwMSw2ICs5MDEsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJs
ZSB7CiAgICAgQmFnPExvYWRWYXJhcmdzRGF0YT4gbV9sb2FkVmFyYXJnc0RhdGE7CiAgICAgQmFn
PFN0YWNrQWNjZXNzRGF0YT4gbV9zdGFja0FjY2Vzc0RhdGE7CiAgICAgQmFnPExhenlKU1ZhbHVl
PiBtX2xhenlKU1ZhbHVlczsKKyAgICBCYWc8Q2FsbERPTURhdGE+IG1fY2FsbERPTURhdGE7CiAg
ICAgVmVjdG9yPElubGluZVZhcmlhYmxlRGF0YSwgND4gbV9pbmxpbmVWYXJpYWJsZURhdGE7CiAg
ICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5l
c3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVLaWxscz4+IG1fYnl0ZWNvZGVLaWxsczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAppbmRleCBlNjA5NzY0ZTg1OWNmODBkZGFjNThi
M2M0MmMwNzA1YzEyZTkyNjNhLi45N2UxZWFhZGFlOWEwNDgwMDJlZWRhMzdmZTdhNTZhZTllNGU2
YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCkBAIC0z
MzksNyArMzM5LDcgQEAgY2xhc3MgTElDTVBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Ly8gSXQganVzdCBzbyBoYXBwZW5zIHRoYXQgYWxsIG9mIHRoZSBub2RlcyB3ZSBjdXJyZW50bHkg
a25vdyBob3cgdG8gaG9pc3QKICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB2YXItYXJnIGNoaWxkcmVu
LiBUaGF0IG1heSBjaGFuZ2UgYW5kIHRoZW4gd2UgY2FuIGZpeCB0aGlzCiAgICAgICAgIC8vIGNv
ZGUuIEJ1dCBmb3Igbm93IHdlIGp1c3QgYXNzZXJ0IHRoYXQncyB0aGUgY2FzZS4KLSAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJn
cykpOworICAgICAgICAvLyBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsICEobm9kZS0+ZmxhZ3Mo
KSAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgICAgIAogICAgICAgICBub2RlUmVmID0gbV9ncmFw
aC5hZGROb2RlKENoZWNrLCBvcmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYzk0MTFkNTBjZmJhOWM1NGIw
MmMzNDg2NDk3ZTQwMzQxMjdhZGRiYy4uMGQxYTRiNTU4MTQzNzI5YWE4YzMyMmYyODQ2MTgzZDFk
NDM2NGQzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTU5LDYgKzU5LDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIEdldHRlclNl
dHRlcjsKIGNsYXNzIFBhdGNocG9pbnQ7CiBjbGFzcyBDYWxsRE9NUGF0Y2hwb2ludDsKIH0KQEAg
LTIzMSw2ICsyMzIsMTEgQEAgc3RydWN0IFN0YWNrQWNjZXNzRGF0YSB7CiAgICAgRmx1c2hlZEF0
IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZsdXNoZWRBdChmb3JtYXQsIG1hY2hpbmVMb2NhbCk7IH0K
IH07CiAKK3N0cnVjdCBDYWxsRE9NRGF0YSB7CisgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRv
bUpJVCB7IG51bGxwdHIgfTsKKyAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBv
aW50IHsgbnVsbHB0ciB9OworfTsKKwogLy8gPT09IE5vZGUgPT09CiAvLwogLy8gTm9kZSByZXBy
ZXNlbnRzIGEgc2luZ2xlIG9wZXJhdGlvbiBpbiB0aGUgZGF0YSBmbG93IGdyYXBoLgpAQCAtMjMz
NiwxNSArMjM0MiwxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5h
czxET01KSVQ6OlBhdGNocG9pbnQqPigpOwogICAgIH0KIAotICAgIGJvb2wgaGFzQ2FsbERPTVBh
dGNocG9pbnQoKSBjb25zdAorICAgIGJvb2wgaGFzQ2FsbERPTURhdGEoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbERPTTsKICAgICB9CiAKLSAgICBET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50KiBjYWxsRE9NUGF0Y2hwb2ludCgpCisgICAgQ2FsbERPTURhdGEqIGNh
bGxET01EYXRhKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNDYWxsRE9NUGF0Y2hwb2ludCgp
KTsKLSAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
PigpOworICAgICAgICBBU1NFUlQoaGFzQ2FsbERPTURhdGEoKSk7CisgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxDYWxsRE9NRGF0YSo+KCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNDbGFzc0lu
Zm8oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCA1ZTY0YmFmOTNjN2JjMTI3MTZjYTc3ODIzMjU3NDg5NjQzMmY4OTkxLi4z
MzlmZTI3MzgwMzA4M2FjMDYwNjU1YTNkMWQwNjE5Y2QyMzExODU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzIyNSw3ICs3MjI1
LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50
KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNhbGxET00oTm9kZSogbm9kZSkKIHsKLSAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTVBhdGNocG9pbnQoKTsKKyAgICBET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hw
b2ludDsKIAogICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKICAgICBWZWN0b3I8RlBSUmVn
PiBmcFNjcmF0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBjNzJjMDM3OTA3OTMwZTNjOGJiY2EzN2E4
YmVmNDk0NjE3NDcyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcC5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCit2b2lkIEFic3RyYWN0SGVhcDo6Y29t
cHV0ZSh1bnNpZ25lZCBiZWdpbikKK3sKKyAgICB1bnNpZ25lZCBjdXJyZW50ID0gYmVnaW47Cisg
ICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pIHsKKyAgICAgICAgY2hpbGQtPmNvbXB1
dGUoY3VycmVudCk7CisgICAgICAgIGN1cnJlbnQgPSBjaGlsZC0+cmFuZ2UoKS5lbmQoKTsKKyAg
ICB9CisgICAgQVNTRVJUKGJlZ2luIDwgVUlOVDE2X01BWCk7CisgICAgQVNTRVJUKGN1cnJlbnQg
PD0gVUlOVDE2X01BWCk7CisgICAgbV9yYW5nZSA9IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7
Cit9CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NjhiNTBlMWY4YmRkMDYyOGNhZjU0
ZjExNGExYzY2YjBiNTM5NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lm
IEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworY2xh
c3MgQWJzdHJhY3RIZWFwIHsKK3B1YmxpYzoKKyAgICBBYnN0cmFjdEhlYXAoKSA9IGRlZmF1bHQ7
CisKKyAgICB2b2lkIHNldFBhcmVudChBYnN0cmFjdEhlYXAqIHBhcmVudCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghbV9wYXJlbnQpOworICAgICAgICBwYXJlbnQtPm1fY2hpbGRyZW4uYXBwZW5k
KHRoaXMpOworICAgICAgICBtX3BhcmVudCA9IHBhcmVudDsKKyAgICB9CisKKyAgICBib29sIGlz
Um9vdCgpIGNvbnN0IHsgcmV0dXJuICFtX3BhcmVudDsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBjb21wdXRlKHVuc2lnbmVkIGJlZ2luKTsKKworICAgIGJvb2wgaXNDb21wdXRlZCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9yYW5nZTsgfQorICAgIEhlYXBSYW5nZSByYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmFuZ2U7IH0KKworcHJpdmF0ZToKKyAgICBBYnN0cmFjdEhlYXAqIG1fcGFy
ZW50IHsgbnVsbHB0ciB9OworICAgIFZlY3RvcjxBYnN0cmFjdEhlYXAqPiBtX2NoaWxkcmVuIHsg
fTsKKyAgICBIZWFwUmFuZ2UgbV9yYW5nZTsKK307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQu
aAppbmRleCA2OTU4MjBjNWE1OWQ2M2RlZGE0MmY4M2Q0ZjhiNDc4NWNjOWE4M2EwLi40ZWRiMjMz
MmE3YTlkN2Q0MmIxMGE0MTQ2ZjkwYTgxMjI0NmFjNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiRE9NSklURWZmZWN0Lmgi
CiAjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0Lmgi
CiAKQEAgLTQ1LDYgKzQ2LDggQEAgY2xhc3MgQ2FsbERPTVBhdGNocG9pbnQgOiBwdWJsaWMgUGF0
Y2hwb2ludCB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mjk4MAogICAgIGJvb2wgcmVxdWlyZUdsb2JhbE9iamVjdCB7IHRydWUgfTsKIAorICAgIEVm
ZmVjdCBlZmZlY3QgeyB9OworCiBwcml2YXRlOgogICAgIENhbGxET01QYXRjaHBvaW50KCkgPSBk
ZWZhdWx0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9N
SklURWZmZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg2ZDA4OTc0YTBmN2U2MjIzNWQxMDE2YTk1N2YzMDVlMDVjNDZlMGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVj
dC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgor
CisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewor
CitzdHJ1Y3QgRWZmZWN0IHsKKyAgICBIZWFwUmFuZ2UgcmVhZHMgeyBIZWFwUmFuZ2U6OnRvcCgp
IH07CisgICAgSGVhcFJhbmdlIHdyaXRlcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKworICAgIGJv
b2wgZXhpdHNTaWRld2F5cyB7IGZhbHNlIH07CisKKyAgICAvLyBGSVhNRTogRnVydGhlciB3ZSB3
b3VsZCBsaWtlIHRvIGV4dGVuZCB0byByZXByZXNlbnQgdGhlIGhlYXAgbG9jYXRpb24gZm9yIHRo
ZSBwdXJlIHZhbHVlLgorICAgIGJvb2wgcHVyZSB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgRWZm
ZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5n
ZSkKKyAgICB7CisgICAgICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVmZmVjdC5yZWFkcyA9
IHJlYWRSYW5nZTsKKyAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7CisgICAgICAg
IHJldHVybiBlZmZlY3Q7CisgICAgfQorCisgICAgc3RhdGljIEVmZmVjdCBmb3JQdXJlKEhlYXBS
YW5nZSByZWFkUmFuZ2UgPSBIZWFwUmFuZ2U6Om5vbmUoKSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2Ug
PSBIZWFwUmFuZ2U6Om5vbmUoKSkKKyAgICB7CisgICAgICAgIEVmZmVjdCBlZmZlY3Q7CisgICAg
ICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKKyAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdy
aXRlUmFuZ2U7CisgICAgICAgIGVmZmVjdC5wdXJlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGVm
ZmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgRWZmZWN0IGZvckNoZWNrKEhlYXBSYW5nZSByZWFk
UmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsK
KyAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVz
ID0gSGVhcFJhbmdlOjpub25lKCk7CisgICAgICAgIGVmZmVjdC5wdXJlID0gdHJ1ZTsKKyAgICAg
ICAgZWZmZWN0LmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgICAgICByZXR1cm4gZWZmZWN0Owor
ICAgIH0KKworICAgIGJvb2wgbXVzdEdlbmVyYXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiB3cml0ZXMgfHwgZXhpdHNTaWRld2F5czsKKyAgICB9Cit9OworCit9IH0KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5n
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzQxZjIzOTAxY2E1MTAwYmZkMjkwY2JmMTIzMzY4MDFjNmY4Y2I3MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJh
bmdlLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJVEhlYXBS
YW5nZS5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
T01KSVQgeworCit2b2lkIEhlYXBSYW5nZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
eworICAgIG91dC5wcmludGYoIjB4JXgtMHgleCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihiZWdp
bigpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCgpKSk7Cit9CisKKworfSB9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFu
Z2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmQ1ZDRjZjlkZmM3NWRjZDIyNjYwOWE3NDg1YWJjMzI2OTdjYWZmYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdl
LmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIEhlYXBSYW5nZSB7CitwdWJsaWM6
CisgICAgY29uc3RleHByIEhlYXBSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIGNvbnN0ZXhwciBI
ZWFwUmFuZ2UodWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKKyAgICAgICAgOiBtX2JlZ2lu
KGJlZ2luKQorICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICB7CisgICAgfQorCisgICAgZW51bSBS
YXdSZXByZXNlbnRhdGlvblRhZyB7IFJhd1JlcHJlc2VudGF0aW9uIH07CisgICAgZXhwbGljaXQg
Y29uc3RleHByIEhlYXBSYW5nZShSYXdSZXByZXNlbnRhdGlvblRhZywgdWludDMyX3QgdmFsdWUp
CisgICAgICAgIDogbV9iZWdpbihzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUgPj4gMTYpKQor
ICAgICAgICAsIG1fZW5kKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZSkpCisgICAgeworICAg
IH0KKworICAgIHN0YXRpYyBIZWFwUmFuZ2UgZnJvbVJhdyh1aW50MzJfdCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoUmF3UmVwcmVzZW50YXRpb24sIHZhbHVlKTsKKyAg
ICB9CisKKyAgICB1aW50MTZfdCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KKyAg
ICB1aW50MTZfdCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQorICAgIHVpbnQzMl90IHJh
d1JlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2JlZ2lu
KSA8PCAxNikgfCBtX2VuZDsgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKKyAgICB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2JlZ2luID09IG90aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3RoZXIubV9l
bmQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgdG9wKCkgeyByZXR1
cm4gSGVhcFJhbmdlKDAsIFVJTlQxNl9NQVgpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFw
UmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIEhlYXBSYW5nZShVSU5UMTZfTUFYLCBVSU5UMTZfTUFYKTsg
fSAvLyBFbXB0eSByYW5nZS4KKworICAgIGJvb2wgaXNTdHJpY3RTdWJ0eXBlT2YoY29uc3QgSGVh
cFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghKnRoaXMgfHwgIW90aGVy
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX2JlZ2luIDw9IG90
aGVyLm1fYmVnaW4gJiYgb3RoZXIubV9lbmQgPD0gbV9lbmQ7CisgICAgfQorCisgICAgYm9vbCBp
c1N1YnR5cGVPZihjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKCEqdGhpcyB8fCAhb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICgqdGhpcyA9PSBvdGhlcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gaXNTdHJpY3RTdWJ0eXBlT2Yob3RoZXIpOworICAgIH0KKworICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBX
VEY6OnJhbmdlc092ZXJsYXAobV9iZWdpbiwgbV9lbmQsIG90aGVyLm1fYmVnaW4sIG90aGVyLm1f
ZW5kKTsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2JlZ2luIHsgVUlOVDE2X01B
WCB9OworICAgIHVpbnQxNl90IG1fZW5kIHsgVUlOVDE2X01BWCB9OworfTsKKworfSB9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IGE2NTdlMDZjNzg5MTljMjJjOThkY2FhM2RiMzMxYWU5MWNmZDMxZGQuLjNjM2U4ZGE1M2Zj
ZWYyMGRkODQ5ODUzNmZmMTMxN2MxYWNjN2VlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTkwNjQsNyArOTA2NCw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKICAgICB7Ci0gICAgICAg
IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTVBhdGNo
cG9pbnQoKTsKKyAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogZG9tSklUID0gbV9u
b2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OwogICAgICAgICBpbnQgY2hpbGRJbmRleCA9
IDA7CiAKICAgICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCAx
ZDJmYzE4NGUwYzA0MGZmNzljMWI0NjE1MmQ5M2U1Mzc2ZWJjYTM3Li5jMTA5M2ZhNjgwNjgxYTIy
NjYzYjI5Yjc3MjIxMTJmN2Q5OWNiZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRo
RXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC00NDQsMTIgKzQ0
NCw4IEBAIGlubGluZSBib29sIG5vbkVtcHR5UmFuZ2VzT3ZlcmxhcChUIGxlZnRNaW4sIFQgbGVm
dE1heCwgVCByaWdodE1pbiwgVCByaWdodE1heCkKIHsKICAgICBBU1NFUlQobGVmdE1pbiA8IGxl
ZnRNYXgpOwogICAgIEFTU0VSVChyaWdodE1pbiA8IHJpZ2h0TWF4KTsKLSAgICAKLSAgICBpZiAo
bGVmdE1pbiA8PSByaWdodE1pbiAmJiBsZWZ0TWF4ID4gcmlnaHRNaW4pCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChyaWdodE1pbiA8PSBsZWZ0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1p
bikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IGxlZnRNYXggPiByaWdodE1pbiAmJiByaWdodE1heCA+IGxlZnRNaW47CiB9CiAKIC8vIFBhc3Mg
cmFuZ2VzIHdpdGggdGhlIG1pbiBiZWluZyBpbmNsdXNpdmUgYW5kIHRoZSBtYXggYmVpbmcgZXhj
bHVzaXZlLiBGb3IgZXhhbXBsZSwgdGhpcyBzaG91bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
YjZhNzBmZWVhYmQ3MWM1M2JjYzJhZTczMDFiMWQyNDdhNDU0YjY4ZC4uYTI1YmU3NTI5YThjOGNl
MWI4MmVmODQzY2ZhM2EwMDdjZDUyNWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1Mzgs
NiArMTUzOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1BsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAogCisgICAgZG9taml0L0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwCiAgICAgZG9taml0L0pTTm9kZURPTUpJVC5jcHAKIAogICAgIGVkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODc1YWQwMmRkMzI0YzExNmRk
ZDhiYjk0NjE4NDcwOGY0ODk4NGQyLi5kYjE0NGUxYzc4MTE3YmM3ZmYwYjdmMTA1YWUyYmZhNjkz
ZTE5Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02MTY5LDYgKzYxNjksOCBAQAogCQlFMUZGOEY2RDE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeS5oICovOyB9OwogCQlFMzE1MEVBNjFEQTcyMTkwMDAxOTQwMTIgLyog
SlNOb2RlRE9NSklULmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovOyB9
OwogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3MjE4RDAw
MTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKKwkJRTM1Q0ExNEQxREJDM0EzRjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovOyB9OworCQlFMzVDQTE0RTFEQkMz
QTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEMxREJDM0EzQzAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLzsgfTsKIAkJRTM3N0ZFNEQx
REFERTE2NTAwQ0REMDI1IC8qIE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2Rl
Q29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFC
QUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRTM4ODM4
OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUz
IC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovOyB9OwpAQCAtMTM5NTEsNiArMTM5NTMsOCBAQAog
CQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJF
MDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAv
KiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZB
OTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyNjg0LDYgKzIyNjg4LDggQEAKIAkJRTNBRkE5NjMxREE2RThBRjAwMjg2
MUJEIC8qIGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwICovLAorCQkJCUUzNUNBMTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8sCiAJCQkJRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8q
IERPTUpJVEhlbHBlcnMuaCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNO
b2RlRE9NSklULmNwcCAqLywKIAkJCSk7CkBAIC0yNjYyNiw2ICsyNjYzMiw3IEBACiAJCQkJNDM5
MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQzOTA0NkVDMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTFVuZGVyT3Zlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1Q0ExNEUxREJDM0E0MjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJREVCQ0NERDIxNjY0NkU4MjAwQTQ1MkUxIC8qIFJlbmRlck1lZGlhQ29udHJvbEVsZW1l
bnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZBMzAzRjEzMTZDMjlDMDBDMEJGQzUgLyogUmVu
ZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODcyOCw2ICsyODczNSw3IEBA
CiAJCQkJQjJDM0RBNjIwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYWNoZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzM5NjlEMDFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcyN0RGRDUxNDJBQUU0NTAwRDQ0OUNCIC8qIEZvbnRD
YWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUzNUNBMTREMURCQzNBM0YwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
QUZGQzdDMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FjaGVNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCMkMzREE2MDBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhc2NhZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJBRkZDODAwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYXNjYWRlQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWE1NTM5ZmZlYjA2MmNk
ZjA3M2I1OThmMmZhN2Q3ZTkyMjhjMzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgor
CisjaW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3Bh
Y2UgRE9NSklUIHsKKworQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeSgpCit7CisgICAgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBET01IZWFwOworI2RlZmlu
ZSBET01KSVRfREVGSU5FX0hFQVAobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RI
ZWFwIG5hbWUjI0hlYXA7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVG
SU5FX0hFQVApCisjdW5kZWYgRE9NSklUX0RFRklORV9IRUFQCisKKyNkZWZpbmUgRE9NSklUX0lO
SVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQpIG5hbWUjI0hlYXAuc2V0UGFyZW50KCZwYXJlbnQj
I0hlYXApOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQ
KQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX0hFQVAKKworICAgIERPTUhlYXAuY29tcHV0ZSgw
KTsKKworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9NRU1CRVIobmFtZSwgcGFyZW50KSBuYW1l
ID0gbmFtZSMjSGVhcC5yYW5nZSgpOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9N
SklUX0RFRklORV9IRUFQKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUgorfQorCitj
b25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0
YW5jZSgpCit7CisgICAgTmV2ZXJEZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT4gcmVw
b3NpdG9yeTsKKyAgICByZXR1cm4gcmVwb3NpdG9yeS5nZXQoKTsKK30KKworfSB9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhjNjE3NTI1MDI5NmVjNzJlMzRkY2RkNTgzYTM1OTRlOWM2
MGFmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8ZG9t
aml0L0RPTUpJVEhlYXBSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisj
aWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsK
KworLy8gRGVzY3JpYmUgeW91ciBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBoZXJlLgorLy8gVihB
YnN0cmFjdEhlYXBOYW1lLCBQYXJlbnQpCisjZGVmaW5lIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJ
U1QoVikgXAorICAgIFYoTm9kZSwgRE9NKSBcCisgICAgVihOb2RlX2ZpcnN0Q2hpbGQsIE5vZGUp
IFwKKyAgICBWKE5vZGVfbGFzdENoaWxkLCBOb2RlKSBcCisgICAgVihOb2RlX3BhcmVudE5vZGUs
IE5vZGUpIFwKKyAgICBWKE5vZGVfbmV4dFNpYmxpbmcsIE5vZGUpIFwKKyAgICBWKE5vZGVfcHJl
dmlvdXNTaWJsaW5nLCBOb2RlKSBcCisKKworY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7
CitXVEZfTUFLRV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3QgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaW5zdGFuY2Uo
KTsKKworICAgIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgRE9NOworCisjZGVmaW5lIERPTUpJVF9E
RUZJTkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBuYW1lOwor
ICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9NRU1CRVIpCisjdW5k
ZWYgRE9NSklUX0RFRklORV9NRU1CRVIKKworcHJpdmF0ZToKKyAgICBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5KCk7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhl
bHBlcnMuaAppbmRleCAxODA2YjJhZmExYzQ3MWMwMzA0NjMwYjgwMzhmMDMyM2Y2ZTM2MWViLi5h
ODViY2RjYWI1ODFlYjAxYmUwYzMwZjk2ZjM1ZWNkOTRkNGQxNmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTMyLDggKzMyLDcgQEAKIAogI2lmIEVOQUJMRShKSVQp
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBET01KSVRIZWxwZXJzIHsKK25hbWVz
cGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAKIHVzaW5nIEpTQzo6Q0NhbGxIZWxw
ZXJzOwogdXNpbmcgSlNDOjpHUFJSZWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQu
Y3BwCmluZGV4IGI5NjkzYWNhYTc1MmE0NDQ4ZDQxNmNjMDQxNzc3MmMwMDBlODdjYjIuLjY4YTk4
NzlkZmQ5NWFlZGY3Y2U4ZTc4MWFmNWNlNjJjZmRiZDJlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9KU05vZGVET01KSVQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qg
b2ZmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoLCBv
ZmZzZXQpLCBzY3JhdGNoKTsKICAgICAgICAgbnVsbENhc2VzLmFwcGVuZChqaXQuYnJhbmNoVGVz
dFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gpKTsKIAotICAgICAgICBET01KSVRIZWxw
ZXJzOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGppdCwgcGFyYW1zLCBzY3JhdGNoLCBnbG9iYWxP
YmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxXcmFwcGVkTm9kZT4sIHBhcmFtc1sxXS52YWx1
ZSgpKTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGppdCwgcGFyYW1z
LCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxXcmFwcGVkTm9k
ZT4sIHBhcmFtc1sxXS52YWx1ZSgpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUg
PSBqaXQuanVtcCgpOwogCiAgICAgICAgIG51bGxDYXNlcy5saW5rKCZqaXQpOwpAQCAtODgsNyAr
ODgsNyBAQCBzdGF0aWMgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tOb2RlKCkKICAgICBS
ZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50Ojpj
cmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYg
aml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsK
KyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVQ6OmJyYW5jaElmTm90Tm9kZShqaXQs
IHBhcmFtc1swXS5ncHIoKSkpOwogICAgICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOwogICAgIH0p
OwogICAgIHJldHVybiBwYXRjaHBvaW50OwpAQCAtMTAyLDcgKzEwMiwxMCBAQCBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8RE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQog
ewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZG
U0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJzdENoaWxkTWVt
b3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAg
IGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3Rh
bmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vz
czxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9k
ZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6
OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBET01KSVQ6OkVmZmVjdDo6Zm9y
UmVhZFdyaXRlKGhlYXAuTm9kZV9maXJzdENoaWxkLCBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgp
KTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNsYXN0Q2hpbGQuCkBAIC0x
MTMsNyArMTE2LDEwIEBAIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01K
SVQ6OmNoZWNrRE9NKCkKIAogUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVMYXN0
Q2hpbGRET01KSVQ6OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zm
c2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250
YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVp
cmVtZW50OjpSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVh
dGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWlu
ZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250
YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
ID0gRE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZShoZWFwLk5vZGVfbGFzdENoaWxkLCBET01K
SVQ6OkhlYXBSYW5nZTo6bm9uZSgpKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8g
Tm9kZSNuZXh0U2libGluZy4KQEAgLTEyNCw3ICsxMzAsMTAgQEAgUmVmPERPTUpJVDo6UGF0Y2hw
b2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET00oKQogewotICAg
IHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJs
aW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRh
aW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZl
Y3QgPSBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKGhlYXAuTm9kZV9uZXh0U2libGluZywg
RE9NSklUOjpIZWFwUmFuZ2U6Om5vbmUoKSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAK
IC8vIE5vZGUjcHJldmlvdXNTaWJsaW5nLgpAQCAtMTM1LDcgKzE0NCwxMCBAQCBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJl
ZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpj
YWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2Rl
PihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJl
cXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQg
PSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGlu
Z01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVk
KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRl
KGhlYXAuTm9kZV9wcmV2aW91c1NpYmxpbmcsIERPTUpJVDo6SGVhcFJhbmdlOjpub25lKCkpOwor
ICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3BhcmVudE5vZGUuCkBAIC0xNDYs
NyArMTU4LDEwIEBAIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklU
OjpjaGVja0RPTSgpCiAKIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUGFyZW50
Tm9kZURPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZz
ZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJ
c0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRv
JiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAg
IGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVy
Tm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVx
dWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBET01KSVQ6
OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKGhlYXAuTm9kZV9wYXJlbnROb2RlLCBET01KSVQ6OkhlYXBS
YW5nZTo6bm9uZSgpKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNub2Rl
VHlwZS4KQEAgLTE1OCw2ICsxNzMsNyBAQCBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9k
ZVR5cGVET01KSVQ6OmNoZWNrRE9NKCkKIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBO
b2RlTm9kZVR5cGVET01KSVQ6OmNhbGxET00oKQogewogICAgIFJlZjxET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRl
KCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gRE9NSklUOjpFZmZlY3Q6OmZvclB1cmUoKTsK
ICAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0ID0gZmFsc2U7CiAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0ID0gcGFyYW1z
WzBdLmpzVmFsdWVSZWdzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292526</attachid>
            <date>2016-10-22 19:30:15 -0700</date>
            <delta_ts>2016-10-22 20:10:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022192634.patch</filename>
            <type>text/plain</type>
            <size>72883</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4zMzRjZjdhYzA2MWQyMGJk
MzU5ZTViMDUzMjdlMDdiYmFiMjIxNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6Om92
ZXJsYXBzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlclNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q2xvYmJlclNldDo6b3ZlcmxhcHMpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdMSUNNUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxJQ01QaGFzZTo6YXR0ZW1wdEhvaXN0KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhbGxE
T01EYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9NRGF0YSk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
Q2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6
OmNvbXB1dGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2lu
dC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6c2V0UGFyZW50KToKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmlzUm9vdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjppc0NvbXB1dGVkKToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OnJhbmdlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQ2FsbERPTVBh
dGNocG9pbnQuaDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklURWZmZWN0Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4K
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6CisgICAgICAgIChK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZl
Y3Q6OmZvckNoZWNrKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6Om11c3RHZW5lcmF0
ZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmR1bXApOgorICAgICAgICAqIGRvbWppdC9E
T01KSVRIZWFwUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpIZWFwUmFuZ2UpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpiZWdpbik6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6SGVhcFJhbmdlOjplbmQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5n
ZTo6cmF3UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCk6CisgICAgICAgIChK
U0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpub25lKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFw
UmFuZ2U6OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFu
Z2U6OmlzU3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om92ZXJs
YXBzKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorCiAyMDE2LTEwLTIxICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBi
b3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uYzgyYzY0NjhkODNl
YmE0M2M4YzdhOWE4MTE1MjE5NzAxM2ZiYmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0x
MC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
RE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVj
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L01hdGhFeHRyYXMuaDoKKyAgICAgICAgKFdURjo6bm9uRW1wdHlSYW5nZXNPdmVybGFwKToKKwog
MjAxNi0xMC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIxOTgzYjk2NzE0
YjJiMjdmZDgwZWE5NDkwZTE4ZjA0ZDdkMDkyODkuLjljMzA0OTQ5ZTQ2ODg0ZGUxYmY1MDEyZDI2
NjBmMWIzZWJlZmVjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxNi0xMC0yMiAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklU
XSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVjdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENh
bGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RP
TUpJVEVmZmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9t
aml0L0RPTUpJVEhlYXBSYW5nZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UpOgorICAg
ICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4K
KyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUSGVscGVyczo6YnJhbmNoSWZOb3RXb3JsZElzTm9ybWFsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V2Vha0lzTGl2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjp0cnlMb29rVXBXcmFwcGVyQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dG9XcmFwcGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmRE9NV3Jh
cHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJ
Zk5vdERPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVy
czo6YnJhbmNoSWZOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBl
cnM6OmJyYW5jaElmTm90Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRI
ZWxwZXJzOjpicmFuY2hJZkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUSGVscGVyczo6YnJhbmNoSWZOb3RFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmRG9jdW1lbnRXcmFwcGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RG9jdW1lbnRXcmFwcGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2hlY2tOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpj
aGVja0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERP
TSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQ
YXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOb2RlVHlw
ZURPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVUeXBlRE9NSklU
OjpjYWxsRE9NKToKKwogMjAxNi0xMC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVcGdyYWRpbmcgY3VzdG9tIGVsZW1lbnQgc2hvdWxkIGVucXVldWUgYXR0
cmlidXRlQ2hhbmdlZCBhbmQgY29ubmVjdGVkIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0OTJiNzMwMDQy
ZDguLjg3ZjczZTVhMDcwY2MxMjIxZmM4ZDQyMzIyNWMzNzE4NjA2NDllNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQxMyw2ICs0MTMsOSBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5bi1pbnRlbC5j
CiAgICAgZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODZfc3luLmMKIAorICAgIGRvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXAuY3BwCisgICAgZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAKKwogICAg
IGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwCiAgICAgZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwCiAgICAgZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA4NmFhMDg0ZTgxMWRhMzE0ZGE2Y2ZiNDcwMWEzMzM4ZmIzMGMzMzcx
Li5mYWIyMTk4MjZiMzk3NzU3N2Q1ZTBkMzQ1M2NmM2NkMmNlMDUxZTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjE2Myw2ICsyMTYzLDEwIEBACiAJCUUzNTU1QjhBMURBRTAz
QTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8q
IERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBl
LmNwcCAqLzsgfTsKIAkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5oICovOyB9
OworCQlFMzVDQTE1MzFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUxMURCQzNB
NTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwICovOyB9OworCQlFMzVDQTE1NDFEQkMz
QTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklU
SGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0RjFE
QkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLzsgfTsKKwkJRTM1Q0Ex
NTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2
IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsK
QEAgLTIxNzcsNiArMjE4MSw3IEBACiAJCUUzQkZEMEJCMURBRjgwODcwMDY1REVBMiAvKiBET01K
SVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklU
QWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovOyB9OwogCQlFM0JGRDBCQzFEQUY4MDhF
MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEJBMURBRjgwN0MwMDY1
REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovOyB9OwogCQlFM0Mw
OEUzQzFEQTQxQjgxMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhG
IC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNB
QTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwICovOyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CkBAIC00NTMzLDYgKzQ1Mzgs
MTAgQEAKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBv
aW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01QYXRj
aHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMw
MEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRl
clByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNEYxREJD
M0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJh
Y3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0
SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MTFEQkMzQTU2MDBG
ODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVhcFJhbmdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ1NDgsNiArNDU1Nyw3IEBACiAJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2lu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAv
KiBET01KSVRFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
RWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0IxRTI0MURBNzU0MEEw
MEZBMUU1NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc0MDMsOCArNzQxMywxMyBAQAogCQlFM0ZGNzUyRDFEOUNFOUVBMDBDN0UxNkQgLyogZG9t
aml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzVD
QTE0RjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLywKKwkJCQlF
MzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi8sCiAJCQkJ
RTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi8s
CisJCQkJRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICovLAogCQkJ
CUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIuaCAqLywKKwkJ
CQlFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLywKKwkJ
CQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggKi8sCiAJCQkJ
RTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLywKIAkJCQlF
MzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAog
CQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAqLywKQEAgLTc2MzIs
NiArNzY0Nyw3IEBACiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8qIENvZGVCbG9ja1dp
dGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4OEIyMDA2NDBBNDcg
LyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5OTUwMDA2Q0VC
Q0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICovLAorCQkJCUUz
Qzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRz
VGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFMTE2QjEwRkU3NUFDODAwQjUxMkJD
IC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRDdFNjkxNDQ3OTk5NjAw
NDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODI5OSw2ICs4MzE1LDcg
QEAKIAkJCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTUyQzM4MDFBRERCOEZFMDAx
Mzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MjhGRjND
MThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWluUHRyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDg3NEFFNjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkIxQzE2MjVCRTAwMzIzRjY3IC8qIEIzQ0ZHLmggaW4g
SGVhZGVycyAqLywKQEAgLTg0MTcsNiArODQzNCw3IEBACiAJCQkJN0MwMDhDRTcxODc2MzFCNjAw
OTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMwMTg0MTkxRDEwQzE4
OTAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhFMjEx
QTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1
Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSBpbiBIZWFkZXJzICov
LAogCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTI0LDYgKzk5NDIsNyBAQAogCQkJCTBGNjE4
MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0U0MEQxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5
Q29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNUNBMTUzMURCQzNBNUMwMEY4MzUx
NiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGQjYwQTQxMDNG
N0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQ2OURFODEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTk0Miw2ICs5OTYxLDcgQEAKIAkJCQk4NjQyQzUxMjE1MUMwODNE
MDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
MjgwODQzMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFMzVDQTE1NTFEQkMzQTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJh
Y3RIZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBDN0EwMUI4MkUxQzMwMDBGNkI3OSAv
KiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBDN0ExMUI4MkUx
QzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAKaW5k
ZXggMWUxMTAxOTAyZGIyNWVhZDdmOGQ3ZWY5OWI0OWM0ODQxYzE4ZDExZC4uY2Q2OTRiYmViYWM4
MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkxZDIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNDUsNiArNDUsMTAgQEAgdm9pZCBBYnN0cmFj
dEhlYXA6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBvdXQucHJpbnQoa2luZCgp
KTsKICAgICBpZiAoa2luZCgpID09IEludmFsaWRBYnN0cmFjdEhlYXAgfHwga2luZCgpID09IFdv
cmxkIHx8IGtpbmQoKSA9PSBIZWFwIHx8IHBheWxvYWQoKS5pc1RvcCgpKQogICAgICAgICByZXR1
cm47CisgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICBvdXQucHJpbnQoIigi
LCBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhwYXlsb2FkKCkudmFsdWUzMigpKSwgIikiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBvdXQucHJpbnQoIigiLCBwYXlsb2FkKCksICIp
Iik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmlu
ZGV4IDBhYmQ1MDI3YjI2YWViMzk0ZjI5YzAzOGZkOWYyZDU5MmU2YzE2MzkuLmY1MWY4MmZlMTM3
ZTI1YTNmNzlhNTJiMWYxMWIwYzUzMzFhMzA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgpAQCAtNzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxT
dGF0ZSkgXAogICAgIG1hY3JvKEFic29sdXRlKSBcCisgICAgLyogRE9NSklUIHRlbGxzIHRoZSBo
ZWFwIHJhbmdlIHdpdGggdGhlIHBhaXIgb2YgaW50ZWdlcnMuICovXAorICAgIG1hY3JvKERPTVN0
YXRlKSBcCiAgICAgLyogVXNlIHRoaXMgZm9yIHdyaXRlcyBvbmx5LCB0byBpbmRpY2F0ZSB0aGF0
IHRoaXMgbWF5IGZpcmUgd2F0Y2hwb2ludHMuIFVzdWFsbHkgdGhpcyBpcyBuZXZlciBkaXJlY3Rs
eSB3cml0dGVuIGJ1dCBpbnN0ZWFkIHdlIHRlc3QgdG8gc2VlIGlmIGEgbm9kZSBjbG9iYmVycyB0
aGlzOyBpdCBqdXN0IHNvIGhhcHBlbnMgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSB3b3JsZCB0byBj
bG9iYmVyIGl0LiAqL1wKICAgICBtYWNybyhXYXRjaHBvaW50X2ZpcmUpIFwKICAgICAvKiBVc2Ug
dGhlc2UgZm9yIHJlYWRzIG9ubHksIGp1c3QgdG8gaW5kaWNhdGUgdGhhdCBpZiB0aGUgd29ybGQg
Z290IGNsb2JiZXJlZCwgdGhlbiB0aGlzIG9wZXJhdGlvbiB3aWxsIG5vdCB3b3JrLiAqL1wKQEAg
LTIzMyw2ICsyMzYsMTUgQEAgY2xhc3MgQWJzdHJhY3RIZWFwIHsKICAgICBib29sIGlzU3RyaWN0
U3VidHlwZU9mKGNvbnN0IEFic3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBBYnN0cmFjdEhlYXAgY3VycmVudCA9ICp0aGlzOworICAgICAgICBpZiAoY3VycmVudC5raW5k
KCkgPT0gRE9NU3RhdGUgJiYgb3RoZXIua2luZCgpID09IERPTVN0YXRlKSB7CisgICAgICAgICAg
ICBQYXlsb2FkIGN1cnJlbnRQYXlsb2FkID0gY3VycmVudC5wYXlsb2FkKCk7CisgICAgICAgICAg
ICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQoKTsKKyAgICAgICAgICAgIGlm
IChjdXJyZW50UGF5bG9hZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChvdGhlclBheWxvYWQuaXNUb3AoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJh
dyhjdXJyZW50UGF5bG9hZC52YWx1ZTMyKCkpLmlzU3RyaWN0U3VidHlwZU9mKERPTUpJVDo6SGVh
cFJhbmdlOjpmcm9tUmF3KG90aGVyUGF5bG9hZC52YWx1ZTMyKCkpKTsKKyAgICAgICAgfQogICAg
ICAgICB3aGlsZSAoY3VycmVudC5raW5kKCkgIT0gV29ybGQpIHsKICAgICAgICAgICAgIGN1cnJl
bnQgPSBjdXJyZW50LnN1cGVydHlwZSgpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gb3Ro
ZXIpCkBAIC0yNDgsNyArMjYwLDE2IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7CiAgICAgCiAgICAg
Ym9vbCBvdmVybGFwcyhjb25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuICp0aGlzID09IG90aGVyIHx8IGlzU3RyaWN0U3VidHlwZU9mKG90aGVyKSB8
fCBvdGhlci5pc1N0cmljdFN1YnR5cGVPZigqdGhpcyk7CisgICAgICAgIGlmICgqdGhpcyA9PSBv
dGhlcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoa2luZCgpID09IERP
TVN0YXRlICYmIG90aGVyLmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAgICAgUGF5bG9h
ZCBjdXJyZW50UGF5bG9hZCA9IHBheWxvYWQoKTsKKyAgICAgICAgICAgIFBheWxvYWQgb3RoZXJQ
YXlsb2FkID0gb3RoZXIucGF5bG9hZCgpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXlsb2Fk
LmlzVG9wKCkgfHwgb3RoZXJQYXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY3Vy
cmVudFBheWxvYWQudmFsdWUzMigpKS5vdmVybGFwcyhET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJh
dyhvdGhlclBheWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlz
U3RyaWN0U3VidHlwZU9mKG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVPZigqdGhpcyk7
CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNEaXNqb2ludChjb25zdCBBYnN0cmFjdEhlYXAmIG90
aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGExMmYwOWNiMWI5NGEwYTMwNDM2Mzcw
YzcyYWEyMWM1ZWQ4MTk1ZmIuLmYwOWQ0MWI3YjdjYTMzM2EyNDA5YjFlNTQ1YjU1ODQwZGNmMGZh
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIyODksMTAgKzIyODksMTMgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgZmlsdGVyQ2xhc3NJbmZvKHZhbHVlLCBub2RlLT5jbGFz
c0luZm8oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIENhbGxET006Ci0gICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7Cisg
ICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBh
dGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBpZiAo
cGF0Y2hwb2ludC0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSku
bWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIENoZWNr
QXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1f
Z3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNDg4NDIwNmIzZjU2ZDc0ZTZmMjZlZjU2
YjU4Y2ZhYTU2NTcwZDg5OS4uYTViMDRjYTY2MTQ1YWI1M2U2NjI4NzdhZGE3ZDIzN2Q0Y2IyOWRk
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTI2NzMsNiArMjY3MywxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYQogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJsZXNzQ2FsbERP
TShOb2RlKiBub2RlKQoreworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9p
bnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgIGlmICghcGF0Y2hwb2lu
dC0+ZWZmZWN0Lm11c3RHZW5lcmF0ZSgpKQorICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUpOworfQorCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0
ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2Rl
KiB0aGlzTm9kZSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlh
bnQuZG9tSklUKCkpCkBAIC0yNjkxLDE0ICsyNjk4LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlh
bnQmCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUu
IFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBT
dHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja0RPTSwgT3BJ
bmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhkb21KSVQtPnRoaXNDbGFzc0lu
Zm8oKSksIHRoaXNOb2RlKTsKIAorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0YSA9IG1fZ3Jh
cGgubV9jYWxsRE9NRGF0YS5hZGQoKTsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2lu
dD4gY2FsbERPTVBhdGNocG9pbnQgPSBkb21KSVQtPmNhbGxET00oKTsKICAgICBtX2dyYXBoLm1f
ZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNhbGxET01QYXRjaHBvaW50LnB0cigpKTsKKworICAg
IGNhbGxET01EYXRhLT5kb21KSVQgPSBkb21KSVQ7CisgICAgY2FsbERPTURhdGEtPnBhdGNocG9p
bnQgPSBjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKTsKKwogICAgIGlmIChjYWxsRE9NUGF0Y2hwb2lu
dC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewogICAgICAgICBOb2RlKiBnbG9iYWxPYmplY3QgPSBh
ZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwgdGhpc05vZGUpOwogICAgICAgICBhZGRWYXJBcmdD
aGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05vZGUgaXMgYWx3YXlz
IHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBlci4KICAgICB9CiAgICAgYWRkVmFyQXJnQ2hpbGQo
dGhpc05vZGUpOwotICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTVBhdGNocG9pbnQucHRy
KCkpLCBPcEluZm8ocHJlZGljdGlvbikpKTsKKyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTURhdGEpLCBPcEluZm8o
cHJlZGljdGlvbikpOworICAgIGJsZXNzQ2FsbERPTShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcApp
bmRleCBkNDYzMGUzNzBjYjBiYWMyM2Q5OTQyZjVmZmNlMzhmYjU4ZGEyZGVjLi41OGQzYzk1YzE4
NzNiYWE5ZDU1YTYyYzUxYWExYTc5MjQ0OWY3ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKQEAgLTgxLDYgKzgxLDIzIEBAIGJvb2wgQ2xvYmJlclNl
dDo6b3ZlcmxhcHMoQWJzdHJhY3RIZWFwIGhlYXApIGNvbnN0CiB7CiAgICAgaWYgKG1fY2xvYmJl
cnMuZmluZChoZWFwKSAhPSBtX2Nsb2JiZXJzLmVuZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoaGVhcC5raW5kKCkgPT0gRE9NU3RhdGUgJiYgIWhlYXAucGF5bG9hZCgpLmlzVG9w
KCkpIHsKKyAgICAgICAgLy8gRE9NU3RhdGUgaGVhcCBoYXMgaXRzIG93biBoaWVyYXJjaHkuIEZv
ciBkaXJlY3QgaGVhcCBjbG9iYmVycyB0aGF0IHBheWxvYWQgaXMgbm90IFRvcCwKKyAgICAgICAg
Ly8gd2Ugc2hvdWxkIHF1ZXJ5IHdoZXRoZXIgdGhlIGNsb2JiZXIgb3ZlcmxhcHMgd2l0aCB0aGUg
Z2l2ZW4gaGVhcC4KKyAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBET01KSVQ6Okhl
YXBSYW5nZTo6ZnJvbVJhdyhoZWFwLnBheWxvYWQoKS52YWx1ZTMyKCkpOworICAgICAgICBmb3Ig
KGF1dG8gcGFpciA6IG1fY2xvYmJlcnMpIHsKKyAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gcGFp
ci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGlyZWN0KQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgQWJzdHJhY3RIZWFwIGNsb2JiZXIgPSBwYWlyLmtleTsKKyAgICAg
ICAgICAgIGlmIChjbG9iYmVyLmtpbmQoKSAhPSBET01TdGF0ZSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLnBheWxvYWQoKS5pc1RvcCgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKERPTUpJVDo6SGVhcFJhbmdl
Ojpmcm9tUmF3KGNsb2JiZXIucGF5bG9hZCgpLnZhbHVlMzIoKSkub3ZlcmxhcHMocmFuZ2UpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQogICAgIHdoaWxl
IChoZWFwLmtpbmQoKSAhPSBXb3JsZCkgewogICAgICAgICBoZWFwID0gaGVhcC5zdXBlcnR5cGUo
KTsKICAgICAgICAgaWYgKGNvbnRhaW5zKGhlYXApKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuaAppbmRleCA3MjlmMzliMTE4NTE4YTk1NTVlYzQ2MTY2ZWVhZjdkZGVk
NGFiZTQ1Li5mOTNlMjdmZGI0MjMyZWMwYjJhYzUwMGE2NTA1ZTRjOTU0OTM0ZDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaApAQCAtNTIsMTEgKzUyLDExIEBA
IGNsYXNzIENsb2JiZXJTZXQgewogICAgIAogICAgIHZvaWQgYWRkKEFic3RyYWN0SGVhcCk7CiAg
ICAgdm9pZCBhZGRBbGwoY29uc3QgQ2xvYmJlclNldCYpOwotICAgIGJvb2wgY29udGFpbnMoQWJz
dHJhY3RIZWFwKSBjb25zdDsKICAgICBib29sIG92ZXJsYXBzKEFic3RyYWN0SGVhcCkgY29uc3Q7
CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAgIC8vIENhbGxzIHVzZWZ1bCBmb3IgZGVidWdn
aW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERvIG5vdCBjYWxsIGZvciBub24gZGVidWdnaW5n
IHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3QgaGFuZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBj
YXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0
OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBzdXBlcigpIGNvbnN0OwpAQCAtNjQsNiArNjQs
OCBAQCBjbGFzcyBDbG9iYmVyU2V0IHsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKICAgICAKIHByaXZhdGU6CisgICAgYm9vbCBjb250YWlucyhBYnN0cmFjdEhlYXApIGNvbnN0
OworCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IHNldE9mKGJvb2wgZGlyZWN0KSBjb25zdDsK
ICAgICAKICAgICAvLyBNYXBzIGhlYXAgdG86CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5Mzg3MmU1MDgxODBkMmI1ZjJjYzZiNmFiYzg0
NGMuLmNjNmU0ZDM3YjJjZDZiY2Q1ODJmNGM0Njk2N2MwMjRiOWFmNjdkOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNs
dWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5o
IgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTkwNywxMCArOTA4LDMw
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwg
bm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBDYWxsRE9N
OgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgY2FzZSBD
YWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQg
PSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBET01KSVQ6OkVmZmVj
dCBlZmZlY3QgPSBwYXRjaHBvaW50LT5lZmZlY3Q7CisgICAgICAgIGlmIChlZmZlY3QucmVhZHMp
IHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRv
cCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3QucmVhZHMucmF3
UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3Qud3JpdGVz
KSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6
dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7IC8vIFdlIGRvIG5vdCBhc3N1bWUg
dGhhdCBET00gb3BlcmF0aW9ucyB3aWxsIHdyaXRlKFN0YWNrKS4KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0
ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3Qu
cHVyZSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShub2RlLT5udW1DaGlsZHJl
bigpIDw9IEFkamFjZW5jeUxpc3Q6OlNpemUsICJDdXJyZW50bHkgd2Ugb25seSBhbGxvdyBwdXJl
IENhbGxET00gdG8gaGF2ZSB1cCB0byAzIGNoaWxkcmVuLiIpOworICAgICAgICAgICAgRWRnZSBl
ZGdlc1tBZGphY2VuY3lMaXN0OjpTaXplXTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBub2RlLT5udW1DaGlsZHJlbigpOyArK2kpCisgICAgICAgICAgICAgICAgZWRnZXNb
aV0gPSBncmFwaC52YXJBcmdDaGlsZChub2RlLCBpKTsKKyAgICAgICAgICAgIGRlZihQdXJlVmFs
dWUoQ2FsbERPTSwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgZWRnZXNbMF0s
IGVkZ2VzWzFdLCBlZGdlc1syXSksIG5vZGUtPmNhbGxET01EYXRhKCktPmRvbUpJVCkpOworICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBjYXNlIEFycmF5aWZ5OgogICAg
IGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCAzZjEzODQyY2FmNGI1YzZlZTFmMDljNTRhYTNkOGEwMDYyMzZjNTI5Li5m
MzViNjZjZTE3ZTQwMzk4MmQwMjhhZjM4MmI5MWJkNjA4NTdlYWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMTgsNyArMTE4LDYgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAg
Y2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgotICAgIGNhc2UgQ2Fs
bERPTToKICAgICBjYXNlIENoZWNrRE9NOgogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNl
IEdldFNjb3BlOgpAQCAtMjk5LDYgKzI5OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CiAgICAgY2FzZSBDcmVh
dGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMzNjMGNmMTky
MDg1YjUwMDRiMjAwODllMmQzYjA2OTI5MDQ4ODU5OC4uZjk1MWMyZWEwZmEzYjMzMTEyMzRhY2Iy
NzYyMDMxN2EyNTNlMTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKIAogICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAgICAgIGludCBjaGls
ZEluZGV4ID0gMDsKLSAgICAgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNo
cG9pbnQgPSBub2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgpOworICAgICAgICAgICAgRE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNo
cG9pbnQ7CiAgICAgICAgICAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCBjaGlsZEluZGV4KyspKTsgLy8gR2xvYmFsT2JqZWN0LgogICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgrKykpOyAv
LyBET00uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNzZiMmJhZWM3MTZj
MmYzNmI2YmU1NDM2MGE5ZDMzZGQ0YTE0ZjNhYy4uZjk1N2Y1Y2ZiZDc4OGVkZDYyNjg5NWZmMWRl
MzUwNzEzNmQxNDE4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTAx
LDYgKzkwMSw3IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAg
ICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xvYWRWYXJhcmdzRGF0YTsKICAgICBCYWc8U3RhY2tB
Y2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0YTsKICAgICBCYWc8TGF6eUpTVmFsdWU+IG1fbGF6
eUpTVmFsdWVzOworICAgIEJhZzxDYWxsRE9NRGF0YT4gbV9jYWxsRE9NRGF0YTsKICAgICBWZWN0
b3I8SW5saW5lVmFyaWFibGVEYXRhLCA0PiBtX2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNo
TWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1f
Ynl0ZWNvZGVMaXZlbmVzczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUtpbGxzPj4gbV9ieXRlY29kZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMSUNNUGhhc2UuY3BwCmluZGV4IGU2MDk3NjRlODU5Y2Y4MGRkYWM1OGIzYzQyYzA3
MDVjMTJlOTI2M2EuLjk3ZTFlYWFkYWU5YTA0ODAwMmVlZGEzN2ZlN2E1NmFlOWU0ZTZiYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKQEAgLTMzOSw3ICsz
MzksNyBAQCBjbGFzcyBMSUNNUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAvLyBJdCBq
dXN0IHNvIGhhcHBlbnMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIHdlIGN1cnJlbnRseSBrbm93IGhv
dyB0byBob2lzdAogICAgICAgICAvLyBkb24ndCBoYXZlIHZhci1hcmcgY2hpbGRyZW4uIFRoYXQg
bWF5IGNoYW5nZSBhbmQgdGhlbiB3ZSBjYW4gZml4IHRoaXMKICAgICAgICAgLy8gY29kZS4gQnV0
IGZvciBub3cgd2UganVzdCBhc3NlcnQgdGhhdCdzIHRoZSBjYXNlLgotICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSk7Cisg
ICAgICAgIC8vIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9k
ZUhhc1ZhckFyZ3MpKTsKICAgICAgICAgCiAgICAgICAgIG5vZGVSZWYgPSBtX2dyYXBoLmFkZE5v
ZGUoQ2hlY2ssIG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBjOTQxMWQ1MGNmYmE5YzU0YjAyYzM0ODY0
OTdlNDAzNDEyN2FkZGJjLi4wZDFhNGI1NTgxNDM3MjlhYThjMzIyZjI4NDYxODNkMWQ0MzY0ZDNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTksNiArNTksNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOwog
Y2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNzIENhbGxET01QYXRjaHBvaW50OwogfQpAQCAtMjMxLDYg
KzIzMiwxMSBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hl
ZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAor
c3RydWN0IENhbGxET01EYXRhIHsKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUIHsg
bnVsbHB0ciB9OworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgeyBu
dWxscHRyIH07Cit9OworCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMg
YSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkBAIC0yMzM2LDE1ICsy
MzQyLDE1IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJ
VDo6UGF0Y2hwb2ludCo+KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNDYWxsRE9NUGF0Y2hwb2lu
dCgpIGNvbnN0CisgICAgYm9vbCBoYXNDYWxsRE9NRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gb3AoKSA9PSBDYWxsRE9NOwogICAgIH0KIAotICAgIERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQqIGNhbGxET01QYXRjaHBvaW50KCkKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURh
dGEoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0NhbGxET01QYXRjaHBvaW50KCkpOwotICAg
ICAgICByZXR1cm4gbV9vcEluZm8uYXM8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCo+KCk7Cisg
ICAgICAgIEFTU0VSVChoYXNDYWxsRE9NRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzPENhbGxET01EYXRhKj4oKTsKICAgICB9CiAKICAgICBib29sIGhhc0NsYXNzSW5mbygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IDVlNjRiYWY5M2M3YmMxMjcxNmNhNzc4MjMyNTc0ODk2NDMyZjg5OTEuLjMzOWZlMjcz
ODAzMDgzYWMwNjA2NTVhM2QxZDA2MTljZDIzMTE4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjI1LDcgKzcyMjUsNyBAQCBz
dGF0aWMgdm9pZCBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgVmVjdG9yPAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2Fs
bERPTShOb2RlKiBub2RlKQogewotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNo
cG9pbnQgPSBub2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgpOworICAgIERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50Owog
CiAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOwogICAgIFZlY3RvcjxGUFJSZWc+IGZwU2Ny
YXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGM3MmMwMzc5MDc5MzBlM2M4YmJjYTM3YThiZWY0OTQ2
MTc0NzIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRE9NSklUQWJzdHJhY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3ZvaWQgQWJzdHJhY3RIZWFwOjpjb21wdXRlKHVu
c2lnbmVkIGJlZ2luKQoreworICAgIHVuc2lnbmVkIGN1cnJlbnQgPSBiZWdpbjsKKyAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikgeworICAgICAgICBjaGlsZC0+Y29tcHV0ZShjdXJy
ZW50KTsKKyAgICAgICAgY3VycmVudCA9IGNoaWxkLT5yYW5nZSgpLmVuZCgpOworICAgIH0KKyAg
ICBBU1NFUlQoYmVnaW4gPCBVSU5UMTZfTUFYKTsKKyAgICBBU1NFUlQoY3VycmVudCA8PSBVSU5U
MTZfTUFYKTsKKyAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJlZ2luLCBjdXJyZW50KTsKK30KKwor
fSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY2OGI1MGUxZjhiZGQwNjI4Y2FmNTRmMTE0YTFj
NjZiMGI1Mzk1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RE9NSklUSGVhcFJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgRU5BQkxF
KEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBBYnN0
cmFjdEhlYXAgeworcHVibGljOgorICAgIEFic3RyYWN0SGVhcCgpID0gZGVmYXVsdDsKKworICAg
IHZvaWQgc2V0UGFyZW50KEFic3RyYWN0SGVhcCogcGFyZW50KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3BhcmVudCk7CisgICAgICAgIHBhcmVudC0+bV9jaGlsZHJlbi5hcHBlbmQodGhpcyk7
CisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OworICAgIH0KKworICAgIGJvb2wgaXNSb290KCkg
Y29uc3QgeyByZXR1cm4gIW1fcGFyZW50OyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNvbXB1dGUodW5zaWduZWQgYmVnaW4pOworCisgICAgYm9vbCBpc0NvbXB1dGVkKCkgY29uc3Qg
eyByZXR1cm4gISFtX3JhbmdlOyB9CisgICAgSGVhcFJhbmdlIHJhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZTsgfQorCitwcml2YXRlOgorICAgIEFic3RyYWN0SGVhcCogbV9wYXJlbnQgeyBu
dWxscHRyIH07CisgICAgVmVjdG9yPEFic3RyYWN0SGVhcCo+IG1fY2hpbGRyZW4geyB9OworICAg
IEhlYXBSYW5nZSBtX3JhbmdlOworfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCmluZGV4
IDY5NTgyMGM1YTU5ZDYzZGVkYTQyZjgzZDRmOGI0Nzg1Y2M5YTgzYTAuLjRlZGIyMzMyYTdhOWQ3
ZDQyYjEwYTQxNDZmOTBhODEyMjQ2YWM1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRFZmZlY3QuaCIKICNpbmNs
dWRlICJET01KSVRQYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAt
NDUsNiArNDYsOCBAQCBjbGFzcyBDYWxsRE9NUGF0Y2hwb2ludCA6IHB1YmxpYyBQYXRjaHBvaW50
IHsKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgw
CiAgICAgYm9vbCByZXF1aXJlR2xvYmFsT2JqZWN0IHsgdHJ1ZSB9OwogCisgICAgRWZmZWN0IGVm
ZmVjdCB7IH07CisKIHByaXZhdGU6CiAgICAgQ2FsbERPTVBhdGNocG9pbnQoKSA9IGRlZmF1bHQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODZkMDg5NzRhMGY3ZTYyMjM1ZDEwMTZhOTU3ZjMwNWUwNWM0NmUwZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgiCisKKyNpZiBF
TkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3N0cnVj
dCBFZmZlY3QgeworICAgIEhlYXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAg
ICBIZWFwUmFuZ2Ugd3JpdGVzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworCisgICAgYm9vbCBleGl0
c1NpZGV3YXlzIHsgZmFsc2UgfTsKKworICAgIC8vIEZJWE1FOiBGdXJ0aGVyIHdlIHdvdWxkIGxp
a2UgdG8gZXh0ZW5kIHRvIHJlcHJlc2VudCB0aGUgaGVhcCBsb2NhdGlvbiBmb3IgdGhlIHB1cmUg
dmFsdWUuCisgICAgYm9vbCBwdXJlIHsgZmFsc2UgfTsKKworICAgIHN0YXRpYyBFZmZlY3QgZm9y
UmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQorICAg
IHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJh
bmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAgICAgICAgcmV0dXJu
IGVmZmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgRWZmZWN0IGZvclB1cmUoSGVhcFJhbmdlIHJl
YWRSYW5nZSA9IEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSA9IEhlYXBS
YW5nZTo6bm9uZSgpKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZm
ZWN0LnJlYWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5n
ZTsKKyAgICAgICAgZWZmZWN0LnB1cmUgPSB0cnVlOworICAgICAgICByZXR1cm4gZWZmZWN0Owor
ICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yQ2hlY2soSGVhcFJhbmdlIHJlYWRSYW5nZSA9
IEhlYXBSYW5nZTo6dG9wKCkpCisgICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0OworICAgICAg
ICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7CisgICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFw
UmFuZ2U6Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0LnB1cmUgPSB0cnVlOworICAgICAgICBlZmZl
Y3QuZXhpdHNTaWRld2F5cyA9IHRydWU7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgfQor
CisgICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHdy
aXRlcyB8fCBleGl0c1NpZGV3YXlzOworICAgIH0KK307CisKK30gfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNDFmMjM5MDFjYTUxMDBiZmQyOTBjYmYxMjMzNjgwMWM2ZjhjYjcyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3Bw
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgi
CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7
CisKK3ZvaWQgSGVhcFJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50ZigiMHgleC0weCV4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJlZ2luKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKCkpKTsKK30KKworCit9IH0KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZDVkNGNmOWRmYzc1ZGNkMjI2NjA5YTc0ODVhYmMzMjY5N2NhZmZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaApAQCAt
MCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRE9NSklUIHsKKworY2xhc3MgSGVhcFJhbmdlIHsKK3B1YmxpYzoKKyAgICBj
b25zdGV4cHIgSGVhcFJhbmdlKCkgPSBkZWZhdWx0OworCisgICAgY29uc3RleHByIEhlYXBSYW5n
ZSh1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4p
CisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIFJhd1JlcHJl
c2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24gfTsKKyAgICBleHBsaWNpdCBjb25zdGV4
cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKKyAgICAg
ICAgOiBtX2JlZ2luKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZSA+PiAxNikpCisgICAgICAg
ICwgbV9lbmQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKSkKKyAgICB7CisgICAgfQorCisg
ICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEhlYXBSYW5nZShSYXdSZXByZXNlbnRhdGlvbiwgdmFsdWUpOworICAgIH0KKwor
ICAgIHVpbnQxNl90IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQorICAgIHVpbnQx
Nl90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgdWludDMyX3QgcmF3UmVwcmVz
ZW50YXRpb24oKSB7IHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fYmVnaW4pIDw8IDE2
KSB8IG1fZW5kOyB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2JlZ2luICE9IG1fZW5kOworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbiAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSB0b3AoKSB7IHJldHVybiBIZWFw
UmFuZ2UoMCwgVUlOVDE2X01BWCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBu
b25lKCkgeyByZXR1cm4gSGVhcFJhbmdlKFVJTlQxNl9NQVgsIFVJTlQxNl9NQVgpOyB9IC8vIEVt
cHR5IHJhbmdlLgorCisgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25zdCBIZWFwUmFuZ2Um
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCEqdGhpcyB8fCAhb3RoZXIpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgqdGhpcyA9PSBvdGhlcikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPD0gb3RoZXIubV9i
ZWdpbiAmJiBvdGhlci5tX2VuZCA8PSBtX2VuZDsKKyAgICB9CisKKyAgICBib29sIGlzU3VidHlw
ZU9mKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISp0
aGlzIHx8ICFvdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCp0
aGlzID09IG90aGVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBp
c1N0cmljdFN1YnR5cGVPZihvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25z
dCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cmFu
Z2VzT3ZlcmxhcChtX2JlZ2luLCBtX2VuZCwgb3RoZXIubV9iZWdpbiwgb3RoZXIubV9lbmQpOwor
ICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OworCitwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYmVnaW4geyBVSU5UMTZfTUFYIH07Cisg
ICAgdWludDE2X3QgbV9lbmQgeyBVSU5UMTZfTUFYIH07Cit9OworCit9IH0KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTY1
N2UwNmM3ODkxOWMyMmM5OGRjYWEzZGIzMzFhZTkxY2ZkMzFkZC4uM2MzZThkYTUzZmNlZjIwZGQ4
NDk4NTM2ZmYxMzE3YzFhY2M3ZWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTA2NCw3ICs5MDY0LDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQogICAgIHsKLSAgICAgICAgRE9NSklU
OjpDYWxsRE9NUGF0Y2hwb2ludCogZG9tSklUID0gbV9ub2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgp
OworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNh
bGxET01EYXRhKCktPnBhdGNocG9pbnQ7CiAgICAgICAgIGludCBjaGlsZEluZGV4ID0gMDsKIAog
ICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmluZGV4IDFkMmZjMTg0
ZTBjMDQwZmY3OWMxYjQ2MTUyZDkzZTUzNzZlYmNhMzcuLmMxMDkzZmE2ODA2ODFhMjI2NjNiMjli
NzcyMjExMmY3ZDk5Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQ0NCwxMiArNDQ0LDggQEAg
aW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwgVCBsZWZ0TWF4LCBU
IHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQogewogICAgIEFTU0VSVChsZWZ0TWluIDwgbGVmdE1heCk7
CiAgICAgQVNTRVJUKHJpZ2h0TWluIDwgcmlnaHRNYXgpOwotICAgIAotICAgIGlmIChsZWZ0TWlu
IDw9IHJpZ2h0TWluICYmIGxlZnRNYXggPiByaWdodE1pbikKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBsZWZ0TWluKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbGVmdE1h
eCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsKIH0KIAogLy8gUGFzcyByYW5nZXMg
d2l0aCB0aGUgbWluIGJlaW5nIGluY2x1c2l2ZSBhbmQgdGhlIG1heCBiZWluZyBleGNsdXNpdmUu
IEZvciBleGFtcGxlLCB0aGlzIHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiNmE3MGZl
ZWFiZDcxYzUzYmNjMmFlNzMwMWIxZDI0N2E0NTRiNjhkLi5hMjViZTc1MjlhOGM4Y2UxYjgyZWY4
NDNjZmEzYTAwN2NkNTI1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUzOCw2ICsxNTM4
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWwuY3BwCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAKICAgICBkb21qaXQvSlNOb2RlRE9NSklULmNwcAogCiAgICAgZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJmYjU0MjI5ZDEyMzBmOWM2N2UxZWY2ZWIyNzc1NzFjMzQ2N2JlZmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFw
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFwX2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9ET01KSVRBYnN0cmFjdEhlYXAuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEVmZmVjdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVkYzJlZjY4OWIwNTc3NDgwM2E2NzMyYjkzNGQ0ZmZlZTcwNzA2NjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9N
SklURWZmZWN0LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9ET01KSVRFZmZlY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
N2ZhNWVkMjVlNGU1YThmMGJiNGZmMTcxYmEzYzA4Njc4MTVlYWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUSGVhcFJhbmdl
LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9E
T01KSVRIZWFwUmFuZ2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NzVhZDAyZGQzMjRjMTE2ZGRkOGJiOTQ2
MTg0NzA4ZjQ4OTg0ZDIuLmRiMTQ0ZTFjNzgxMTdiYzdmZjBiN2YxMDVhZTJiZmE2OTNlMTk3ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTYxNjksNiArNjE2OSw4IEBACiAJCUUxRkY4RjZEMTgwREI1QkUwMDEzMjY3NCAvKiBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURBNzIxOTAwMDE5NDAxMiAvKiBKU05vZGVE
T01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi87IH07CiAJCUUz
MTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIg
LyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CisJCUUzNUNBMTRFMURCQzNBNDIwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwogCQlFMzc3RkU0RDFEQURFMTY1
MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFu
dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
Mzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYw
MEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi87IH07CkBAIC0xMzk1MSw2ICsxMzk1Myw4IEBACiAJCUUxRkY4
RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjZCMTgwREI1QkUwMDEzMjY3
NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRIZWxwZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgz
ODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRN
b2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5NjQxREE2
RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjI2ODQsNiArMjI2ODgsOCBAQAogCQlFM0FGQTk2MzFEQTZFOEFGMDAyODYxQkQgLyog
ZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlF
MzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAgKi8sCisJCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oICovLAogCQkJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01K
SVQuY3BwICovLAogCQkJKTsKQEAgLTI2NjI2LDYgKzI2NjMyLDcgQEAKIAkJCQk0MzkwNDZFODEy
REEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVDQTE0RTFEQkMzQTQyMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDMjc5
NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
RUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRp
YUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzI4LDYgKzI4NzM1LDcgQEAKIAkJCQlC
MkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyogRm9udENhY2hlSU9T
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDN0Mw
RDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIy
QzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2NvYS5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5M2U4M2JmN2NlYmExMDBmMTM2YjE1
MWJhNWU2YzcxMTg2OTUxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisKKyNpbmNs
dWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVz
cGFjZSBET01KSVQgeworCitBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5KCkKK3sKKyAgICBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIERPTUhlYXA7CisjZGVm
aW5lIERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpBYnN0cmFj
dEhlYXAgbmFtZSMjSGVhcDsKKyAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9E
RUZJTkVfSEVBUCkKKyN1bmRlZiBET01KSVRfREVGSU5FX0hFQVAKKworI2RlZmluZSBET01KSVRf
SU5JVElBTElaRV9IRUFQKG5hbWUsIHBhcmVudCkgbmFtZSMjSGVhcC5zZXRQYXJlbnQoJnBhcmVu
dCMjSGVhcCk7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTEla
RV9IRUFQKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX0hFQVAKKworICAgIERPTUhlYXAuY29t
cHV0ZSgwKTsKKworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9NRU1CRVIobmFtZSwgcGFyZW50
KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5nZSgpOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJ
U1QoRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX01F
TUJFUgorfQorCitjb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjppbnN0YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk+IHJlcG9zaXRvcnk7CisgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7
Cit9CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNjQ0OTBhZjMwYjkzNTA4
MmZmODQ3ZmJmNzZjMmM3MjFiMGQzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworI2lmIEVO
QUJMRShKSVQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKKy8v
IERlc2NyaWJlIHlvdXIgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkgaGVyZS4KKy8vIFYoQWJzdHJh
Y3RIZWFwTmFtZSwgUGFyZW50KQorI2RlZmluZSBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKFYp
IFwKKyAgICBWKE5vZGUsIERPTSkgXAorICAgIFYoTm9kZV9maXJzdENoaWxkLCBOb2RlKSBcCisg
ICAgVihOb2RlX2xhc3RDaGlsZCwgTm9kZSkgXAorICAgIFYoTm9kZV9wYXJlbnROb2RlLCBOb2Rl
KSBcCisgICAgVihOb2RlX25leHRTaWJsaW5nLCBOb2RlKSBcCisgICAgVihOb2RlX3ByZXZpb3Vz
U2libGluZywgTm9kZSkgXAorCisKK2NsYXNzIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworV1RG
X01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7CitwdWJsaWM6CisgICAg
ZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+OworICAg
IHN0YXRpYyBjb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBpbnN0YW5jZSgpOworCisgICAg
SlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007CisKKyNkZWZpbmUgRE9NSklUX0RFRklORV9NRU1C
RVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7CisgICAgRE9NSklU
X0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01FTUJFUikKKyN1bmRlZiBET01KSVRf
REVGSU5FX01FTUJFUgorCitwcml2YXRlOgorICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsK
K307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmlu
ZGV4IDE4MDZiMmFmYTFjNDcxYzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIuLmE4NWJjZGNhYjU4
MWViMDFiZTBjMzBmOTZmMzVlY2Q5NGQ0ZDE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEhlbHBlcnMuaApAQCAtMzIsOCArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIERPTUpJVEhlbHBlcnMgeworbmFtZXNwYWNlIFdlYkNv
cmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogdXNpbmcgSlNDOjpDQ2FsbEhlbHBlcnM7CiB1c2lu
ZyBKU0M6OkdQUlJlZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVE
T01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXgg
Yjk2OTNhY2FhNzUyYTQ0NDhkNDE2Y2MwNDE3NzcyYzAwMGU4N2NiMi4uOTBiYzQ0NDljZDM2MTEy
NGFhZWE3NmIwMGYxYmY2ZGUyZDhlOWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
aml0L0pTTm9kZURPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURP
TUpJVC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRl
ICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRE9NSklUSGVscGVy
cy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTUy
LDExICs1MywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3co
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYgogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBXcmFwcGVkTm9kZT4KLXN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5l
ckd1YXJkUmVxdWlyZW1lbnQgaXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50KQorc3RhdGljIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRB
Y2Nlc3MocHRyZGlmZl90IG9mZnNldCwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50IGlzQ29u
dGFpbmVyR3VhcmRSZXF1aXJlbWVudCkKIHsKLSAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOwor
ICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6
OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9
XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsK
KyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgZ2xvYmFs
T2JqZWN0ID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sy
XS5ncHIoKTsKQEAgLTcyLDcgKzczLDcgQEAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYKICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gsIG9mZnNldCksIHNj
cmF0Y2gpOwogICAgICAgICBudWxsQ2FzZXMuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgc2NyYXRjaCkpOwogCi0gICAgICAgIERPTUpJVEhlbHBlcnM6OnRvV3Jh
cHBlcjxXcmFwcGVkTm9kZT4oaml0LCBwYXJhbXMsIHNjcmF0Y2gsIGdsb2JhbE9iamVjdCwgcmVz
dWx0LCB0b1dyYXBwZXJTbG93PFdyYXBwZWROb2RlPiwgcGFyYW1zWzFdLnZhbHVlKCkpOworICAg
ICAgICBET01KSVQ6OnRvV3JhcHBlcjxXcmFwcGVkTm9kZT4oaml0LCBwYXJhbXMsIHNjcmF0Y2gs
IGdsb2JhbE9iamVjdCwgcmVzdWx0LCB0b1dyYXBwZXJTbG93PFdyYXBwZWROb2RlPiwgcGFyYW1z
WzFdLnZhbHVlKCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1w
KCk7CiAKICAgICAgICAgbnVsbENhc2VzLmxpbmsoJmppdCk7CkBAIC04Myw4MyArODQsOTkgQEAg
c3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zm
c2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAotc3Rh
dGljIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrTm9kZSgpCitzdGF0aWMgUmVmPEpTQzo6
RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05vZGUoKQogewotICAgIFJlZjxET01KSVQ6OlBhdGNo
cG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOwotICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0
Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50
PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUSGVs
cGVyczo6YnJhbmNoSWZOb3ROb2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CisgICAgICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUOjpicmFuY2hJZk5vdE5vZGUoaml0LCBwYXJhbXNbMF0u
Z3ByKCkpKTsKICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKICAgICB9KTsKICAgICByZXR1
cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNmaXJzdENoaWxkLgotUmVmPERPTUpJVDo6UGF0
Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKIHsKICAgICBy
ZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBO
b2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENv
bnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwg
SXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYg
aGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBh
dXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1Rf
T0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJzdENoaWxk
TWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOwor
ICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0
ZShoZWFwLk5vZGVfZmlyc3RDaGlsZCwgSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKTsK
KyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNsYXN0Q2hpbGQuCi1SZWY8RE9N
SklUOjpQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlND
OjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKIHsK
ICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQogewotICAgIHJl
dHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUq
LCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQo
KSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0
byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAg
ICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENB
U1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hp
bGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7
CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdy
aXRlKGhlYXAuTm9kZV9sYXN0Q2hpbGQsIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om5vbmUoKSk7
CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbmV4dFNpYmxpbmcuCi1SZWY8
RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RP
TSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSgp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6
bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpO
b3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZShoZWFwLk5vZGVf
bmV4dFNpYmxpbmcsIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om5vbmUoKSk7CisgICAgcmV0dXJu
IHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjcHJldmlvdXNTaWJsaW5nLgotUmVmPERPTUpJVDo6
UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RP
TSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlND
OjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpj
YWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2Rl
PihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJl
cXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQg
PSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGlu
Z01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVk
KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFk
V3JpdGUoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZywgSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
bm9uZSgpKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNwYXJlbnROb2Rl
LgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9N
KCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNo
ZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlND
OjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERP
TSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVy
Tm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVx
dWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50
Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVp
cmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JS
ZWFkV3JpdGUoaGVhcC5Ob2RlX3BhcmVudE5vZGUsIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om5v
bmUoKSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbm9kZVR5cGUuCi1S
ZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjaGVja0RPTSgp
CiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVh
dGUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQ
dXJlKCk7CiAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwotICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6
UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIGpp
dC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZSwgSlNDOjpKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292529</attachid>
            <date>2016-10-22 20:10:30 -0700</date>
            <delta_ts>2016-10-22 20:29:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022200649.patch</filename>
            <type>text/plain</type>
            <size>74672</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi5mMmQ0YzhkNDdjNmU2MmM4
NTlhN2NkNzRiOGM5NzM0OWZiM2Q0NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6Om92
ZXJsYXBzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlclNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q2xvYmJlclNldDo6b3ZlcmxhcHMpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9j
YXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTURhdGEpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbGxET01EYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNDYWxsRE9NUGF0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Y2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDYWxsRE9NKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hw
b2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAg
IChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpzZXRQYXJlbnQpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OkFic3RyYWN0SGVhcDo6aXNSb290KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0
cmFjdEhlYXA6OmlzQ29tcHV0ZWQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVh
cDo6cmFuZ2UpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oOgor
ICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAoSlND
OjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvclB1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6Om11c3RHZW5lcmF0ZSk6CisgICAgICAgICog
ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9N
SklUOjpIZWFwUmFuZ2U6OmR1bXApOgorICAgICAgICAqIGRvbWppdC9ET01KSVRIZWFwUmFuZ2Uu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpIZWFwUmFuZ2UpOgor
ICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6SGVhcFJhbmdlOjpiZWdpbik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJh
bmdlOjplbmQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6cmF3UmVwcmVzZW50
YXRpb24pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IgYm9vbCk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVh
cFJhbmdlOjpub25lKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmlzU3RyaWN0
U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmlzU3VidHlwZU9m
KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om92ZXJsYXBzKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorCiAyMDE2LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0
QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBib3RoIHRoZSBjZWxsIHNw
ZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzc5YWU0Y2RiOWY1
YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uYzgyYzY0NjhkODNlYmE0M2M4YzdhOWE4MTE1
MjE5NzAxM2ZiYmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3
YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL01hdGhFeHRyYXMuaDoK
KyAgICAgICAgKFdURjo6bm9uRW1wdHlSYW5nZXNPdmVybGFwKToKKwogMjAxNi0xMC0yMCAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgV0FTTSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIxOTgzYjk2NzE0YjJiMjdmZDgwZWE5NDkw
ZTE4ZjA0ZDdkMDkyODkuLjljMzA0OTQ5ZTQ2ODg0ZGUxYmY1MDEyZDI2NjBmMWIzZWJlZmVjNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9y
IERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50
LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEVmZmVjdC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRj
aHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBS
YW5nZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENh
bGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9N
UGF0Y2hwb2ludC5oLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UpOgorICAgICAgICAqIGRvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKiBkb21q
aXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJh
bmNoSWZOb3RXb3JsZElzTm9ybWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJ
VEhlbHBlcnM6OmJyYW5jaElmTm90V2Vha0lzTGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpET01KSVRIZWxwZXJzOjp0cnlMb29rVXBXcmFwcGVyQ2FjaGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dG9XcmFwcGVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmRE9NV3JhcHBlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdERPTVdyYXBwZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90
Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJ
ZkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJh
bmNoSWZOb3RFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBl
cnM6OmJyYW5jaElmRG9jdW1lbnRXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RG9jdW1lbnRXcmFwcGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpjaGVja0RPTSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVO
ZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5leHRT
aWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQcmV2aW91c1Np
YmxpbmdET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQcmV2aW91c1Np
YmxpbmdET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVE
T01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklU
OjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tE
T00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKToKKwog
MjAxNi0xMC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
cGdyYWRpbmcgY3VzdG9tIGVsZW1lbnQgc2hvdWxkIGVucXVldWUgYXR0cmlidXRlQ2hhbmdlZCBh
bmQgY29ubmVjdGVkIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0OTJiNzMwMDQyZDguLjg3ZjczZTVhMDcw
Y2MxMjIxZmM4ZDQyMzIyNWMzNzE4NjA2NDllNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTQxMyw2ICs0MTMsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5bi1pbnRlbC5jCiAgICAgZGlzYXNzZW1i
bGVyL3VkaXM4Ni91ZGlzODZfc3luLmMKIAorICAgIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAu
Y3BwCisgICAgZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAKKwogICAgIGZ0bC9GVExBYnN0cmFj
dEhlYXAuY3BwCiAgICAgZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCiAgICAgZnRs
L0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4NmFhMDg0ZTgxMWRhMzE0ZGE2Y2ZiNDcwMWEzMzM4ZmIzMGMzMzcxLi5mYWIyMTk4MjZiMzk3
NzU3N2Q1ZTBkMzQ1M2NmM2NkMmNlMDUxZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE2Myw2ICsyMTYzLDEwIEBACiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBE
T01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01Q
YXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1
MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJ
RTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTExQjdEQzg1
MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5oICovOyB9OworCQlFMzVDQTE1MzFE
QkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUxMURCQzNBNTYwMEY4MzUxNiAvKiBE
T01KSVRIZWFwUmFuZ2UuY3BwICovOyB9OworCQlFMzVDQTE1NDFEQkMzQTVDMDBGODM1MTYgLyog
RE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1Q0ExNTUx
REJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0RjFEQkMzQTU2MDBGODM1MTYg
LyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLzsgfTsKKwkJRTM1Q0ExNTYxREJDM0E1RjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKQEAgLTIxNzcsNiArMjE4
MSw3IEBACiAJCUUzQkZEMEJCMURBRjgwODcwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuY3BwICovOyB9OwogCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogRE9N
SklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovOyB9OwogCQlFM0MwOEUzQzFEQTQxQjgxMDAz
OTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNo
cG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVD
QTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9
OwogCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0Ig
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CkBAIC00NTMzLDYgKzQ1MzgsMTAgQEAKIAkJRTM1NTVC
ODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01QYXRjaHBvaW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1
bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01KSVRBYnN0cmFjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklU
SGVhcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJ
VEhlYXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTUyMURC
QzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUSGVhcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNjExQjdB
QjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NDgsNiArNDU1Nyw3
IEBACiAJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hw
b2ludFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01K
SVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hw
b2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBY2Nl
c3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklURWZmZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0IxRTI0MURBNzU0MEEwMEZBMUU1NiAvKiBET01K
SVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJ
VFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxl
RW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0MDMsOCArNzQx
MywxMyBAQAogCQlFM0ZGNzUyRDFEOUNFOUVBMDBDN0UxNkQgLyogZG9taml0ICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzVDQTE0RjFEQkMzQTU2MDBG
ODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLywKKwkJCQlFMzVDQTE1MDFEQkMzQTU2
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi8sCiAJCQkJRTM1NTVCODkxREFFMDNB
MjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi8sCisJCQkJRTNDNzlDQUEx
REI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICovLAogCQkJCUUzRkY3NTJGMUQ5Q0VB
MTIwMEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIuaCAqLywKKwkJCQlFMzVDQTE1MTFEQkMz
QTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLywKKwkJCQlFMzVDQTE1MjFEQkMz
QTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggKi8sCiAJCQkJRTNDMDhFM0IxREE0MUI3
QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLywKIAkJCQlFMzdBRDgzQTFEQTQ5Mjgw
MDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURB
NDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAqLywKQEAgLTc2MzIsNiArNzY0Nyw3IEBACiAJ
CQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5OTUwMDA2Q0VCQ0MgLyogQ29kZUdlbmVy
YXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICovLAorCQkJCUUzQzc5Q0FCMURCOUE0REMw
MEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjYyMThC
RTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5IGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZFMTE2QjEwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRDdFNjkxNDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVP
cmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODI5OSw2ICs4MzE1LDcgQEAKIAkJCQlBRDJGQ0Mx
RjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTUyQzM4MDFBRERCOEZFMDAxMzk3MjYgLyogSlNSZW1v
dGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0Yx
MiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1Q0ExNTYxREJDM0E1
RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDg3NEFFNjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYzM0ZDRkIxQzE2MjVCRTAwMzIzRjY3IC8qIEIzQ0ZHLmggaW4gSGVhZGVycyAqLywKQEAg
LTg0MTcsNiArODQzNCw3IEBACiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3Jv
dGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMwMTg0MTkxRDEwQzE4OTAwNTdCMDUzIC8qIEpJ
VFdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAg
LyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1Q0ExNTQxREJDM0E1QzAw
RjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDcx
OTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSBpbiBIZWFkZXJzICovLAogCQkJCUUzNzk0RTc2
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC05OTI0LDYgKzk5NDIsNyBAQAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxMzkxMkIxNjc3MUMz
QTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZEM0U0MEQxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUzNUNBMTUzMURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFw
UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8q
IFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFODEwN0VD
N0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFERTM5
RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtOTk0Miw2ICs5OTYxLDcgQEAKIAkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVn
RXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQzMTA3RUMwOTMw
MDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDQx
MDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFMzVDQTE1NTFEQkMzQTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTY1NDBDN0EwMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zm
c2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBDN0ExMUI4MkUxQzMwMDBGNkI3OSAvKiBS
ZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMzMTQxNTE4MTQ2
RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAKaW5kZXggMWUxMTAxOTAyZGIy
NWVhZDdmOGQ3ZWY5OWI0OWM0ODQxYzE4ZDExZC4uY2Q2OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2Fh
YWI2ZTc4ZTkxZDIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmNwcApAQCAtNDUsNiArNDUsMTAgQEAgdm9pZCBBYnN0cmFjdEhlYXA6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBvdXQucHJpbnQoa2luZCgpKTsKICAgICBpZiAoa2lu
ZCgpID09IEludmFsaWRBYnN0cmFjdEhlYXAgfHwga2luZCgpID09IFdvcmxkIHx8IGtpbmQoKSA9
PSBIZWFwIHx8IHBheWxvYWQoKS5pc1RvcCgpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKGtp
bmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICBvdXQucHJpbnQoIigiLCBET01KSVQ6OkhlYXBS
YW5nZTo6ZnJvbVJhdyhwYXlsb2FkKCkudmFsdWUzMigpKSwgIikiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICBvdXQucHJpbnQoIigiLCBwYXlsb2FkKCksICIpIik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmluZGV4IDBhYmQ1MDI3YjI2
YWViMzk0ZjI5YzAzOGZkOWYyZDU5MmU2YzE2MzkuLmY1MWY4MmZlMTM3ZTI1YTNmNzlhNTJiMWYx
MWIwYzUzMzFhMzA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEhlYXAuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNs
dWRlICJET01KSVRIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAt
NzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
TWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxTdGF0ZSkgXAogICAgIG1h
Y3JvKEFic29sdXRlKSBcCisgICAgLyogRE9NSklUIHRlbGxzIHRoZSBoZWFwIHJhbmdlIHdpdGgg
dGhlIHBhaXIgb2YgaW50ZWdlcnMuICovXAorICAgIG1hY3JvKERPTVN0YXRlKSBcCiAgICAgLyog
VXNlIHRoaXMgZm9yIHdyaXRlcyBvbmx5LCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgbWF5IGZpcmUg
d2F0Y2hwb2ludHMuIFVzdWFsbHkgdGhpcyBpcyBuZXZlciBkaXJlY3RseSB3cml0dGVuIGJ1dCBp
bnN0ZWFkIHdlIHRlc3QgdG8gc2VlIGlmIGEgbm9kZSBjbG9iYmVycyB0aGlzOyBpdCBqdXN0IHNv
IGhhcHBlbnMgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSB3b3JsZCB0byBjbG9iYmVyIGl0LiAqL1wK
ICAgICBtYWNybyhXYXRjaHBvaW50X2ZpcmUpIFwKICAgICAvKiBVc2UgdGhlc2UgZm9yIHJlYWRz
IG9ubHksIGp1c3QgdG8gaW5kaWNhdGUgdGhhdCBpZiB0aGUgd29ybGQgZ290IGNsb2JiZXJlZCwg
dGhlbiB0aGlzIG9wZXJhdGlvbiB3aWxsIG5vdCB3b3JrLiAqL1wKQEAgLTIzMyw2ICsyMzYsMTUg
QEAgY2xhc3MgQWJzdHJhY3RIZWFwIHsKICAgICBib29sIGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0
IEFic3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICBBYnN0cmFjdEhlYXAg
Y3VycmVudCA9ICp0aGlzOworICAgICAgICBpZiAoY3VycmVudC5raW5kKCkgPT0gRE9NU3RhdGUg
JiYgb3RoZXIua2luZCgpID09IERPTVN0YXRlKSB7CisgICAgICAgICAgICBQYXlsb2FkIGN1cnJl
bnRQYXlsb2FkID0gY3VycmVudC5wYXlsb2FkKCk7CisgICAgICAgICAgICBQYXlsb2FkIG90aGVy
UGF5bG9hZCA9IG90aGVyLnBheWxvYWQoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UGF5bG9h
ZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
IChvdGhlclBheWxvYWQuaXNUb3AoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybiBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhjdXJyZW50UGF5bG9h
ZC52YWx1ZTMyKCkpLmlzU3RyaWN0U3VidHlwZU9mKERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3
KG90aGVyUGF5bG9hZC52YWx1ZTMyKCkpKTsKKyAgICAgICAgfQogICAgICAgICB3aGlsZSAoY3Vy
cmVudC5raW5kKCkgIT0gV29ybGQpIHsKICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnN1
cGVydHlwZSgpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gb3RoZXIpCkBAIC0yNDgsNyAr
MjYwLDE2IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7CiAgICAgCiAgICAgYm9vbCBvdmVybGFwcyhj
b25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICp0
aGlzID09IG90aGVyIHx8IGlzU3RyaWN0U3VidHlwZU9mKG90aGVyKSB8fCBvdGhlci5pc1N0cmlj
dFN1YnR5cGVPZigqdGhpcyk7CisgICAgICAgIGlmICgqdGhpcyA9PSBvdGhlcikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoa2luZCgpID09IERPTVN0YXRlICYmIG90aGVy
LmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAgICAgUGF5bG9hZCBjdXJyZW50UGF5bG9h
ZCA9IHBheWxvYWQoKTsKKyAgICAgICAgICAgIFBheWxvYWQgb3RoZXJQYXlsb2FkID0gb3RoZXIu
cGF5bG9hZCgpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXlsb2FkLmlzVG9wKCkgfHwgb3Ro
ZXJQYXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY3VycmVudFBheWxvYWQudmFs
dWUzMigpKS5vdmVybGFwcyhET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhvdGhlclBheWxvYWQu
dmFsdWUzMigpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlzU3RyaWN0U3VidHlwZU9m
KG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVPZigqdGhpcyk7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgaXNEaXNqb2ludChjb25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IGExMmYwOWNiMWI5NGEwYTMwNDM2MzcwYzcyYWEyMWM1ZWQ4MTk1
ZmIuLmYwOWQ0MWI3YjdjYTMzM2EyNDA5YjFlNTQ1YjU1ODQwZGNmMGZhMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTIyODksMTAgKzIyODksMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgZmlsdGVyQ2xhc3NJbmZvKHZhbHVlLCBub2RlLT5jbGFzc0luZm8oKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIENhbGxET006Ci0gICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgY2FzZSBDYWxsRE9N
OiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2Rl
LT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBpZiAocGF0Y2hwb2ludC0+ZWZm
ZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9w
KCk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAg
ICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENv
bnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggNDg4NDIwNmIzZjU2ZDc0ZTZmMjZlZjU2YjU4Y2ZhYTU2NTcwZDg5
OS4uYTViMDRjYTY2MTQ1YWI1M2U2NjI4NzdhZGE3ZDIzN2Q0Y2IyOWRkNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI2NzMsNiAr
MjY3MywxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50
IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYQogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJsZXNzQ2FsbERPTShOb2RlKiBub2RlKQor
eworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxs
RE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgIGlmICghcGF0Y2hwb2ludC0+ZWZmZWN0Lm11c3RH
ZW5lcmF0ZSgpKQorICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwor
fQorCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9w
ZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlhbnQuZG9tSklUKCkpCkBA
IC0yNjkxLDE0ICsyNjk4LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdl
dHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmCiAgICAgLy8gV2Ug
ZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdoZW4gdGhlIGN1c3Rv
bSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNp
dGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja0RPTSwgT3BJbmZvKGNoZWNrRE9NUGF0
Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhkb21KSVQtPnRoaXNDbGFzc0luZm8oKSksIHRoaXNOb2Rl
KTsKIAorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NRGF0
YS5hZGQoKTsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTVBhdGNo
cG9pbnQgPSBkb21KSVQtPmNhbGxET00oKTsKICAgICBtX2dyYXBoLm1fZG9tSklUUGF0Y2hwb2lu
dHMuYXBwZW5kKGNhbGxET01QYXRjaHBvaW50LnB0cigpKTsKKworICAgIGNhbGxET01EYXRhLT5k
b21KSVQgPSBkb21KSVQ7CisgICAgY2FsbERPTURhdGEtPnBhdGNocG9pbnQgPSBjYWxsRE9NUGF0
Y2hwb2ludC5wdHIoKTsKKwogICAgIGlmIChjYWxsRE9NUGF0Y2hwb2ludC0+cmVxdWlyZUdsb2Jh
bE9iamVjdCkgewogICAgICAgICBOb2RlKiBnbG9iYWxPYmplY3QgPSBhZGRUb0dyYXBoKEdldEds
b2JhbE9iamVjdCwgdGhpc05vZGUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChnbG9iYWxPYmpl
Y3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05vZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRl
IGEgRE9NV3JhcHBlci4KICAgICB9CiAgICAgYWRkVmFyQXJnQ2hpbGQodGhpc05vZGUpOwotICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFy
QXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTVBhdGNocG9pbnQucHRyKCkpLCBPcEluZm8ocHJl
ZGljdGlvbikpKTsKKyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IGFkZFRvR3JhcGgoTm9kZTo6VmFy
QXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTURhdGEpLCBPcEluZm8ocHJlZGljdGlvbikpOwor
ICAgIGJsZXNzQ2FsbERPTShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRPcGVyYW5kKSwgY2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcAppbmRleCBkNDYzMGUzNzBj
YjBiYWMyM2Q5OTQyZjVmZmNlMzhmYjU4ZGEyZGVjLi41OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUx
YWExYTc5MjQ0OWY3ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
clNldC5jcHAKQEAgLTgxLDYgKzgxLDIzIEBAIGJvb2wgQ2xvYmJlclNldDo6b3ZlcmxhcHMoQWJz
dHJhY3RIZWFwIGhlYXApIGNvbnN0CiB7CiAgICAgaWYgKG1fY2xvYmJlcnMuZmluZChoZWFwKSAh
PSBtX2Nsb2JiZXJzLmVuZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5r
aW5kKCkgPT0gRE9NU3RhdGUgJiYgIWhlYXAucGF5bG9hZCgpLmlzVG9wKCkpIHsKKyAgICAgICAg
Ly8gRE9NU3RhdGUgaGVhcCBoYXMgaXRzIG93biBoaWVyYXJjaHkuIEZvciBkaXJlY3QgaGVhcCBj
bG9iYmVycyB0aGF0IHBheWxvYWQgaXMgbm90IFRvcCwKKyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1
ZXJ5IHdoZXRoZXIgdGhlIGNsb2JiZXIgb3ZlcmxhcHMgd2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAg
ICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJh
dyhoZWFwLnBheWxvYWQoKS52YWx1ZTMyKCkpOworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1f
Y2xvYmJlcnMpIHsKKyAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gcGFpci52YWx1ZTsKKyAgICAg
ICAgICAgIGlmICghZGlyZWN0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgQWJzdHJhY3RIZWFwIGNsb2JiZXIgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGlmIChjbG9i
YmVyLmtpbmQoKSAhPSBET01TdGF0ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGlmIChjbG9iYmVyLnBheWxvYWQoKS5pc1RvcCgpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2Ji
ZXIucGF5bG9hZCgpLnZhbHVlMzIoKSkub3ZlcmxhcHMocmFuZ2UpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQogICAgIHdoaWxlIChoZWFwLmtpbmQoKSAh
PSBXb3JsZCkgewogICAgICAgICBoZWFwID0gaGVhcC5zdXBlcnR5cGUoKTsKICAgICAgICAgaWYg
KGNvbnRhaW5zKGhlYXApKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQu
aAppbmRleCA3MjlmMzliMTE4NTE4YTk1NTVlYzQ2MTY2ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdm
ZGI0MjMyZWMwYjJhYzUwMGE2NTA1ZTRjOTU0OTM0ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJTZXQuaApAQCAtNTIsMTEgKzUyLDExIEBAIGNsYXNzIENsb2JiZXJT
ZXQgewogICAgIAogICAgIHZvaWQgYWRkKEFic3RyYWN0SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwo
Y29uc3QgQ2xvYmJlclNldCYpOwotICAgIGJvb2wgY29udGFpbnMoQWJzdHJhY3RIZWFwKSBjb25z
dDsKICAgICBib29sIG92ZXJsYXBzKEFic3RyYWN0SGVhcCkgY29uc3Q7CiAgICAgdm9pZCBjbGVh
cigpOwogICAgIAogICAgIC8vIENhbGxzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBDbG9iYmVy
U2V0LgorICAgIC8vIERvIG5vdCBjYWxsIGZvciBub24gZGVidWdnaW5nIHB1cnBvc2UuIE90aGVy
d2lzZSwgeW91IG11c3QgaGFuZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAg
CiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8
QWJzdHJhY3RIZWFwPiBzdXBlcigpIGNvbnN0OwpAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBDbG9i
YmVyU2V0IHsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZh
dGU6CisgICAgYm9vbCBjb250YWlucyhBYnN0cmFjdEhlYXApIGNvbnN0OworCiAgICAgSGFzaFNl
dDxBYnN0cmFjdEhlYXA+IHNldE9mKGJvb2wgZGlyZWN0KSBjb25zdDsKICAgICAKICAgICAvLyBN
YXBzIGhlYXAgdG86CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IGY5MjkzMzdhZmU5Mzg3MmU1MDgxODBkMmI1ZjJjYzZiNmFiYzg0NGMuLmU1MmY3NzhmNDhh
ZjJmYjAzNzg2MDE1Y2MzZjNiNzc0ODcwZDNiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHSGVhcExv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFs
dWUuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTkwNywxMCArOTA4LDQyIEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBj
b25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZv
KCkpKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICByZWFk
KFdvcmxkKTsKLSAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAg
ICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9N
RGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRj
aHBvaW50LT5lZmZlY3Q7CisgICAgICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAg
IGlmIChlZmZlY3QucmVhZHMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAg
ICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
YWQoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24o
KSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAg
ICBpZiAoZWZmZWN0LndyaXRlcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAg
ICAgICAgICAgd3JpdGUoSGVhcCk7IC8vIFdlIGRvIG5vdCBhc3N1bWUgdGhhdCBET00gb3BlcmF0
aW9ucyB3aWxsIHdyaXRlKFN0YWNrKS4KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50
YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3QuZGVmKSB7CisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vZGUtPm51bUNoaWxkcmVuKCkgPD0gQWRqYWNlbmN5
TGlzdDo6U2l6ZSwgIkN1cnJlbnRseSB3ZSBvbmx5IGFsbG93IHB1cmUgQ2FsbERPTSB0byBoYXZl
IHVwIHRvIDMgY2hpbGRyZW4uIik7CisgICAgICAgICAgICBFZGdlIGVkZ2VzW0FkamFjZW5jeUxp
c3Q6OlNpemVdOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGUtPm51
bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgICAgICAgICBlZGdlc1tpXSA9IGdyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIGkpOworCisgICAgICAgICAgICBET01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9
IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChyYW5nZSA9PSBET01KSVQ6Okhl
YXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUoQ2FsbERPTSwg
QWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgZWRnZXNbMF0sIGVkZ2VzWzFdLCBl
ZGdlc1syXSksIG5vZGUtPmNhbGxET01EYXRhKCktPmRvbUpJVCkpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgLy8gRGVmIHdpdGggaGVhcCBsb2NhdGlvbi4gV2UgZG8gbm90
IGluY2x1ZGUgIkdsb2JhbE9iamVjdCIgZm9yIHRoYXQgc2luY2UgdGhpcyBpbmZvcm1hdGlvbiBp
cyBpbmNsdWRlZCBpbiB0aGUgYmFzZSBub2RlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
aGVuIHN1cHBvcnRpbmcgdGhlIG90aGVyIG5vZGVzIGxpa2UgZ2V0RWxlbWVudEJ5SWQoInN0cmlu
ZyIpLCB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgYmFzZSBhbmQgdGhlIGlkIHN0cmluZy4KKyAgICAg
ICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkgc2VlIHRoZSBET01KSVQgZ2V0dGVyIGhl
cmUuIFNvIGp1c3QgaW5jbHVkaW5nICJiYXNlIiBpcyBvay4KKyAgICAgICAgICAgICAgICBFZGdl
IGJhc2UgPSBlZGdlc1swXTsKKyAgICAgICAgICAgICAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWly
ZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgYmFzZSA9IGVkZ2VzWzFdOworICAg
ICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0SGVhcChE
T01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIGJhc2UpLCBMYXp5Tm9kZShub2Rl
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDNmMTM4NDJjYWY0YjVjNmVlMWYw
OWM1NGFhM2Q4YTAwNjIzNmM1MjkuLmYzNWI2NmNlMTdlNDAzOTgyZDAyOGFmMzgyYjkxYmQ2MDg1
N2VhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExOCw3
ICsxMTgsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRC
dXR0ZXJmbHk6Ci0gICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2Fz
ZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CkBAIC0yOTksNiArMjk4LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgU3RyaW5nUmVwbGFj
ZVJlZ0V4cDoKICAgICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKKyAg
ICBjYXNlIENhbGxET006CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNl
IE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAppbmRleCAzM2MwY2YxOTIwODViNTAwNGIyMDA4OWUyZDNiMDY5MjkwNDg4NTk4Li5m
OTUxYzJlYTBmYTNiMzMxMTIzNGFjYjI3NjIwMzE3YTI1M2UxMjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3MTIsNyArMTcxMiw3IEBAIGNs
YXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogCiAgICAgICAgIGNhc2UgQ2FsbERPTTog
ewogICAgICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOwotICAgICAgICAgICAgRE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7
CisgICAgICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9k
ZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKICAgICAgICAgICAgIGlmIChwYXRjaHBvaW50
LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxs
VXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgrKykpOyAvLyBHbG9iYWxP
YmplY3QuCiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAppbmRleCA3NmIyYmFlYzcxNmMyZjM2YjZiZTU0MzYwYTlkMzNkZDRhMTRmM2FjLi5mOTU3
ZjVjZmJkNzg4ZWRkNjI2ODk1ZmYxZGUzNTA3MTM2ZDE0MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCkBAIC05MDEsNiArOTAxLDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMg
dmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFy
Z3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOwogICAg
IEJhZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNWYWx1ZXM7CisgICAgQmFnPENhbGxET01EYXRhPiBt
X2NhbGxET01EYXRhOwogICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURhdGEsIDQ+IG1faW5saW5l
VmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEZ1
bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwogICAgIEhhc2hNYXA8Q29k
ZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+PiBtX2J5dGVjb2RlS2lsbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXgg
ODQ3MDYzN2RmMDA2NjA0ZDMyNmQ1NTFhNGJiMzQyYTJmMDIwNTA2OC4uOWIyMjkyZDUwMjYwY2Yw
ZTcxNTQ4YzY2NGZhY2QxZWRjY2U1ZGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmNwcApAQCAtMTUyLDYgKzE1Miw5IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIE1hcEhh
c0xvYzoKICAgICAgICAgb3V0LnByaW50KCJNYXBIYXNMb2MiKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgRE9NU3RhdGVMb2M6CisgICAgICAgIG91dC5wcmludCgiRE9NU3RhdGVMb2MiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5k
ZXggNzA0ZDE5MWFmOGU1MThiYzBlOWY1NTNkNDc4ZDhhZjZkNGU2OWI1Ni4uNjM1N2JlMTgwZjNk
MDgxZTFlYzkwYTRkNDIxMWRmMDRhODZiODkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02MCw3ICs2MCw4IEBAIGVudW0gTG9jYXRpb25LaW5k
IHsKICAgICBTdGFja1BheWxvYWRMb2MsCiAgICAgTWFwQnVja2V0TG9jLAogICAgIEpTTWFwR2V0
TG9jLAotICAgIE1hcEhhc0xvYworICAgIE1hcEhhc0xvYywKKyAgICBET01TdGF0ZUxvYywKIH07
CiAKIGNsYXNzIEhlYXBMb2NhdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJ
Q01QaGFzZS5jcHAKaW5kZXggZTYwOTc2NGU4NTljZjgwZGRhYzU4YjNjNDJjMDcwNWMxMmU5MjYz
YS4uOTdlMWVhYWRhZTlhMDQ4MDAyZWVkYTM3ZmU3YTU2YWU5ZTRlNmJiMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIGNs
YXNzIExJQ01QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIC8vIEl0IGp1c3Qgc28gaGFw
cGVucyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgd2UgY3VycmVudGx5IGtub3cgaG93IHRvIGhvaXN0
CiAgICAgICAgIC8vIGRvbid0IGhhdmUgdmFyLWFyZyBjaGlsZHJlbi4gVGhhdCBtYXkgY2hhbmdl
IGFuZCB0aGVuIHdlIGNhbiBmaXggdGhpcwogICAgICAgICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3
ZSBqdXN0IGFzc2VydCB0aGF0J3MgdGhlIGNhc2UuCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICAgICAgLy8g
REZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJn
cykpOwogICAgICAgICAKICAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShDaGVjaywg
b3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCmluZGV4IGM5NDExZDUwY2ZiYTljNTRiMDJjMzQ4NjQ5N2U0MDM0MTI3
YWRkYmMuLjBkMWE0YjU1ODE0MzcyOWFhOGMzMjJmMjg0NjE4M2QxZDQzNjRkM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OSw2ICs1OSw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQYXRj
aHBvaW50OwogY2xhc3MgQ2FsbERPTVBhdGNocG9pbnQ7CiB9CkBAIC0yMzEsNiArMjMyLDExIEBA
IHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZsdXNoZWRBdCBmbHVzaGVkQXQoKSB7IHJl
dHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9jYWwpOyB9CiB9OwogCitzdHJ1Y3QgQ2Fs
bERPTURhdGEgeworICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgeyBudWxscHRyIH07
CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCB7IG51bGxwdHIgfTsK
K307CisKIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBv
cGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KQEAgLTIzMzYsMTUgKzIzNDIsMTUgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RE9NSklUOjpQYXRjaHBv
aW50Kj4oKTsKICAgICB9CiAKLSAgICBib29sIGhhc0NhbGxET01QYXRjaHBvaW50KCkgY29uc3QK
KyAgICBib29sIGhhc0NhbGxET01EYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBv
cCgpID09IENhbGxET007CiAgICAgfQogCi0gICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCog
Y2FsbERPTVBhdGNocG9pbnQoKQorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0YSgpCiAgICAg
ewotICAgICAgICBBU1NFUlQoaGFzQ2FsbERPTVBhdGNocG9pbnQoKSk7Ci0gICAgICAgIHJldHVy
biBtX29wSW5mby5hczxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50Kj4oKTsKKyAgICAgICAgQVNT
RVJUKGhhc0NhbGxET01EYXRhKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Q2FsbERP
TURhdGEqPigpOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ2xhc3NJbmZvKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNWU2
NGJhZjkzYzdiYzEyNzE2Y2E3NzgyMzI1NzQ4OTY0MzJmODk5MS4uMzM5ZmUyNzM4MDMwODNhYzA2
MDY1NWEzZDFkMDYxOWNkMjMxMTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyMjUsNyArNzIyNSw3IEBAIHN0YXRpYyB2b2lk
IGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludChTcGVjdWxhdGl2ZUpJVCog
aml0LCBWZWN0b3I8CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUq
IG5vZGUpCiB7Ci0gICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCog
cGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CiAKICAgICBWZWN0
b3I8R1BSUmVnPiBncFNjcmF0Y2g7CiAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcwYzcyYzAzNzkwNzkzMGUzYzhiYmNhMzdhOGJlZjQ5NDYxNzQ3MjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcC5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRB
YnN0cmFjdEhlYXAuaCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRE9NSklUIHsKKwordm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVn
aW4pCit7CisgICAgdW5zaWduZWQgY3VycmVudCA9IGJlZ2luOworICAgIGZvciAoYXV0byYgY2hp
bGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAgIGNoaWxkLT5jb21wdXRlKGN1cnJlbnQpOworICAg
ICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7CisgICAgfQorICAgIEFTU0VSVChi
ZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFTU0VSVChjdXJyZW50IDw9IFVJTlQxNl9NQVgpOwor
ICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1cnJlbnQpOworfQorCit9IH0KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhl
YXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NjY4YjUwZTFmOGJkZDA2MjhjYWY1NGYxMTRhMWM2NmIwYjUzOTVh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXAuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFw
UmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIEFic3RyYWN0SGVhcCB7
CitwdWJsaWM6CisgICAgQWJzdHJhY3RIZWFwKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBzZXRQ
YXJlbnQoQWJzdHJhY3RIZWFwKiBwYXJlbnQpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcGFy
ZW50KTsKKyAgICAgICAgcGFyZW50LT5tX2NoaWxkcmVuLmFwcGVuZCh0aGlzKTsKKyAgICAgICAg
bV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJl
dHVybiAhbV9wYXJlbnQ7IH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZSh1
bnNpZ25lZCBiZWdpbik7CisKKyAgICBib29sIGlzQ29tcHV0ZWQoKSBjb25zdCB7IHJldHVybiAh
IW1fcmFuZ2U7IH0KKyAgICBIZWFwUmFuZ2UgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdl
OyB9CisKK3ByaXZhdGU6CisgICAgQWJzdHJhY3RIZWFwKiBtX3BhcmVudCB7IG51bGxwdHIgfTsK
KyAgICBWZWN0b3I8QWJzdHJhY3RIZWFwKj4gbV9jaGlsZHJlbiB7IH07CisgICAgSGVhcFJhbmdl
IG1fcmFuZ2U7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKaW5kZXggNjk1ODIwYzVh
NTlkNjNkZWRhNDJmODNkNGY4YjQ3ODVjYzlhODNhMC4uNGVkYjIzMzJhN2E5ZDdkNDJiMTBhNDE0
NmY5MGE4MTIyNDZhYzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEVmZmVjdC5oIgogI2luY2x1ZGUgIkRPTUpJ
VFBhdGNocG9pbnQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC00NSw2ICs0Niw4
IEBAIGNsYXNzIENhbGxET01QYXRjaHBvaW50IDogcHVibGljIFBhdGNocG9pbnQgewogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKICAgICBib29s
IHJlcXVpcmVHbG9iYWxPYmplY3QgeyB0cnVlIH07CiAKKyAgICBFZmZlY3QgZWZmZWN0IHsgfTsK
KwogcHJpdmF0ZToKICAgICBDYWxsRE9NUGF0Y2hwb2ludCgpID0gZGVmYXVsdDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmY1
ODk2M2RiN2NiZTVjYmNjMzFkNjM5ZmU0M2QzZGNiZDNiMTZjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RE9NSklUIHsKKworc3RydWN0IEVmZmVjdCB7CisgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJh
bmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07
CisgICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisKKyAgICBib29sIGV4aXRzU2lkZXdheXMg
eyBmYWxzZSB9OworCisgICAgc3RhdGljIEVmZmVjdCBmb3JSZWFkV3JpdGUoSGVhcFJhbmdlIHJl
YWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgeworICAgICAgICBFZmZlY3QgZWZm
ZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7CisgICAgICAgIGVmZmVjdC53
cml0ZXMgPSB3cml0ZVJhbmdlOworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KKworICAg
IHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0Owor
ICAgICAgICBlZmZlY3QucmVhZHMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0
LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QuZGVmID0gSGVhcFJh
bmdlOjpub25lKCk7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgfQorCisgICAgc3RhdGlj
IEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZikKKyAgICB7CisgICAgICAgIEVmZmVjdCBlZmZl
Y3Q7CisgICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKKyAgICAgICAgZWZmZWN0LndyaXRlcyA9
IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QuZGVmID0gZGVmOworICAgICAgICBy
ZXR1cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5n
ZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQorICAgIHsK
KyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdl
OworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAgICAgICAgZWZmZWN0LmRl
ZiA9IGRlZjsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisKKyAgICBib29sIG11c3RH
ZW5lcmF0ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd3JpdGVzIHx8IGV4aXRzU2lk
ZXdheXM7CisgICAgfQorfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MWYyMzkwMWNh
NTEwMGJmZDI5MGNiZjEyMzM2ODAxYzZmOGNiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKworI2lmIEVOQUJMRShK
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordm9pZCBIZWFwUmFu
Z2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnRmKCIweCV4
LTB4JXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYmVnaW4oKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlbmQoKSkpOworfQorCisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNWQ0Y2Y5ZGZjNzVk
Y2QyMjY2MDlhNzQ4NWFiYzMyNjk3Y2FmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0wLDAgKzEsMTA2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01K
SVQgeworCitjbGFzcyBIZWFwUmFuZ2UgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBIZWFwUmFu
Z2UoKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIgSGVhcFJhbmdlKHVpbnQxNl90IGJlZ2lu
LCB1aW50MTZfdCBlbmQpCisgICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICAgICAgLCBtX2Vu
ZChlbmQpCisgICAgeworICAgIH0KKworICAgIGVudW0gUmF3UmVwcmVzZW50YXRpb25UYWcgeyBS
YXdSZXByZXNlbnRhdGlvbiB9OworICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBIZWFwUmFuZ2UoUmF3
UmVwcmVzZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVlKQorICAgICAgICA6IG1fYmVnaW4oc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlID4+IDE2KSkKKyAgICAgICAgLCBtX2VuZChzdGF0aWNf
Y2FzdDx1aW50MTZfdD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgSGVhcFJh
bmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gSGVhcFJh
bmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CisgICAgfQorCisgICAgdWludDE2X3QgYmVn
aW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgdWludDE2X3QgZW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmQ7IH0KKyAgICB1aW50MzJfdCByYXdSZXByZXNlbnRhdGlvbigpIHsgcmV0
dXJuIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9iZWdpbikgPDwgMTYpIHwgbV9lbmQ7IH0KKwor
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYmVnaW4gIT0gbV9lbmQ7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhl
YXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBv
dGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5kOworICAgIH0KKworICAgIHN0YXRp
YyBjb25zdGV4cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIEhlYXBSYW5nZSgwLCBVSU5UMTZf
TUFYKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIG5vbmUoKSB7IHJldHVybiBI
ZWFwUmFuZ2UoVUlOVDE2X01BWCwgVUlOVDE2X01BWCk7IH0gLy8gRW1wdHkgcmFuZ2UuCisKKyAg
ICBib29sIGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gbV9iZWdpbiA8PSBvdGhlci5tX2JlZ2luICYmIG90aGVyLm1f
ZW5kIDw9IG1fZW5kOworICAgIH0KKworICAgIGJvb2wgaXNTdWJ0eXBlT2YoY29uc3QgSGVhcFJh
bmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghKnRoaXMgfHwgIW90aGVyKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGlzU3RyaWN0U3VidHlwZU9m
KG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0IEhlYXBSYW5nZSYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyYW5nZXNPdmVybGFwKG1fYmVn
aW4sIG1fZW5kLCBvdGhlci5tX2JlZ2luLCBvdGhlci5tX2VuZCk7CisgICAgfQorCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgdWludDE2X3QgbV9iZWdpbiB7IFVJTlQxNl9NQVggfTsKKyAgICB1aW50MTZfdCBtX2Vu
ZCB7IFVJTlQxNl9NQVggfTsKK307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhNjU3ZTA2Yzc4OTE5YzIyYzk4
ZGNhYTNkYjMzMWFlOTFjZmQzMWRkLi4zYzNlOGRhNTNmY2VmMjBkZDg0OTg1MzZmZjEzMTdjMWFj
YzdlZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC05MDY0LDcgKzkwNjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9p
ZCBjb21waWxlQ2FsbERPTSgpCiAgICAgewotICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgIERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0
Y2hwb2ludDsKICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOwogCiAgICAgICAgIExWYWx1ZSBn
bG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggYi9T
b3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKaW5kZXggMWQyZmMxODRlMGMwNDBmZjc5YzFiNDYx
NTJkOTNlNTM3NmViY2EzNy4uYzEwOTNmYTY4MDY4MWEyMjY2M2IyOWI3NzIyMTEyZjdkOTljYmRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01hdGhFeHRyYXMuaApAQCAtNDQ0LDEyICs0NDQsOCBAQCBpbmxpbmUgYm9vbCBub25F
bXB0eVJhbmdlc092ZXJsYXAoVCBsZWZ0TWluLCBUIGxlZnRNYXgsIFQgcmlnaHRNaW4sIFQgcmln
aHRNYXgpCiB7CiAgICAgQVNTRVJUKGxlZnRNaW4gPCBsZWZ0TWF4KTsKICAgICBBU1NFUlQocmln
aHRNaW4gPCByaWdodE1heCk7Ci0gICAgCi0gICAgaWYgKGxlZnRNaW4gPD0gcmlnaHRNaW4gJiYg
bGVmdE1heCA+IHJpZ2h0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmlnaHRN
aW4gPD0gbGVmdE1pbiAmJiByaWdodE1heCA+IGxlZnRNaW4pCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBsZWZ0TWF4ID4gcmlnaHRNaW4gJiYg
cmlnaHRNYXggPiBsZWZ0TWluOwogfQogCiAvLyBQYXNzIHJhbmdlcyB3aXRoIHRoZSBtaW4gYmVp
bmcgaW5jbHVzaXZlIGFuZCB0aGUgbWF4IGJlaW5nIGV4Y2x1c2l2ZS4gRm9yIGV4YW1wbGUsIHRo
aXMgc2hvdWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI2YTcwZmVlYWJkNzFjNTNiY2MyYWU3
MzAxYjFkMjQ3YTQ1NGI2OGQuLmEyNWJlNzUyOWE4YzhjZTFiODJlZjg0M2NmYTNhMDA3Y2Q1MjVm
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTM4LDYgKzE1MzgsNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5j
cHAKIAorICAgIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGRv
bWppdC9KU05vZGVET01KSVQuY3BwCiAKICAgICBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZiNTQyMjlkMTIz
MGY5YzY3ZTFlZjZlYjI3NzU3MWMzNDY3YmVmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRBYnN0cmFjdEhlYXBfaAorI2RlZmluZSBXZWJD
b3JlX0ZXRF9ET01KSVRBYnN0cmFjdEhlYXBfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RP
TUpJVEFic3RyYWN0SGVhcC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklURWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklURWZmZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRjMmVm
Njg5YjA1Nzc0ODAzYTY3MzJiOTM0ZDRmZmVlNzA3MDY2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRFZmZlY3RfaAorI2RlZmluZSBXZWJDb3JlX0ZX
RF9ET01KSVRFZmZlY3RfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVEVmZmVjdC5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9k
b21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM3ZmE1ZWQyNWU0ZTVhOGYw
YmI0ZmYxNzFiYTNjMDg2NzgxNWVhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaApAQCAtMCwwICsxLDI5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9ET01KSVRIZWFwUmFuZ2VfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01K
SVRIZWFwUmFuZ2VfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVEhlYXBSYW5nZS5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzg3NWFkMDJkZDMyNGMxMTZkZGQ4YmI5NDYxODQ3MDhmNDg5ODRkMi4u
ZGIxNDRlMWM3ODExN2JjN2ZmMGI3ZjEwNWFlMmJmYTY5M2UxOTc4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE2OSw2ICs2
MTY5LDggQEAKIAkJRTFGRjhGNkQxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLzsg
fTsKIAkJRTMxNTBFQTYxREE3MjE5MDAwMTk0MDEyIC8qIEpTTm9kZURPTUpJVC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0FGQTk2NDFEQTZFOTA4
MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAqLzsgfTsKIAkJRTMxNTBFQTcxREE3MjE5MzAw
MTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJz
LmggKi87IH07CisJCUUzNUNBMTREMURCQzNBM0YwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcCAqLzsgfTsKKwkJRTM1Q0ExNEUxREJDM0E0MjAwRjgzNTE2IC8qIERPTUpJVEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNUNBMTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggKi87IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2Rl
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0QwNDk5MzFEQURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODgzODk4MUJBRDE0NUYw
MEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5jcHAgKi87IH07CiAJCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBT
Y3JpcHRNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIu
aCAqLzsgfTsKQEAgLTEzOTUxLDYgKzEzOTUzLDggQEAKIAkJRTFGRjhGNkExODBEQjVCRTAwMTMy
Njc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTUwRUE1
MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNB
MTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyog
SlNOb2RlRE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Tm9kZURPTUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjY4NCw2ICsy
MjY4OCw4IEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzNUNBMTRCMURCQzNBM0Mw
MEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKKwkJCQlFMzVD
QTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICov
LAogCQkJCUUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8sCiAJ
CQkJRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8sCiAJCQkp
OwpAQCAtMjY2MjYsNiArMjY2MzIsNyBAQAogCQkJCTQzOTA0NkU4MTJEQTI1RTgwMEFGODBBMiAv
KiBSZW5kZXJNYXRoTUxTY3JpcHRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQzEyREEy
NUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQz
OTA0NkVBMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdC
OTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovLAogCQkJCURFQkNDREQyMTY2NDZFODIw
MEE0NTJFMSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFGQTMwM0YxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjg3MjgsNiArMjg3MzUsNyBAQAogCQkJCUIyQzNEQTYyMEQwMDZDRDYw
MEVGNkYyNiAvKiBGb250Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMzOTY5RDAxQjc0
MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTM3MjdERkQ1MTQyQUFFNDUwMEQ0NDlDQiAvKiBGb250Q2FjaGVJT1MubW0gaW4gU291cmNlcyAq
LywKKwkJCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM3QzBEMDBBNUMxMDAzMDA3NEQg
LyogRm9udENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBNjAwRDAwNkNENjAw
RUY2RjI2IC8qIEZvbnRDYXNjYWRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZGQzgwMEQw
MEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjkzZTgzYmY3Y2ViYTEwMGYxMzZiMTUxYmE1ZTZjNzExODY5NTE0
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKKworI2luY2x1ZGUgPGRvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lm
IEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisK
K0Fic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQoreworICAg
IEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAgRE9NSGVhcDsKKyNkZWZpbmUgRE9NSklUX0RFRklO
RV9IRUFQKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBuYW1lIyNIZWFw
OworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQKQorI3Vu
ZGVmIERPTUpJVF9ERUZJTkVfSEVBUAorCisjZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX0hFQVAo
bmFtZSwgcGFyZW50KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFyZW50IyNIZWFwKTsKKyAgICBE
T01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX0hFQVApCisjdW5kZWYg
RE9NSklUX0lOSVRJQUxJWkVfSEVBUAorCisgICAgRE9NSGVhcC5jb21wdXRlKDApOworCisjZGVm
aW5lIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJlbnQpIG5hbWUgPSBuYW1lIyNI
ZWFwLnJhbmdlKCk7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElB
TElaRV9NRU1CRVIpCisjdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSCit9CisKK2NvbnN0
IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNl
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT4g
cmVwb3NpdG9yeTsKKyAgICByZXR1cm4gcmVwb3NpdG9yeS5nZXQoKTsKK30KKworfSB9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM2NDQ5MGFmMzBiOTM1MDgyZmY4NDdmYmY3NmMyYzcy
MWIwZDM2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gRGVzY3JpYmUgeW91ciBh
YnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBoZXJlLgorLy8gVihBYnN0cmFjdEhlYXBOYW1lLCBQYXJl
bnQpCisjZGVmaW5lIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoVikgXAorICAgIFYoTm9kZSwg
RE9NKSBcCisgICAgVihOb2RlX2ZpcnN0Q2hpbGQsIE5vZGUpIFwKKyAgICBWKE5vZGVfbGFzdENo
aWxkLCBOb2RlKSBcCisgICAgVihOb2RlX3BhcmVudE5vZGUsIE5vZGUpIFwKKyAgICBWKE5vZGVf
bmV4dFNpYmxpbmcsIE5vZGUpIFwKKyAgICBWKE5vZGVfcHJldmlvdXNTaWJsaW5nLCBOb2RlKSBc
CisKKworY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7CitXVEZfTUFLRV9OT05DT1BZQUJM
RShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT47CisgICAgc3RhdGljIGNvbnN0IEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkmIGluc3RhbmNlKCk7CisKKyAgICBKU0M6OkRPTUpJVDo6SGVh
cFJhbmdlIERPTTsKKworI2RlZmluZSBET01KSVRfREVGSU5FX01FTUJFUihuYW1lLCBwYXJlbnQp
IEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgbmFtZTsKKyAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9M
SVNUKERPTUpJVF9ERUZJTkVfTUVNQkVSKQorI3VuZGVmIERPTUpJVF9ERUZJTkVfTUVNQkVSCisK
K3ByaXZhdGU6CisgICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpOworfTsKKworfSB9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKaW5kZXggMTgwNmIyYWZhMWM0
NzFjMDMwNDYzMGI4MDM4ZjAzMjNmNmUzNjFlYi4uYTg1YmNkY2FiNTgxZWIwMWJlMGMzMGY5NmYz
NWVjZDk0ZDRkMTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCkBAIC0z
Miw4ICszMiw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1u
YW1lc3BhY2UgRE9NSklUSGVscGVycyB7CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBE
T01KSVQgewogCiB1c2luZyBKU0M6OkNDYWxsSGVscGVyczsKIHVzaW5nIEpTQzo6R1BSUmVnOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRleCBiOTY5M2FjYWE3NTJhNDQ0
OGQ0MTZjYzA0MTc3NzJjMDAwZTg3Y2IyLi4yODAyY2ZhNmFhMmZkM2U5MzM3MzIxZWJiODAzYmQ1
OGMwZDQyNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklU
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJET01KSVRIZWxwZXJzLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNTIsMTEgKzUzLDExIEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdG9XcmFwcGVyU2xvdyhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU0dsb2JhbE9iCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZWROb2Rl
Pgotc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9y
T2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmZzZXQsIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVu
dCBpc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQpCitzdGF0aWMgUmVmPEpTQzo6RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qg
b2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQgaXNDb250YWluZXJHdWFyZFJlcXVp
cmVtZW50KQogewotICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50
ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgUmVmPEpTQzo6RE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gMTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYg
aml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0ID0gcGFyYW1z
WzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3QgPSBwYXJhbXNb
MV0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBub2RlID0gcGFyYW1zWzJdLmdwcigpOwpAQCAtNzIs
NyArNzMsNyBAQCBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNh
bGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9mZgogICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaCwgb2Zmc2V0KSwgc2NyYXRjaCk7CiAgICAgICAg
IG51bGxDYXNlcy5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBz
Y3JhdGNoKSk7CiAKLSAgICAgICAgRE9NSklUSGVscGVyczo6dG9XcmFwcGVyPFdyYXBwZWROb2Rl
PihqaXQsIHBhcmFtcywgc2NyYXRjaCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQsIHRvV3JhcHBlclNs
b3c8V3JhcHBlZE5vZGU+LCBwYXJhbXNbMV0udmFsdWUoKSk7CisgICAgICAgIERPTUpJVDo6dG9X
cmFwcGVyPFdyYXBwZWROb2RlPihqaXQsIHBhcmFtcywgc2NyYXRjaCwgZ2xvYmFsT2JqZWN0LCBy
ZXN1bHQsIHRvV3JhcHBlclNsb3c8V3JhcHBlZE5vZGU+LCBwYXJhbXNbMV0udmFsdWUoKSk7CiAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICBu
dWxsQ2FzZXMubGluaygmaml0KTsKQEAgLTgzLDgzICs4NCw5OSBAQCBzdGF0aWMgUmVmPERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlm
Zl90IG9mZgogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCi1zdGF0aWMgUmVmPERPTUpJVDo6
UGF0Y2hwb2ludD4gY2hlY2tOb2RlKCkKK3N0YXRpYyBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9p
bnQ+IGNoZWNrTm9kZSgpCiB7Ci0gICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2lu
dCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBw
YXJhbXMpIHsKKyAgICBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJh
bXMmIHBhcmFtcykgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNl
czsKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVRIZWxwZXJzOjpicmFuY2hJZk5v
dE5vZGUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChET01KSVQ6OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1swXS5ncHIoKSkpOwogICAgICAg
ICByZXR1cm4gZmFpbHVyZUNhc2VzOwogICAgIH0pOwogICAgIHJldHVybiBwYXRjaHBvaW50Owog
fQogCiAvLyBOb2RlI2ZpcnN0Q2hpbGQuCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlRmly
c3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBO
b2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05vZGUo
KTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9N
SklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVG
aXJzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZv
ck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsg
Q29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENv
bnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwg
SXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7CisgICAgcGF0Y2hwb2ludC0+
ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9maXJzdENoaWxk
KTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNsYXN0Q2hpbGQuCi1SZWY8
RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCitSZWY8
SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkK
IHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQogewotICAg
IHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5v
ZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZz
ZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7CisgICAgY29uc3Qg
YXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsK
KyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+
KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0
Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJl
ZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVm
KGhlYXAuTm9kZV9sYXN0Q2hpbGQpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBO
b2RlI25leHRTaWJsaW5nLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5n
RE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOZXh0
U2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05vZGUoKTsKIH0K
IAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6
Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTmV4dFNp
YmxpbmdET01KSVQ6OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zm
c2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFp
bmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAg
PSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBw
YXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0
U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJl
cXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JEZWYoaGVhcC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0K
IAogLy8gTm9kZSNwcmV2aW91c1NpYmxpbmcuCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2Rl
UHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNo
cG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIHsKICAgICByZXR1
cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2Rl
UHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00oKQogewotICAg
IHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6OnByZXZpb3Vz
U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJl
cXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcHJldmlv
dXNTaWJsaW5nKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNwYXJlbnRO
b2RlLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNr
RE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6
OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSgpCitSZWY8
SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2Fs
bERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Q29udGFp
bmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2lu
dCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFy
ZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJl
cXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JEZWYoaGVhcC5Ob2RlX3BhcmVudE5vZGUpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQog
CiAvLyBOb2RlI25vZGVUeXBlLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBl
RE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOb2Rl
VHlwZURPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05vZGUoKTsKIH0KIAot
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERP
TSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01K
SVQ6OmNhbGxET00oKQogewotICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRj
aHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlND
OjpET01KSVQ6OkVmZmVjdDo6Zm9yUHVyZSgpOwogICAgIHBhdGNocG9pbnQtPnJlcXVpcmVHbG9i
YWxPYmplY3QgPSBmYWxzZTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxs
SGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBub2RlID0gcGFyYW1z
WzFdLmdwcigpOwogICAgICAgICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5vZGUs
IEpTQzo6SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHJlc3VsdC5wYXlsb2FkR1BSKCkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292530</attachid>
            <date>2016-10-22 20:29:41 -0700</date>
            <delta_ts>2016-10-22 21:53:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022202600.patch</filename>
            <type>text/plain</type>
            <size>76001</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4wZDU5Y2NlNTFhNTAxZDA1
NDc2OTNmYWY0MzJkOWJlNmZjNGUwZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6Om92
ZXJsYXBzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlclNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q2xvYmJlclNldDo6b3ZlcmxhcHMpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9j
YXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTURhdGEpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbGxET01EYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNDYWxsRE9NUGF0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Y2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDYWxsRE9NKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hw
b2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpkdW1wKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpBYnN0cmFjdEhlYXA6OnNoYWxsb3dEdW1wKToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmRlZXBEdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
Q2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6
OkFic3RyYWN0SGVhcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpzZXRQ
YXJlbnQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6aXNSb290KToKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmlzQ29tcHV0ZWQpOgorICAgICAgICAo
SlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6cmFuZ2UpOgorICAgICAgICAqIGRvbWppdC9ET01K
SVRDYWxsRE9NUGF0Y2hwb2ludC5oOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclB1cmUpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6Om11
c3RHZW5lcmF0ZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9p
bnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmR1bXApOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRPTUpJVDo6
SGVhcFJhbmdlOjpIZWFwUmFuZ2UpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpiZWdpbik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjplbmQpOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6cmF3UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpET01KSVQ6Okhl
YXBSYW5nZTo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpub25lKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpIZWFwUmFuZ2U6OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpIZWFwUmFuZ2U6OmlzU3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFu
Z2U6Om92ZXJsYXBzKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorCiAyMDE2
LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGls
bCBhbG9uZyBib3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9u
IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uYzgy
YzY0NjhkODNlYmE0M2M4YzdhOWE4MTE1MjE5NzAxM2ZiYmM2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHBy
ZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAgKFdURjo6bm9uRW1wdHlSYW5nZXNPdmVy
bGFwKToKKwogMjAxNi0xMC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBjYWxscwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIx
OTgzYjk2NzE0YjJiMjdmZDgwZWE5NDkwZTE4ZjA0ZDdkMDkyODkuLjljMzA0OTQ5ZTQ2ODg0ZGUx
YmY1MDEyZDI2NjBmMWIzZWJlZmVjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAx
Ni0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVm
ZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
ZG9taml0L0RPTUpJVEVmZmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAoV2ViQ29yZTo6
RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNo
cG9pbnQuaC4KKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RXb3JsZElzTm9ybWFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V2Vha0lzTGl2ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjp0cnlMb29rVXBXcmFw
cGVyQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dG9X
cmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5j
aElmRE9NV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJz
OjpicmFuY2hJZk5vdERPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUSGVscGVyczo6YnJhbmNoSWZOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RFbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmRG9jdW1lbnRXcmFwcGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RG9jdW1l
bnRXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2hlY2tOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVGaXJzdENoaWxk
RE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RDaGlsZERPTUpJ
VDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVj
a0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00pOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVU
eXBlRE9NSklUOjpjYWxsRE9NKToKKwogMjAxNi0xMC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVcGdyYWRpbmcgY3VzdG9tIGVsZW1lbnQgc2hvdWxkIGVu
cXVldWUgYXR0cmlidXRlQ2hhbmdlZCBhbmQgY29ubmVjdGVkIGNhbGxiYWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0
OTJiNzMwMDQyZDguLjg3ZjczZTVhMDcwY2MxMjIxZmM4ZDQyMzIyNWMzNzE4NjA2NDllNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQxMyw2ICs0MTMsOSBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5
bi1pbnRlbC5jCiAgICAgZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODZfc3luLmMKIAorICAgIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCisgICAgZG9taml0L0RPTUpJVEhlYXBSYW5nZS5j
cHAKKwogICAgIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwCiAgICAgZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwCiAgICAgZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NmFhMDg0ZTgxMWRhMzE0ZGE2Y2ZiNDcwMWEzMzM4
ZmIzMGMzMzcxLi5mYWIyMTk4MjZiMzk3NzU3N2Q1ZTBkMzQ1M2NmM2NkMmNlMDUxZTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2Myw2ICsyMTYzLDEwIEBACiAJCUUzNTU1
QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAw
RjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8q
IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVy
UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlw
ZS5oICovOyB9OworCQlFMzVDQTE1MzFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNB
MTUxMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwICovOyB9OworCQlFMzVD
QTE1NDFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYg
LyogRE9NSklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0
SGVhcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVDQTE0RjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLzsgfTsK
KwkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1
NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0Uw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLzsgfTsKQEAgLTIxNzcsNiArMjE4MSw3IEBACiAJCUUzQkZEMEJCMURBRjgwODcwMDY1REVB
MiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIg
LyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovOyB9OwogCQlFM0JGRDBC
QzFEQUY4MDhFMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEJBMURB
RjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovOyB9
OwogCQlFM0MwOEUzQzFEQTQxQjgxMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDMDhFM0IxREE0MUI3
QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9N
SklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
M0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CkBAIC00NTMz
LDYgKzQ1MzgsMTAgQEAKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxE
T01QYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENh
bGxET01QYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUw
MUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1v
ZHVsZUxvYWRlclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJ
VEFic3RyYWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MTFE
QkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVhcFJhbmdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ1NDgsNiArNDU1Nyw3IEBACiAJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAv
KiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAv
KiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklU
UGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRj
aHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzc5Q0FBMURCOUE0RDYw
MEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSklURWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0IxRTI0
MURBNzU0MEEwMEZBMUU1NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4
MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc0MDMsOCArNzQxMywxMyBAQAogCQlFM0ZGNzUyRDFEOUNFOUVBMDBDN0Ux
NkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlFMzVDQTE0RjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAq
LywKKwkJCQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmgg
Ki8sCiAJCQkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBv
aW50LmggKi8sCisJCQkJRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5o
ICovLAogCQkJCUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIu
aCAqLywKKwkJCQlFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNw
cCAqLywKKwkJCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmgg
Ki8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAq
LywKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFt
cy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAqLywK
QEAgLTc2MzIsNiArNzY0Nyw3IEBACiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8qIENv
ZGVCbG9ja1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4OEIy
MDA2NDBBNDcgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5
OTUwMDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICov
LAorCQkJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVw
bGF5SW5wdXRzVGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFMTE2QjEwRkU3NUFD
ODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRDdFNjkx
NDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODI5OSw2
ICs4MzE1LDcgQEAKIAkJCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTUyQzM4MDFB
RERCOEZFMDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWlu
UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDg3NEFFNjE1RUJERTRBMDAyRTM1ODcgLyogSlNT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkIxQzE2MjVCRTAwMzIzRjY3IC8qIEIz
Q0ZHLmggaW4gSGVhZGVycyAqLywKQEAgLTg0MTcsNiArODQzNCw3IEBACiAJCQkJN0MwMDhDRTcx
ODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMwMTg0
MTkxRDEwQzE4OTAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTI0LDYgKzk5NDIsNyBAQAog
CQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRl
Y29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0U0MEQxQjYxOEI2NjAwQzgwRTFFIC8q
IFByb3BlcnR5Q29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNUNBMTUzMURCQzNB
NUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdG
QjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDQ2OURFODEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTk0Miw2ICs5OTYxLDcgQEAKIAkJCQk4NjQyQzUx
MjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzVDQTE1NTFEQkMzQTVGMDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBDN0EwMUI4MkUxQzMw
MDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBD
N0ExMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5jcHAKaW5kZXggMWUxMTAxOTAyZGIyNWVhZDdmOGQ3ZWY5OWI0OWM0ODQxYzE4ZDExZC4uY2Q2
OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkxZDIzYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNDUsNiArNDUsMTAgQEAgdm9p
ZCBBYnN0cmFjdEhlYXA6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBvdXQucHJp
bnQoa2luZCgpKTsKICAgICBpZiAoa2luZCgpID09IEludmFsaWRBYnN0cmFjdEhlYXAgfHwga2lu
ZCgpID09IFdvcmxkIHx8IGtpbmQoKSA9PSBIZWFwIHx8IHBheWxvYWQoKS5pc1RvcCgpKQogICAg
ICAgICByZXR1cm47CisgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICBvdXQu
cHJpbnQoIigiLCBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhwYXlsb2FkKCkudmFsdWUzMigp
KSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBvdXQucHJpbnQoIigiLCBwYXls
b2FkKCksICIpIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCmluZGV4IDBhYmQ1MDI3YjI2YWViMzk0ZjI5YzAzOGZkOWYyZDU5MmU2YzE2MzkuLmY1
MWY4MmZlMTM3ZTI1YTNmNzlhNTJiMWYxMWIwYzUzMzFhMzA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKICNpbmNsdWRl
ICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtNzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8o
SW50ZXJuYWxTdGF0ZSkgXAogICAgIG1hY3JvKEFic29sdXRlKSBcCisgICAgLyogRE9NSklUIHRl
bGxzIHRoZSBoZWFwIHJhbmdlIHdpdGggdGhlIHBhaXIgb2YgaW50ZWdlcnMuICovXAorICAgIG1h
Y3JvKERPTVN0YXRlKSBcCiAgICAgLyogVXNlIHRoaXMgZm9yIHdyaXRlcyBvbmx5LCB0byBpbmRp
Y2F0ZSB0aGF0IHRoaXMgbWF5IGZpcmUgd2F0Y2hwb2ludHMuIFVzdWFsbHkgdGhpcyBpcyBuZXZl
ciBkaXJlY3RseSB3cml0dGVuIGJ1dCBpbnN0ZWFkIHdlIHRlc3QgdG8gc2VlIGlmIGEgbm9kZSBj
bG9iYmVycyB0aGlzOyBpdCBqdXN0IHNvIGhhcHBlbnMgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSB3
b3JsZCB0byBjbG9iYmVyIGl0LiAqL1wKICAgICBtYWNybyhXYXRjaHBvaW50X2ZpcmUpIFwKICAg
ICAvKiBVc2UgdGhlc2UgZm9yIHJlYWRzIG9ubHksIGp1c3QgdG8gaW5kaWNhdGUgdGhhdCBpZiB0
aGUgd29ybGQgZ290IGNsb2JiZXJlZCwgdGhlbiB0aGlzIG9wZXJhdGlvbiB3aWxsIG5vdCB3b3Jr
LiAqL1wKQEAgLTIzMyw2ICsyMzYsMTUgQEAgY2xhc3MgQWJzdHJhY3RIZWFwIHsKICAgICBib29s
IGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEFic3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBBYnN0cmFjdEhlYXAgY3VycmVudCA9ICp0aGlzOworICAgICAgICBpZiAoY3Vy
cmVudC5raW5kKCkgPT0gRE9NU3RhdGUgJiYgb3RoZXIua2luZCgpID09IERPTVN0YXRlKSB7Cisg
ICAgICAgICAgICBQYXlsb2FkIGN1cnJlbnRQYXlsb2FkID0gY3VycmVudC5wYXlsb2FkKCk7Cisg
ICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQoKTsKKyAgICAg
ICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmIChvdGhlclBheWxvYWQuaXNUb3AoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBET01KSVQ6OkhlYXBSYW5n
ZTo6ZnJvbVJhdyhjdXJyZW50UGF5bG9hZC52YWx1ZTMyKCkpLmlzU3RyaWN0U3VidHlwZU9mKERP
TUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KG90aGVyUGF5bG9hZC52YWx1ZTMyKCkpKTsKKyAgICAg
ICAgfQogICAgICAgICB3aGlsZSAoY3VycmVudC5raW5kKCkgIT0gV29ybGQpIHsKICAgICAgICAg
ICAgIGN1cnJlbnQgPSBjdXJyZW50LnN1cGVydHlwZSgpOwogICAgICAgICAgICAgaWYgKGN1cnJl
bnQgPT0gb3RoZXIpCkBAIC0yNDgsNyArMjYwLDE2IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7CiAg
ICAgCiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzID09IG90aGVyIHx8IGlzU3RyaWN0U3VidHlwZU9m
KG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVPZigqdGhpcyk7CisgICAgICAgIGlmICgq
dGhpcyA9PSBvdGhlcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoa2lu
ZCgpID09IERPTVN0YXRlICYmIG90aGVyLmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAg
ICAgUGF5bG9hZCBjdXJyZW50UGF5bG9hZCA9IHBheWxvYWQoKTsKKyAgICAgICAgICAgIFBheWxv
YWQgb3RoZXJQYXlsb2FkID0gb3RoZXIucGF5bG9hZCgpOworICAgICAgICAgICAgaWYgKGN1cnJl
bnRQYXlsb2FkLmlzVG9wKCkgfHwgb3RoZXJQYXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZy
b21SYXcoY3VycmVudFBheWxvYWQudmFsdWUzMigpKS5vdmVybGFwcyhET01KSVQ6OkhlYXBSYW5n
ZTo6ZnJvbVJhdyhvdGhlclBheWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGlzU3RyaWN0U3VidHlwZU9mKG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVP
ZigqdGhpcyk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNEaXNqb2ludChjb25zdCBBYnN0cmFj
dEhlYXAmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGExMmYwOWNiMWI5NGEw
YTMwNDM2MzcwYzcyYWEyMWM1ZWQ4MTk1ZmIuLmYwOWQ0MWI3YjdjYTMzM2EyNDA5YjFlNTQ1YjU1
ODQwZGNmMGZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIyODksMTAgKzIyODksMTMgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZmlsdGVyQ2xhc3NJbmZvKHZhbHVlLCBu
b2RlLT5jbGFzc0luZm8oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIENhbGxE
T006Ci0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJM
aW1pdCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAg
ICAgICBpZiAocGF0Y2hwb2ludC0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlD
aGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNDg4NDIwNmIzZjU2ZDc0
ZTZmMjZlZjU2YjU4Y2ZhYTU2NTcwZDg5OS4uYTViMDRjYTY2MTQ1YWI1M2U2NjI4NzdhZGE3ZDIz
N2Q0Y2IyOWRkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTI2NzMsNiArMjY3MywxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJp
YQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJs
ZXNzQ2FsbERPTShOb2RlKiBub2RlKQoreworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgIGlmICgh
cGF0Y2hwb2ludC0+ZWZmZWN0Lm11c3RHZW5lcmF0ZSgpKQorICAgICAgICBub2RlLT5jbGVhckZs
YWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVE
T01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50LCBOb2RlKiB0aGlzTm9kZSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBp
ZiAoIXZhcmlhbnQuZG9tSklUKCkpCkBAIC0yNjkxLDE0ICsyNjk4LDIxIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhp
bmd5IGhlcmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJl
bnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVj
a0RPTSwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhkb21KSVQtPnRo
aXNDbGFzc0luZm8oKSksIHRoaXNOb2RlKTsKIAorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0
YSA9IG1fZ3JhcGgubV9jYWxsRE9NRGF0YS5hZGQoKTsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gY2FsbERPTVBhdGNocG9pbnQgPSBkb21KSVQtPmNhbGxET00oKTsKICAgICBt
X2dyYXBoLm1fZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNhbGxET01QYXRjaHBvaW50LnB0cigp
KTsKKworICAgIGNhbGxET01EYXRhLT5kb21KSVQgPSBkb21KSVQ7CisgICAgY2FsbERPTURhdGEt
PnBhdGNocG9pbnQgPSBjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKTsKKwogICAgIGlmIChjYWxsRE9N
UGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewogICAgICAgICBOb2RlKiBnbG9iYWxP
YmplY3QgPSBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwgdGhpc05vZGUpOwogICAgICAgICBh
ZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05vZGUg
aXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBlci4KICAgICB9CiAgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc05vZGUpOwotICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTVBhdGNo
cG9pbnQucHRyKCkpLCBPcEluZm8ocHJlZGljdGlvbikpKTsKKyAgICBOb2RlKiBjYWxsRE9NTm9k
ZSA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTURhdGEp
LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgIGJsZXNzQ2FsbERPTShjYWxsRE9NTm9kZSk7Cisg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2FsbERPTU5vZGUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
U2V0LmNwcAppbmRleCBkNDYzMGUzNzBjYjBiYWMyM2Q5OTQyZjVmZmNlMzhmYjU4ZGEyZGVjLi41
OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUxYWExYTc5MjQ0OWY3ZTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKQEAgLTgxLDYgKzgxLDIzIEBAIGJvb2wg
Q2xvYmJlclNldDo6b3ZlcmxhcHMoQWJzdHJhY3RIZWFwIGhlYXApIGNvbnN0CiB7CiAgICAgaWYg
KG1fY2xvYmJlcnMuZmluZChoZWFwKSAhPSBtX2Nsb2JiZXJzLmVuZCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5raW5kKCkgPT0gRE9NU3RhdGUgJiYgIWhlYXAucGF5bG9h
ZCgpLmlzVG9wKCkpIHsKKyAgICAgICAgLy8gRE9NU3RhdGUgaGVhcCBoYXMgaXRzIG93biBoaWVy
YXJjaHkuIEZvciBkaXJlY3QgaGVhcCBjbG9iYmVycyB0aGF0IHBheWxvYWQgaXMgbm90IFRvcCwK
KyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1ZXJ5IHdoZXRoZXIgdGhlIGNsb2JiZXIgb3ZlcmxhcHMg
d2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBE
T01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhoZWFwLnBheWxvYWQoKS52YWx1ZTMyKCkpOworICAg
ICAgICBmb3IgKGF1dG8gcGFpciA6IG1fY2xvYmJlcnMpIHsKKyAgICAgICAgICAgIGJvb2wgZGly
ZWN0ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGlyZWN0KQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RIZWFwIGNsb2JiZXIgPSBwYWlyLmtl
eTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLmtpbmQoKSAhPSBET01TdGF0ZSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLnBheWxvYWQoKS5pc1Rv
cCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKERPTUpJVDo6
SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2JiZXIucGF5bG9hZCgpLnZhbHVlMzIoKSkub3ZlcmxhcHMo
cmFuZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQog
ICAgIHdoaWxlIChoZWFwLmtpbmQoKSAhPSBXb3JsZCkgewogICAgICAgICBoZWFwID0gaGVhcC5z
dXBlcnR5cGUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5zKGhlYXApKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAppbmRleCA3MjlmMzliMTE4NTE4YTk1NTVlYzQ2MTY2
ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdmZGI0MjMyZWMwYjJhYzUwMGE2NTA1ZTRjOTU0OTM0ZDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaApAQCAtNTIsMTEg
KzUyLDExIEBAIGNsYXNzIENsb2JiZXJTZXQgewogICAgIAogICAgIHZvaWQgYWRkKEFic3RyYWN0
SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwoY29uc3QgQ2xvYmJlclNldCYpOwotICAgIGJvb2wgY29u
dGFpbnMoQWJzdHJhY3RIZWFwKSBjb25zdDsKICAgICBib29sIG92ZXJsYXBzKEFic3RyYWN0SGVh
cCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAgIC8vIENhbGxzIHVzZWZ1bCBm
b3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERvIG5vdCBjYWxsIGZvciBub24g
ZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3QgaGFuZGxlIERPTVN0YXRlIGhp
ZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IGRpcmVj
dCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBzdXBlcigpIGNvbnN0OwpAQCAt
NjQsNiArNjQsOCBAQCBjbGFzcyBDbG9iYmVyU2V0IHsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisgICAgYm9vbCBjb250YWlucyhBYnN0cmFjdEhl
YXApIGNvbnN0OworCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IHNldE9mKGJvb2wgZGlyZWN0
KSBjb25zdDsKICAgICAKICAgICAvLyBNYXBzIGhlYXAgdG86CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5Mzg3MmU1MDgxODBkMmI1ZjJj
YzZiNmFiYzg0NGMuLmU1MmY3NzhmNDhhZjJmYjAzNzg2MDE1Y2MzZjNiNzc0ODcwZDNiZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eU5vZGUu
aCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTkwNywx
MCArOTA4LDQyIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fz
ZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAgICAgd3JpdGUoSGVhcCk7Cisg
ICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBh
dGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBET01K
SVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRjaHBvaW50LT5lZmZlY3Q7CisgICAgICAgIGlmIChlZmZl
Y3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0gRE9NSklUOjpIZWFw
UmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3Qu
cmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZl
Y3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9PSBET01KSVQ6Okhl
YXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7IC8vIFdlIGRvIG5v
dCBhc3N1bWUgdGhhdCBET00gb3BlcmF0aW9ucyB3aWxsIHdyaXRlKFN0YWNrKS4KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlm
IChlZmZlY3QuZGVmKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vZGUtPm51
bUNoaWxkcmVuKCkgPD0gQWRqYWNlbmN5TGlzdDo6U2l6ZSwgIkN1cnJlbnRseSB3ZSBvbmx5IGFs
bG93IHB1cmUgQ2FsbERPTSB0byBoYXZlIHVwIHRvIDMgY2hpbGRyZW4uIik7CisgICAgICAgICAg
ICBFZGdlIGVkZ2VzW0FkamFjZW5jeUxpc3Q6OlNpemVdOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICBlZGdlc1tpXSA9IGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGkpOworCisgICAgICAgICAgICBE
T01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAg
IGlmIChyYW5nZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAg
IGRlZihQdXJlVmFsdWUoQ2FsbERPTSwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhl
ZCwgZWRnZXNbMF0sIGVkZ2VzWzFdLCBlZGdlc1syXSksIG5vZGUtPmNhbGxET01EYXRhKCktPmRv
bUpJVCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRGVmIHdpdGgg
aGVhcCBsb2NhdGlvbi4gV2UgZG8gbm90IGluY2x1ZGUgIkdsb2JhbE9iamVjdCIgZm9yIHRoYXQg
c2luY2UgdGhpcyBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUgYmFzZSBub2RlLgorICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHN1cHBvcnRpbmcgdGhlIG90aGVyIG5vZGVzIGxp
a2UgZ2V0RWxlbWVudEJ5SWQoInN0cmluZyIpLCB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgYmFzZSBh
bmQgdGhlIGlkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkg
c2VlIHRoZSBET01KSVQgZ2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5jbHVkaW5nICJiYXNlIiBpcyBv
ay4KKyAgICAgICAgICAgICAgICBFZGdlIGJhc2UgPSBlZGdlc1swXTsKKyAgICAgICAgICAgICAg
ICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZSA9IGVkZ2VzWzFdOworICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9N
U3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24o
KSksIGJhc2UpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJh
eWlmeVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDNmMTM4NDJjYWY0YjVjNmVlMWYwOWM1NGFhM2Q4YTAwNjIzNmM1MjkuLmYzNWI2NmNlMTdl
NDAzOTgyZDAyOGFmMzgyYjkxYmQ2MDg1N2VhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTExOCw3ICsxMTgsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4
ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6Ci0gICAgY2FzZSBDYWxsRE9NOgogICAg
IGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6
CkBAIC0yOTksNiArMjk4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICBjYXNlIENyZWF0ZVJlc3Q6CiAg
ICAgY2FzZSBUb0xvd2VyQ2FzZToKKyAgICBjYXNlIENhbGxET006CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzM2MwY2YxOTIwODViNTAwNGIy
MDA4OWUyZDNiMDY5MjkwNDg4NTk4Li5mOTUxYzJlYTBmYTNiMzMxMTIzNGFjYjI3NjIwMzE3YTI1
M2UxMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTE3MTIsNyArMTcxMiw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
CiAgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAw
OwotICAgICAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgICAgICBET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKICAg
ICAgICAgICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNo
aWxkSW5kZXgrKykpOyAvLyBHbG9iYWxPYmplY3QuCiAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA3NmIyYmFlYzcxNmMyZjM2YjZiZTU0
MzYwYTlkMzNkZDRhMTRmM2FjLi5mOTU3ZjVjZmJkNzg4ZWRkNjI2ODk1ZmYxZGUzNTA3MTM2ZDE0
MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC05MDEsNiArOTAxLDcg
QEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxMb2Fk
VmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+
IG1fc3RhY2tBY2Nlc3NEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNWYWx1ZXM7
CisgICAgQmFnPENhbGxET01EYXRhPiBtX2NhbGxET01EYXRhOwogICAgIFZlY3RvcjxJbmxpbmVW
YXJpYWJsZURhdGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJs
b2NrKiwgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxp
dmVuZXNzOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
S2lsbHM+PiBtX2J5dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggODQ3MDYzN2RmMDA2NjA0ZDMyNmQ1NTFhNGJiMzQyYTJm
MDIwNTA2OC4uOWIyMjkyZDUwMjYwY2YwZTcxNTQ4YzY2NGZhY2QxZWRjY2U1ZGY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcApAQCAtMTUyLDYg
KzE1Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2NhdGlvbktp
bmQga2luZCkKICAgICBjYXNlIE1hcEhhc0xvYzoKICAgICAgICAgb3V0LnByaW50KCJNYXBIYXNM
b2MiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRE9NU3RhdGVMb2M6CisgICAgICAgIG91
dC5wcmludCgiRE9NU3RhdGVMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggNzA0ZDE5MWFmOGU1MThiYzBlOWY1NTNkNDc4ZDhh
ZjZkNGU2OWI1Ni4uNjM1N2JlMTgwZjNkMDgxZTFlYzkwYTRkNDIxMWRmMDRhODZiODkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02MCw3ICs2
MCw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTdGFja1BheWxvYWRMb2MsCiAgICAgTWFw
QnVja2V0TG9jLAogICAgIEpTTWFwR2V0TG9jLAotICAgIE1hcEhhc0xvYworICAgIE1hcEhhc0xv
YywKKyAgICBET01TdGF0ZUxvYywKIH07CiAKIGNsYXNzIEhlYXBMb2NhdGlvbiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKaW5kZXggZTYwOTc2NGU4NTljZjgw
ZGRhYzU4YjNjNDJjMDcwNWMxMmU5MjYzYS4uOTdlMWVhYWRhZTlhMDQ4MDAyZWVkYTM3ZmU3YTU2
YWU5ZTRlNmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNN
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNw
cApAQCAtMzM5LDcgKzMzOSw3IEBAIGNsYXNzIExJQ01QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIC8vIEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgd2UgY3Vy
cmVudGx5IGtub3cgaG93IHRvIGhvaXN0CiAgICAgICAgIC8vIGRvbid0IGhhdmUgdmFyLWFyZyBj
aGlsZHJlbi4gVGhhdCBtYXkgY2hhbmdlIGFuZCB0aGVuIHdlIGNhbiBmaXggdGhpcwogICAgICAg
ICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFzc2VydCB0aGF0J3MgdGhlIGNhc2UuCi0g
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhh
c1ZhckFyZ3MpKTsKKyAgICAgICAgLy8gREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUt
PmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICAKICAgICAgICAgbm9kZVJlZiA9
IG1fZ3JhcGguYWRkTm9kZShDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGM5NDExZDUwY2Zi
YTljNTRiMDJjMzQ4NjQ5N2U0MDM0MTI3YWRkYmMuLjBkMWE0YjU1ODE0MzcyOWFhOGMzMjJmMjg0
NjE4M2QxZDQzNjRkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OSw2
ICs1OSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQYXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTVBhdGNocG9pbnQ7
CiB9CkBAIC0yMzEsNiArMjMyLDExIEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZs
dXNoZWRBdCBmbHVzaGVkQXQoKSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9j
YWwpOyB9CiB9OwogCitzdHJ1Y3QgQ2FsbERPTURhdGEgeworICAgIERPTUpJVDo6R2V0dGVyU2V0
dGVyKiBkb21KSVQgeyBudWxscHRyIH07CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCog
cGF0Y2hwb2ludCB7IG51bGxwdHIgfTsKK307CisKIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5v
ZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4K
QEAgLTIzMzYsMTUgKzIzNDIsMTUgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8RE9NSklUOjpQYXRjaHBvaW50Kj4oKTsKICAgICB9CiAKLSAgICBib29sIGhhc0Nh
bGxET01QYXRjaHBvaW50KCkgY29uc3QKKyAgICBib29sIGhhc0NhbGxET01EYXRhKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IENhbGxET007CiAgICAgfQogCi0gICAgRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludCogY2FsbERPTVBhdGNocG9pbnQoKQorICAgIENhbGxET01E
YXRhKiBjYWxsRE9NRGF0YSgpCiAgICAgewotICAgICAgICBBU1NFUlQoaGFzQ2FsbERPTVBhdGNo
cG9pbnQoKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50Kj4oKTsKKyAgICAgICAgQVNTRVJUKGhhc0NhbGxET01EYXRhKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8Q2FsbERPTURhdGEqPigpOwogICAgIH0KIAogICAgIGJvb2wgaGFz
Q2xhc3NJbmZvKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggNWU2NGJhZjkzYzdiYzEyNzE2Y2E3NzgyMzI1NzQ4OTY0MzJm
ODk5MS4uMzM5ZmUyNzM4MDMwODNhYzA2MDY1NWEzZDFkMDYxOWNkMjMxMTg1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyMjUs
NyArNzIyNSw3IEBAIHN0YXRpYyB2b2lkIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0
Y2hwb2ludChTcGVjdWxhdGl2ZUpJVCogaml0LCBWZWN0b3I8CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiB7Ci0gICAgRE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCkt
PnBhdGNocG9pbnQ7CiAKICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CiAgICAgVmVjdG9y
PEZQUlJlZz4gZnBTY3JhdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNWM0MWE4ZmFjNTgwMmVkYmE5
YzU3YjU4YjM2MjMzZjRkZjNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAuaCIKKworI2lmIEVOQUJMRShKSVQp
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordm9pZCBBYnN0cmFjdEhl
YXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCit7CisgICAgdW5zaWduZWQgY3VycmVudCA9IGJl
Z2luOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAgIGNoaWxk
LT5jb21wdXRlKGN1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5k
KCk7CisgICAgfQorICAgIEFTU0VSVChiZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFTU0VSVChj
dXJyZW50IDw9IFVJTlQxNl9NQVgpOworICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1
cnJlbnQpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAoreworICAgIHNoYWxsb3dEdW1wKG91dCk7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAg
ICBvdXQucHJpbnQoIi0+IiwgKm1fcGFyZW50KTsKK30KKwordm9pZCBBYnN0cmFjdEhlYXA6OnNo
YWxsb3dEdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fbmFt
ZSwgIjwiLCBtX3JhbmdlLCAiPiIpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZGVlcER1bXAo
UHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgaW5kZW50ID0gMCkgY29uc3QKK3sKKyAgICBhdXRv
IHByaW50SW5kZW50ID0gWyZdICgpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZW50
OyBpLS07KQorICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIik7CisgICAgfTsKKworICAgIHBy
aW50SW5kZW50KCk7CisgICAgc2hhbGxvd0R1bXAob3V0KTsKKworICAgIGlmIChtX2NoaWxkcmVu
LmlzRW1wdHkoKSkgeworICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBvdXQucHJpbnQoIjpcbiIpOworICAgIGZvciAoYXV0byogY2hpbGQgOiBt
X2NoaWxkcmVuKQorICAgICAgICBjaGlsZC0+ZGVlcER1bXAob3V0LCBpbmRlbnQgKyAxKTsKK30K
KworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NmYjE2NGQyZjljYTJiZDNmMDAyMzY5Y2U1
NmE0NmE1ZmUyODFhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRE9NSklUSGVhcFJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBBYnN0cmFjdEhlYXAgeworcHVibGljOgor
ICAgIEFic3RyYWN0SGVhcChjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogbV9uYW1lKG5h
bWUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0UGFyZW50KEFic3RyYWN0SGVhcCogcGFy
ZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3BhcmVudCk7CisgICAgICAgIHBhcmVudC0+
bV9jaGlsZHJlbi5hcHBlbmQodGhpcyk7CisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OworICAg
IH0KKworICAgIGJvb2wgaXNSb290KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyZW50OyB9CisKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbXB1dGUodW5zaWduZWQgYmVnaW4pOworCisgICAg
Ym9vbCBpc0NvbXB1dGVkKCkgY29uc3QgeyByZXR1cm4gISFtX3JhbmdlOyB9CisgICAgSGVhcFJh
bmdlIHJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQorCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkZWVwKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzaGFsbG93RHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGVlcER1bXAoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBpbmRlbnQgPSAwKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIEFic3RyYWN0SGVhcCog
bV9wYXJlbnQgeyBudWxscHRyIH07CisgICAgVmVjdG9yPEFic3RyYWN0SGVhcCo+IG1fY2hpbGRy
ZW4geyB9OworICAgIEhlYXBSYW5nZSBtX3JhbmdlOworfTsKKworfSB9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hw
b2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hw
b2ludC5oCmluZGV4IDY5NTgyMGM1YTU5ZDYzZGVkYTQyZjgzZDRmOGI0Nzg1Y2M5YTgzYTAuLjRl
ZGIyMzMyYTdhOWQ3ZDQyYjEwYTQxNDZmOTBhODEyMjQ2YWM1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRFZmZl
Y3QuaCIKICNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJT
ZXQuaCIKIApAQCAtNDUsNiArNDYsOCBAQCBjbGFzcyBDYWxsRE9NUGF0Y2hwb2ludCA6IHB1Ymxp
YyBQYXRjaHBvaW50IHsKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTgwCiAgICAgYm9vbCByZXF1aXJlR2xvYmFsT2JqZWN0IHsgdHJ1ZSB9OwogCisg
ICAgRWZmZWN0IGVmZmVjdCB7IH07CisKIHByaXZhdGU6CiAgICAgQ2FsbERPTVBhdGNocG9pbnQo
KSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRFZmZlY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZm
ZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDZmNTg5NjNkYjdjYmU1Y2JjYzMxZDYzOWZlNDNkM2RjYmQzYjE2
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
RWZmZWN0LmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdl
LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3N0cnVjdCBFZmZlY3QgeworICAgIEhl
YXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBIZWFwUmFuZ2Ugd3JpdGVz
IHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIE9wdGlvbmFsPEhlYXBSYW5nZT4gZGVmOworCisg
ICAgYm9vbCBleGl0c1NpZGV3YXlzIHsgZmFsc2UgfTsKKworICAgIHN0YXRpYyBFZmZlY3QgZm9y
UmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQorICAg
IHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJh
bmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAgICAgICAgcmV0dXJu
IGVmZmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgRWZmZWN0IGZvclB1cmUoKQorICAgIHsKKyAg
ICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpu
b25lKCk7CisgICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKKyAgICAg
ICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAg
eworICAgICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSBkZWY7Cisg
ICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0
LmRlZiA9IGRlZjsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMg
RWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFu
Z2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAgICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVm
ZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKKyAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFu
Z2U7CisgICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7CisgICAgICAgIHJldHVybiBlZmZlY3Q7Cisg
ICAgfQorCisgICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHdyaXRlcyB8fCBleGl0c1NpZGV3YXlzOworICAgIH0KK307CisKK30gfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNDFmMjM5MDFjYTUxMDBiZmQyOTBjYmYxMjMzNjgwMWM2ZjhjYjcyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFu
Z2UuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUSGVhcFJh
bmdlLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERP
TUpJVCB7CisKK3ZvaWQgSGVhcFJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgb3V0LnByaW50ZigiMHgleC0weCV4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJlZ2lu
KCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kKCkpKTsKK30KKworCit9IH0KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5n
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZDVkNGNmOWRmYzc1ZGNkMjI2NjA5YTc0ODVhYmMzMjY5N2NhZmZiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2Uu
aApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworY2xhc3MgSGVhcFJhbmdlIHsKK3B1YmxpYzoK
KyAgICBjb25zdGV4cHIgSGVhcFJhbmdlKCkgPSBkZWZhdWx0OworCisgICAgY29uc3RleHByIEhl
YXBSYW5nZSh1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kKQorICAgICAgICA6IG1fYmVnaW4o
YmVnaW4pCisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIFJh
d1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24gfTsKKyAgICBleHBsaWNpdCBj
b25zdGV4cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkK
KyAgICAgICAgOiBtX2JlZ2luKHN0YXRpY19jYXN0PHVpbnQxNl90Pih2YWx1ZSA+PiAxNikpCisg
ICAgICAgICwgbV9lbmQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKSkKKyAgICB7CisgICAg
fQorCisgICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShSYXdSZXByZXNlbnRhdGlvbiwgdmFsdWUpOworICAg
IH0KKworICAgIHVpbnQxNl90IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQorICAg
IHVpbnQxNl90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgdWludDMyX3QgcmF3
UmVwcmVzZW50YXRpb24oKSB7IHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fYmVnaW4p
IDw8IDE2KSB8IG1fZW5kOyB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2JlZ2luICE9IG1fZW5kOworICAgIH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbiAmJiBtX2VuZCA9PSBvdGhlci5tX2Vu
ZDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSB0b3AoKSB7IHJldHVy
biBIZWFwUmFuZ2UoMCwgVUlOVDE2X01BWCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBS
YW5nZSBub25lKCkgeyByZXR1cm4gSGVhcFJhbmdlKFVJTlQxNl9NQVgsIFVJTlQxNl9NQVgpOyB9
IC8vIEVtcHR5IHJhbmdlLgorCisgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCEqdGhpcyB8fCAhb3RoZXIp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgqdGhpcyA9PSBvdGhlcikK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPD0gb3Ro
ZXIubV9iZWdpbiAmJiBvdGhlci5tX2VuZCA8PSBtX2VuZDsKKyAgICB9CisKKyAgICBib29sIGlz
U3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoISp0aGlzIHx8ICFvdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCp0aGlzID09IG90aGVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBpc1N0cmljdFN1YnR5cGVPZihvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBvdmVybGFw
cyhjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6cmFuZ2VzT3ZlcmxhcChtX2JlZ2luLCBtX2VuZCwgb3RoZXIubV9iZWdpbiwgb3RoZXIubV9l
bmQpOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYmVnaW4geyBVSU5UMTZfTUFY
IH07CisgICAgdWludDE2X3QgbV9lbmQgeyBVSU5UMTZfTUFYIH07Cit9OworCit9IH0KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggYTY1N2UwNmM3ODkxOWMyMmM5OGRjYWEzZGIzMzFhZTkxY2ZkMzFkZC4uM2MzZThkYTUzZmNl
ZjIwZGQ4NDk4NTM2ZmYxMzE3YzFhY2M3ZWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTA2NCw3ICs5MDY0LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQogICAgIHsKLSAgICAgICAg
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogZG9tSklUID0gbV9ub2RlLT5jYWxsRE9NUGF0Y2hw
b2ludCgpOworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBkb21KSVQgPSBtX25v
ZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CiAgICAgICAgIGludCBjaGlsZEluZGV4ID0g
MDsKIAogICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmluZGV4IDFk
MmZjMTg0ZTBjMDQwZmY3OWMxYjQ2MTUyZDkzZTUzNzZlYmNhMzcuLmMxMDkzZmE2ODA2ODFhMjI2
NjNiMjliNzcyMjExMmY3ZDk5Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hdGhF
eHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQ0NCwxMiArNDQ0
LDggQEAgaW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwgVCBsZWZ0
TWF4LCBUIHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQogewogICAgIEFTU0VSVChsZWZ0TWluIDwgbGVm
dE1heCk7CiAgICAgQVNTRVJUKHJpZ2h0TWluIDwgcmlnaHRNYXgpOwotICAgIAotICAgIGlmIChs
ZWZ0TWluIDw9IHJpZ2h0TWluICYmIGxlZnRNYXggPiByaWdodE1pbikKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBsZWZ0TWlu
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
bGVmdE1heCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsKIH0KIAogLy8gUGFzcyBy
YW5nZXMgd2l0aCB0aGUgbWluIGJlaW5nIGluY2x1c2l2ZSBhbmQgdGhlIG1heCBiZWluZyBleGNs
dXNpdmUuIEZvciBleGFtcGxlLCB0aGlzIHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBi
NmE3MGZlZWFiZDcxYzUzYmNjMmFlNzMwMWIxZDI0N2E0NTRiNjhkLi5hMjViZTc1MjlhOGM4Y2Ux
YjgyZWY4NDNjZmEzYTAwN2NkNTI1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUzOCw2
ICsxNTM4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgZG9tL2RlZmF1bHQvUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAKICAgICBkb21qaXQvSlNOb2RlRE9NSklULmNwcAogCiAgICAgZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJmYjU0MjI5ZDEyMzBmOWM2N2UxZWY2ZWIyNzc1NzFjMzQ2N2JlZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJh
Y3RIZWFwX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFwX2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRBYnN0cmFjdEhlYXAuaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEVmZmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEVmZmVj
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVkYzJlZjY4OWIwNTc3NDgwM2E2NzMyYjkzNGQ0ZmZlZTcwNzA2NjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklURWZmZWN0LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9ET01KSVRFZmZlY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzN2ZhNWVkMjVlNGU1YThmMGJiNGZmMTcxYmEzYzA4Njc4MTVlYWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUSGVh
cFJhbmdlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9ET01KSVRIZWFwUmFuZ2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NzVhZDAyZGQzMjRjMTE2ZGRk
OGJiOTQ2MTg0NzA4ZjQ4OTg0ZDIuLmRiMTQ0ZTFjNzgxMTdiYzdmZjBiN2YxMDVhZTJiZmE2OTNl
MTk3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYxNjksNiArNjE2OSw4IEBACiAJCUUxRkY4RjZEMTgwREI1QkUwMDEzMjY3
NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURBNzIxOTAwMDE5NDAxMiAvKiBK
U05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi87IH07
CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcyMThEMDAx
OTQwMTIgLyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CisJCUUzNUNBMTRFMURCQzNB
NDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwogCQlFMzc3RkU0RDFE
QURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVD
b25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJB
RDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5
OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMg
LyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CkBAIC0xMzk1MSw2ICsxMzk1Myw4IEBACiAJ
CUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjZCMTgwREI1QkUw
MDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRIZWxwZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5
NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjI2ODQsNiArMjI2ODgsOCBAQAogCQlFM0FGQTk2MzFEQTZFOEFGMDAyODYx
QkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAgKi8sCisJCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyog
RE9NSklUSGVscGVycy5oICovLAogCQkJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05v
ZGVET01KSVQuY3BwICovLAogCQkJKTsKQEAgLTI2NjI2LDYgKzI2NjMyLDcgQEAKIAkJCQk0Mzkw
NDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVDQTE0RTFEQkMzQTQyMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5k
ZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzI4LDYgKzI4NzM1LDcgQEAK
IAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyogRm9udENh
Y2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJB
RkZDN0MwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2NvYS5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MDBjNjQ4MzJmNDQ3YTA4
Y2VjYjg0NjVhNmY1ZTNlYTk0ZGI4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisK
KyNpbmNsdWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
IG5hbWVzcGFjZSBET01KSVQgeworCitzdGF0aWMgY29uc3QgdmVyYm9zZSA9IGZhbHNlOworCitB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKK3sKKyAgICBK
U0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIERPTUhlYXAoIkRPTSIpOworI2RlZmluZSBET01KSVRf
REVGSU5FX0hFQVAobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUj
I0hlYXAoI25hbWUpOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklO
RV9IRUFQKQorI3VuZGVmIERPTUpJVF9ERUZJTkVfSEVBUAorCisjZGVmaW5lIERPTUpJVF9JTklU
SUFMSVpFX0hFQVAobmFtZSwgcGFyZW50KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFyZW50IyNI
ZWFwKTsKKyAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX0hF
QVApCisjdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfSEVBUAorCisgICAgRE9NSGVhcC5jb21wdXRl
KDApOworCisjZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJlbnQpIG5h
bWUgPSBuYW1lIyNIZWFwLnJhbmdlKCk7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChE
T01KSVRfSU5JVElBTElaRV9NRU1CRVIpCisjdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVS
CisKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkYXRhTG9nKCJET01KSVQgSGVhcCBSZXBv
c2l0b3J5OlxuIik7CisgICAgICAgIERPTUhlYXAuZGVlcER1bXAoV1RGOjpkYXRhRmlsZSgpKTsK
KyAgICB9Cit9CisKK2NvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJl
cG9zaXRvcnk6Omluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeT4gcmVwb3NpdG9yeTsKKyAgICByZXR1cm4gcmVwb3NpdG9yeS5nZXQo
KTsKK30KKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM2NDQ5MGFmMzBiOTM1
MDgyZmY4NDdmYmY3NmMyYzcyMWIwZDM2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisjaWYg
RU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwor
Ly8gRGVzY3JpYmUgeW91ciBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBoZXJlLgorLy8gVihBYnN0
cmFjdEhlYXBOYW1lLCBQYXJlbnQpCisjZGVmaW5lIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1Qo
VikgXAorICAgIFYoTm9kZSwgRE9NKSBcCisgICAgVihOb2RlX2ZpcnN0Q2hpbGQsIE5vZGUpIFwK
KyAgICBWKE5vZGVfbGFzdENoaWxkLCBOb2RlKSBcCisgICAgVihOb2RlX3BhcmVudE5vZGUsIE5v
ZGUpIFwKKyAgICBWKE5vZGVfbmV4dFNpYmxpbmcsIE5vZGUpIFwKKyAgICBWKE5vZGVfcHJldmlv
dXNTaWJsaW5nLCBOb2RlKSBcCisKKworY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7CitX
VEZfTUFLRV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKK3B1YmxpYzoKKyAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT47Cisg
ICAgc3RhdGljIGNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIGluc3RhbmNlKCk7CisKKyAg
ICBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIERPTTsKKworI2RlZmluZSBET01KSVRfREVGSU5FX01F
TUJFUihuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgbmFtZTsKKyAgICBET01K
SVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfTUVNQkVSKQorI3VuZGVmIERPTUpJ
VF9ERUZJTkVfTUVNQkVSCisKK3ByaXZhdGU6CisgICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgp
OworfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgK
aW5kZXggMTgwNmIyYWZhMWM0NzFjMDMwNDYzMGI4MDM4ZjAzMjNmNmUzNjFlYi4uYTg1YmNkY2Fi
NTgxZWIwMWJlMGMzMGY5NmYzNWVjZDk0ZDRkMTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUSGVscGVycy5oCkBAIC0zMiw4ICszMiw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgRE9NSklUSGVscGVycyB7CituYW1lc3BhY2UgV2Vi
Q29yZSB7IG5hbWVzcGFjZSBET01KSVQgewogCiB1c2luZyBKU0M6OkNDYWxsSGVscGVyczsKIHVz
aW5nIEpTQzo6R1BSUmVnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9k
ZURPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRl
eCBiOTY5M2FjYWE3NTJhNDQ0OGQ0MTZjYzA0MTc3NzJjMDAwZTg3Y2IyLi4yODAyY2ZhNmFhMmZk
M2U5MzM3MzIxZWJiODAzYmQ1OGMwZDQyNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvSlNOb2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2Rl
RE9NSklULmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1
ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJET01KSVRIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAt
NTIsMTEgKzUzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdG9XcmFwcGVyU2xv
dyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFdyYXBwZWROb2RlPgotc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmZzZXQsIElzQ29udGFp
bmVyR3VhcmRSZXF1aXJlbWVudCBpc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQpCitzdGF0aWMg
UmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNl
dEFjY2VzcyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQgaXND
b250YWluZXJHdWFyZFJlcXVpcmVtZW50KQogewotICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7
CisgICAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
Wz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykg
eworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBnbG9i
YWxPYmplY3QgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBub2RlID0gcGFyYW1z
WzJdLmdwcigpOwpAQCAtNzIsNyArNzMsNyBAQCBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9mZgogICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaCwgb2Zmc2V0KSwg
c2NyYXRjaCk7CiAgICAgICAgIG51bGxDYXNlcy5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoKSk7CiAKLSAgICAgICAgRE9NSklUSGVscGVyczo6dG9X
cmFwcGVyPFdyYXBwZWROb2RlPihqaXQsIHBhcmFtcywgc2NyYXRjaCwgZ2xvYmFsT2JqZWN0LCBy
ZXN1bHQsIHRvV3JhcHBlclNsb3c8V3JhcHBlZE5vZGU+LCBwYXJhbXNbMV0udmFsdWUoKSk7Cisg
ICAgICAgIERPTUpJVDo6dG9XcmFwcGVyPFdyYXBwZWROb2RlPihqaXQsIHBhcmFtcywgc2NyYXRj
aCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQsIHRvV3JhcHBlclNsb3c8V3JhcHBlZE5vZGU+LCBwYXJh
bXNbMV0udmFsdWUoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1
bXAoKTsKIAogICAgICAgICBudWxsQ2FzZXMubGluaygmaml0KTsKQEAgLTgzLDgzICs4NCw5OSBA
QCBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JP
ZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9mZgogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCi1z
dGF0aWMgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tOb2RlKCkKK3N0YXRpYyBSZWY8SlND
OjpET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrTm9kZSgpCiB7Ci0gICAgUmVmPERPTUpJVDo6UGF0
Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7Ci0gICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9p
bnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01K
SVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVRI
ZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAg
ZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVQ6OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1sw
XS5ncHIoKSkpOwogICAgICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOwogICAgIH0pOwogICAgIHJl
dHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI2ZpcnN0Q2hpbGQuCi1SZWY8RE9NSklUOjpQ
YXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogewogICAg
IHJldHVybiBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1
cm4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwg
Q29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgp
LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRv
JiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAg
IGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FT
VF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hp
bGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7
CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhl
YXAuTm9kZV9maXJzdENoaWxkKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9k
ZSNsYXN0Q2hpbGQuCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklU
OjpjaGVja0RPTSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRE
T01KSVQ6OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkK
K1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6
OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5v
ZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjps
YXN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1
aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9y
T2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBD
b250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJl
cXVpcmVtZW50OjpSZXF1aXJlZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9sYXN0Q2hpbGQpOworICAgIHJldHVybiBwYXRj
aHBvaW50OwogfQogCiAvLyBOb2RlI25leHRTaWJsaW5nLgotUmVmPERPTUpJVDo6UGF0Y2hwb2lu
dD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlNDOjpET01KSVQ6OlBh
dGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVy
biBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVO
ZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET00oKQogewotICAgIHJldHVybiBj
cmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5
T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAg
IGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3Rh
bmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vz
czxOb2RlPihOb2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICByZXR1
cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNwcmV2aW91c1NpYmxpbmcuCi1SZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCitSZWY8
SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNr
RE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxK
U0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6
OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5v
ZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2lu
dCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJs
aW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLk5vZGVfcHJldmlvdXNTaWJsaW5nKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0K
IAogLy8gTm9kZSNwYXJlbnROb2RlLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVu
dE5vZGVET01KSVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9k
ZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7
CiB9CiAKLVJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJ
VDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlUGFy
ZW50Tm9kZURPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JP
ZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgp
LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBh
dXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOwor
ICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Q29udGFp
bmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3BhcmVudE5vZGUpOworICAgIHJldHVy
biBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI25vZGVUeXBlLgotUmVmPERPTUpJVDo6UGF0Y2hw
b2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlNDOjpET01KSVQ6OlBh
dGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBj
aGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2Rl
VHlwZURPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNhbGxET00oKQogewotICAgIFJlZjxET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3Jl
YXRlKCk7CisgICAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2lu
dCA9IEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUHVyZSgpOwogICAgIHBhdGNo
cG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsKLSAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMm
IHBhcmFtcykgeworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJz
JiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQ
UlJlZyBub2RlID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICBqaXQubG9hZDgoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKG5vZGUsIEpTQzo6SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHJl
c3VsdC5wYXlsb2FkR1BSKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292535</attachid>
            <date>2016-10-22 21:53:37 -0700</date>
            <delta_ts>2016-10-22 21:56:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022214956.patch</filename>
            <type>text/plain</type>
            <size>76147</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4wZDU5Y2NlNTFhNTAxZDA1
NDc2OTNmYWY0MzJkOWJlNmZjNGUwZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6Om92
ZXJsYXBzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlclNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q2xvYmJlclNldDo6b3ZlcmxhcHMpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9j
YXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTURhdGEpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbGxET01EYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNDYWxsRE9NUGF0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Y2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDYWxsRE9NKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hw
b2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpkdW1wKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpBYnN0cmFjdEhlYXA6OnNoYWxsb3dEdW1wKToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmRlZXBEdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
Q2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6
OkFic3RyYWN0SGVhcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpzZXRQ
YXJlbnQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6aXNSb290KToKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmlzQ29tcHV0ZWQpOgorICAgICAgICAo
SlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6cmFuZ2UpOgorICAgICAgICAqIGRvbWppdC9ET01K
SVRDYWxsRE9NUGF0Y2hwb2ludC5oOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclB1cmUpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6Om11
c3RHZW5lcmF0ZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9p
bnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmR1bXApOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRPTUpJVDo6
SGVhcFJhbmdlOjpIZWFwUmFuZ2UpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpiZWdpbik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjplbmQpOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6cmF3UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpET01KSVQ6Okhl
YXBSYW5nZTo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpub25lKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpIZWFwUmFuZ2U6OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpIZWFwUmFuZ2U6OmlzU3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFu
Z2U6Om92ZXJsYXBzKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorCiAyMDE2
LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGls
bCBhbG9uZyBib3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9u
IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uYzgy
YzY0NjhkODNlYmE0M2M4YzdhOWE4MTE1MjE5NzAxM2ZiYmM2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHBy
ZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAgKFdURjo6bm9uRW1wdHlSYW5nZXNPdmVy
bGFwKToKKwogMjAxNi0xMC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBjYWxscwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIx
OTgzYjk2NzE0YjJiMjdmZDgwZWE5NDkwZTE4ZjA0ZDdkMDkyODkuLjljMzA0OTQ5ZTQ2ODg0ZGUx
YmY1MDEyZDI2NjBmMWIzZWJlZmVjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAx
Ni0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVm
ZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
ZG9taml0L0RPTUpJVEVmZmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAoV2ViQ29yZTo6
RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNo
cG9pbnQuaC4KKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RXb3JsZElzTm9ybWFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V2Vha0lzTGl2ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjp0cnlMb29rVXBXcmFw
cGVyQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dG9X
cmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5j
aElmRE9NV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJz
OjpicmFuY2hJZk5vdERPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUSGVscGVyczo6YnJhbmNoSWZOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RFbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmRG9jdW1lbnRXcmFwcGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RG9jdW1l
bnRXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2hlY2tOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVGaXJzdENoaWxk
RE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RDaGlsZERPTUpJ
VDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVj
a0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00pOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVU
eXBlRE9NSklUOjpjYWxsRE9NKToKKwogMjAxNi0xMC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVcGdyYWRpbmcgY3VzdG9tIGVsZW1lbnQgc2hvdWxkIGVu
cXVldWUgYXR0cmlidXRlQ2hhbmdlZCBhbmQgY29ubmVjdGVkIGNhbGxiYWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0
OTJiNzMwMDQyZDguLjg3ZjczZTVhMDcwY2MxMjIxZmM4ZDQyMzIyNWMzNzE4NjA2NDllNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQxMyw2ICs0MTMsOSBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5
bi1pbnRlbC5jCiAgICAgZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODZfc3luLmMKIAorICAgIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCisgICAgZG9taml0L0RPTUpJVEhlYXBSYW5nZS5j
cHAKKwogICAgIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwCiAgICAgZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwCiAgICAgZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NmFhMDg0ZTgxMWRhMzE0ZGE2Y2ZiNDcwMWEzMzM4
ZmIzMGMzMzcxLi5mYWIyMTk4MjZiMzk3NzU3N2Q1ZTBkMzQ1M2NmM2NkMmNlMDUxZTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2Myw2ICsyMTYzLDEwIEBACiAJCUUzNTU1
QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAw
RjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8q
IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVy
UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlw
ZS5oICovOyB9OworCQlFMzVDQTE1MzFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNB
MTUxMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwICovOyB9OworCQlFMzVD
QTE1NDFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYg
LyogRE9NSklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0
SGVhcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVDQTE0RjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLzsgfTsK
KwkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1
NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0Uw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLzsgfTsKQEAgLTIxNzcsNiArMjE4MSw3IEBACiAJCUUzQkZEMEJCMURBRjgwODcwMDY1REVB
MiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIg
LyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovOyB9OwogCQlFM0JGRDBC
QzFEQUY4MDhFMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEJBMURB
RjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovOyB9
OwogCQlFM0MwOEUzQzFEQTQxQjgxMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDMDhFM0IxREE0MUI3
QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9N
SklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
M0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CkBAIC00NTMz
LDYgKzQ1MzgsMTAgQEAKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxE
T01QYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENh
bGxET01QYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUw
MUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1v
ZHVsZUxvYWRlclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJ
VEFic3RyYWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MTFE
QkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVhcFJhbmdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ1NDgsNiArNDU1Nyw3IEBACiAJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAv
KiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAv
KiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklU
UGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRj
aHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzc5Q0FBMURCOUE0RDYw
MEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSklURWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0IxRTI0
MURBNzU0MEEwMEZBMUU1NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4
MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc0MDMsOCArNzQxMywxMyBAQAogCQlFM0ZGNzUyRDFEOUNFOUVBMDBDN0Ux
NkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlFMzVDQTE0RjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAq
LywKKwkJCQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmgg
Ki8sCiAJCQkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBv
aW50LmggKi8sCisJCQkJRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5o
ICovLAogCQkJCUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIu
aCAqLywKKwkJCQlFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNw
cCAqLywKKwkJCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmgg
Ki8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAq
LywKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFt
cy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAqLywK
QEAgLTc2MzIsNiArNzY0Nyw3IEBACiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8qIENv
ZGVCbG9ja1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4OEIy
MDA2NDBBNDcgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5
OTUwMDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICov
LAorCQkJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVw
bGF5SW5wdXRzVGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFMTE2QjEwRkU3NUFD
ODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRDdFNjkx
NDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODI5OSw2
ICs4MzE1LDcgQEAKIAkJCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTUyQzM4MDFB
RERCOEZFMDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWlu
UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDg3NEFFNjE1RUJERTRBMDAyRTM1ODcgLyogSlNT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkIxQzE2MjVCRTAwMzIzRjY3IC8qIEIz
Q0ZHLmggaW4gSGVhZGVycyAqLywKQEAgLTg0MTcsNiArODQzNCw3IEBACiAJCQkJN0MwMDhDRTcx
ODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMwMTg0
MTkxRDEwQzE4OTAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTI0LDYgKzk5NDIsNyBAQAog
CQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRl
Y29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0U0MEQxQjYxOEI2NjAwQzgwRTFFIC8q
IFByb3BlcnR5Q29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNUNBMTUzMURCQzNB
NUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdG
QjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDQ2OURFODEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTk0Miw2ICs5OTYxLDcgQEAKIAkJCQk4NjQyQzUx
MjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzVDQTE1NTFEQkMzQTVGMDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBDN0EwMUI4MkUxQzMw
MDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBD
N0ExMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5jcHAKaW5kZXggMWUxMTAxOTAyZGIyNWVhZDdmOGQ3ZWY5OWI0OWM0ODQxYzE4ZDExZC4uY2Q2
OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkxZDIzYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNDUsNiArNDUsMTAgQEAgdm9p
ZCBBYnN0cmFjdEhlYXA6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBvdXQucHJp
bnQoa2luZCgpKTsKICAgICBpZiAoa2luZCgpID09IEludmFsaWRBYnN0cmFjdEhlYXAgfHwga2lu
ZCgpID09IFdvcmxkIHx8IGtpbmQoKSA9PSBIZWFwIHx8IHBheWxvYWQoKS5pc1RvcCgpKQogICAg
ICAgICByZXR1cm47CisgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICBvdXQu
cHJpbnQoIigiLCBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhwYXlsb2FkKCkudmFsdWUzMigp
KSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBvdXQucHJpbnQoIigiLCBwYXls
b2FkKCksICIpIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCmluZGV4IDBhYmQ1MDI3YjI2YWViMzk0ZjI5YzAzOGZkOWYyZDU5MmU2YzE2MzkuLmY1
MWY4MmZlMTM3ZTI1YTNmNzlhNTJiMWYxMWIwYzUzMzFhMzA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKICNpbmNsdWRl
ICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtNzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8o
SW50ZXJuYWxTdGF0ZSkgXAogICAgIG1hY3JvKEFic29sdXRlKSBcCisgICAgLyogRE9NSklUIHRl
bGxzIHRoZSBoZWFwIHJhbmdlIHdpdGggdGhlIHBhaXIgb2YgaW50ZWdlcnMuICovXAorICAgIG1h
Y3JvKERPTVN0YXRlKSBcCiAgICAgLyogVXNlIHRoaXMgZm9yIHdyaXRlcyBvbmx5LCB0byBpbmRp
Y2F0ZSB0aGF0IHRoaXMgbWF5IGZpcmUgd2F0Y2hwb2ludHMuIFVzdWFsbHkgdGhpcyBpcyBuZXZl
ciBkaXJlY3RseSB3cml0dGVuIGJ1dCBpbnN0ZWFkIHdlIHRlc3QgdG8gc2VlIGlmIGEgbm9kZSBj
bG9iYmVycyB0aGlzOyBpdCBqdXN0IHNvIGhhcHBlbnMgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSB3
b3JsZCB0byBjbG9iYmVyIGl0LiAqL1wKICAgICBtYWNybyhXYXRjaHBvaW50X2ZpcmUpIFwKICAg
ICAvKiBVc2UgdGhlc2UgZm9yIHJlYWRzIG9ubHksIGp1c3QgdG8gaW5kaWNhdGUgdGhhdCBpZiB0
aGUgd29ybGQgZ290IGNsb2JiZXJlZCwgdGhlbiB0aGlzIG9wZXJhdGlvbiB3aWxsIG5vdCB3b3Jr
LiAqL1wKQEAgLTIzMyw2ICsyMzYsMTUgQEAgY2xhc3MgQWJzdHJhY3RIZWFwIHsKICAgICBib29s
IGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEFic3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBBYnN0cmFjdEhlYXAgY3VycmVudCA9ICp0aGlzOworICAgICAgICBpZiAoY3Vy
cmVudC5raW5kKCkgPT0gRE9NU3RhdGUgJiYgb3RoZXIua2luZCgpID09IERPTVN0YXRlKSB7Cisg
ICAgICAgICAgICBQYXlsb2FkIGN1cnJlbnRQYXlsb2FkID0gY3VycmVudC5wYXlsb2FkKCk7Cisg
ICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQoKTsKKyAgICAg
ICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmIChvdGhlclBheWxvYWQuaXNUb3AoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBET01KSVQ6OkhlYXBSYW5n
ZTo6ZnJvbVJhdyhjdXJyZW50UGF5bG9hZC52YWx1ZTMyKCkpLmlzU3RyaWN0U3VidHlwZU9mKERP
TUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KG90aGVyUGF5bG9hZC52YWx1ZTMyKCkpKTsKKyAgICAg
ICAgfQogICAgICAgICB3aGlsZSAoY3VycmVudC5raW5kKCkgIT0gV29ybGQpIHsKICAgICAgICAg
ICAgIGN1cnJlbnQgPSBjdXJyZW50LnN1cGVydHlwZSgpOwogICAgICAgICAgICAgaWYgKGN1cnJl
bnQgPT0gb3RoZXIpCkBAIC0yNDgsNyArMjYwLDE2IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7CiAg
ICAgCiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzID09IG90aGVyIHx8IGlzU3RyaWN0U3VidHlwZU9m
KG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVPZigqdGhpcyk7CisgICAgICAgIGlmICgq
dGhpcyA9PSBvdGhlcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoa2lu
ZCgpID09IERPTVN0YXRlICYmIG90aGVyLmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAg
ICAgUGF5bG9hZCBjdXJyZW50UGF5bG9hZCA9IHBheWxvYWQoKTsKKyAgICAgICAgICAgIFBheWxv
YWQgb3RoZXJQYXlsb2FkID0gb3RoZXIucGF5bG9hZCgpOworICAgICAgICAgICAgaWYgKGN1cnJl
bnRQYXlsb2FkLmlzVG9wKCkgfHwgb3RoZXJQYXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZy
b21SYXcoY3VycmVudFBheWxvYWQudmFsdWUzMigpKS5vdmVybGFwcyhET01KSVQ6OkhlYXBSYW5n
ZTo6ZnJvbVJhdyhvdGhlclBheWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGlzU3RyaWN0U3VidHlwZU9mKG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVP
ZigqdGhpcyk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNEaXNqb2ludChjb25zdCBBYnN0cmFj
dEhlYXAmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGExMmYwOWNiMWI5NGEw
YTMwNDM2MzcwYzcyYWEyMWM1ZWQ4MTk1ZmIuLmYwOWQ0MWI3YjdjYTMzM2EyNDA5YjFlNTQ1YjU1
ODQwZGNmMGZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIyODksMTAgKzIyODksMTMgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZmlsdGVyQ2xhc3NJbmZvKHZhbHVlLCBu
b2RlLT5jbGFzc0luZm8oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIENhbGxE
T006Ci0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJM
aW1pdCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAg
ICAgICBpZiAocGF0Y2hwb2ludC0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlD
aGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNDg4NDIwNmIzZjU2ZDc0
ZTZmMjZlZjU2YjU4Y2ZhYTU2NTcwZDg5OS4uYTViMDRjYTY2MTQ1YWI1M2U2NjI4NzdhZGE3ZDIz
N2Q0Y2IyOWRkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTI2NzMsNiArMjY3MywxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJp
YQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJs
ZXNzQ2FsbERPTShOb2RlKiBub2RlKQoreworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgIGlmICgh
cGF0Y2hwb2ludC0+ZWZmZWN0Lm11c3RHZW5lcmF0ZSgpKQorICAgICAgICBub2RlLT5jbGVhckZs
YWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVE
T01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50LCBOb2RlKiB0aGlzTm9kZSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBp
ZiAoIXZhcmlhbnQuZG9tSklUKCkpCkBAIC0yNjkxLDE0ICsyNjk4LDIxIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhp
bmd5IGhlcmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJl
bnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVj
a0RPTSwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhkb21KSVQtPnRo
aXNDbGFzc0luZm8oKSksIHRoaXNOb2RlKTsKIAorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0
YSA9IG1fZ3JhcGgubV9jYWxsRE9NRGF0YS5hZGQoKTsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gY2FsbERPTVBhdGNocG9pbnQgPSBkb21KSVQtPmNhbGxET00oKTsKICAgICBt
X2dyYXBoLm1fZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNhbGxET01QYXRjaHBvaW50LnB0cigp
KTsKKworICAgIGNhbGxET01EYXRhLT5kb21KSVQgPSBkb21KSVQ7CisgICAgY2FsbERPTURhdGEt
PnBhdGNocG9pbnQgPSBjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKTsKKwogICAgIGlmIChjYWxsRE9N
UGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewogICAgICAgICBOb2RlKiBnbG9iYWxP
YmplY3QgPSBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwgdGhpc05vZGUpOwogICAgICAgICBh
ZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05vZGUg
aXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBlci4KICAgICB9CiAgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc05vZGUpOwotICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTVBhdGNo
cG9pbnQucHRyKCkpLCBPcEluZm8ocHJlZGljdGlvbikpKTsKKyAgICBOb2RlKiBjYWxsRE9NTm9k
ZSA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTURhdGEp
LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgIGJsZXNzQ2FsbERPTShjYWxsRE9NTm9kZSk7Cisg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2FsbERPTU5vZGUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
U2V0LmNwcAppbmRleCBkNDYzMGUzNzBjYjBiYWMyM2Q5OTQyZjVmZmNlMzhmYjU4ZGEyZGVjLi41
OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUxYWExYTc5MjQ0OWY3ZTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKQEAgLTgxLDYgKzgxLDIzIEBAIGJvb2wg
Q2xvYmJlclNldDo6b3ZlcmxhcHMoQWJzdHJhY3RIZWFwIGhlYXApIGNvbnN0CiB7CiAgICAgaWYg
KG1fY2xvYmJlcnMuZmluZChoZWFwKSAhPSBtX2Nsb2JiZXJzLmVuZCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5raW5kKCkgPT0gRE9NU3RhdGUgJiYgIWhlYXAucGF5bG9h
ZCgpLmlzVG9wKCkpIHsKKyAgICAgICAgLy8gRE9NU3RhdGUgaGVhcCBoYXMgaXRzIG93biBoaWVy
YXJjaHkuIEZvciBkaXJlY3QgaGVhcCBjbG9iYmVycyB0aGF0IHBheWxvYWQgaXMgbm90IFRvcCwK
KyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1ZXJ5IHdoZXRoZXIgdGhlIGNsb2JiZXIgb3ZlcmxhcHMg
d2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBE
T01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhoZWFwLnBheWxvYWQoKS52YWx1ZTMyKCkpOworICAg
ICAgICBmb3IgKGF1dG8gcGFpciA6IG1fY2xvYmJlcnMpIHsKKyAgICAgICAgICAgIGJvb2wgZGly
ZWN0ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGlyZWN0KQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RIZWFwIGNsb2JiZXIgPSBwYWlyLmtl
eTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLmtpbmQoKSAhPSBET01TdGF0ZSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLnBheWxvYWQoKS5pc1Rv
cCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKERPTUpJVDo6
SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2JiZXIucGF5bG9hZCgpLnZhbHVlMzIoKSkub3ZlcmxhcHMo
cmFuZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQog
ICAgIHdoaWxlIChoZWFwLmtpbmQoKSAhPSBXb3JsZCkgewogICAgICAgICBoZWFwID0gaGVhcC5z
dXBlcnR5cGUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5zKGhlYXApKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAppbmRleCA3MjlmMzliMTE4NTE4YTk1NTVlYzQ2MTY2
ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdmZGI0MjMyZWMwYjJhYzUwMGE2NTA1ZTRjOTU0OTM0ZDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaApAQCAtNTIsMTEg
KzUyLDExIEBAIGNsYXNzIENsb2JiZXJTZXQgewogICAgIAogICAgIHZvaWQgYWRkKEFic3RyYWN0
SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwoY29uc3QgQ2xvYmJlclNldCYpOwotICAgIGJvb2wgY29u
dGFpbnMoQWJzdHJhY3RIZWFwKSBjb25zdDsKICAgICBib29sIG92ZXJsYXBzKEFic3RyYWN0SGVh
cCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAgIC8vIENhbGxzIHVzZWZ1bCBm
b3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERvIG5vdCBjYWxsIGZvciBub24g
ZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3QgaGFuZGxlIERPTVN0YXRlIGhp
ZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IGRpcmVj
dCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBzdXBlcigpIGNvbnN0OwpAQCAt
NjQsNiArNjQsOCBAQCBjbGFzcyBDbG9iYmVyU2V0IHsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisgICAgYm9vbCBjb250YWlucyhBYnN0cmFjdEhl
YXApIGNvbnN0OworCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IHNldE9mKGJvb2wgZGlyZWN0
KSBjb25zdDsKICAgICAKICAgICAvLyBNYXBzIGhlYXAgdG86CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5Mzg3MmU1MDgxODBkMmI1ZjJj
YzZiNmFiYzg0NGMuLmU1MmY3NzhmNDhhZjJmYjAzNzg2MDE1Y2MzZjNiNzc0ODcwZDNiZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eU5vZGUu
aCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTkwNywx
MCArOTA4LDQyIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fz
ZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAgICAgd3JpdGUoSGVhcCk7Cisg
ICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBh
dGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBET01K
SVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRjaHBvaW50LT5lZmZlY3Q7CisgICAgICAgIGlmIChlZmZl
Y3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0gRE9NSklUOjpIZWFw
UmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3Qu
cmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZl
Y3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9PSBET01KSVQ6Okhl
YXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7IC8vIFdlIGRvIG5v
dCBhc3N1bWUgdGhhdCBET00gb3BlcmF0aW9ucyB3aWxsIHdyaXRlKFN0YWNrKS4KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlm
IChlZmZlY3QuZGVmKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vZGUtPm51
bUNoaWxkcmVuKCkgPD0gQWRqYWNlbmN5TGlzdDo6U2l6ZSwgIkN1cnJlbnRseSB3ZSBvbmx5IGFs
bG93IHB1cmUgQ2FsbERPTSB0byBoYXZlIHVwIHRvIDMgY2hpbGRyZW4uIik7CisgICAgICAgICAg
ICBFZGdlIGVkZ2VzW0FkamFjZW5jeUxpc3Q6OlNpemVdOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICBlZGdlc1tpXSA9IGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGkpOworCisgICAgICAgICAgICBE
T01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAg
IGlmIChyYW5nZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAg
IGRlZihQdXJlVmFsdWUoQ2FsbERPTSwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhl
ZCwgZWRnZXNbMF0sIGVkZ2VzWzFdLCBlZGdlc1syXSksIG5vZGUtPmNhbGxET01EYXRhKCktPmRv
bUpJVCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRGVmIHdpdGgg
aGVhcCBsb2NhdGlvbi4gV2UgZG8gbm90IGluY2x1ZGUgIkdsb2JhbE9iamVjdCIgZm9yIHRoYXQg
c2luY2UgdGhpcyBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUgYmFzZSBub2RlLgorICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHN1cHBvcnRpbmcgdGhlIG90aGVyIG5vZGVzIGxp
a2UgZ2V0RWxlbWVudEJ5SWQoInN0cmluZyIpLCB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgYmFzZSBh
bmQgdGhlIGlkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkg
c2VlIHRoZSBET01KSVQgZ2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5jbHVkaW5nICJiYXNlIiBpcyBv
ay4KKyAgICAgICAgICAgICAgICBFZGdlIGJhc2UgPSBlZGdlc1swXTsKKyAgICAgICAgICAgICAg
ICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZSA9IGVkZ2VzWzFdOworICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9N
U3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24o
KSksIGJhc2UpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJh
eWlmeVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDNmMTM4NDJjYWY0YjVjNmVlMWYwOWM1NGFhM2Q4YTAwNjIzNmM1MjkuLmYzNWI2NmNlMTdl
NDAzOTgyZDAyOGFmMzgyYjkxYmQ2MDg1N2VhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTExOCw3ICsxMTgsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4
ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6Ci0gICAgY2FzZSBDYWxsRE9NOgogICAg
IGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6
CkBAIC0yOTksNiArMjk4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICBjYXNlIENyZWF0ZVJlc3Q6CiAg
ICAgY2FzZSBUb0xvd2VyQ2FzZToKKyAgICBjYXNlIENhbGxET006CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzM2MwY2YxOTIwODViNTAwNGIy
MDA4OWUyZDNiMDY5MjkwNDg4NTk4Li5mOTUxYzJlYTBmYTNiMzMxMTIzNGFjYjI3NjIwMzE3YTI1
M2UxMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTE3MTIsNyArMTcxMiw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
CiAgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAw
OwotICAgICAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgICAgICBET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKICAg
ICAgICAgICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNo
aWxkSW5kZXgrKykpOyAvLyBHbG9iYWxPYmplY3QuCiAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA3NmIyYmFlYzcxNmMyZjM2YjZiZTU0
MzYwYTlkMzNkZDRhMTRmM2FjLi5mOTU3ZjVjZmJkNzg4ZWRkNjI2ODk1ZmYxZGUzNTA3MTM2ZDE0
MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC05MDEsNiArOTAxLDcg
QEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxMb2Fk
VmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+
IG1fc3RhY2tBY2Nlc3NEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNWYWx1ZXM7
CisgICAgQmFnPENhbGxET01EYXRhPiBtX2NhbGxET01EYXRhOwogICAgIFZlY3RvcjxJbmxpbmVW
YXJpYWJsZURhdGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJs
b2NrKiwgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxp
dmVuZXNzOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
S2lsbHM+PiBtX2J5dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggODQ3MDYzN2RmMDA2NjA0ZDMyNmQ1NTFhNGJiMzQyYTJm
MDIwNTA2OC4uOWIyMjkyZDUwMjYwY2YwZTcxNTQ4YzY2NGZhY2QxZWRjY2U1ZGY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcApAQCAtMTUyLDYg
KzE1Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2NhdGlvbktp
bmQga2luZCkKICAgICBjYXNlIE1hcEhhc0xvYzoKICAgICAgICAgb3V0LnByaW50KCJNYXBIYXNM
b2MiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRE9NU3RhdGVMb2M6CisgICAgICAgIG91
dC5wcmludCgiRE9NU3RhdGVMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggNzA0ZDE5MWFmOGU1MThiYzBlOWY1NTNkNDc4ZDhh
ZjZkNGU2OWI1Ni4uNjM1N2JlMTgwZjNkMDgxZTFlYzkwYTRkNDIxMWRmMDRhODZiODkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02MCw3ICs2
MCw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTdGFja1BheWxvYWRMb2MsCiAgICAgTWFw
QnVja2V0TG9jLAogICAgIEpTTWFwR2V0TG9jLAotICAgIE1hcEhhc0xvYworICAgIE1hcEhhc0xv
YywKKyAgICBET01TdGF0ZUxvYywKIH07CiAKIGNsYXNzIEhlYXBMb2NhdGlvbiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKaW5kZXggZTYwOTc2NGU4NTljZjgw
ZGRhYzU4YjNjNDJjMDcwNWMxMmU5MjYzYS4uOTdlMWVhYWRhZTlhMDQ4MDAyZWVkYTM3ZmU3YTU2
YWU5ZTRlNmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNN
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNw
cApAQCAtMzM5LDcgKzMzOSw3IEBAIGNsYXNzIExJQ01QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIC8vIEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgd2UgY3Vy
cmVudGx5IGtub3cgaG93IHRvIGhvaXN0CiAgICAgICAgIC8vIGRvbid0IGhhdmUgdmFyLWFyZyBj
aGlsZHJlbi4gVGhhdCBtYXkgY2hhbmdlIGFuZCB0aGVuIHdlIGNhbiBmaXggdGhpcwogICAgICAg
ICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFzc2VydCB0aGF0J3MgdGhlIGNhc2UuCi0g
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhh
c1ZhckFyZ3MpKTsKKyAgICAgICAgLy8gREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUt
PmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICAKICAgICAgICAgbm9kZVJlZiA9
IG1fZ3JhcGguYWRkTm9kZShDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGM5NDExZDUwY2Zi
YTljNTRiMDJjMzQ4NjQ5N2U0MDM0MTI3YWRkYmMuLjBkMWE0YjU1ODE0MzcyOWFhOGMzMjJmMjg0
NjE4M2QxZDQzNjRkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OSw2
ICs1OSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQYXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTVBhdGNocG9pbnQ7
CiB9CkBAIC0yMzEsNiArMjMyLDExIEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZs
dXNoZWRBdCBmbHVzaGVkQXQoKSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9j
YWwpOyB9CiB9OwogCitzdHJ1Y3QgQ2FsbERPTURhdGEgeworICAgIERPTUpJVDo6R2V0dGVyU2V0
dGVyKiBkb21KSVQgeyBudWxscHRyIH07CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCog
cGF0Y2hwb2ludCB7IG51bGxwdHIgfTsKK307CisKIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5v
ZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4K
QEAgLTIzMzYsMTUgKzIzNDIsMTUgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8RE9NSklUOjpQYXRjaHBvaW50Kj4oKTsKICAgICB9CiAKLSAgICBib29sIGhhc0Nh
bGxET01QYXRjaHBvaW50KCkgY29uc3QKKyAgICBib29sIGhhc0NhbGxET01EYXRhKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IENhbGxET007CiAgICAgfQogCi0gICAgRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludCogY2FsbERPTVBhdGNocG9pbnQoKQorICAgIENhbGxET01E
YXRhKiBjYWxsRE9NRGF0YSgpCiAgICAgewotICAgICAgICBBU1NFUlQoaGFzQ2FsbERPTVBhdGNo
cG9pbnQoKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50Kj4oKTsKKyAgICAgICAgQVNTRVJUKGhhc0NhbGxET01EYXRhKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8Q2FsbERPTURhdGEqPigpOwogICAgIH0KIAogICAgIGJvb2wgaGFz
Q2xhc3NJbmZvKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggNWU2NGJhZjkzYzdiYzEyNzE2Y2E3NzgyMzI1NzQ4OTY0MzJm
ODk5MS4uMzM5ZmUyNzM4MDMwODNhYzA2MDY1NWEzZDFkMDYxOWNkMjMxMTg1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyMjUs
NyArNzIyNSw3IEBAIHN0YXRpYyB2b2lkIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0
Y2hwb2ludChTcGVjdWxhdGl2ZUpJVCogaml0LCBWZWN0b3I8CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiB7Ci0gICAgRE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCkt
PnBhdGNocG9pbnQ7CiAKICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CiAgICAgVmVjdG9y
PEZQUlJlZz4gZnBTY3JhdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YTcyOWU1OWM1OTkzZWIwZWZl
OTVjZWRlZjExMTIwOTE4MzI4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAuaCIKKworI2lmIEVOQUJMRShKSVQp
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordm9pZCBBYnN0cmFjdEhl
YXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCit7CisgICAgdW5zaWduZWQgY3VycmVudCA9IGJl
Z2luOworICAgIC8vIEluY3JlbWVudCB0aGUgZW5kIG9mIHRoZSByYW5nZS4KKyAgICBpZiAobV9j
aGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yYW5nZSA9IEhlYXBSYW5nZShiZWdpbiwg
Y3VycmVudCArIDEpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoYXV0byYgY2hp
bGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAgIGNoaWxkLT5jb21wdXRlKGN1cnJlbnQpOworICAg
ICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7CisgICAgfQorICAgIEFTU0VSVChi
ZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFTU0VSVChjdXJyZW50IDw9IFVJTlQxNl9NQVgpOwor
ICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1cnJlbnQpOworfQorCit2b2lkIEFic3Ry
YWN0SGVhcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIHNoYWxsb3dEdW1w
KG91dCk7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBvdXQucHJpbnQoIi0+IiwgKm1fcGFy
ZW50KTsKK30KKwordm9pZCBBYnN0cmFjdEhlYXA6OnNoYWxsb3dEdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fbmFtZSwgIjwiLCBtX3JhbmdlLCAiPiIpOwor
fQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZGVlcER1bXAoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWdu
ZWQgaW5kZW50ID0gMCkgY29uc3QKK3sKKyAgICBhdXRvIHByaW50SW5kZW50ID0gWyZdICgpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZW50OyBpLS07KQorICAgICAgICAgICAgb3V0
LnByaW50KCIgICAgIik7CisgICAgfTsKKworICAgIHByaW50SW5kZW50KCk7CisgICAgc2hhbGxv
d0R1bXAob3V0KTsKKworICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICBv
dXQucHJpbnQoIlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBvdXQucHJpbnQo
IjpcbiIpOworICAgIGZvciAoYXV0byogY2hpbGQgOiBtX2NoaWxkcmVuKQorICAgICAgICBjaGls
ZC0+ZGVlcER1bXAob3V0LCBpbmRlbnQgKyAxKTsKK30KKworfSB9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2NmYjE2NGQyZjljYTJiZDNmMDAyMzY5Y2U1NmE0NmE1ZmUyODFhYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgiCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewor
CitjbGFzcyBBYnN0cmFjdEhlYXAgeworcHVibGljOgorICAgIEFic3RyYWN0SGVhcChjb25zdCBT
dHJpbmcmIG5hbWUpCisgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgc2V0UGFyZW50KEFic3RyYWN0SGVhcCogcGFyZW50KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX3BhcmVudCk7CisgICAgICAgIHBhcmVudC0+bV9jaGlsZHJlbi5hcHBlbmQodGhpcyk7
CisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OworICAgIH0KKworICAgIGJvb2wgaXNSb290KCkg
Y29uc3QgeyByZXR1cm4gIW1fcGFyZW50OyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNvbXB1dGUodW5zaWduZWQgYmVnaW4pOworCisgICAgYm9vbCBpc0NvbXB1dGVkKCkgY29uc3Qg
eyByZXR1cm4gISFtX3JhbmdlOyB9CisgICAgSGVhcFJhbmdlIHJhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWVwKFByaW50U3Ry
ZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaGFsbG93RHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVlcER1bXAoUHJp
bnRTdHJlYW0mLCB1bnNpZ25lZCBpbmRlbnQgPSAwKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBT
dHJpbmcgbV9uYW1lOworICAgIEFic3RyYWN0SGVhcCogbV9wYXJlbnQgeyBudWxscHRyIH07Cisg
ICAgVmVjdG9yPEFic3RyYWN0SGVhcCo+IG1fY2hpbGRyZW4geyB9OworICAgIEhlYXBSYW5nZSBt
X3JhbmdlOworfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCmluZGV4IDY5NTgyMGM1YTU5
ZDYzZGVkYTQyZjgzZDRmOGI0Nzg1Y2M5YTgzYTAuLjRlZGIyMzMyYTdhOWQ3ZDQyYjEwYTQxNDZm
OTBhODEyMjQ2YWM1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRFZmZlY3QuaCIKICNpbmNsdWRlICJET01KSVRQ
YXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtNDUsNiArNDYsOCBA
QCBjbGFzcyBDYWxsRE9NUGF0Y2hwb2ludCA6IHB1YmxpYyBQYXRjaHBvaW50IHsKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCiAgICAgYm9vbCBy
ZXF1aXJlR2xvYmFsT2JqZWN0IHsgdHJ1ZSB9OwogCisgICAgRWZmZWN0IGVmZmVjdCB7IH07CisK
IHByaXZhdGU6CiAgICAgQ2FsbERPTVBhdGNocG9pbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmNTg5
NjNkYjdjYmU1Y2JjYzMxZDYzOWZlNDNkM2RjYmQzYjE2YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTAsMCArMSw4NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERP
TUpJVCB7CisKK3N0cnVjdCBFZmZlY3QgeworICAgIEhlYXBSYW5nZSByZWFkcyB7IEhlYXBSYW5n
ZTo6dG9wKCkgfTsKKyAgICBIZWFwUmFuZ2Ugd3JpdGVzIHsgSGVhcFJhbmdlOjp0b3AoKSB9Owor
ICAgIE9wdGlvbmFsPEhlYXBSYW5nZT4gZGVmOworCisgICAgYm9vbCBleGl0c1NpZGV3YXlzIHsg
ZmFsc2UgfTsKKworICAgIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFk
UmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVj
dDsKKyAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3Jp
dGVzID0gd3JpdGVSYW5nZTsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisKKyAgICBz
dGF0aWMgRWZmZWN0IGZvclB1cmUoKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAg
ICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpub25lKCk7CisgICAgICAgIGVmZmVjdC53
cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5n
ZTo6bm9uZSgpOworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBF
ZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0
OworICAgICAgICBlZmZlY3QucmVhZHMgPSBkZWY7CisgICAgICAgIGVmZmVjdC53cml0ZXMgPSBI
ZWFwUmFuZ2U6Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0LmRlZiA9IGRlZjsKKyAgICAgICAgcmV0
dXJuIGVmZmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2Ug
ZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7Cisg
ICAgICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsK
KyAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7CisgICAgICAgIGVmZmVjdC5kZWYg
PSBkZWY7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgfQorCisgICAgYm9vbCBtdXN0R2Vu
ZXJhdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHdyaXRlcyB8fCBleGl0c1NpZGV3
YXlzOworICAgIH0KK307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDFmMjM5MDFjYTUx
MDBiZmQyOTBjYmYxMjMzNjgwMWM2ZjhjYjcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUSGVhcFJhbmdlLmgiCisKKyNpZiBFTkFCTEUoSklU
KQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3ZvaWQgSGVhcFJhbmdl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50ZigiMHgleC0w
eCV4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJlZ2luKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZW5kKCkpKTsKK30KKworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDVkNGNmOWRmYzc1ZGNk
MjI2NjA5YTc0ODVhYmMzMjY5N2NhZmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaApAQCAtMCwwICsxLDEwNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKworY2xhc3MgSGVhcFJhbmdlIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgSGVhcFJhbmdl
KCkgPSBkZWZhdWx0OworCisgICAgY29uc3RleHByIEhlYXBSYW5nZSh1aW50MTZfdCBiZWdpbiwg
dWludDE2X3QgZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCisgICAgICAgICwgbV9lbmQo
ZW5kKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3
UmVwcmVzZW50YXRpb24gfTsKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1Jl
cHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKKyAgICAgICAgOiBtX2JlZ2luKHN0YXRp
Y19jYXN0PHVpbnQxNl90Pih2YWx1ZSA+PiAxNikpCisgICAgICAgICwgbV9lbmQoc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KHZhbHVlKSkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIEhlYXBSYW5n
ZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5n
ZShSYXdSZXByZXNlbnRhdGlvbiwgdmFsdWUpOworICAgIH0KKworICAgIHVpbnQxNl90IGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQorICAgIHVpbnQxNl90IGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kOyB9CisgICAgdWludDMyX3QgcmF3UmVwcmVzZW50YXRpb24oKSB7IHJldHVy
biAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fYmVnaW4pIDw8IDE2KSB8IG1fZW5kOyB9CisKKyAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2JlZ2luICE9IG1fZW5kOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3Ro
ZXIubV9iZWdpbiAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIEhlYXBSYW5nZSB0b3AoKSB7IHJldHVybiBIZWFwUmFuZ2UoMCwgVUlOVDE2X01B
WCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBub25lKCkgeyByZXR1cm4gSGVh
cFJhbmdlKFVJTlQxNl9NQVgsIFVJTlQxNl9NQVgpOyB9IC8vIEVtcHR5IHJhbmdlLgorCisgICAg
Ym9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKCEqdGhpcyB8fCAhb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICgqdGhpcyA9PSBvdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPD0gb3RoZXIubV9iZWdpbiAmJiBvdGhlci5tX2Vu
ZCA8PSBtX2VuZDsKKyAgICB9CisKKyAgICBib29sIGlzU3VidHlwZU9mKGNvbnN0IEhlYXBSYW5n
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVPZihv
dGhlcik7CisgICAgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBIZWFwUmFuZ2UmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cmFuZ2VzT3ZlcmxhcChtX2JlZ2lu
LCBtX2VuZCwgb3RoZXIubV9iZWdpbiwgb3RoZXIubV9lbmQpOworICAgIH0KKworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIHVpbnQxNl90IG1fYmVnaW4geyBVSU5UMTZfTUFYIH07CisgICAgdWludDE2X3QgbV9lbmQg
eyBVSU5UMTZfTUFYIH07Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTY1N2UwNmM3ODkxOWMyMmM5OGRj
YWEzZGIzMzFhZTkxY2ZkMzFkZC4uM2MzZThkYTUzZmNlZjIwZGQ4NDk4NTM2ZmYxMzE3YzFhY2M3
ZWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtOTA2NCw3ICs5MDY0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQg
Y29tcGlsZUNhbGxET00oKQogICAgIHsKLSAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2lu
dCogZG9tSklUID0gbV9ub2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgpOworICAgICAgICBET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01EYXRhKCktPnBhdGNo
cG9pbnQ7CiAgICAgICAgIGludCBjaGlsZEluZGV4ID0gMDsKIAogICAgICAgICBMVmFsdWUgZ2xv
YmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmluZGV4IDFkMmZjMTg0ZTBjMDQwZmY3OWMxYjQ2MTUy
ZDkzZTUzNzZlYmNhMzcuLmMxMDkzZmE2ODA2ODFhMjI2NjNiMjliNzcyMjExMmY3ZDk5Y2JkZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQ0NCwxMiArNDQ0LDggQEAgaW5saW5lIGJvb2wgbm9uRW1w
dHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwgVCBsZWZ0TWF4LCBUIHJpZ2h0TWluLCBUIHJpZ2h0
TWF4KQogewogICAgIEFTU0VSVChsZWZ0TWluIDwgbGVmdE1heCk7CiAgICAgQVNTRVJUKHJpZ2h0
TWluIDwgcmlnaHRNYXgpOwotICAgIAotICAgIGlmIChsZWZ0TWluIDw9IHJpZ2h0TWluICYmIGxl
ZnRNYXggPiByaWdodE1pbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJpZ2h0TWlu
IDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBsZWZ0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbGVmdE1heCA+IHJpZ2h0TWluICYmIHJp
Z2h0TWF4ID4gbGVmdE1pbjsKIH0KIAogLy8gUGFzcyByYW5nZXMgd2l0aCB0aGUgbWluIGJlaW5n
IGluY2x1c2l2ZSBhbmQgdGhlIG1heCBiZWluZyBleGNsdXNpdmUuIEZvciBleGFtcGxlLCB0aGlz
IHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiNmE3MGZlZWFiZDcxYzUzYmNjMmFlNzMw
MWIxZDI0N2E0NTRiNjhkLi5hMjViZTc1MjlhOGM4Y2UxYjgyZWY4NDNjZmEzYTAwN2NkNTI1ZmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUzOCw2ICsxNTM4LDcgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogCiAgICAgZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3Bw
CiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKICAgICBkb21q
aXQvSlNOb2RlRE9NSklULmNwcAogCiAgICAgZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmYjU0MjI5ZDEyMzBm
OWM2N2UxZWY2ZWIyNzc1NzFjMzQ2N2JlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAs
MCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFwX2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFwX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01K
SVRBYnN0cmFjdEhlYXAuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEVmZmVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYzJlZjY4
OWIwNTc3NDgwM2E2NzMyYjkzNGQ0ZmZlZTcwNzA2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTAs
MCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
RE9NSklURWZmZWN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRFZmZlY3QuaD4K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9t
aml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzN2ZhNWVkMjVlNGU1YThmMGJi
NGZmMTcxYmEzYzA4Njc4MTVlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKQEAgLTAsMCArMSwyOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklU
SGVhcFJhbmdlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRIZWFwUmFuZ2UuaD4K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM4NzVhZDAyZGQzMjRjMTE2ZGRkOGJiOTQ2MTg0NzA4ZjQ4OTg0ZDIuLmRi
MTQ0ZTFjNzgxMTdiYzdmZjBiN2YxMDVhZTJiZmE2OTNlMTk3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYxNjksNiArNjE2
OSw4IEBACiAJCUUxRkY4RjZEMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFG
RjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07
CiAJCUUzMTUwRUE2MURBNzIxOTAwMDE5NDAxMiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAw
Mjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5
NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5o
ICovOyB9OworCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAgKi87IH07CisJCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oICovOyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRN
b2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmgg
Ki87IH07CkBAIC0xMzk1MSw2ICsxMzk1Myw4IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3
NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFE
QTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01KSVRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE0
QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVF
MyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpT
Tm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05v
ZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI2ODQsNiArMjI2
ODgsOCBAQAogCQlFM0FGQTk2MzFEQTZFOEFGMDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzVDQTE0QjFEQkMzQTNDMDBG
ODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi8sCisJCQkJRTM1Q0Ex
NEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywK
IAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovLAogCQkJ
CUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovLAogCQkJKTsK
QEAgLTI2NjI2LDYgKzI2NjMyLDcgQEAKIAkJCQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyog
UmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVF
ODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0Mzkw
NDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFMzVDQTE0RTFEQkMzQTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4
IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAqLywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBB
NDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI4NzI4LDYgKzI4NzM1LDcgQEAKIAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBF
RjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMzk2OUQwMUI3NDIx
MUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
NzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyogRm9udENhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzREIC8q
IEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM4MDBEMDBB
NUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjllNjFlNTAyNDY4YzU3OTU5NWZhZjJlNGZiMGQ1M2U3MWRhMjVlODkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJE
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpZiBF
TkFCTEUoSklUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCitz
dGF0aWMgY29uc3QgdmVyYm9zZSA9IHRydWU7CisKK0Fic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkoKQoreworICAgIEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAg
RE9NSGVhcCgiRE9NIik7CisjZGVmaW5lIERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQp
IEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAgbmFtZSMjSGVhcCgjbmFtZSk7CisgICAgRE9NSklU
X0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX0hFQVApCisjdW5kZWYgRE9NSklUX0RF
RklORV9IRUFQCisKKyNkZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQp
IG5hbWUjI0hlYXAuc2V0UGFyZW50KCZwYXJlbnQjI0hlYXApOworICAgIERPTUpJVF9BQlNUUkFD
VF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJWkVfSEVBUCkKKyN1bmRlZiBET01KSVRfSU5JVElB
TElaRV9IRUFQCisKKyAgICBET01IZWFwLmNvbXB1dGUoMCk7CisKKyNkZWZpbmUgRE9NSklUX0lO
SVRJQUxJWkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgbmFtZSA9IG5hbWUjI0hlYXAucmFuZ2UoKTsK
KyAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX01FTUJFUikK
KyN1bmRlZiBET01KSVRfSU5JVElBTElaRV9NRU1CRVIKKworICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgIGRhdGFMb2coIkRPTUpJVCBIZWFwIFJlcG9zaXRvcnk6XG4iKTsKKyAgICAgICAgRE9N
SGVhcC5kZWVwRHVtcChXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KK30KKworY29uc3QgQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeSYgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBYnN0cmFjdEhlYXBSZXBvc2l0b3J5PiByZXBvc2l0
b3J5OworICAgIHJldHVybiByZXBvc2l0b3J5LmdldCgpOworfQorCit9IH0KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYzY0NDkwYWYzMGI5MzUwODJmZjg0N2ZiZjc2YzJjNzIxYjBkMzZh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxkb21qaXQv
RE9NSklUSGVhcFJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCisvLyBEZXNjcmliZSB5b3VyIGFic3RyYWN0
IGhlYXAgaGllcmFyY2h5IGhlcmUuCisvLyBWKEFic3RyYWN0SGVhcE5hbWUsIFBhcmVudCkKKyNk
ZWZpbmUgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChWKSBcCisgICAgVihOb2RlLCBET00pIFwK
KyAgICBWKE5vZGVfZmlyc3RDaGlsZCwgTm9kZSkgXAorICAgIFYoTm9kZV9sYXN0Q2hpbGQsIE5v
ZGUpIFwKKyAgICBWKE5vZGVfcGFyZW50Tm9kZSwgTm9kZSkgXAorICAgIFYoTm9kZV9uZXh0U2li
bGluZywgTm9kZSkgXAorICAgIFYoTm9kZV9wcmV2aW91c1NpYmxpbmcsIE5vZGUpIFwKKworCitj
bGFzcyBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkpOworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ry
b3llZDxBYnN0cmFjdEhlYXBSZXBvc2l0b3J5PjsKKyAgICBzdGF0aWMgY29uc3QgQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeSYgaW5zdGFuY2UoKTsKKworICAgIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2Ug
RE9NOworCisjZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgSlNDOjpE
T01KSVQ6OkhlYXBSYW5nZSBuYW1lOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9N
SklUX0RFRklORV9NRU1CRVIpCisjdW5kZWYgRE9NSklUX0RFRklORV9NRU1CRVIKKworcHJpdmF0
ZToKKyAgICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCk7Cit9OworCit9IH0KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAppbmRleCAxODA2YjJhZmExYzQ3MWMwMzA0
NjMwYjgwMzhmMDMyM2Y2ZTM2MWViLi5hODViY2RjYWI1ODFlYjAxYmUwYzMwZjk2ZjM1ZWNkOTRk
NGQxNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTMyLDggKzMy
LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFj
ZSBET01KSVRIZWxwZXJzIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7
CiAKIHVzaW5nIEpTQzo6Q0NhbGxIZWxwZXJzOwogdXNpbmcgSlNDOjpHUFJSZWc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCmluZGV4IGI5NjkzYWNhYTc1MmE0NDQ4ZDQxNmNj
MDQxNzc3MmMwMDBlODdjYjIuLjI4MDJjZmE2YWEyZmQzZTkzMzczMjFlYmI4MDNiZDU4YzBkNDI2
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oIgogI2luY2x1ZGUgIkRPTUpJVEhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC01MiwxMSArNTMsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiB0b1dyYXBwZXJTbG93KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTR2xvYmFsT2IKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlZE5vZGU+Ci1zdGF0
aWMgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRB
Y2Nlc3MocHRyZGlmZl90IG9mZnNldCwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50IGlzQ29u
dGFpbmVyR3VhcmRSZXF1aXJlbWVudCkKK3N0YXRpYyBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmZzZXQs
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudCBpc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQp
CiB7Ci0gICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAx
OwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERP
TUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJh
bXMmIHBhcmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNW
YWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIGdsb2JhbE9iamVjdCA9IHBhcmFtc1sxXS5ncHIo
KTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMl0uZ3ByKCk7CkBAIC03Miw3ICs3Myw3
IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZv
ck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2ZmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzY3JhdGNoLCBvZmZzZXQpLCBzY3JhdGNoKTsKICAgICAgICAgbnVsbENh
c2VzLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gp
KTsKIAotICAgICAgICBET01KSVRIZWxwZXJzOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGppdCwg
cGFyYW1zLCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxXcmFw
cGVkTm9kZT4sIHBhcmFtc1sxXS52YWx1ZSgpKTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8
V3JhcHBlZE5vZGU+KGppdCwgcGFyYW1zLCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwg
dG9XcmFwcGVyU2xvdzxXcmFwcGVkTm9kZT4sIHBhcmFtc1sxXS52YWx1ZSgpKTsKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG51bGxDYXNl
cy5saW5rKCZqaXQpOwpAQCAtODMsODMgKzg0LDk5IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxs
RE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zm
CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKLXN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBv
aW50PiBjaGVja05vZGUoKQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hl
Y2tOb2RlKCkKIHsKLSAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9N
SklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
Wz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykg
eworICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
Wz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFy
YW1zKSB7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAg
ICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZShq
aXQsIHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERPTUpJ
VDo6YnJhbmNoSWZOb3ROb2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIHJldHVy
biBmYWlsdXJlQ2FzZXM7CiAgICAgfSk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8v
IE5vZGUjZmlyc3RDaGlsZC4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxk
RE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJz
dENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQog
Ci1SZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNh
bGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hp
bGRET01KSVQ6OmNhbGxET00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0
QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWlu
ZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudDo6UmVxdWlyZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRl
Q2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVy
Tm9kZSopICsgQ29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRh
aW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3Qg
PSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2ZpcnN0Q2hpbGQpOworICAg
IHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI2xhc3RDaGlsZC4KLVJlZjxET01KSVQ6
OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogewogICAg
IHJldHVybiBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENv
bnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJ
c0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBo
ZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1
dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9P
RkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1l
bW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAg
ICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5O
b2RlX2xhc3RDaGlsZCk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbmV4
dFNpYmxpbmcuCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6
OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5n
RE9NSklUOjpjaGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9N
KCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RP
TUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nl
c3M8Tm9kZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFy
ZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9p
bnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5n
TWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQp
OworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZiho
ZWFwLk5vZGVfbmV4dFNpYmxpbmcpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBO
b2RlI3ByZXZpb3VzU2libGluZy4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91
c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4g
Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVj
a05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91
c1NpYmxpbmdET01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJsaW5n
TWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQp
OworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNl
dEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250
YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9wcmV2aW91c1NpYmxp
bmcpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3BhcmVudE5vZGUuCi1S
ZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQor
UmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tE
T00oKQogewogICAgIHJldHVybiBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2Rl
PihOb2RlOjpwYXJlbnROb2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudDo6Tm90UmVxdWlyZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3Jl
YXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnROb2Rl
TWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQp
OworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZiho
ZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5v
ZGUjbm9kZVR5cGUuCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6
OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9N
SklUOjpjaGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2Fs
bERPTSgpCiB7Ci0gICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQg
PSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNDOjpET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JQdXJlKCk7CiAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVj
dCA9IGZhbHNlOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJz
JiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNo
cG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJh
bXNbMF0uanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3By
KCk7CiAgICAgICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZSwgSlNDOjpK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292536</attachid>
            <date>2016-10-22 21:56:07 -0700</date>
            <delta_ts>2016-10-22 23:03:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022215226.patch</filename>
            <type>text/plain</type>
            <size>76143</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4wZDU5Y2NlNTFhNTAxZDA1
NDc2OTNmYWY0MzJkOWJlNmZjNGUwZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2lu
dCB0byBleHByZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6
OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEhlYXA6Om92
ZXJsYXBzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Ymxlc3NDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlclNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q2xvYmJlclNldDo6b3ZlcmxhcHMpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9j
YXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTURhdGEpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbGxET01EYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNDYWxsRE9NUGF0Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Y2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDYWxsRE9NKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hw
b2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpkdW1wKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpBYnN0cmFjdEhlYXA6OnNoYWxsb3dEdW1wKToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmRlZXBEdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
Q2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6
OkFic3RyYWN0SGVhcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpzZXRQ
YXJlbnQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6aXNSb290KToKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmlzQ29tcHV0ZWQpOgorICAgICAgICAo
SlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6cmFuZ2UpOgorICAgICAgICAqIGRvbWppdC9ET01K
SVRDYWxsRE9NUGF0Y2hwb2ludC5oOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclB1cmUpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6Om11
c3RHZW5lcmF0ZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9p
bnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmR1bXApOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRPTUpJVDo6
SGVhcFJhbmdlOjpIZWFwUmFuZ2UpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpiZWdpbik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjplbmQpOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6cmF3UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpET01KSVQ6Okhl
YXBSYW5nZTo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpub25lKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpIZWFwUmFuZ2U6OmlzU3RyaWN0U3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpIZWFwUmFuZ2U6OmlzU3VidHlwZU9mKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFu
Z2U6Om92ZXJsYXBzKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorCiAyMDE2
LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGls
bCBhbG9uZyBib3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9u
IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uYzgy
YzY0NjhkODNlYmE0M2M4YzdhOWE4MTE1MjE5NzAxM2ZiYmM2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHBy
ZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAgKFdURjo6bm9uRW1wdHlSYW5nZXNPdmVy
bGFwKToKKwogMjAxNi0xMC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBjYWxscwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIx
OTgzYjk2NzE0YjJiMjdmZDgwZWE5NDkwZTE4ZjA0ZDdkMDkyODkuLjljMzA0OTQ5ZTQ2ODg0ZGUx
YmY1MDEyZDI2NjBmMWIzZWJlZmVjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAx
Ni0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVm
ZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
ZG9taml0L0RPTUpJVEVmZmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAoV2ViQ29yZTo6
RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNo
cG9pbnQuaC4KKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RXb3JsZElzTm9ybWFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V2Vha0lzTGl2ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjp0cnlMb29rVXBXcmFw
cGVyQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dG9X
cmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5j
aElmRE9NV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJz
OjpicmFuY2hJZk5vdERPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUSGVscGVyczo6YnJhbmNoSWZOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RFbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmRG9jdW1lbnRXcmFwcGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RG9jdW1l
bnRXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2hlY2tOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVGaXJzdENoaWxk
RE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RDaGlsZERPTUpJ
VDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVj
a0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00pOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVU
eXBlRE9NSklUOjpjYWxsRE9NKToKKwogMjAxNi0xMC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVcGdyYWRpbmcgY3VzdG9tIGVsZW1lbnQgc2hvdWxkIGVu
cXVldWUgYXR0cmlidXRlQ2hhbmdlZCBhbmQgY29ubmVjdGVkIGNhbGxiYWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0
OTJiNzMwMDQyZDguLjg3ZjczZTVhMDcwY2MxMjIxZmM4ZDQyMzIyNWMzNzE4NjA2NDllNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQxMyw2ICs0MTMsOSBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5
bi1pbnRlbC5jCiAgICAgZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODZfc3luLmMKIAorICAgIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCisgICAgZG9taml0L0RPTUpJVEhlYXBSYW5nZS5j
cHAKKwogICAgIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwCiAgICAgZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwCiAgICAgZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NmFhMDg0ZTgxMWRhMzE0ZGE2Y2ZiNDcwMWEzMzM4
ZmIzMGMzMzcxLi5mYWIyMTk4MjZiMzk3NzU3N2Q1ZTBkMzQ1M2NmM2NkMmNlMDUxZTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2Myw2ICsyMTYzLDEwIEBACiAJCUUzNTU1
QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAw
RjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8q
IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVy
UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlw
ZS5oICovOyB9OworCQlFMzVDQTE1MzFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNB
MTUxMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwICovOyB9OworCQlFMzVD
QTE1NDFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYg
LyogRE9NSklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0
SGVhcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVDQTE0RjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLzsgfTsK
KwkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1
NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi87IH07CiAJCUUzNUUwMzYwMUI3QUI0M0Uw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLzsgfTsKQEAgLTIxNzcsNiArMjE4MSw3IEBACiAJCUUzQkZEMEJCMURBRjgwODcwMDY1REVB
MiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIg
LyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovOyB9OwogCQlFM0JGRDBC
QzFEQUY4MDhFMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEJBMURB
RjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovOyB9
OwogCQlFM0MwOEUzQzFEQTQxQjgxMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDMDhFM0IxREE0MUI3
QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9N
SklURWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
M0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CkBAIC00NTMz
LDYgKzQ1MzgsMTAgQEAKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxE
T01QYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENh
bGxET01QYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUw
MUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1v
ZHVsZUxvYWRlclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJ
VEFic3RyYWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MTFE
QkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVhcFJhbmdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ1NDgsNiArNDU1Nyw3IEBACiAJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAv
KiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAv
KiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklU
UGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRj
aHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzc5Q0FBMURCOUE0RDYw
MEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSklURWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0IxRTI0
MURBNzU0MEEwMEZBMUU1NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4
MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc0MDMsOCArNzQxMywxMyBAQAogCQlFM0ZGNzUyRDFEOUNFOUVBMDBDN0Ux
NkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlFMzVDQTE0RjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmNwcCAq
LywKKwkJCQlFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmgg
Ki8sCiAJCQkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBv
aW50LmggKi8sCisJCQkJRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5o
ICovLAogCQkJCUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIu
aCAqLywKKwkJCQlFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNw
cCAqLywKKwkJCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmgg
Ki8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAq
LywKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFt
cy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAqLywK
QEAgLTc2MzIsNiArNzY0Nyw3IEBACiAJCQkJMEY5NkVCQjMxNjY3NkVGNjAwOEJBREUzIC8qIENv
ZGVCbG9ja1dpdGhKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4OEIy
MDA2NDBBNDcgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5
OTUwMDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICov
LAorCQkJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVw
bGF5SW5wdXRzVGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFMTE2QjEwRkU3NUFD
ODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRDdFNjkx
NDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODI5OSw2
ICs4MzE1LDcgQEAKIAkJCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTUyQzM4MDFB
RERCOEZFMDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWlu
UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDg3NEFFNjE1RUJERTRBMDAyRTM1ODcgLyogSlNT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkIxQzE2MjVCRTAwMzIzRjY3IC8qIEIz
Q0ZHLmggaW4gSGVhZGVycyAqLywKQEAgLTg0MTcsNiArODQzNCw3IEBACiAJCQkJN0MwMDhDRTcx
ODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMwMTg0
MTkxRDEwQzE4OTAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1NUYzNTMxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTI0LDYgKzk5NDIsNyBAQAog
CQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRl
Y29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0U0MEQxQjYxOEI2NjAwQzgwRTFFIC8q
IFByb3BlcnR5Q29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNUNBMTUzMURCQzNB
NUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdG
QjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDQ2OURFODEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTk0Miw2ICs5OTYxLDcgQEAKIAkJCQk4NjQyQzUx
MjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzVDQTE1NTFEQkMzQTVGMDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBDN0EwMUI4MkUxQzMw
MDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBD
N0ExMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5jcHAKaW5kZXggMWUxMTAxOTAyZGIyNWVhZDdmOGQ3ZWY5OWI0OWM0ODQxYzE4ZDExZC4uY2Q2
OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkxZDIzYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNDUsNiArNDUsMTAgQEAgdm9p
ZCBBYnN0cmFjdEhlYXA6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBvdXQucHJp
bnQoa2luZCgpKTsKICAgICBpZiAoa2luZCgpID09IEludmFsaWRBYnN0cmFjdEhlYXAgfHwga2lu
ZCgpID09IFdvcmxkIHx8IGtpbmQoKSA9PSBIZWFwIHx8IHBheWxvYWQoKS5pc1RvcCgpKQogICAg
ICAgICByZXR1cm47CisgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICBvdXQu
cHJpbnQoIigiLCBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhwYXlsb2FkKCkudmFsdWUzMigp
KSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBvdXQucHJpbnQoIigiLCBwYXls
b2FkKCksICIpIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCmluZGV4IDBhYmQ1MDI3YjI2YWViMzk0ZjI5YzAzOGZkOWYyZDU5MmU2YzE2MzkuLmY1
MWY4MmZlMTM3ZTI1YTNmNzlhNTJiMWYxMWIwYzUzMzFhMzA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKICNpbmNsdWRl
ICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtNzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8o
SW50ZXJuYWxTdGF0ZSkgXAogICAgIG1hY3JvKEFic29sdXRlKSBcCisgICAgLyogRE9NSklUIHRl
bGxzIHRoZSBoZWFwIHJhbmdlIHdpdGggdGhlIHBhaXIgb2YgaW50ZWdlcnMuICovXAorICAgIG1h
Y3JvKERPTVN0YXRlKSBcCiAgICAgLyogVXNlIHRoaXMgZm9yIHdyaXRlcyBvbmx5LCB0byBpbmRp
Y2F0ZSB0aGF0IHRoaXMgbWF5IGZpcmUgd2F0Y2hwb2ludHMuIFVzdWFsbHkgdGhpcyBpcyBuZXZl
ciBkaXJlY3RseSB3cml0dGVuIGJ1dCBpbnN0ZWFkIHdlIHRlc3QgdG8gc2VlIGlmIGEgbm9kZSBj
bG9iYmVycyB0aGlzOyBpdCBqdXN0IHNvIGhhcHBlbnMgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSB3
b3JsZCB0byBjbG9iYmVyIGl0LiAqL1wKICAgICBtYWNybyhXYXRjaHBvaW50X2ZpcmUpIFwKICAg
ICAvKiBVc2UgdGhlc2UgZm9yIHJlYWRzIG9ubHksIGp1c3QgdG8gaW5kaWNhdGUgdGhhdCBpZiB0
aGUgd29ybGQgZ290IGNsb2JiZXJlZCwgdGhlbiB0aGlzIG9wZXJhdGlvbiB3aWxsIG5vdCB3b3Jr
LiAqL1wKQEAgLTIzMyw2ICsyMzYsMTUgQEAgY2xhc3MgQWJzdHJhY3RIZWFwIHsKICAgICBib29s
IGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEFic3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBBYnN0cmFjdEhlYXAgY3VycmVudCA9ICp0aGlzOworICAgICAgICBpZiAoY3Vy
cmVudC5raW5kKCkgPT0gRE9NU3RhdGUgJiYgb3RoZXIua2luZCgpID09IERPTVN0YXRlKSB7Cisg
ICAgICAgICAgICBQYXlsb2FkIGN1cnJlbnRQYXlsb2FkID0gY3VycmVudC5wYXlsb2FkKCk7Cisg
ICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQoKTsKKyAgICAg
ICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmIChvdGhlclBheWxvYWQuaXNUb3AoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBET01KSVQ6OkhlYXBSYW5n
ZTo6ZnJvbVJhdyhjdXJyZW50UGF5bG9hZC52YWx1ZTMyKCkpLmlzU3RyaWN0U3VidHlwZU9mKERP
TUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KG90aGVyUGF5bG9hZC52YWx1ZTMyKCkpKTsKKyAgICAg
ICAgfQogICAgICAgICB3aGlsZSAoY3VycmVudC5raW5kKCkgIT0gV29ybGQpIHsKICAgICAgICAg
ICAgIGN1cnJlbnQgPSBjdXJyZW50LnN1cGVydHlwZSgpOwogICAgICAgICAgICAgaWYgKGN1cnJl
bnQgPT0gb3RoZXIpCkBAIC0yNDgsNyArMjYwLDE2IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7CiAg
ICAgCiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzID09IG90aGVyIHx8IGlzU3RyaWN0U3VidHlwZU9m
KG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVPZigqdGhpcyk7CisgICAgICAgIGlmICgq
dGhpcyA9PSBvdGhlcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoa2lu
ZCgpID09IERPTVN0YXRlICYmIG90aGVyLmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAg
ICAgUGF5bG9hZCBjdXJyZW50UGF5bG9hZCA9IHBheWxvYWQoKTsKKyAgICAgICAgICAgIFBheWxv
YWQgb3RoZXJQYXlsb2FkID0gb3RoZXIucGF5bG9hZCgpOworICAgICAgICAgICAgaWYgKGN1cnJl
bnRQYXlsb2FkLmlzVG9wKCkgfHwgb3RoZXJQYXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZy
b21SYXcoY3VycmVudFBheWxvYWQudmFsdWUzMigpKS5vdmVybGFwcyhET01KSVQ6OkhlYXBSYW5n
ZTo6ZnJvbVJhdyhvdGhlclBheWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGlzU3RyaWN0U3VidHlwZU9mKG90aGVyKSB8fCBvdGhlci5pc1N0cmljdFN1YnR5cGVP
ZigqdGhpcyk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNEaXNqb2ludChjb25zdCBBYnN0cmFj
dEhlYXAmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGExMmYwOWNiMWI5NGEw
YTMwNDM2MzcwYzcyYWEyMWM1ZWQ4MTk1ZmIuLmYwOWQ0MWI3YjdjYTMzM2EyNDA5YjFlNTQ1YjU1
ODQwZGNmMGZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIyODksMTAgKzIyODksMTMgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZmlsdGVyQ2xhc3NJbmZvKHZhbHVlLCBu
b2RlLT5jbGFzc0luZm8oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIENhbGxE
T006Ci0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJM
aW1pdCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAg
ICAgICBpZiAocGF0Y2hwb2ludC0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlD
aGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNDg4NDIwNmIzZjU2ZDc0
ZTZmMjZlZjU2YjU4Y2ZhYTU2NTcwZDg5OS4uYTViMDRjYTY2MTQ1YWI1M2U2NjI4NzdhZGE3ZDIz
N2Q0Y2IyOWRkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTI2NzMsNiArMjY3MywxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJp
YQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJs
ZXNzQ2FsbERPTShOb2RlKiBub2RlKQoreworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgIGlmICgh
cGF0Y2hwb2ludC0+ZWZmZWN0Lm11c3RHZW5lcmF0ZSgpKQorICAgICAgICBub2RlLT5jbGVhckZs
YWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVE
T01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50LCBOb2RlKiB0aGlzTm9kZSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBp
ZiAoIXZhcmlhbnQuZG9tSklUKCkpCkBAIC0yNjkxLDE0ICsyNjk4LDIxIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhp
bmd5IGhlcmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJl
bnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVj
a0RPTSwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhkb21KSVQtPnRo
aXNDbGFzc0luZm8oKSksIHRoaXNOb2RlKTsKIAorICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0
YSA9IG1fZ3JhcGgubV9jYWxsRE9NRGF0YS5hZGQoKTsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gY2FsbERPTVBhdGNocG9pbnQgPSBkb21KSVQtPmNhbGxET00oKTsKICAgICBt
X2dyYXBoLm1fZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNhbGxET01QYXRjaHBvaW50LnB0cigp
KTsKKworICAgIGNhbGxET01EYXRhLT5kb21KSVQgPSBkb21KSVQ7CisgICAgY2FsbERPTURhdGEt
PnBhdGNocG9pbnQgPSBjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKTsKKwogICAgIGlmIChjYWxsRE9N
UGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewogICAgICAgICBOb2RlKiBnbG9iYWxP
YmplY3QgPSBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwgdGhpc05vZGUpOwogICAgICAgICBh
ZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05vZGUg
aXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBlci4KICAgICB9CiAgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc05vZGUpOwotICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTVBhdGNo
cG9pbnQucHRyKCkpLCBPcEluZm8ocHJlZGljdGlvbikpKTsKKyAgICBOb2RlKiBjYWxsRE9NTm9k
ZSA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oY2FsbERPTURhdGEp
LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgIGJsZXNzQ2FsbERPTShjYWxsRE9NTm9kZSk7Cisg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2FsbERPTU5vZGUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
U2V0LmNwcAppbmRleCBkNDYzMGUzNzBjYjBiYWMyM2Q5OTQyZjVmZmNlMzhmYjU4ZGEyZGVjLi41
OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUxYWExYTc5MjQ0OWY3ZTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKQEAgLTgxLDYgKzgxLDIzIEBAIGJvb2wg
Q2xvYmJlclNldDo6b3ZlcmxhcHMoQWJzdHJhY3RIZWFwIGhlYXApIGNvbnN0CiB7CiAgICAgaWYg
KG1fY2xvYmJlcnMuZmluZChoZWFwKSAhPSBtX2Nsb2JiZXJzLmVuZCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5raW5kKCkgPT0gRE9NU3RhdGUgJiYgIWhlYXAucGF5bG9h
ZCgpLmlzVG9wKCkpIHsKKyAgICAgICAgLy8gRE9NU3RhdGUgaGVhcCBoYXMgaXRzIG93biBoaWVy
YXJjaHkuIEZvciBkaXJlY3QgaGVhcCBjbG9iYmVycyB0aGF0IHBheWxvYWQgaXMgbm90IFRvcCwK
KyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1ZXJ5IHdoZXRoZXIgdGhlIGNsb2JiZXIgb3ZlcmxhcHMg
d2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBE
T01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhoZWFwLnBheWxvYWQoKS52YWx1ZTMyKCkpOworICAg
ICAgICBmb3IgKGF1dG8gcGFpciA6IG1fY2xvYmJlcnMpIHsKKyAgICAgICAgICAgIGJvb2wgZGly
ZWN0ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGlyZWN0KQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RIZWFwIGNsb2JiZXIgPSBwYWlyLmtl
eTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLmtpbmQoKSAhPSBET01TdGF0ZSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLnBheWxvYWQoKS5pc1Rv
cCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKERPTUpJVDo6
SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2JiZXIucGF5bG9hZCgpLnZhbHVlMzIoKSkub3ZlcmxhcHMo
cmFuZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQog
ICAgIHdoaWxlIChoZWFwLmtpbmQoKSAhPSBXb3JsZCkgewogICAgICAgICBoZWFwID0gaGVhcC5z
dXBlcnR5cGUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5zKGhlYXApKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAppbmRleCA3MjlmMzliMTE4NTE4YTk1NTVlYzQ2MTY2
ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdmZGI0MjMyZWMwYjJhYzUwMGE2NTA1ZTRjOTU0OTM0ZDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaApAQCAtNTIsMTEg
KzUyLDExIEBAIGNsYXNzIENsb2JiZXJTZXQgewogICAgIAogICAgIHZvaWQgYWRkKEFic3RyYWN0
SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwoY29uc3QgQ2xvYmJlclNldCYpOwotICAgIGJvb2wgY29u
dGFpbnMoQWJzdHJhY3RIZWFwKSBjb25zdDsKICAgICBib29sIG92ZXJsYXBzKEFic3RyYWN0SGVh
cCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAgIC8vIENhbGxzIHVzZWZ1bCBm
b3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERvIG5vdCBjYWxsIGZvciBub24g
ZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3QgaGFuZGxlIERPTVN0YXRlIGhp
ZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IGRpcmVj
dCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBzdXBlcigpIGNvbnN0OwpAQCAt
NjQsNiArNjQsOCBAQCBjbGFzcyBDbG9iYmVyU2V0IHsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisgICAgYm9vbCBjb250YWlucyhBYnN0cmFjdEhl
YXApIGNvbnN0OworCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+IHNldE9mKGJvb2wgZGlyZWN0
KSBjb25zdDsKICAgICAKICAgICAvLyBNYXBzIGhlYXAgdG86CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5Mzg3MmU1MDgxODBkMmI1ZjJj
YzZiNmFiYzg0NGMuLmU1MmY3NzhmNDhhZjJmYjAzNzg2MDE1Y2MzZjNiNzc0ODcwZDNiZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eU5vZGUu
aCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTkwNywx
MCArOTA4LDQyIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fz
ZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAgICAgd3JpdGUoSGVhcCk7Cisg
ICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBh
dGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICBET01K
SVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRjaHBvaW50LT5lZmZlY3Q7CisgICAgICAgIGlmIChlZmZl
Y3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0gRE9NSklUOjpIZWFw
UmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3Qu
cmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZl
Y3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9PSBET01KSVQ6Okhl
YXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7IC8vIFdlIGRvIG5v
dCBhc3N1bWUgdGhhdCBET00gb3BlcmF0aW9ucyB3aWxsIHdyaXRlKFN0YWNrKS4KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlm
IChlZmZlY3QuZGVmKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vZGUtPm51
bUNoaWxkcmVuKCkgPD0gQWRqYWNlbmN5TGlzdDo6U2l6ZSwgIkN1cnJlbnRseSB3ZSBvbmx5IGFs
bG93IHB1cmUgQ2FsbERPTSB0byBoYXZlIHVwIHRvIDMgY2hpbGRyZW4uIik7CisgICAgICAgICAg
ICBFZGdlIGVkZ2VzW0FkamFjZW5jeUxpc3Q6OlNpemVdOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG5vZGUtPm51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICBlZGdlc1tpXSA9IGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGkpOworCisgICAgICAgICAgICBE
T01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAg
IGlmIChyYW5nZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAg
IGRlZihQdXJlVmFsdWUoQ2FsbERPTSwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhl
ZCwgZWRnZXNbMF0sIGVkZ2VzWzFdLCBlZGdlc1syXSksIG5vZGUtPmNhbGxET01EYXRhKCktPmRv
bUpJVCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRGVmIHdpdGgg
aGVhcCBsb2NhdGlvbi4gV2UgZG8gbm90IGluY2x1ZGUgIkdsb2JhbE9iamVjdCIgZm9yIHRoYXQg
c2luY2UgdGhpcyBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUgYmFzZSBub2RlLgorICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHN1cHBvcnRpbmcgdGhlIG90aGVyIG5vZGVzIGxp
a2UgZ2V0RWxlbWVudEJ5SWQoInN0cmluZyIpLCB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgYmFzZSBh
bmQgdGhlIGlkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkg
c2VlIHRoZSBET01KSVQgZ2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5jbHVkaW5nICJiYXNlIiBpcyBv
ay4KKyAgICAgICAgICAgICAgICBFZGdlIGJhc2UgPSBlZGdlc1swXTsKKyAgICAgICAgICAgICAg
ICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZSA9IGVkZ2VzWzFdOworICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9N
U3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24o
KSksIGJhc2UpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJh
eWlmeVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDNmMTM4NDJjYWY0YjVjNmVlMWYwOWM1NGFhM2Q4YTAwNjIzNmM1MjkuLmYzNWI2NmNlMTdl
NDAzOTgyZDAyOGFmMzgyYjkxYmQ2MDg1N2VhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTExOCw3ICsxMTgsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4
ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6Ci0gICAgY2FzZSBDYWxsRE9NOgogICAg
IGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6
CkBAIC0yOTksNiArMjk4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICBjYXNlIENyZWF0ZVJlc3Q6CiAg
ICAgY2FzZSBUb0xvd2VyQ2FzZToKKyAgICBjYXNlIENhbGxET006CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzM2MwY2YxOTIwODViNTAwNGIy
MDA4OWUyZDNiMDY5MjkwNDg4NTk4Li5mOTUxYzJlYTBmYTNiMzMxMTIzNGFjYjI3NjIwMzE3YTI1
M2UxMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTE3MTIsNyArMTcxMiw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
CiAgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAw
OwotICAgICAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgICAgICBET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKICAg
ICAgICAgICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNo
aWxkSW5kZXgrKykpOyAvLyBHbG9iYWxPYmplY3QuCiAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA3NmIyYmFlYzcxNmMyZjM2YjZiZTU0
MzYwYTlkMzNkZDRhMTRmM2FjLi5mOTU3ZjVjZmJkNzg4ZWRkNjI2ODk1ZmYxZGUzNTA3MTM2ZDE0
MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC05MDEsNiArOTAxLDcg
QEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxMb2Fk
VmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+
IG1fc3RhY2tBY2Nlc3NEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNWYWx1ZXM7
CisgICAgQmFnPENhbGxET01EYXRhPiBtX2NhbGxET01EYXRhOwogICAgIFZlY3RvcjxJbmxpbmVW
YXJpYWJsZURhdGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJs
b2NrKiwgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxp
dmVuZXNzOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
S2lsbHM+PiBtX2J5dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggODQ3MDYzN2RmMDA2NjA0ZDMyNmQ1NTFhNGJiMzQyYTJm
MDIwNTA2OC4uOWIyMjkyZDUwMjYwY2YwZTcxNTQ4YzY2NGZhY2QxZWRjY2U1ZGY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcApAQCAtMTUyLDYg
KzE1Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2NhdGlvbktp
bmQga2luZCkKICAgICBjYXNlIE1hcEhhc0xvYzoKICAgICAgICAgb3V0LnByaW50KCJNYXBIYXNM
b2MiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRE9NU3RhdGVMb2M6CisgICAgICAgIG91
dC5wcmludCgiRE9NU3RhdGVMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggNzA0ZDE5MWFmOGU1MThiYzBlOWY1NTNkNDc4ZDhh
ZjZkNGU2OWI1Ni4uNjM1N2JlMTgwZjNkMDgxZTFlYzkwYTRkNDIxMWRmMDRhODZiODkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC02MCw3ICs2
MCw4IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTdGFja1BheWxvYWRMb2MsCiAgICAgTWFw
QnVja2V0TG9jLAogICAgIEpTTWFwR2V0TG9jLAotICAgIE1hcEhhc0xvYworICAgIE1hcEhhc0xv
YywKKyAgICBET01TdGF0ZUxvYywKIH07CiAKIGNsYXNzIEhlYXBMb2NhdGlvbiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKaW5kZXggZTYwOTc2NGU4NTljZjgw
ZGRhYzU4YjNjNDJjMDcwNWMxMmU5MjYzYS4uOTdlMWVhYWRhZTlhMDQ4MDAyZWVkYTM3ZmU3YTU2
YWU5ZTRlNmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNN
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNw
cApAQCAtMzM5LDcgKzMzOSw3IEBAIGNsYXNzIExJQ01QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIC8vIEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgd2UgY3Vy
cmVudGx5IGtub3cgaG93IHRvIGhvaXN0CiAgICAgICAgIC8vIGRvbid0IGhhdmUgdmFyLWFyZyBj
aGlsZHJlbi4gVGhhdCBtYXkgY2hhbmdlIGFuZCB0aGVuIHdlIGNhbiBmaXggdGhpcwogICAgICAg
ICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFzc2VydCB0aGF0J3MgdGhlIGNhc2UuCi0g
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhh
c1ZhckFyZ3MpKTsKKyAgICAgICAgLy8gREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUt
PmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICAKICAgICAgICAgbm9kZVJlZiA9
IG1fZ3JhcGguYWRkTm9kZShDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGM5NDExZDUwY2Zi
YTljNTRiMDJjMzQ4NjQ5N2U0MDM0MTI3YWRkYmMuLjBkMWE0YjU1ODE0MzcyOWFhOGMzMjJmMjg0
NjE4M2QxZDQzNjRkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OSw2
ICs1OSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQYXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTVBhdGNocG9pbnQ7
CiB9CkBAIC0yMzEsNiArMjMyLDExIEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZs
dXNoZWRBdCBmbHVzaGVkQXQoKSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9j
YWwpOyB9CiB9OwogCitzdHJ1Y3QgQ2FsbERPTURhdGEgeworICAgIERPTUpJVDo6R2V0dGVyU2V0
dGVyKiBkb21KSVQgeyBudWxscHRyIH07CisgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCog
cGF0Y2hwb2ludCB7IG51bGxwdHIgfTsKK307CisKIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5v
ZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4K
QEAgLTIzMzYsMTUgKzIzNDIsMTUgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8RE9NSklUOjpQYXRjaHBvaW50Kj4oKTsKICAgICB9CiAKLSAgICBib29sIGhhc0Nh
bGxET01QYXRjaHBvaW50KCkgY29uc3QKKyAgICBib29sIGhhc0NhbGxET01EYXRhKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IENhbGxET007CiAgICAgfQogCi0gICAgRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludCogY2FsbERPTVBhdGNocG9pbnQoKQorICAgIENhbGxET01E
YXRhKiBjYWxsRE9NRGF0YSgpCiAgICAgewotICAgICAgICBBU1NFUlQoaGFzQ2FsbERPTVBhdGNo
cG9pbnQoKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50Kj4oKTsKKyAgICAgICAgQVNTRVJUKGhhc0NhbGxET01EYXRhKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8Q2FsbERPTURhdGEqPigpOwogICAgIH0KIAogICAgIGJvb2wgaGFz
Q2xhc3NJbmZvKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggNWU2NGJhZjkzYzdiYzEyNzE2Y2E3NzgyMzI1NzQ4OTY0MzJm
ODk5MS4uMzM5ZmUyNzM4MDMwODNhYzA2MDY1NWEzZDFkMDYxOWNkMjMxMTg1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyMjUs
NyArNzIyNSw3IEBAIHN0YXRpYyB2b2lkIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0
Y2hwb2ludChTcGVjdWxhdGl2ZUpJVCogaml0LCBWZWN0b3I8CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiB7Ci0gICAgRE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCkt
PnBhdGNocG9pbnQ7CiAKICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CiAgICAgVmVjdG9y
PEZQUlJlZz4gZnBTY3JhdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ODU1YjlkMmJiZTc3ZDkwYTYz
MWRlYTFiN2I3OGRlNGYxZmUyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAuaCIKKworI2lmIEVOQUJMRShKSVQp
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordm9pZCBBYnN0cmFjdEhl
YXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCit7CisgICAgdW5zaWduZWQgY3VycmVudCA9IGJl
Z2luOworICAgIC8vIEluY3JlbWVudCB0aGUgZW5kIG9mIHRoZSByYW5nZS4KKyAgICBpZiAobV9j
aGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yYW5nZSA9IEhlYXBSYW5nZShiZWdpbiwg
Y3VycmVudCArIDEpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoYXV0byYgY2hp
bGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAgIGNoaWxkLT5jb21wdXRlKGN1cnJlbnQpOworICAg
ICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7CisgICAgfQorICAgIEFTU0VSVChi
ZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFTU0VSVChjdXJyZW50IDw9IFVJTlQxNl9NQVgpOwor
ICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1cnJlbnQpOworfQorCit2b2lkIEFic3Ry
YWN0SGVhcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIHNoYWxsb3dEdW1w
KG91dCk7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBvdXQucHJpbnQoIi0+IiwgKm1fcGFy
ZW50KTsKK30KKwordm9pZCBBYnN0cmFjdEhlYXA6OnNoYWxsb3dEdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fbmFtZSwgIjwiLCBtX3JhbmdlLCAiPiIpOwor
fQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZGVlcER1bXAoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWdu
ZWQgaW5kZW50KSBjb25zdAoreworICAgIGF1dG8gcHJpbnRJbmRlbnQgPSBbJl0gKCkgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRlbnQ7IGktLTspCisgICAgICAgICAgICBvdXQucHJp
bnQoIiAgICAiKTsKKyAgICB9OworCisgICAgcHJpbnRJbmRlbnQoKTsKKyAgICBzaGFsbG93RHVt
cChvdXQpOworCisgICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5w
cmludCgiXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG91dC5wcmludCgiOlxu
Iik7CisgICAgZm9yIChhdXRvKiBjaGlsZCA6IG1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxkLT5k
ZWVwRHVtcChvdXQsIGluZGVudCArIDEpOworfQorCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZTg3YjA3OTQ0OTM4YjU1YjFkMjhmMzNhYWE2ZmQ0ODMxZTU5YTQzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNp
ZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2Ns
YXNzIEFic3RyYWN0SGVhcCB7CitwdWJsaWM6CisgICAgQWJzdHJhY3RIZWFwKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBzZXRQYXJlbnQoQWJzdHJhY3RIZWFwKiBwYXJlbnQpCisgICAgeworICAgICAgICBBU1NFUlQo
IW1fcGFyZW50KTsKKyAgICAgICAgcGFyZW50LT5tX2NoaWxkcmVuLmFwcGVuZCh0aGlzKTsKKyAg
ICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25z
dCB7IHJldHVybiAhbV9wYXJlbnQ7IH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29t
cHV0ZSh1bnNpZ25lZCBiZWdpbik7CisKKyAgICBib29sIGlzQ29tcHV0ZWQoKSBjb25zdCB7IHJl
dHVybiAhIW1fcmFuZ2U7IH0KKyAgICBIZWFwUmFuZ2UgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X3JhbmdlOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNoYWxsb3dEdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWVwRHVtcChQcmludFN0
cmVhbSYsIHVuc2lnbmVkIGluZGVudCA9IDApIGNvbnN0OworCitwcml2YXRlOgorICAgIFN0cmlu
ZyBtX25hbWU7CisgICAgQWJzdHJhY3RIZWFwKiBtX3BhcmVudCB7IG51bGxwdHIgfTsKKyAgICBW
ZWN0b3I8QWJzdHJhY3RIZWFwKj4gbV9jaGlsZHJlbiB7IH07CisgICAgSGVhcFJhbmdlIG1fcmFu
Z2U7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKaW5kZXggNjk1ODIwYzVhNTlkNjNk
ZWRhNDJmODNkNGY4YjQ3ODVjYzlhODNhMC4uNGVkYjIzMzJhN2E5ZDdkNDJiMTBhNDE0NmY5MGE4
MTIyNDZhYzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRDYWxsRE9NUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEVmZmVjdC5oIgogI2luY2x1ZGUgIkRPTUpJVFBhdGNo
cG9pbnQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC00NSw2ICs0Niw4IEBAIGNs
YXNzIENhbGxET01QYXRjaHBvaW50IDogcHVibGljIFBhdGNocG9pbnQgewogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKICAgICBib29sIHJlcXVp
cmVHbG9iYWxPYmplY3QgeyB0cnVlIH07CiAKKyAgICBFZmZlY3QgZWZmZWN0IHsgfTsKKwogcHJp
dmF0ZToKICAgICBDYWxsRE9NUGF0Y2hwb2ludCgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmY1ODk2M2Ri
N2NiZTVjYmNjMzFkNjM5ZmU0M2QzZGNiZDNiMTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAtMCwwICsxLDg1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKworc3RydWN0IEVmZmVjdCB7CisgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0
b3AoKSB9OworICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CisgICAg
T3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisKKyAgICBib29sIGV4aXRzU2lkZXdheXMgeyBmYWxz
ZSB9OworCisgICAgc3RhdGljIEVmZmVjdCBmb3JSZWFkV3JpdGUoSGVhcFJhbmdlIHJlYWRSYW5n
ZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0Owor
ICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7CisgICAgICAgIGVmZmVjdC53cml0ZXMg
PSB3cml0ZVJhbmdlOworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRp
YyBFZmZlY3QgZm9yUHVyZSgpCisgICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0OworICAgICAg
ICBlZmZlY3QucmVhZHMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0LndyaXRl
cyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QuZGVmID0gSGVhcFJhbmdlOjpu
b25lKCk7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgfQorCisgICAgc3RhdGljIEVmZmVj
dCBmb3JEZWYoSGVhcFJhbmdlIGRlZikKKyAgICB7CisgICAgICAgIEVmZmVjdCBlZmZlY3Q7Cisg
ICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKKyAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhlYXBS
YW5nZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QuZGVmID0gZGVmOworICAgICAgICByZXR1cm4g
ZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYs
IEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQorICAgIHsKKyAgICAg
ICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOworICAg
ICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAgICAgICAgZWZmZWN0LmRlZiA9IGRl
ZjsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisKKyAgICBib29sIG11c3RHZW5lcmF0
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd3JpdGVzIHx8IGV4aXRzU2lkZXdheXM7
CisgICAgfQorfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MWYyMzkwMWNhNTEwMGJm
ZDI5MGNiZjEyMzM2ODAxYzZmOGNiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKworI2lmIEVOQUJMRShKSVQpCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordm9pZCBIZWFwUmFuZ2U6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnRmKCIweCV4LTB4JXgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYmVnaW4oKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
bmQoKSkpOworfQorCisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNWQ0Y2Y5ZGZjNzVkY2QyMjY2
MDlhNzQ4NWFiYzMyNjk3Y2FmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgor
CisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewor
CitjbGFzcyBIZWFwUmFuZ2UgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBIZWFwUmFuZ2UoKSA9
IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIgSGVhcFJhbmdlKHVpbnQxNl90IGJlZ2luLCB1aW50
MTZfdCBlbmQpCisgICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICAgICAgLCBtX2VuZChlbmQp
CisgICAgeworICAgIH0KKworICAgIGVudW0gUmF3UmVwcmVzZW50YXRpb25UYWcgeyBSYXdSZXBy
ZXNlbnRhdGlvbiB9OworICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBIZWFwUmFuZ2UoUmF3UmVwcmVz
ZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVlKQorICAgICAgICA6IG1fYmVnaW4oc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KHZhbHVlID4+IDE2KSkKKyAgICAgICAgLCBtX2VuZChzdGF0aWNfY2FzdDx1
aW50MTZfdD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgSGVhcFJhbmdlIGZy
b21SYXcodWludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJh
d1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CisgICAgfQorCisgICAgdWludDE2X3QgYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgdWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9lbmQ7IH0KKyAgICB1aW50MzJfdCByYXdSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIChz
dGF0aWNfY2FzdDx1aW50MzJfdD4obV9iZWdpbikgPDwgMTYpIHwgbV9lbmQ7IH0KKworICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmVn
aW4gIT0gbV9lbmQ7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5n
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5t
X2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5kOworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dGV4cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIEhlYXBSYW5nZSgwLCBVSU5UMTZfTUFYKTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIG5vbmUoKSB7IHJldHVybiBIZWFwUmFu
Z2UoVUlOVDE2X01BWCwgVUlOVDE2X01BWCk7IH0gLy8gRW1wdHkgcmFuZ2UuCisKKyAgICBib29s
IGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gbV9iZWdpbiA8PSBvdGhlci5tX2JlZ2luICYmIG90aGVyLm1fZW5kIDw9
IG1fZW5kOworICAgIH0KKworICAgIGJvb2wgaXNTdWJ0eXBlT2YoY29uc3QgSGVhcFJhbmdlJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghKnRoaXMgfHwgIW90aGVyKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGlzU3RyaWN0U3VidHlwZU9mKG90aGVy
KTsKKyAgICB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyYW5nZXNPdmVybGFwKG1fYmVnaW4sIG1f
ZW5kLCBvdGhlci5tX2JlZ2luLCBvdGhlci5tX2VuZCk7CisgICAgfQorCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
dWludDE2X3QgbV9iZWdpbiB7IFVJTlQxNl9NQVggfTsKKyAgICB1aW50MTZfdCBtX2VuZCB7IFVJ
TlQxNl9NQVggfTsKK307CisKK30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhNjU3ZTA2Yzc4OTE5YzIyYzk4ZGNhYTNk
YjMzMWFlOTFjZmQzMWRkLi4zYzNlOGRhNTNmY2VmMjBkZDg0OTg1MzZmZjEzMTdjMWFjYzdlZTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC05MDY0LDcgKzkwNjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21w
aWxlQ2FsbERPTSgpCiAgICAgewotICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBk
b21KSVQgPSBtX25vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgIERPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2lu
dDsKICAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOwogCiAgICAgICAgIExWYWx1ZSBnbG9iYWxP
YmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9NYXRoRXh0cmFzLmgKaW5kZXggMWQyZmMxODRlMGMwNDBmZjc5YzFiNDYxNTJkOTNl
NTM3NmViY2EzNy4uYzEwOTNmYTY4MDY4MWEyMjY2M2IyOWI3NzIyMTEyZjdkOTljYmRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L01hdGhFeHRyYXMuaApAQCAtNDQ0LDEyICs0NDQsOCBAQCBpbmxpbmUgYm9vbCBub25FbXB0eVJh
bmdlc092ZXJsYXAoVCBsZWZ0TWluLCBUIGxlZnRNYXgsIFQgcmlnaHRNaW4sIFQgcmlnaHRNYXgp
CiB7CiAgICAgQVNTRVJUKGxlZnRNaW4gPCBsZWZ0TWF4KTsKICAgICBBU1NFUlQocmlnaHRNaW4g
PCByaWdodE1heCk7Ci0gICAgCi0gICAgaWYgKGxlZnRNaW4gPD0gcmlnaHRNaW4gJiYgbGVmdE1h
eCA+IHJpZ2h0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmlnaHRNaW4gPD0g
bGVmdE1pbiAmJiByaWdodE1heCA+IGxlZnRNaW4pCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBsZWZ0TWF4ID4gcmlnaHRNaW4gJiYgcmlnaHRN
YXggPiBsZWZ0TWluOwogfQogCiAvLyBQYXNzIHJhbmdlcyB3aXRoIHRoZSBtaW4gYmVpbmcgaW5j
bHVzaXZlIGFuZCB0aGUgbWF4IGJlaW5nIGV4Y2x1c2l2ZS4gRm9yIGV4YW1wbGUsIHRoaXMgc2hv
dWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI2YTcwZmVlYWJkNzFjNTNiY2MyYWU3MzAxYjFk
MjQ3YTQ1NGI2OGQuLmEyNWJlNzUyOWE4YzhjZTFiODJlZjg0M2NmYTNhMDA3Y2Q1MjVmZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTM4LDYgKzE1MzgsNyBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAKICAgICBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKIAor
ICAgIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGRvbWppdC9K
U05vZGVET01KSVQuY3BwCiAKICAgICBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZiNTQyMjlkMTIzMGY5YzY3
ZTFlZjZlYjI3NzU3MWMzNDY3YmVmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApAQCAtMCwwICsx
LDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRBYnN0cmFjdEhlYXBfaAorI2RlZmluZSBXZWJDb3JlX0ZX
RF9ET01KSVRBYnN0cmFjdEhlYXBfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVEFi
c3RyYWN0SGVhcC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklURWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklURWZmZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRjMmVmNjg5YjA1
Nzc0ODAzYTY3MzJiOTM0ZDRmZmVlNzA3MDY2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAtMCwwICsx
LDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRFZmZlY3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01K
SVRFZmZlY3RfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVEVmZmVjdC5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQv
RE9NSklUSGVhcFJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklUSGVhcFJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM3ZmE1ZWQyNWU0ZTVhOGYwYmI0ZmYx
NzFiYTNjMDg2NzgxNWVhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaApAQCAtMCwwICsxLDI5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJD
b3JlX0ZXRF9ET01KSVRIZWFwUmFuZ2VfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01KSVRIZWFw
UmFuZ2VfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVEhlYXBSYW5nZS5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYzg3NWFkMDJkZDMyNGMxMTZkZGQ4YmI5NDYxODQ3MDhmNDg5ODRkMi4uZGIxNDRl
MWM3ODExN2JjN2ZmMGI3ZjEwNWFlMmJmYTY5M2UxOTc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE2OSw2ICs2MTY5LDgg
QEAKIAkJRTFGRjhGNkQxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZGOEY2
QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLzsgfTsKIAkJ
RTMxNTBFQTYxREE3MjE5MDAwMTk0MDEyIC8qIEpTTm9kZURPTUpJVC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0FGQTk2NDFEQTZFOTA4MDAyODYx
QkQgLyogSlNOb2RlRE9NSklULmNwcCAqLzsgfTsKIAkJRTMxNTBFQTcxREE3MjE5MzAwMTk0MDEy
IC8qIERPTUpJVEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi87
IH07CisJCUUzNUNBMTREMURCQzNBM0YwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCAqLzsgfTsKKwkJRTM1Q0ExNEUxREJDM0E0MjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNUNBMTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmggKi87IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Qw
NDk5MzFEQURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVF
MyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVs
ZUxvYWRlci5jcHAgKi87IH07CiAJCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRN
b2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLzsg
fTsKQEAgLTEzOTUxLDYgKzEzOTUzLDggQEAKIAkJRTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8q
IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTUwRUE1MURBNzIx
OEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2Rl
RE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZURP
TUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjY4NCw2ICsyMjY4OCw4
IEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUx
NiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKKwkJCQlFMzVDQTE0QzFE
QkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAogCQkJ
CUUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8sCiAJCQkJRTNB
RkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8sCiAJCQkpOwpAQCAt
MjY2MjYsNiArMjY2MzIsNyBAQAogCQkJCTQzOTA0NkU4MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5k
ZXJNYXRoTUxTY3JpcHRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQzEyREEyNUU4MDBB
RjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVB
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyog
UmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovLAogCQkJCURFQkNDREQyMTY2NDZFODIwMEE0NTJF
MSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFG
QTMwM0YxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjg3MjgsNiArMjg3MzUsNyBAQAogCQkJCUIyQzNEQTYyMEQwMDZDRDYwMEVGNkYy
NiAvKiBGb250Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMzOTY5RDAxQjc0MjExRTAw
MkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MjdE
RkQ1MTQyQUFFNDUwMEQ0NDlDQiAvKiBGb250Q2FjaGVJT1MubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM3QzBEMDBBNUMxMDAzMDA3NEQgLyogRm9u
dENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBNjAwRDAwNkNENjAwRUY2RjI2
IC8qIEZvbnRDYXNjYWRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZGQzgwMEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWU2MWU1MDI0NjhjNTc5NTk1ZmFmMmU0ZmIwZDUzZTcxZGEyNWU4OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKKworI2luY2x1ZGUgPGRvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIEVOQUJM
RShKSVQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3N0YXRp
YyBjb25zdCB2ZXJib3NlID0gdHJ1ZTsKKworQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeSgpCit7CisgICAgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBET01I
ZWFwKCJET00iKTsKKyNkZWZpbmUgRE9NSklUX0RFRklORV9IRUFQKG5hbWUsIHBhcmVudCkgSlND
OjpET01KSVQ6OkFic3RyYWN0SGVhcCBuYW1lIyNIZWFwKCNuYW1lKTsKKyAgICBET01KSVRfQUJT
VFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfSEVBUCkKKyN1bmRlZiBET01KSVRfREVGSU5F
X0hFQVAKKworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5hbWUsIHBhcmVudCkgbmFt
ZSMjSGVhcC5zZXRQYXJlbnQoJnBhcmVudCMjSGVhcCk7CisgICAgRE9NSklUX0FCU1RSQUNUX0hF
QVBfTElTVChET01KSVRfSU5JVElBTElaRV9IRUFQKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpF
X0hFQVAKKworICAgIERPTUhlYXAuY29tcHV0ZSgwKTsKKworI2RlZmluZSBET01KSVRfSU5JVElB
TElaRV9NRU1CRVIobmFtZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5nZSgpOworICAg
IERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKQorI3Vu
ZGVmIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUgorCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgZGF0YUxvZygiRE9NSklUIEhlYXAgUmVwb3NpdG9yeTpcbiIpOworICAgICAgICBET01IZWFw
LmRlZXBEdW1wKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQorfQorCitjb25zdCBBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJlcG9zaXRvcnk7
CisgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Cit9CisKK30gfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVjNjQ0OTBhZjMwYjkzNTA4MmZmODQ3ZmJmNzZjMmM3MjFiMGQzNmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRvbWppdC9ET01K
SVRIZWFwUmFuZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKKy8vIERlc2NyaWJlIHlvdXIgYWJzdHJhY3QgaGVh
cCBoaWVyYXJjaHkgaGVyZS4KKy8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50KQorI2RlZmlu
ZSBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKFYpIFwKKyAgICBWKE5vZGUsIERPTSkgXAorICAg
IFYoTm9kZV9maXJzdENoaWxkLCBOb2RlKSBcCisgICAgVihOb2RlX2xhc3RDaGlsZCwgTm9kZSkg
XAorICAgIFYoTm9kZV9wYXJlbnROb2RlLCBOb2RlKSBcCisgICAgVihOb2RlX25leHRTaWJsaW5n
LCBOb2RlKSBcCisgICAgVihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAorCisKK2NsYXNz
IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeSk7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVk
PEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+OworICAgIHN0YXRpYyBjb25zdCBBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5JiBpbnN0YW5jZSgpOworCisgICAgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007
CisKKyNkZWZpbmUgRE9NSklUX0RFRklORV9NRU1CRVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJ
VDo6SGVhcFJhbmdlIG5hbWU7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRf
REVGSU5FX01FTUJFUikKKyN1bmRlZiBET01KSVRfREVGSU5FX01FTUJFUgorCitwcml2YXRlOgor
ICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKK307CisKK30gfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4IDE4MDZiMmFmYTFjNDcxYzAzMDQ2MzBi
ODAzOGYwMzIzZjZlMzYxZWIuLmE4NWJjZGNhYjU4MWViMDFiZTBjMzBmOTZmMzVlY2Q5NGQ0ZDE2
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtMzIsOCArMzIsNyBA
QAogCiAjaWYgRU5BQkxFKEpJVCkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIERP
TUpJVEhlbHBlcnMgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAog
dXNpbmcgSlNDOjpDQ2FsbEhlbHBlcnM7CiB1c2luZyBKU0M6OkdQUlJlZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggYjk2OTNhY2FhNzUyYTQ0NDhkNDE2Y2MwNDE3
NzcyYzAwMGU4N2NiMi4uMjgwMmNmYTZhYTJmZDNlOTMzNzMyMWViYjgwM2JkNThjMGQ0MjY3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmgiCiAjaW5jbHVkZSAiRE9NSklUSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTUyLDExICs1MywxMSBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3coSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNHbG9iYWxPYgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkTm9kZT4KLXN0YXRpYyBS
ZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vz
cyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQgaXNDb250YWlu
ZXJHdWFyZFJlcXVpcmVtZW50KQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9mZnNldCwgSXND
b250YWluZXJHdWFyZFJlcXVpcmVtZW50IGlzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudCkKIHsK
LSAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6
OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7Ci0g
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVl
UmVncygpOwogICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0ID0gcGFyYW1zWzFdLmdwcigpOwog
ICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1syXS5ncHIoKTsKQEAgLTcyLDcgKzczLDcgQEAg
c3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zm
c2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHNjcmF0Y2gsIG9mZnNldCksIHNjcmF0Y2gpOwogICAgICAgICBudWxsQ2FzZXMu
YXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaCkpOwog
Ci0gICAgICAgIERPTUpJVEhlbHBlcnM6OnRvV3JhcHBlcjxXcmFwcGVkTm9kZT4oaml0LCBwYXJh
bXMsIHNjcmF0Y2gsIGdsb2JhbE9iamVjdCwgcmVzdWx0LCB0b1dyYXBwZXJTbG93PFdyYXBwZWRO
b2RlPiwgcGFyYW1zWzFdLnZhbHVlKCkpOworICAgICAgICBET01KSVQ6OnRvV3JhcHBlcjxXcmFw
cGVkTm9kZT4oaml0LCBwYXJhbXMsIHNjcmF0Y2gsIGdsb2JhbE9iamVjdCwgcmVzdWx0LCB0b1dy
YXBwZXJTbG93PFdyYXBwZWROb2RlPiwgcGFyYW1zWzFdLnZhbHVlKCkpOwogICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbnVsbENhc2VzLmxp
bmsoJmppdCk7CkBAIC04Myw4MyArODQsOTkgQEAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYKICAg
ICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAotc3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+
IGNoZWNrTm9kZSgpCitzdGF0aWMgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05v
ZGUoKQogewotICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6
OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6
OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAg
IGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3ROb2RlKGppdCwg
cGFyYW1zWzBdLmdwcigpKSk7CisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUOjpi
cmFuY2hJZk5vdE5vZGUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgcmV0dXJuIGZh
aWx1cmVDYXNlczsKICAgICB9KTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9k
ZSNmaXJzdENoaWxkLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01K
SVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hp
bGRET01KSVQ6OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJl
ZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERP
TSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERP
TUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nl
c3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5v
ZGU6OmZpcnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50
OjpSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2Rl
KikgKyBDb250YWluZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVy
R3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpT
Qzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfZmlyc3RDaGlsZCk7CisgICAgcmV0
dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbGFzdENoaWxkLgotUmVmPERPTUpJVDo6UGF0
Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiB7CiAgICAgcmV0
dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9k
ZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFp
bmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6bGFzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29u
dGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAg
PSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBw
YXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNF
VChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6bGFzdENoaWxkTWVtb3J5
T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAgIHBh
dGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVf
bGFzdENoaWxkKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNuZXh0U2li
bGluZy4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hl
Y2tET00oKQorUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01K
SVQ6OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET00oKQor
UmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklU
OjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxO
b2RlPihOb2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVx
dWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1v
cnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAu
Tm9kZV9uZXh0U2libGluZyk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUj
cHJldmlvdXNTaWJsaW5nLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2li
bGluZ0RPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2Rl
UHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9k
ZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2li
bGluZ0RPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1v
cnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Cisg
ICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5z
dGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNj
ZXNzPE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5l
ckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3Qg
PSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZyk7
CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjcGFyZW50Tm9kZS4KLVJlZjxE
T01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgpCitSZWY8
SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgp
CiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklU
OjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET00oKQogewot
ICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPENvbnRhaW5lck5vZGU+KE5v
ZGU6OnBhcmVudE5vZGVNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50
OjpOb3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVD
YWxsRE9NRm9yT2Zmc2V0QWNjZXNzPENvbnRhaW5lck5vZGU+KE5vZGU6OnBhcmVudE5vZGVNZW1v
cnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAu
Tm9kZV9wYXJlbnROb2RlKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNu
b2RlVHlwZS4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2hl
Y2tET00oKQorUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6
OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNhbGxET00oKQorUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9N
KCkKIHsKLSAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIFJlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQ6OmNyZWF0ZSgpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvclB1cmUoKTsKICAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0ID0g
ZmFsc2U7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGpp
dCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1sw
XS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsK
ICAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhub2RlLCBKU0M6OkpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCByZXN1bHQucGF5bG9hZEdQUigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292539</attachid>
            <date>2016-10-22 23:03:40 -0700</date>
            <delta_ts>2016-10-23 00:26:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161022225958.patch</filename>
            <type>text/plain</type>
            <size>84405</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4yMDA5ODk2YzJlNDM3Yzc2
MmVkNTA1ODY4YjJmZDg2MDRiYzRjNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTYtMTAtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZvciBET01KSVQ6OlBhdGNocG9p
bnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRE9NSklUOjpFZmZlY3QuIEl0IGRl
c2NyaWJlcyB0aGUgc2lkZSBlZmZlY3RzIG9mCisgICAgICAgIHRoZSBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50LiBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50IGNhbiB1c2UgdGhpcworICAgICAg
ICBmZWF0dXJlIHRvIHRlYWNoIHRoZSBjb21waWxlcnMgYWJvdXQgdGhlIGVmZmVjdHMuIEFuZCB0
aGUgY29tcGlsZXJzCisgICAgICAgIHdpbGwgcGVyZm9ybSBDU0UgYW5kIExJQ00gYmFzZWQgb24g
dGhlIHJlcG9ydGVkIGVmZmVjdHMuCisKKyAgICAgICAgQXMgdGhlIHNhbWUgdG8gQjMncyBIZWFw
UmFuZ2UsIHRoZSBlZmZlY3RzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YKKyAgICAgICAg
aW50ZWdlcnMuIFtiZWdpbiwgZW5kKSBwYWlyIHdpbGwgcmVwcmVzZW50cyB0aGUgcmFuZ2Ugb2Yg
dGhlIGFic3RyYWN0CisgICAgICAgIGhlYXAuIFdlIGVuY29kZSB0aGUgYWJzdHJhY3QgaGVhcCBo
aWVyYXJjaHkgaW50byB0aGVzZSBwYWlycy4gTGlrZSwKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSb290OiBbMCwgMzIpCisgICAgICAgICAgICAgICAgIENoaWxkMTogWzAsIDIw
KSAgICAgICAgICAgICBDaGlsZDI6IFsyMCwgMzIpCisgICAgICAgIENoaWxkMTE6IFswLCA0KSBD
aGlsZDEyOiBbNCwgMjApCisKKyAgICAgICAgVGhpcyBzaW1wbGlmaWVzIHRoZSByZXByZXNlbnRh
dGlvbiBvZiB0aGUgYWJzdHJhY3QgaGVhcC4gQW5kIFdlYkNvcmUKKyAgICAgICAganVzdCB0ZWxs
cyBwYWlycyBvZiBpbnRlZ2VycyBhbmQgaXQgZG9lcyBub3QgdGVsbCBhbnkgZGV0YWlsZWQgaGll
cmFyY2h5LgorICAgICAgICBTbywgREZHIGFuZCBGVEwgY2FuIG9wdGltaXplIERPTSBvcGVyYXRp
b25zIHdpdGhvdXQgZGVlcCBrbm93bGVkZ2Ugb2YKKyAgICAgICAgdGhlIERPTSBhYnN0cmFjdCBo
ZWFwIGhpZXJhcmNoeS4gRm9yIGV4YW1wbGUsIFdlYkNvcmUgd2lsbCB0ZWxsIHRoYXQKKyAgICAg
ICAgZmlyc3RDaGlsZCB3aWxsIHJlYWQgTm9kZV9maXJzdENoaWxkIGFic3RyYWN0IGhlYXAuIEJ1
dCB0aGlzIGluZm9ybWF0aW9uCisgICAgICAgIGlzIGVuY29kZWQgdG8gdGhlIHBhaXIgYW5kIERG
RyBkb2VzIG5vdCBrbm93IHRoZSBkZXRhaWxzLiBCdXQgc3RpbGwKKyAgICAgICAgREZHIGNhbiB1
bmRlcnN0YW5kIHRoZSBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBhbmQgY2FuIHF1ZXJ5IHdoZXRo
ZXIgdGhlCisgICAgICAgIGdpdmVuIGFic3RyYWN0IGhlYXAgb3ZlcmxhcHMgd2l0aCBzb21lIGFi
c3RyYWN0IGhlYXAuCisKKyAgICAgICAgVG9sZCBoZWFwIHJhbmdlIGlzIHJlcHJlc2VudGVkIGFz
IERPTUpJVDo6SGVhcFJhbmdlLiBERkcgd2lsbCBoYW5kbGUKKyAgICAgICAgdGhpcyB1bmRlciB0
aGUgRE9NU3RhdGUgYWJzdHJhY3QgaGVhcC4gRE9NSklUOjpIZWFwUmFuZ2UgaXMgc3RvcmVkIGlu
CisgICAgICAgIERGRzo6QWJzdHJhY3RIZWFwJ3MgUGF5bG9hZC4gV2UgbWFpbnRhaW4gdGhlIGhp
ZXJhcmNoeSBieSBET01KSVQ6OkhlYXBSYW5nZQorICAgICAgICBpbiB0aGUgRE9NU3RhdGUgYWJz
dHJhY3QgaGVhcC4gV2UgYWRkIGEgbmVjZXNzYXJ5IGhhbmRsaW5nIGluIERGRydzCisgICAgICAg
IEFic3RyYWN0SGVhcCBhbmQgQ2xvYmJlclNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBpbnRy
b2R1Y2UgRE9NU3RhdGVMb2MgZm9yIEhlYXBMb2NhdGlvbi4gSXQgaXMgY29tYmluZWQgd2l0aAor
ICAgICAgICBET01TdGF0ZSBBYnN0cmFjdEhlYXAgd2l0aCBET01KSVQ6OkhlYXBSYW5nZS4gRm9y
IGV4YW1wbGUsIHdlIGNhbgorICAgICAgICByZXByZXNlbnQgTm9kZS5maXJzdENoaWxkIGFzIGBy
ZWFkKERPTVN0YXRlOk5vZGVfZmlyc3RDaGlsZClgIGFuZAorICAgICAgICBgZGVmKEhlYXBMb2Nh
dGlvbihub2RlLCBET01TdGF0ZTpOb2RlX2ZpcnN0Q2hpbGQpKWAgdGhpbmd5LiBUaGlzIGFsbG93
cyB1cworICAgICAgICB0byBwZXJmb3JtIENTRSBvbnRvIERPTSBnZXR0ZXJzIHRoYXQgd2lsbCBy
ZWFkIHNvbWUgb2YgRE9NIGhlYXAhCisKKyAgICAgICAgRm9yIHNpbXBsaWNpdHksIHdlIGNvbnZl
cnQgQ2FsbERPTSBmcm9tIE5vZGVWYXJBcmdzIHRvIHRoZSBub3JtYWwgb25lLgorICAgICAgICBD
YWxsRE9NIGlzIG5vdyBqdXN0IHVzZWQgZm9yIERPTUpJVCBnZXR0ZXIuIFNvIGl0cyBjaGlsZHJl
biBpcyBhdCBtb3N0IDIuCisgICAgICAgIEl0IG1heSBoYXZlIGVpdGhlciAxIG9yIDIgY2hpbGRy
ZW4uIElmIHRoZSBnbG9iYWwgb2JqZWN0IGlzIHJlcXVpcmVkCisgICAgICAgIGJ5IENhbGxET01Q
YXRjaHBvaW50LCBpdCBoYXMgMiBjaGlsZHJlbi4gQW5kIHdlIGNoYW5nZWQgdGhlIG9yZGVyIG9m
CisgICAgICAgIHRoZSBjaGlsZHJlbiB0byBmdXJ0aGVyIHNpbXBsaWZ5IHRoZSBjb2RlLiBCZWZv
cmUgdGhpcyBjaGFuZ2UsIHRoZSBvcmRlcgorICAgICAgICBpcyAxOiBnbG9iYWxPYmplY3QgMjog
YmFzZS4gQWZ0ZXIgdGhpcyBwYXRjaCwgdGhlIG9yZGVyIGJlY29tZXMgMTogYmFzZSwKKyAgICAg
ICAgYW5kIDI6IGdsb2JhbE9iamVjdC4gQW5kIHRoZSBjaGlsZDIgbWF5IG5vdCBleGlzdHMgaWYg
dGhlIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaXMgbm90IHJlcXVpcmVkLiBXZSBjaGFuZ2VkIGFs
bCB0aGUgZXhpc3RpbmcgRE9NSklUIHBhdGNocG9pbnQgdG8gdGhpcworICAgICAgICBmb3JtLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SGVhcDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SGVhcDo6aXNTdHJpY3RTdWJ0eXBlT2YpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SGVhcDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpibGVzc0Nh
bGxET00pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRH
ZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDbG9iYmVyU2V0OjpvdmVybGFwcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJTZXQu
aDoKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
Lmg6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uaDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhbGxET01EYXRh
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9NRGF0YSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OmNhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAg
ICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkFic3RyYWN0SGVhcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFw
OjpzaGFsbG93RHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpkZWVw
RHVtcCk6CisgICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50Lmgu
CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpBYnN0cmFjdEhlYXApOgorICAg
ICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcDo6c2V0UGFyZW50KToKKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OmlzUm9vdCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
QWJzdHJhY3RIZWFwOjppc0NvbXB1dGVkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFj
dEhlYXA6OnJhbmdlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQu
aDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklURWZmZWN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAg
KEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
Zik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0R2VuZXJhdGUpOgorICAgICAg
ICAqIGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6
OkRPTUpJVDo6SGVhcFJhbmdlOjpkdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJh
bmdlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6SGVhcFJhbmdl
KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcpOgorICAgICAgICAo
SlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpET01KSVQ6Okhl
YXBSYW5nZTo6ZW5kKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnJhd1JlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIGJv
b2wpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3ApOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6bm9uZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N0
cmljdFN1YnR5cGVPZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N1YnR5
cGVPZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvdmVybGFwcyk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBqc2MuY3BwOgorCiAyMDE2
LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGls
bCBhbG9uZyBib3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9u
IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uZDY2
MDkwNzc3NTI4MzExOTI0ODRlNTYwODI3ZGY3ZTQ2YjY0NjdiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxNi0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHBy
ZXNzIGVmZmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNpbXBsaWZ5IG5vbkVtcHR5UmFuZ2VzT3ZlcmxhcC4KKworICAgICAgICAqIHd0Zi9NYXRo
RXh0cmFzLmg6CisgICAgICAgIChXVEY6Om5vbkVtcHR5UmFuZ2VzT3ZlcmxhcCk6CisKIDIwMTYt
MTAtMjAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIFdBU00gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTk4M2I5NjcxNGIyYjI3
ZmQ4MGVhOTQ5MGUxOGYwNGQ3ZDA5Mjg5Li41ZmViNDNjYzg0NDJjMjlmYWNkZTE0ODEwYjE4YTE4
ODg4YmQyYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTYtMTAtMjIgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRk
IGEgd2F5IGZvciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRE9NUGF0Y2hwb2lu
dCBub3cgaGFzIHRoZSB3YXkgdG8gdGVsbCBpdHMgZWZmZWN0cyB0byBERkcgYW5kIEZUTCBjb21w
aWxlcnMuCisgICAgICAgIFdlYkNvcmUgRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHdp
bGwgY29uc3RydWN0IHRoZSBoaWVyYXJjaHkgb2YgdGhlIGFic3RyYWN0CisgICAgICAgIGhlYXAu
IEFuZCB0aGVuIGl0IGVuY29kZXMgdGhlc2UgaW5mb3JtYXRpb24gaW50byB0aGUgcGFpcnMgb2Yg
dGhlIGludGVnZXJzLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNoIGFsc28gY2hhbmdlcyB0aGUg
RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIFNvIHdl
IGNoYW5nZSB0aGVtIGluIGFsbCB0aGUgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCBzaXRlcy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJz
L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRFZmZlY3QuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6Omluc3RhbmNlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgICogZG9taml0L0RPTUpJVEhlbHBlcnMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V29ybGRJc05vcm1h
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5v
dFdlYWtJc0xpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6
dHJ5TG9va1VwV3JhcHBlckNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJ
VEhlbHBlcnM6OnRvV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRI
ZWxwZXJzOjpicmFuY2hJZkRPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3RET01XcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm9kZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZFbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RWxlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkRvY3VtZW50
V3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFu
Y2hJZk5vdERvY3VtZW50V3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0L0pTTm9k
ZURPTUpJVC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNj
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZp
cnN0Q2hpbGRET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGls
ZERPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJ
VDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNo
ZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERP
TSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RP
TSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9N
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAtMjIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkaW5nIGN1c3RvbSBlbGVt
ZW50IHNob3VsZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQgYW5kIGNvbm5lY3RlZCBjYWxsYmFj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMWNiMjk0NzM3YjI0NGYy
MWRiN2E5NTM5NzllNDkyYjczMDA0MmQ4Li44N2Y3M2U1YTA3MGNjMTIyMWZjOGQ0MjMyMjVjMzcx
ODYwNjQ5ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MTMsNiAr
NDEzLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkaXNhc3NlbWJsZXIvdWRp
czg2L3VkaXM4Nl9zeW4taW50ZWwuYwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5
bi5jCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcAorICAgIGRvbWppdC9ET01K
SVRIZWFwUmFuZ2UuY3BwCisKICAgICBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAogICAgIGZ0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVy
eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFkYTMxNGRh
NmNmYjQ3MDFhMzMzOGZiMzBjMzM3MS4uZmFiMjE5ODI2YjM5Nzc1NzdkNWUwZDM0NTNjZjNjZDJj
ZTA1MWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjMsNiArMjE2Mywx
MCBAQAogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTVBhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1
Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4
NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8q
IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzNTVGMzUzMUI3REM4NTMwMEM1
MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVM
b2FkZXJQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTM1Q0ExNTMxREJDM0E1QzAwRjgzNTE2IC8qIERP
TUpJVEhlYXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAq
LzsgfTsKKwkJRTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJD
M0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNUNBMTU1MURCQzNBNUYwMEY4MzUxNiAvKiBE
T01KSVRBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cC5jcHAgKi87IH07CisJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFj
dEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NUNBMTUwMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FCNDNF
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDcz
QUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlFMzVF
MDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFC
N0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5jcHAgKi87IH07CkBAIC0yMTc3LDYgKzIxODEsNyBAQAogCQlFM0JGRDBCQjFE
QUY4MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkxREFG
ODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLzsg
fTsKIAkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQ
YXJhbXMuaCAqLzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDNzlDQUIxREI5QTREQzAw
RDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIz
OUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMx
QzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICov
OyB9OwpAQCAtNDUzMyw2ICs0NTM4LDEwIEBACiAJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAv
KiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzU1RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUxvYWRlclByb3Rv
dHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUxMUI3REM4NTMw
MEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNUNBMTRGMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RI
ZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTAxREJDM0E1NjAw
RjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUSGVhcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhl
YXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNF
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDcz
QUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTQ4LDYgKzQ1NTcsNyBAQAogCQlFM0JGRDBCOTFEQUY4
MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9p
bnRQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0JGRDBCQTFEQUY4
MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMDhFM0IxREE0MUI3QjAwMzk0
NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSklUUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M3
OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUpJVEVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTbG93UGF0aENhbGxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDAzLDggKzc0MTMsMTMgQEAKIAkJRTNGRjc1MkQx
RDlDRTlFQTAwQzdFMTZEIC8qIGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcC5jcHAgKi8sCisJCQkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFi
c3RyYWN0SGVhcC5oICovLAogCQkJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRD
YWxsRE9NUGF0Y2hwb2ludC5oICovLAorCQkJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBE
T01KSVRFZmZlY3QuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklU
R2V0dGVyU2V0dGVyLmggKi8sCisJCQkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJ
VEhlYXBSYW5nZS5jcHAgKi8sCisJCQkJRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJ
VEhlYXBSYW5nZS5oICovLAogCQkJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQ
YXRjaHBvaW50LmggKi8sCiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBh
dGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUmVnLmggKi8sCkBAIC03NjMyLDYgKzc2NDcsNyBAQAogCQkJCTBGOTZFQkIzMTY2NzZFRjYw
MDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
RjE4MjIxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkg
aW4gSGVhZGVycyAqLywKKwkJCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZm
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29k
ZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTg2
RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAq
LywKQEAgLTgyOTksNiArODMxNSw3IEBACiAJCQkJQUQyRkNDMUYxREI1OUNCMjAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRB
YnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAw
MkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZCMUMxNjI1QkUw
MDMyM0Y2NyAvKiBCM0NGRy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDE3LDYgKzg0MzQsNyBAQAog
CQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMDE4NDE5MUQxMEMxODkwMDU3QjA1MyAvKiBKSVRXb3JrbGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzNUNBMTU0MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFw
UmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJFQSAvKiBt
b2RlbHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyog
TW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1
MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTkyNCw2
ICs5OTQyLDcgQEAKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQcm9maWxl
clByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNFNDBEMUI2MThC
NjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlF
MzVDQTE1MzFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3Bl
cnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUzOUZGRjE2REQxNDRCMDAwM0NENEEg
LyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5NDIsNiArOTk2MSw3IEBA
CiAJCQkJODY0MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MzEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQ0MTA3RUMwOTMwMDEzRTdCMiAvKiBS
ZWdFeHBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNTUxREJDM0E1RjAw
RjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQw
QzdBMDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTQwQzdBMTFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lz
dGVyU2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggY2RkZjFjNjFkODdjNjhiNDk5
MTE0NjEyNzE1NGFlMWMwYzQ3NTJkOS4uODQ3MTI4YjVmMTBlOWE3MjhjN2ZmZjg4YzI4OGM1NjM3
NjlmY2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0xNDcxLDExICsxNDcxLDExIEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBHUFJSZWcg
YmFzZUZvckdlCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvckRPTUpJVCA9IHN0
cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIHJlZ3MuYXBwZW5kKHBhcmFtVmFsdWVS
ZWdzKTsKKyAgICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOwogICAgIGlmIChwYXRjaHBvaW50
LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEFTU0VSVChwYXJhbUdsb2JhbE9iamVj
dEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1
ZShwYXJhbUdsb2JhbE9iamVjdEdQUiwgZ2xvYmFsT2JqZWN0Rm9yRE9NSklUKSk7CiAgICAgfQot
ICAgIHJlZ3MuYXBwZW5kKHBhcmFtQmFzZUdQUik7CiAKICAgICBpZiAocGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzKSB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDFlMTEwMTkwMmRi
MjVlYWQ3ZjhkN2VmOTliNDljNDg0MWMxOGQxMWQuLmNkNjk0YmJlYmFjODA3ZDUxOGY2NmM0N2Nh
YWFiNmU3OGU5MWQyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SGVhcC5jcHAKQEAgLTQ1LDYgKzQ1LDEwIEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KGtpbmQoKSk7CiAgICAgaWYgKGtp
bmQoKSA9PSBJbnZhbGlkQWJzdHJhY3RIZWFwIHx8IGtpbmQoKSA9PSBXb3JsZCB8fCBraW5kKCkg
PT0gSGVhcCB8fCBwYXlsb2FkKCkuaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChr
aW5kKCkgPT0gRE9NU3RhdGUpIHsKKyAgICAgICAgb3V0LnByaW50KCIoIiwgRE9NSklUOjpIZWFw
UmFuZ2U6OmZyb21SYXcocGF5bG9hZCgpLnZhbHVlMzIoKSksICIpIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgb3V0LnByaW50KCIoIiwgcGF5bG9hZCgpLCAiKSIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCAwYWJkNTAyN2Iy
NmFlYjM5NGYyOWMwMzhmZDlmMmQ1OTJlNmMxNjM5Li5mNTFmODJmZTEzN2UyNWEzZjc5YTUyYjFm
MTFiMGM1MzMxYTMwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5j
bHVkZSAiRE9NSklUSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAg
LTczLDYgKzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KE1hdGhEb3RSYW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKICAgICBt
YWNybyhBYnNvbHV0ZSkgXAorICAgIC8qIERPTUpJVCB0ZWxscyB0aGUgaGVhcCByYW5nZSB3aXRo
IHRoZSBwYWlyIG9mIGludGVnZXJzLiAqL1wKKyAgICBtYWNybyhET01TdGF0ZSkgXAogICAgIC8q
IFVzZSB0aGlzIGZvciB3cml0ZXMgb25seSwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1heSBmaXJl
IHdhdGNocG9pbnRzLiBVc3VhbGx5IHRoaXMgaXMgbmV2ZXIgZGlyZWN0bHkgd3JpdHRlbiBidXQg
aW5zdGVhZCB3ZSB0ZXN0IHRvIHNlZSBpZiBhIG5vZGUgY2xvYmJlcnMgdGhpczsgaXQganVzdCBz
byBoYXBwZW5zIHRoYXQgeW91IGhhdmUgdG8gd3JpdGUgd29ybGQgdG8gY2xvYmJlciBpdC4gKi9c
CiAgICAgbWFjcm8oV2F0Y2hwb2ludF9maXJlKSBcCiAgICAgLyogVXNlIHRoZXNlIGZvciByZWFk
cyBvbmx5LCBqdXN0IHRvIGluZGljYXRlIHRoYXQgaWYgdGhlIHdvcmxkIGdvdCBjbG9iYmVyZWQs
IHRoZW4gdGhpcyBvcGVyYXRpb24gd2lsbCBub3Qgd29yay4gKi9cCkBAIC0yMzMsNiArMjM2LDE1
IEBAIGNsYXNzIEFic3RyYWN0SGVhcCB7CiAgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25z
dCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgQWJzdHJhY3RIZWFw
IGN1cnJlbnQgPSAqdGhpczsKKyAgICAgICAgaWYgKGN1cnJlbnQua2luZCgpID09IERPTVN0YXRl
ICYmIG90aGVyLmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAgICAgUGF5bG9hZCBjdXJy
ZW50UGF5bG9hZCA9IGN1cnJlbnQucGF5bG9hZCgpOworICAgICAgICAgICAgUGF5bG9hZCBvdGhl
clBheWxvYWQgPSBvdGhlci5wYXlsb2FkKCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFBheWxv
YWQuaXNUb3AoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBp
ZiAob3RoZXJQYXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY3VycmVudFBheWxv
YWQudmFsdWUzMigpKS5pc1N0cmljdFN1YnR5cGVPZihET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJh
dyhvdGhlclBheWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGN1
cnJlbnQua2luZCgpICE9IFdvcmxkKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5z
dXBlcnR5cGUoKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50ID09IG90aGVyKQpAQCAtMjQ4LDcg
KzI2MCwxNiBAQCBjbGFzcyBBYnN0cmFjdEhlYXAgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMo
Y29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAq
dGhpcyA9PSBvdGhlciB8fCBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikgfHwgb3RoZXIuaXNTdHJp
Y3RTdWJ0eXBlT2YoKnRoaXMpOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSAmJiBvdGhl
ci5raW5kKCkgPT0gRE9NU3RhdGUpIHsKKyAgICAgICAgICAgIFBheWxvYWQgY3VycmVudFBheWxv
YWQgPSBwYXlsb2FkKCk7CisgICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVy
LnBheWxvYWQoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpIHx8IG90
aGVyUGF5bG9hZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgcmV0dXJuIERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGN1cnJlbnRQYXlsb2FkLnZh
bHVlMzIoKSkub3ZlcmxhcHMoRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcob3RoZXJQYXlsb2Fk
LnZhbHVlMzIoKSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVP
ZihvdGhlcikgfHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBlT2YoKnRoaXMpOwogICAgIH0KICAgICAK
ICAgICBib29sIGlzRGlzam9pbnQoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCBhMTJmMDljYjFiOTRhMGEzMDQzNjM3MGM3MmFhMjFjNWVkODE5
NWZiLi5mMDlkNDFiN2I3Y2EzMzNhMjQwOWIxZTU0NWI1NTg0MGRjZjBmYTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0yMjg5LDEwICsyMjg5LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgIGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgIGNhc2UgQ2FsbERP
TTogeworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9k
ZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPmVm
ZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRv
cCgpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAg
ICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRD
b25zdGFudHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDQ4ODQyMDZiM2Y1NmQ3NGU2ZjI2ZWY1NmI1OGNmYWE1NjU3MGQ4
OTkuLjA2MDMxNjhkOTIxNGMzNGIxNGNjYjcxMGM5MzBkZTRkMjhjMjgxNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjczLDYg
KzI2NzMsMTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgdm9pZCBibGVzc0NhbGxET00oTm9kZSogbm9kZSkK
K3sKKyAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICBpZiAoIXBhdGNocG9pbnQtPmVmZmVjdC5tdXN0
R2VuZXJhdGUoKSkKKyAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
K30KKwogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQpA
QCAtMjY5MSwxNCArMjY5OCwyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRH
ZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JgogICAgIC8vIFdl
IGRvIG5vdCBuZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0
b20gYWNjZXNzb3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5z
aXRpb24gb2NjdXJzLgogICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhjaGVja0RPTVBh
dGNocG9pbnQucHRyKCkpLCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9k
ZSk7CiAKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEgPSBtX2dyYXBoLm1fY2FsbERPTURh
dGEuYWRkKCk7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET01QYXRj
aHBvaW50ID0gZG9tSklULT5jYWxsRE9NKCk7CiAgICAgbV9ncmFwaC5tX2RvbUpJVFBhdGNocG9p
bnRzLmFwcGVuZChjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSk7CisKKyAgICBjYWxsRE9NRGF0YS0+
ZG9tSklUID0gZG9tSklUOworICAgIGNhbGxET01EYXRhLT5wYXRjaHBvaW50ID0gY2FsbERPTVBh
dGNocG9pbnQucHRyKCk7CisKKyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IG51bGxwdHI7CisgICAg
Ly8gR2xvYmFsT2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERP
TVdyYXBwZXIuCiAgICAgaWYgKGNhbGxET01QYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0
KSB7CiAgICAgICAgIE5vZGUqIGdsb2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2Jq
ZWN0LCB0aGlzTm9kZSk7Ci0gICAgICAgIGFkZFZhckFyZ0NoaWxkKGdsb2JhbE9iamVjdCk7IC8v
IEdsb2JhbE9iamVjdCBvZiB0aGlzTm9kZSBpcyBhbHdheXMgdXNlZCB0byBjcmVhdGUgYSBET01X
cmFwcGVyLgotICAgIH0KLSAgICBhZGRWYXJBcmdDaGlsZCh0aGlzTm9kZSk7Ci0gICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENh
bGxET00sIE9wSW5mbyhjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhwcmVkaWN0aW9u
KSkpOworICAgICAgICBjYWxsRE9NTm9kZSA9IGFkZFRvR3JhcGgoQ2FsbERPTSwgT3BJbmZvKGNh
bGxET01EYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCB0aGlzTm9kZSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY2FsbERPTU5vZGUgPSBhZGRUb0dyYXBoKENhbGxET00sIE9w
SW5mbyhjYWxsRE9NRGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgdGhpc05vZGUpOworICAgIGJs
ZXNzQ2FsbERPTShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwgY2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcAppbmRleCBkNDYzMGUzNzBjYjBiYWMy
M2Q5OTQyZjVmZmNlMzhmYjU4ZGEyZGVjLi41OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUxYWExYTc5
MjQ0OWY3ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5j
cHAKQEAgLTgxLDYgKzgxLDIzIEBAIGJvb2wgQ2xvYmJlclNldDo6b3ZlcmxhcHMoQWJzdHJhY3RI
ZWFwIGhlYXApIGNvbnN0CiB7CiAgICAgaWYgKG1fY2xvYmJlcnMuZmluZChoZWFwKSAhPSBtX2Ns
b2JiZXJzLmVuZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5raW5kKCkg
PT0gRE9NU3RhdGUgJiYgIWhlYXAucGF5bG9hZCgpLmlzVG9wKCkpIHsKKyAgICAgICAgLy8gRE9N
U3RhdGUgaGVhcCBoYXMgaXRzIG93biBoaWVyYXJjaHkuIEZvciBkaXJlY3QgaGVhcCBjbG9iYmVy
cyB0aGF0IHBheWxvYWQgaXMgbm90IFRvcCwKKyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1ZXJ5IHdo
ZXRoZXIgdGhlIGNsb2JiZXIgb3ZlcmxhcHMgd2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAgICAgICAg
RE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhoZWFw
LnBheWxvYWQoKS52YWx1ZTMyKCkpOworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fY2xvYmJl
cnMpIHsKKyAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAg
IGlmICghZGlyZWN0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJz
dHJhY3RIZWFwIGNsb2JiZXIgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLmtp
bmQoKSAhPSBET01TdGF0ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGlmIChjbG9iYmVyLnBheWxvYWQoKS5pc1RvcCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgaWYgKERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2JiZXIucGF5
bG9hZCgpLnZhbHVlMzIoKSkub3ZlcmxhcHMocmFuZ2UpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQogICAgIHdoaWxlIChoZWFwLmtpbmQoKSAhPSBXb3Js
ZCkgewogICAgICAgICBoZWFwID0gaGVhcC5zdXBlcnR5cGUoKTsKICAgICAgICAgaWYgKGNvbnRh
aW5zKGhlYXApKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAppbmRl
eCA3MjlmMzliMTE4NTE4YTk1NTVlYzQ2MTY2ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdmZGI0MjMy
ZWMwYjJhYzUwMGE2NTA1ZTRjOTU0OTM0ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuaApAQCAtNTIsMTEgKzUyLDExIEBAIGNsYXNzIENsb2JiZXJTZXQgewog
ICAgIAogICAgIHZvaWQgYWRkKEFic3RyYWN0SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwoY29uc3Qg
Q2xvYmJlclNldCYpOwotICAgIGJvb2wgY29udGFpbnMoQWJzdHJhY3RIZWFwKSBjb25zdDsKICAg
ICBib29sIG92ZXJsYXBzKEFic3RyYWN0SGVhcCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwog
ICAgIAogICAgIC8vIENhbGxzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0Lgor
ICAgIC8vIERvIG5vdCBjYWxsIGZvciBub24gZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwg
eW91IG11c3QgaGFuZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAg
SGFzaFNldDxBYnN0cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJh
Y3RIZWFwPiBzdXBlcigpIGNvbnN0OwpAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBDbG9iYmVyU2V0
IHsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Cisg
ICAgYm9vbCBjb250YWlucyhBYnN0cmFjdEhlYXApIGNvbnN0OworCiAgICAgSGFzaFNldDxBYnN0
cmFjdEhlYXA+IHNldE9mKGJvb2wgZGlyZWN0KSBjb25zdDsKICAgICAKICAgICAvLyBNYXBzIGhl
YXAgdG86CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5
MjkzMzdhZmU5Mzg3MmU1MDgxODBkMmI1ZjJjYzZiNmFiYzg0NGMuLmYyNmEwMTNkN2Y2MDhhNTk0
MDhiYjAzOTY0NjYxNTFiODU3MGU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIK
KyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTkwNywxMCArOTA4LDM0IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxk
KTsKLSAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgp
LT5wYXRjaHBvaW50OworICAgICAgICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRjaHBvaW50
LT5lZmZlY3Q7CisgICAgICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChl
ZmZlY3QucmVhZHMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAg
IHJlYWQoV29ybGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJz
dHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOwor
ICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAo
ZWZmZWN0LndyaXRlcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAg
ICAgd3JpdGUoSGVhcCk7IC8vIFdlIGRvIG5vdCBhc3N1bWUgdGhhdCBET00gb3BlcmF0aW9ucyB3
aWxsIHdyaXRlKFN0YWNrKS4KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0
ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24o
KSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3QuZGVmKSB7CisgICAgICAgICAgICBE
T01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAg
IGlmIChyYW5nZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAg
IGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2FsbERPTURhdGEoKS0+ZG9tSklUKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9u
LiBXZSBkbyBub3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGlu
Zm9ybWF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBiYXNlIG5vZGUuCisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyB0aGUgb3RoZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50
QnlJZCgic3RyaW5nIiksIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBiYXNlIGFuZCB0aGUgaWQgc3Ry
aW5nLgorICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzZWUgdGhlIERPTUpJ
VCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgorICAgICAgICAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0
ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUo
bm9kZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAzZjEzODQyY2FmNGI1YzZl
ZTFmMDljNTRhYTNkOGEwMDYyMzZjNTI5Li5mMzViNjZjZTE3ZTQwMzk4MmQwMjhhZjM4MmI5MWJk
NjA4NTdlYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0x
MTgsNyArMTE4LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2Ug
R2V0QnV0dGVyZmx5OgotICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNlIENoZWNrRE9NOgogICAg
IGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgpAQCAtMjk5LDYgKzI5OCw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0cmluZ1Jl
cGxhY2VSZWdFeHA6CiAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6
CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAg
Y2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggMzNjMGNmMTkyMDg1YjUwMDRiMjAwODllMmQzYjA2OTI5MDQ4ODU5
OC4uZGJjMTAxNzUyMjY0NWUwOWZlOWFjNDQxNjM4YjZjMWZlNWIzYzcxYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzExLDExICsxNzExLDEw
IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBDYWxsRE9NOiB7Ci0gICAgICAgICAgICBpbnQgY2hpbGRJbmRleCA9
IDA7Ci0gICAgICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0g
bm9kZS0+Y2FsbERPTVBhdGNocG9pbnQoKTsKKyAgICAgICAgICAgIERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50Owor
ICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KICAg
ICAgICAgICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNo
aWxkSW5kZXgrKykpOyAvLyBHbG9iYWxPYmplY3QuCi0gICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOyAvLyBH
bG9iYWxPYmplY3QuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNzZiMmJhZWM3MTZjMmYzNmI2YmU1NDM2MGE5ZDMz
ZGQ0YTE0ZjNhYy4uZjk1N2Y1Y2ZiZDc4OGVkZDYyNjg5NWZmMWRlMzUwNzEzNmQxNDE4MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTAxLDYgKzkwMSw3IEBAIGNsYXNz
IEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8TG9hZFZhcmFyZ3NE
YXRhPiBtX2xvYWRWYXJhcmdzRGF0YTsKICAgICBCYWc8U3RhY2tBY2Nlc3NEYXRhPiBtX3N0YWNr
QWNjZXNzRGF0YTsKICAgICBCYWc8TGF6eUpTVmFsdWU+IG1fbGF6eUpTVmFsdWVzOworICAgIEJh
ZzxDYWxsRE9NRGF0YT4gbV9jYWxsRE9NRGF0YTsKICAgICBWZWN0b3I8SW5saW5lVmFyaWFibGVE
YXRhLCA0PiBtX2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0
ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVMaXZlbmVzczsK
ICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPj4g
bV9ieXRlY29kZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwCmluZGV4IDg0NzA2MzdkZjAwNjYwNGQzMjZkNTUxYTRiYjM0MmEyZjAyMDUwNjgu
LjliMjI5MmQ1MDI2MGNmMGU3MTU0OGM2NjRmYWNkMWVkY2NlNWRmNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE1Miw2ICsxNTIsOSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQp
CiAgICAgY2FzZSBNYXBIYXNMb2M6CiAgICAgICAgIG91dC5wcmludCgiTWFwSGFzTG9jIik7CiAg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIERPTVN0YXRlTG9jOgorICAgICAgICBvdXQucHJpbnQo
IkRPTVN0YXRlTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hl
YXBMb2NhdGlvbi5oCmluZGV4IDcwNGQxOTFhZjhlNTE4YmMwZTlmNTUzZDQ3OGQ4YWY2ZDRlNjli
NTYuLjYzNTdiZTE4MGYzZDA4MWUxZWM5MGE0ZDQyMTFkZjA0YTg2Yjg5MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjAsNyArNjAsOCBAQCBl
bnVtIExvY2F0aW9uS2luZCB7CiAgICAgU3RhY2tQYXlsb2FkTG9jLAogICAgIE1hcEJ1Y2tldExv
YywKICAgICBKU01hcEdldExvYywKLSAgICBNYXBIYXNMb2MKKyAgICBNYXBIYXNMb2MsCisgICAg
RE9NU3RhdGVMb2MsCiB9OwogCiBjbGFzcyBIZWFwTG9jYXRpb24gewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCBjOTQxMWQ1MGNmYmE5YzU0YjAyYzM0ODY0OTdlNDAzNDEyN2Fk
ZGJjLi4wZDFhNGI1NTgxNDM3MjlhYThjMzIyZjI4NDYxODNkMWQ0MzY0ZDNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTksNiArNTksNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIG5hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hw
b2ludDsKIGNsYXNzIENhbGxET01QYXRjaHBvaW50OwogfQpAQCAtMjMxLDYgKzIzMiwxMSBAQCBz
dHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1
cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAorc3RydWN0IENhbGxE
T01EYXRhIHsKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUIHsgbnVsbHB0ciB9Owor
ICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgeyBudWxscHRyIH07Cit9
OworCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3Bl
cmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkBAIC0yMzM2LDE1ICsyMzQyLDE1IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6UGF0Y2hwb2lu
dCo+KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNDYWxsRE9NUGF0Y2hwb2ludCgpIGNvbnN0Cisg
ICAgYm9vbCBoYXNDYWxsRE9NRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3Ao
KSA9PSBDYWxsRE9NOwogICAgIH0KIAotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGNh
bGxET01QYXRjaHBvaW50KCkKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEoKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKGhhc0NhbGxET01QYXRjaHBvaW50KCkpOwotICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCo+KCk7CisgICAgICAgIEFTU0VS
VChoYXNDYWxsRE9NRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPENhbGxET01E
YXRhKj4oKTsKICAgICB9CiAKICAgICBib29sIGhhc0NsYXNzSW5mbygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMTliMjgyNWZhYjIzOTI4NTUyNzA5
MTU0MGM5YzE5NTE3MjU4MzJkYS4uNzVhYTYyZTEyNTY3MGEzNWNjMDhmMjE3ZDNjMTc0N2NiMDRm
MDkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA0LDcg
KzQwNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhUb0xv
d2VyQ2FzZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgLyogTm9kZXMgZm9yIERPTSBKSVQgKi9cCiAg
ICAgbWFjcm8oQ2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDYWxsRE9N
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAg
ICBtYWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8v
IFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFs
bCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBm
aWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDVlNjRi
YWY5M2M3YmMxMjcxNmNhNzc4MjMyNTc0ODk2NDMyZjg5OTEuLjZjY2ZmYjVkZjdmY2JhNzcyM2E2
Y2Q2ZDY5YzRmNWUyZDAwZWIzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjI1LDcgKzcyMjUsNyBAQCBzdGF0aWMgdm9pZCBh
bGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGpp
dCwgVmVjdG9yPAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBu
b2RlKQogewotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2Rl
LT5jYWxsRE9NUGF0Y2hwb2ludCgpOworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBh
dGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OwogCiAgICAgVmVjdG9y
PEdQUlJlZz4gZ3BTY3JhdGNoOwogICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKQEAgLTcy
MzQsMTkgKzcyMzQsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9k
ZSogbm9kZSkKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgcmVn
cy5hcHBlbmQocmVzdWx0LnJlZ3MoKSk7CiAKLSAgICBpbnQgY2hpbGRJbmRleCA9IDA7CisgICAg
RWRnZSYgYmFzZUVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKKyAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGJh
c2UuZ3ByKCksIG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCiAgICAgT3B0
aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKICAgICBpZiAocGF0Y2hw
b2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewotICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RF
ZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspOworICAg
ICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbm9kZS0+Y2hpbGQyKCk7CiAgICAgICAgIGds
b2JhbE9iamVjdCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2Up
OwogICAgICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCks
IG1fc3RhdGUuZm9yTm9kZShnbG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCi0g
ICAgRWRnZSYgYmFzZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxk
SW5kZXgrKyk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7
Ci0gICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0YXRlLmZvck5v
ZGUoYmFzZUVkZ2UpLnZhbHVlKCkpKTsKLQogICAgIFZlY3RvcjxHUFJUZW1wb3Jhcnk+IGdwVGVt
cHJhcmllczsKICAgICBWZWN0b3I8RlBSVGVtcG9yYXJ5PiBmcFRlbXByYXJpZXM7CiAgICAgYWxs
b2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KHRoaXMsIGdwVGVtcHJhcmllcywg
ZnBUZW1wcmFyaWVzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgKnBhdGNocG9pbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY0ODU1YjlkMmJiZTc3ZDkwYTYzMWRlYTFiN2I3OGRlNGYxZmUyOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0
cmFjdEhlYXAuaCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRE9NSklUIHsKKwordm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4p
Cit7CisgICAgdW5zaWduZWQgY3VycmVudCA9IGJlZ2luOworICAgIC8vIEluY3JlbWVudCB0aGUg
ZW5kIG9mIHRoZSByYW5nZS4KKyAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbV9yYW5nZSA9IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCArIDEpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAg
IGNoaWxkLT5jb21wdXRlKGN1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdl
KCkuZW5kKCk7CisgICAgfQorICAgIEFTU0VSVChiZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFT
U0VSVChjdXJyZW50IDw9IFVJTlQxNl9NQVgpOworICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVn
aW4sIGN1cnJlbnQpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIHNoYWxsb3dEdW1wKG91dCk7CisgICAgaWYgKG1fcGFyZW50KQor
ICAgICAgICBvdXQucHJpbnQoIi0+IiwgKm1fcGFyZW50KTsKK30KKwordm9pZCBBYnN0cmFjdEhl
YXA6OnNoYWxsb3dEdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50
KG1fbmFtZSwgIjwiLCBtX3JhbmdlLCAiPiIpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZGVl
cER1bXAoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgaW5kZW50KSBjb25zdAoreworICAgIGF1
dG8gcHJpbnRJbmRlbnQgPSBbJl0gKCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRl
bnQ7IGktLTspCisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiKTsKKyAgICB9OworCisgICAg
cHJpbnRJbmRlbnQoKTsKKyAgICBzaGFsbG93RHVtcChvdXQpOworCisgICAgaWYgKG1fY2hpbGRy
ZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG91dC5wcmludCgiOlxuIik7CisgICAgZm9yIChhdXRvKiBjaGlsZCA6
IG1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxkLT5kZWVwRHVtcChvdXQsIGluZGVudCArIDEpOwor
fQorCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTg3YjA3OTQ0OTM4YjU1YjFkMjhmMzNh
YWE2ZmQ0ODMxZTU5YTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIEFic3RyYWN0SGVhcCB7CitwdWJsaWM6
CisgICAgQWJzdHJhY3RIZWFwKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBtX25hbWUo
bmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRQYXJlbnQoQWJzdHJhY3RIZWFwKiBw
YXJlbnQpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcGFyZW50KTsKKyAgICAgICAgcGFyZW50
LT5tX2NoaWxkcmVuLmFwcGVuZCh0aGlzKTsKKyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7Cisg
ICAgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiAhbV9wYXJlbnQ7IH0KKwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZSh1bnNpZ25lZCBiZWdpbik7CisKKyAg
ICBib29sIGlzQ29tcHV0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmFuZ2U7IH0KKyAgICBIZWFw
UmFuZ2UgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CisKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHNoYWxsb3dEdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBkZWVwRHVtcChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGluZGVudCA9IDAp
IGNvbnN0OworCitwcml2YXRlOgorICAgIFN0cmluZyBtX25hbWU7CisgICAgQWJzdHJhY3RIZWFw
KiBtX3BhcmVudCB7IG51bGxwdHIgfTsKKyAgICBWZWN0b3I8QWJzdHJhY3RIZWFwKj4gbV9jaGls
ZHJlbiB7IH07CisgICAgSGVhcFJhbmdlIG1fcmFuZ2U7Cit9OworCit9IH0KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRj
aHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRj
aHBvaW50LmgKaW5kZXggNjk1ODIwYzVhNTlkNjNkZWRhNDJmODNkNGY4YjQ3ODVjYzlhODNhMC4u
NGVkYjIzMzJhN2E5ZDdkNDJiMTBhNDE0NmY5MGE4MTIyNDZhYzVkMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEVm
ZmVjdC5oIgogI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKICNpbmNsdWRlICJSZWdpc3Rl
clNldC5oIgogCkBAIC00NSw2ICs0Niw4IEBAIGNsYXNzIENhbGxET01QYXRjaHBvaW50IDogcHVi
bGljIFBhdGNocG9pbnQgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI5ODAKICAgICBib29sIHJlcXVpcmVHbG9iYWxPYmplY3QgeyB0cnVlIH07CiAK
KyAgICBFZmZlY3QgZWZmZWN0IHsgfTsKKwogcHJpdmF0ZToKICAgICBDYWxsRE9NUGF0Y2hwb2lu
dCgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRF
ZmZlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNmY1ODk2M2RiN2NiZTVjYmNjMzFkNjM5ZmU0M2QzZGNiZDNi
MTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRFZmZlY3QuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFu
Z2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworc3RydWN0IEVmZmVjdCB7CisgICAg
SGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSB3cml0
ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CisgICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisK
KyAgICBib29sIGV4aXRzU2lkZXdheXMgeyBmYWxzZSB9OworCisgICAgc3RhdGljIEVmZmVjdCBm
b3JSZWFkV3JpdGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisg
ICAgeworICAgICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFk
UmFuZ2U7CisgICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOworICAgICAgICByZXR1
cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgewor
ICAgICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSBIZWFwUmFuZ2U6
Om5vbmUoKTsKKyAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAg
ICAgICBlZmZlY3QuZGVmID0gSGVhcFJhbmdlOjpub25lKCk7CisgICAgICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgfQorCisgICAgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZikKKyAg
ICB7CisgICAgICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsK
KyAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZl
Y3QuZGVmID0gZGVmOworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRp
YyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBS
YW5nZSB3cml0ZVJhbmdlKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAg
ZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVS
YW5nZTsKKyAgICAgICAgZWZmZWN0LmRlZiA9IGRlZjsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsK
KyAgICB9CisKKyAgICBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gd3JpdGVzIHx8IGV4aXRzU2lkZXdheXM7CisgICAgfQorfTsKKworfSB9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFu
Z2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM0MWYyMzkwMWNhNTEwMGJmZDI5MGNiZjEyMzM2ODAxYzZmOGNiNzIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBS
YW5nZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRIZWFw
UmFuZ2UuaCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RE9NSklUIHsKKwordm9pZCBIZWFwUmFuZ2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
K3sKKyAgICBvdXQucHJpbnRmKCIweCV4LTB4JXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYmVn
aW4oKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQoKSkpOworfQorCisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJh
bmdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJkNWQ0Y2Y5ZGZjNzVkY2QyMjY2MDlhNzQ4NWFiYzMyNjk3Y2FmZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5n
ZS5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBIZWFwUmFuZ2UgeworcHVibGlj
OgorICAgIGNvbnN0ZXhwciBIZWFwUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIg
SGVhcFJhbmdlKHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpCisgICAgICAgIDogbV9iZWdp
bihiZWdpbikKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKworICAgIGVudW0g
UmF3UmVwcmVzZW50YXRpb25UYWcgeyBSYXdSZXByZXNlbnRhdGlvbiB9OworICAgIGV4cGxpY2l0
IGNvbnN0ZXhwciBIZWFwUmFuZ2UoUmF3UmVwcmVzZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVl
KQorICAgICAgICA6IG1fYmVnaW4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlID4+IDE2KSkK
KyAgICAgICAgLCBtX2VuZChzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUpKQorICAgIHsKKyAg
ICB9CisKKyAgICBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7Cisg
ICAgfQorCisgICAgdWludDE2X3QgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9Cisg
ICAgdWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKyAgICB1aW50MzJfdCBy
YXdSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9iZWdp
bikgPDwgMTYpIHwgbV9lbmQ7IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7CisgICAgfQorCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1f
ZW5kOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0
dXJuIEhlYXBSYW5nZSgwLCBVSU5UMTZfTUFYKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVh
cFJhbmdlIG5vbmUoKSB7IHJldHVybiBIZWFwUmFuZ2UoVUlOVDE2X01BWCwgVUlOVDE2X01BWCk7
IH0gLy8gRW1wdHkgcmFuZ2UuCisKKyAgICBib29sIGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEhl
YXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhl
cikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCp0aGlzID09IG90aGVy
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9iZWdpbiA8PSBv
dGhlci5tX2JlZ2luICYmIG90aGVyLm1fZW5kIDw9IG1fZW5kOworICAgIH0KKworICAgIGJvb2wg
aXNTdWJ0eXBlT2YoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghKnRoaXMgfHwgIW90aGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIGlzU3RyaWN0U3VidHlwZU9mKG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIG92ZXJs
YXBzKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
V1RGOjpyYW5nZXNPdmVybGFwKG1fYmVnaW4sIG1fZW5kLCBvdGhlci5tX2JlZ2luLCBvdGhlci5t
X2VuZCk7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iZWdpbiB7IFVJTlQxNl9N
QVggfTsKKyAgICB1aW50MTZfdCBtX2VuZCB7IFVJTlQxNl9NQVggfTsKK307CisKK30gfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBhNjU3ZTA2Yzc4OTE5YzIyYzk4ZGNhYTNkYjMzMWFlOTFjZmQzMWRkLi44Y2E0NGY4NTE2
MmEyNTJkOWFhMmU4YmVlMGQyNWU4Nzk1OWQ2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05MDY0LDI1ICs5MDY0LDI0IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKICAgICB7Ci0gICAg
ICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTVBh
dGNocG9pbnQoKTsKLSAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOworICAgICAgICBET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01EYXRhKCktPnBhdGNo
cG9pbnQ7CisKKyAgICAgICAgRWRnZSYgYmFzZUVkZ2UgPSBtX25vZGUtPmNoaWxkMSgpOworICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwoYmFzZUVkZ2UpOworICAgICAgICBKU1ZhbHVlIGJh
c2VDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKTsKIAogICAgICAg
ICBMVmFsdWUgZ2xvYmFsT2JqZWN0OwogICAgICAgICBKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0
YW50OwogICAgICAgICBpZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7Ci0gICAgICAg
ICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUs
IGNoaWxkSW5kZXgrKyk7CisgICAgICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9u
b2RlLT5jaGlsZDIoKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwoZ2xvYmFs
T2JqZWN0RWRnZSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3RDb25zdGFudCA9IG1fc3RhdGUu
Zm9yTm9kZShnbG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAg
RWRnZSYgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgY2hpbGRJbmRleCsr
KTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKGJhc2VFZGdlKTsKLSAgICAgICAgSlNW
YWx1ZSBiYXNlQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUoYmFzZUVkZ2UpLnZhbHVlKCk7Ci0K
ICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJ
bnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAg
ICAgICAgaWYgKGRvbUpJVC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihnbG9iYWxPYmplY3QpOwotICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWco
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIFJlZlB0cjxQYXRjaHBv
aW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC05MTAxLDExICs5MTAwLDEwIEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOwog
ICAgICAgICAgICAgICAgIFZlY3RvcjxET01KSVQ6OlZhbHVlPiByZWdzOwogCi0gICAgICAgICAg
ICAgICAgaW50IGNoaWxkSW5kZXggPSAxOwogICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpT
VmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5k
KERPTUpJVDo6VmFsdWUocGFyYW1zWzFdLmdwcigpLCBiYXNlQ29uc3RhbnQpKTsKICAgICAgICAg
ICAgICAgICBpZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAg
ICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1tjaGlsZEluZGV4KytdLmdwcigp
LCBnbG9iYWxPYmplY3RDb25zdGFudCkpOwotICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERP
TUpJVDo6VmFsdWUocGFyYW1zW2NoaWxkSW5kZXgrK10uZ3ByKCksIGJhc2VDb25zdGFudCkpOwor
ICAgICAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1syXS5n
cHIoKSwgZ2xvYmFsT2JqZWN0Q29uc3RhbnQpKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQogICAg
ICAgICAgICAgICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2goaSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAppbmRleCBhOGU3ZGE0ZjZjMzA5NTNjNGQ3ZmRmMzYwMjJlMzI1MjBi
NTY2YTIzLi41ZWI0ZDA0ZmU3NmQyOWU4NTU1OTIxNWQwYmI5OWJlYTU1ZjVjNjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcApAQCAtNzMzLDcgKzczMyw3IEBAIGNsYXNzIERPTUpJVEdldHRlckNvbXBs
ZXggOiBwdWJsaWMgRE9NSklUTm9kZSB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNj
cmF0Y2hSZWdpc3RlcnMgPSAzOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFs
dWVSZWdzKCk7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGRvbUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZG9tR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnM7ICsraSkKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4
dHJhcy5oCmluZGV4IDFkMmZjMTg0ZTBjMDQwZmY3OWMxYjQ2MTUyZDkzZTUzNzZlYmNhMzcuLmMx
MDkzZmE2ODA2ODFhMjI2NjNiMjliNzcyMjExMmY3ZDk5Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL01hdGhFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgK
QEAgLTQ0NCwxMiArNDQ0LDggQEAgaW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQg
bGVmdE1pbiwgVCBsZWZ0TWF4LCBUIHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQogewogICAgIEFTU0VS
VChsZWZ0TWluIDwgbGVmdE1heCk7CiAgICAgQVNTRVJUKHJpZ2h0TWluIDwgcmlnaHRNYXgpOwot
ICAgIAotICAgIGlmIChsZWZ0TWluIDw9IHJpZ2h0TWluICYmIGxlZnRNYXggPiByaWdodE1pbikK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmln
aHRNYXggPiBsZWZ0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gbGVmdE1heCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsK
IH0KIAogLy8gUGFzcyByYW5nZXMgd2l0aCB0aGUgbWluIGJlaW5nIGluY2x1c2l2ZSBhbmQgdGhl
IG1heCBiZWluZyBleGNsdXNpdmUuIEZvciBleGFtcGxlLCB0aGlzIHNob3VsZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBiNmE3MGZlZWFiZDcxYzUzYmNjMmFlNzMwMWIxZDI0N2E0NTRiNjhkLi5h
MjViZTc1MjlhOGM4Y2UxYjgyZWY4NDNjZmEzYTAwN2NkNTI1ZmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTUzOCw2ICsxNTM4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgZG9t
L2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCiAKKyAgICBkb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKICAgICBkb21qaXQvSlNOb2RlRE9NSklULmNw
cAogCiAgICAgZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFi
c3RyYWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmYjU0MjI5ZDEyMzBmOWM2N2UxZWY2ZWIyNzc1NzFj
MzQ2N2JlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9G
V0RfRE9NSklUQWJzdHJhY3RIZWFwX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJh
Y3RIZWFwX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRBYnN0cmFjdEhlYXAuaD4K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9t
aml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9t
aml0L0RPTUpJVEVmZmVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYzJlZjY4OWIwNTc3NDgwM2E2NzMyYjkz
NGQ0ZmZlZTcwNzA2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9G
V0RfRE9NSklURWZmZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRFZmZlY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5n
ZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBS
YW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzN2ZhNWVkMjVlNGU1YThmMGJiNGZmMTcxYmEzYzA4Njc4MTVl
YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9k
b21qaXQvRE9NSklUSGVhcFJhbmdlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklU
SGVhcFJhbmdlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRIZWFwUmFuZ2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NzVh
ZDAyZGQzMjRjMTE2ZGRkOGJiOTQ2MTg0NzA4ZjQ4OTg0ZDIuLmRiMTQ0ZTFjNzgxMTdiYzdmZjBi
N2YxMDVhZTJiZmE2OTNlMTk3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYxNjksNiArNjE2OSw4IEBACiAJCUUxRkY4RjZE
MTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMy
Njc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURBNzIx
OTAwMDE5NDAxMiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURP
TUpJVC5jcHAgKi87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1
MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzVDQTE0
RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMz
QTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CisJ
CUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0
QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9
OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAw
NzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICov
OyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFC
QUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CkBAIC0xMzk1MSw2
ICsxMzk1Myw4IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
RkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyog
RE9NSklUSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRI
ZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRCMURCQzNBM0Mw
MEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYg
LyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI2ODQsNiArMjI2ODgsOCBAQAogCQlFM0FGQTk2
MzFEQTZFOEFGMDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi8sCisJCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2
IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMzE1MEVBNTFEQTcy
MThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovLAogCQkJCUUzQUZBOTY0MURBNkU5MDgw
MDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovLAogCQkJKTsKQEAgLTI2NjI2LDYgKzI2NjMy
LDcgQEAKIAkJCQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRl
ck1hdGhNTFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgw
QTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVDQTE0
RTFEQkMzQTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVk
aWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMw
MEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzI4
LDYgKzI4NzM1LDcgQEAKIAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250
Q2FjaGVDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBE
NDQ5Q0IgLyogRm9udENhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNEQxREJD
M0EzRjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2Fk
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9u
dENhc2NhZGVDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYy
NDkyZGY3ODZmMzllYTU0Y2U5OTg4OGJkZWJiODU5MTdlN2NiNmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgiCisKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJ
VCB7CisKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSB0cnVlOworCitBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKK3sKKyAgICBKU0M6OkRPTUpJVDo6
QWJzdHJhY3RIZWFwIERPTUhlYXAoIkRPTSIpOworI2RlZmluZSBET01KSVRfREVGSU5FX0hFQVAo
bmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUjI0hlYXAoI25hbWUp
OworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQKQorI3Vu
ZGVmIERPTUpJVF9ERUZJTkVfSEVBUAorCisjZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX0hFQVAo
bmFtZSwgcGFyZW50KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFyZW50IyNIZWFwKTsKKyAgICBE
T01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX0hFQVApCisjdW5kZWYg
RE9NSklUX0lOSVRJQUxJWkVfSEVBUAorCisgICAgRE9NSGVhcC5jb21wdXRlKDApOworCisjZGVm
aW5lIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJlbnQpIG5hbWUgPSBuYW1lIyNI
ZWFwLnJhbmdlKCk7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElB
TElaRV9NRU1CRVIpCisjdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSCisKKyAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBkYXRhTG9nKCJET01KSVQgSGVhcCBSZXBvc2l0b3J5OlxuIik7
CisgICAgICAgIERPTUhlYXAuZGVlcER1bXAoV1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9Cit9CisK
K2NvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omlu
c3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeT4gcmVwb3NpdG9yeTsKKyAgICByZXR1cm4gcmVwb3NpdG9yeS5nZXQoKTsKK30KKworfSB9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM2NDQ5MGFmMzBiOTM1MDgyZmY4NDdmYmY3
NmMyYzcyMWIwZDM2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisjaWYgRU5BQkxFKEpJVCkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gRGVzY3JpYmUg
eW91ciBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBoZXJlLgorLy8gVihBYnN0cmFjdEhlYXBOYW1l
LCBQYXJlbnQpCisjZGVmaW5lIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoVikgXAorICAgIFYo
Tm9kZSwgRE9NKSBcCisgICAgVihOb2RlX2ZpcnN0Q2hpbGQsIE5vZGUpIFwKKyAgICBWKE5vZGVf
bGFzdENoaWxkLCBOb2RlKSBcCisgICAgVihOb2RlX3BhcmVudE5vZGUsIE5vZGUpIFwKKyAgICBW
KE5vZGVfbmV4dFNpYmxpbmcsIE5vZGUpIFwKKyAgICBWKE5vZGVfcHJldmlvdXNTaWJsaW5nLCBO
b2RlKSBcCisKKworY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7CitXVEZfTUFLRV9OT05D
T1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xh
c3MgTmV2ZXJEZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT47CisgICAgc3RhdGljIGNv
bnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIGluc3RhbmNlKCk7CisKKyAgICBKU0M6OkRPTUpJ
VDo6SGVhcFJhbmdlIERPTTsKKworI2RlZmluZSBET01KSVRfREVGSU5FX01FTUJFUihuYW1lLCBw
YXJlbnQpIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgbmFtZTsKKyAgICBET01KSVRfQUJTVFJBQ1Rf
SEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfTUVNQkVSKQorI3VuZGVmIERPTUpJVF9ERUZJTkVfTUVN
QkVSCisKK3ByaXZhdGU6CisgICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpOworfTsKKworfSB9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKaW5kZXggMTgwNmIy
YWZhMWM0NzFjMDMwNDYzMGI4MDM4ZjAzMjNmNmUzNjFlYi4uYTg1YmNkY2FiNTgxZWIwMWJlMGMz
MGY5NmYzNWVjZDk0ZDRkMTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RP
TUpJVEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5o
CkBAIC0zMiw4ICszMiw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1uYW1lc3BhY2UgRE9NSklUSGVscGVycyB7CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVz
cGFjZSBET01KSVQgewogCiB1c2luZyBKU0M6OkNDYWxsSGVscGVyczsKIHVzaW5nIEpTQzo6R1BS
UmVnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRleCBiOTY5M2FjYWE3
NTJhNDQ0OGQ0MTZjYzA0MTc3NzJjMDAwZTg3Y2IyLi44N2Y0ZGI3ZmE3ZjRmZjA2MmFiOGM4NjMz
NzlhN2EzMzQzN2QxYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2Rl
RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJET01KSVRIZWxwZXJzLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNTIsMTUgKzUzLDE2
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdG9XcmFwcGVyU2xvdyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBw
ZWROb2RlPgotc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmZzZXQsIElzQ29udGFpbmVyR3VhcmRSZXF1
aXJlbWVudCBpc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQpCitzdGF0aWMgUmVmPEpTQzo6RE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJk
aWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQgaXNDb250YWluZXJHdWFy
ZFJlcXVpcmVtZW50KQogewotICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRj
aHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gMTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVs
cGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0ID0g
cGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7Ci0gICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3QgPSBw
YXJhbXNbMV0uZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBub2RlID0gcGFyYW1zWzJdLmdwcigpOwor
ICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGds
b2JhbE9iamVjdCA9IHBhcmFtc1syXS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBw
YXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICBKU1ZhbHVlIGdsb2JhbE9iamVjdFZhbHVlID0g
cGFyYW1zWzJdLnZhbHVlKCk7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBudWxs
Q2FzZXM7CiAgICAgICAgIC8vIExvYWQgYSB3cmFwcGVkIG9iamVjdC4gIm5vZGUiIHNob3VsZCBi
ZSBhbHJlYWR5IHR5cGUgY2hlY2tlZCBieSBDaGVja0RPTS4KQEAgLTcyLDcgKzc0LDcgQEAgc3Rh
dGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0
QWNjZXNzKHB0cmRpZmZfdCBvZmYKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2gsIG9mZnNldCksIHNjcmF0Y2gpOwogICAgICAgICBudWxsQ2FzZXMuYXBw
ZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaCkpOwogCi0g
ICAgICAgIERPTUpJVEhlbHBlcnM6OnRvV3JhcHBlcjxXcmFwcGVkTm9kZT4oaml0LCBwYXJhbXMs
IHNjcmF0Y2gsIGdsb2JhbE9iamVjdCwgcmVzdWx0LCB0b1dyYXBwZXJTbG93PFdyYXBwZWROb2Rl
PiwgcGFyYW1zWzFdLnZhbHVlKCkpOworICAgICAgICBET01KSVQ6OnRvV3JhcHBlcjxXcmFwcGVk
Tm9kZT4oaml0LCBwYXJhbXMsIHNjcmF0Y2gsIGdsb2JhbE9iamVjdCwgcmVzdWx0LCB0b1dyYXBw
ZXJTbG93PFdyYXBwZWROb2RlPiwgZ2xvYmFsT2JqZWN0VmFsdWUpOwogICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbnVsbENhc2VzLmxpbmso
JmppdCk7CkBAIC04Myw4MyArODUsOTkgQEAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYKICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAotc3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNo
ZWNrTm9kZSgpCitzdGF0aWMgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05vZGUo
KQogewotICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBh
dGNocG9pbnQ6OmNyZWF0ZSgpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0Nh
bGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAg
UmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OlBh
dGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0Nh
bGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUSGVscGVyczo6YnJhbmNoSWZOb3ROb2RlKGppdCwgcGFy
YW1zWzBdLmdwcigpKSk7CisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUOjpicmFu
Y2hJZk5vdE5vZGUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgcmV0dXJuIGZhaWx1
cmVDYXNlczsKICAgICB9KTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNm
aXJzdENoaWxkLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6
OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgp
CitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJ
VDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8
Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6
OmZpcnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpS
ZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9N
Rm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikg
KyBDb250YWluZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3Vh
cmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfZmlyc3RDaGlsZCk7CisgICAgcmV0dXJu
IHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbGFzdENoaWxkLgotUmVmPERPTUpJVDo6UGF0Y2hw
b2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiB7CiAgICAgcmV0dXJu
IGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUxh
c3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRl
Q2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVy
Tm9kZSopICsgQ29udGFpbmVyTm9kZTo6bGFzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFp
bmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRj
aHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChO
b2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6bGFzdENoaWxkTWVtb3J5T2Zm
c2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfbGFz
dENoaWxkKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNuZXh0U2libGlu
Zy4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tE
T00oKQorUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6
OmNoZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET00oKQorUmVm
PEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpj
YWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2Rl
PihOb2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWly
ZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNy
ZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9k
ZV9uZXh0U2libGluZyk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjcHJl
dmlvdXNTaWJsaW5nLgotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGlu
Z0RPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUHJl
dmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgp
OwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGlu
Z0RPTUpJVDo6Y2FsbERPTSgpCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBO
b2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4gY3JlYXRl
Q2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAg
Y29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6aW5zdGFu
Y2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNz
PE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1
YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZyk7Cisg
ICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjcGFyZW50Tm9kZS4KLVJlZjxET01K
SVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgpCitSZWY8SlND
OjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgpCiB7
CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET00oKQogewotICAg
IHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPENvbnRhaW5lck5vZGU+KE5vZGU6
OnBhcmVudE5vZGVNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpO
b3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzPENvbnRhaW5lck5vZGU+KE5vZGU6OnBhcmVudE5vZGVNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9k
ZV9wYXJlbnROb2RlKTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAogLy8gTm9kZSNub2Rl
VHlwZS4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2hlY2tE
T00oKQorUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNo
ZWNrRE9NKCkKIHsKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkK
IHsKLSAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9p
bnQ6OmNyZWF0ZSgpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZl
Y3Q6OmZvclB1cmUoKTsKICAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0ID0gZmFs
c2U7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwg
RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5q
c1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsKICAg
ICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhub2RlLCBKU0M6OkpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCByZXN1bHQucGF5bG9hZEdQUigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292541</attachid>
            <date>2016-10-23 00:26:21 -0700</date>
            <delta_ts>2016-10-23 00:43:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161023002239.patch</filename>
            <type>text/plain</type>
            <size>94646</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4xODhmMmZiNWVhOTMzMWVm
Mzg1NzM3ZTA0NWJhODc2NzI0Njg5NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTYtMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZvciBET01KSVQ6OlBhdGNocG9p
bnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRE9NSklUOjpFZmZlY3QuIEl0IGRl
c2NyaWJlcyB0aGUgc2lkZSBlZmZlY3RzIG9mCisgICAgICAgIHRoZSBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50LiBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50IGNhbiB1c2UgdGhpcworICAgICAg
ICBmZWF0dXJlIHRvIHRlYWNoIHRoZSBjb21waWxlcnMgYWJvdXQgdGhlIGVmZmVjdHMuIEFuZCB0
aGUgY29tcGlsZXJzCisgICAgICAgIHdpbGwgcGVyZm9ybSBDU0UgYmFzZWQgb24gdGhlIHJlcG9y
dGVkIGVmZmVjdHMuCisKKyAgICAgICAgQXMgdGhlIHNhbWUgdG8gQjMncyBIZWFwUmFuZ2UsIHRo
ZSBlZmZlY3RzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YKKyAgICAgICAgaW50ZWdlcnMu
IFtiZWdpbiwgZW5kKSBwYWlyIHdpbGwgcmVwcmVzZW50cyB0aGUgcmFuZ2Ugb2YgdGhlIGFic3Ry
YWN0CisgICAgICAgIGhlYXAuIFdlIGVuY29kZSB0aGUgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkg
aW50byB0aGVzZSBwYWlycy4gTGlrZSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSb290OiBbMCwgMzIpCisgICAgICAgICAgICAgICAgIENoaWxkMTogWzAsIDIwKSAgICAgICAg
ICAgICBDaGlsZDI6IFsyMCwgMzIpCisgICAgICAgIENoaWxkMTE6IFswLCA0KSBDaGlsZDEyOiBb
NCwgMjApCisKKyAgICAgICAgVGhpcyBzaW1wbGlmaWVzIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgYWJzdHJhY3QgaGVhcC4gQW5kIFdlYkNvcmUKKyAgICAgICAganVzdCB0ZWxscyBwYWlycyBv
ZiBpbnRlZ2VycyBhbmQgaXQgZG9lcyBub3QgdGVsbCBhbnkgZGV0YWlsZWQgaGllcmFyY2h5Lgor
ICAgICAgICBTbywgREZHIGFuZCBGVEwgY2FuIG9wdGltaXplIERPTSBvcGVyYXRpb25zIHdpdGhv
dXQgZGVlcCBrbm93bGVkZ2Ugb2YKKyAgICAgICAgdGhlIERPTSBhYnN0cmFjdCBoZWFwIGhpZXJh
cmNoeS4gRm9yIGV4YW1wbGUsIFdlYkNvcmUgd2lsbCB0ZWxsIHRoYXQKKyAgICAgICAgZmlyc3RD
aGlsZCB3aWxsIHJlYWQgTm9kZV9maXJzdENoaWxkIGFic3RyYWN0IGhlYXAuIEJ1dCB0aGlzIGlu
Zm9ybWF0aW9uCisgICAgICAgIGlzIGVuY29kZWQgdG8gdGhlIHBhaXIgYW5kIERGRyBkb2VzIG5v
dCBrbm93IHRoZSBkZXRhaWxzLiBCdXQgc3RpbGwKKyAgICAgICAgREZHIGNhbiB1bmRlcnN0YW5k
IHRoZSBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBhbmQgY2FuIHF1ZXJ5IHdoZXRoZXIgdGhlCisg
ICAgICAgIGdpdmVuIGFic3RyYWN0IGhlYXAgb3ZlcmxhcHMgd2l0aCBzb21lIGFic3RyYWN0IGhl
YXAuCisKKyAgICAgICAgVG9sZCBoZWFwIHJhbmdlIGlzIHJlcHJlc2VudGVkIGFzIERPTUpJVDo6
SGVhcFJhbmdlLiBERkcgd2lsbCBoYW5kbGUKKyAgICAgICAgdGhpcyB1bmRlciB0aGUgRE9NU3Rh
dGUgYWJzdHJhY3QgaGVhcC4gRE9NSklUOjpIZWFwUmFuZ2UgaXMgc3RvcmVkIGluCisgICAgICAg
IERGRzo6QWJzdHJhY3RIZWFwJ3MgUGF5bG9hZC4gV2UgbWFpbnRhaW4gdGhlIGhpZXJhcmNoeSBi
eSBET01KSVQ6OkhlYXBSYW5nZQorICAgICAgICBpbiB0aGUgRE9NU3RhdGUgYWJzdHJhY3QgaGVh
cC4gV2UgYWRkIGEgbmVjZXNzYXJ5IGhhbmRsaW5nIGluIERGRydzCisgICAgICAgIEFic3RyYWN0
SGVhcCBhbmQgQ2xvYmJlclNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBpbnRyb2R1Y2UgRE9N
U3RhdGVMb2MgZm9yIEhlYXBMb2NhdGlvbi4gSXQgaXMgY29tYmluZWQgd2l0aAorICAgICAgICBE
T01TdGF0ZSBBYnN0cmFjdEhlYXAgd2l0aCBET01KSVQ6OkhlYXBSYW5nZS4gRm9yIGV4YW1wbGUs
IHdlIGNhbgorICAgICAgICByZXByZXNlbnQgTm9kZS5maXJzdENoaWxkIGFzIGByZWFkKERPTVN0
YXRlOk5vZGVfZmlyc3RDaGlsZClgIGFuZAorICAgICAgICBgZGVmKEhlYXBMb2NhdGlvbihub2Rl
LCBET01TdGF0ZTpOb2RlX2ZpcnN0Q2hpbGQpKWAgdGhpbmd5LiBUaGlzIGFsbG93cyB1cworICAg
ICAgICB0byBwZXJmb3JtIENTRSBvbnRvIERPTSBnZXR0ZXJzIHRoYXQgd2lsbCByZWFkIHNvbWUg
b2YgRE9NIGhlYXAhCisKKyAgICAgICAgRm9yIHNpbXBsaWNpdHksIHdlIGNvbnZlcnQgQ2FsbERP
TSBmcm9tIE5vZGVWYXJBcmdzIHRvIHRoZSBub3JtYWwgb25lLgorICAgICAgICBDYWxsRE9NIGlz
IG5vdyBqdXN0IHVzZWQgZm9yIERPTUpJVCBnZXR0ZXIuIFNvIGl0cyBjaGlsZHJlbiBpcyBhdCBt
b3N0IDIuCisgICAgICAgIEl0IG1heSBoYXZlIGVpdGhlciAxIG9yIDIgY2hpbGRyZW4uIElmIHRo
ZSBnbG9iYWwgb2JqZWN0IGlzIHJlcXVpcmVkCisgICAgICAgIGJ5IENhbGxET01QYXRjaHBvaW50
LCBpdCBoYXMgMiBjaGlsZHJlbi4gQW5kIHdlIGNoYW5nZWQgdGhlIG9yZGVyIG9mCisgICAgICAg
IHRoZSBjaGlsZHJlbiB0byBmdXJ0aGVyIHNpbXBsaWZ5IHRoZSBjb2RlLiBCZWZvcmUgdGhpcyBj
aGFuZ2UsIHRoZSBvcmRlcgorICAgICAgICBpcyAxOiBnbG9iYWxPYmplY3QgMjogYmFzZS4gQWZ0
ZXIgdGhpcyBwYXRjaCwgdGhlIG9yZGVyIGJlY29tZXMgMTogYmFzZSwKKyAgICAgICAgYW5kIDI6
IGdsb2JhbE9iamVjdC4gQW5kIHRoZSBjaGlsZDIgbWF5IG5vdCBleGlzdHMgaWYgdGhlIGdsb2Jh
bCBvYmplY3QKKyAgICAgICAgaXMgbm90IHJlcXVpcmVkLiBXZSBjaGFuZ2VkIGFsbCB0aGUgZXhp
c3RpbmcgRE9NSklUIHBhdGNocG9pbnQgdG8gdGhpcworICAgICAgICBmb3JtLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SGVh
cDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SGVhcDo6aXNTdHJpY3RTdWJ0eXBlT2YpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SGVhcDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpibGVzc0NhbGxET00pOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDbG9i
YmVyU2V0OjpvdmVybGFwcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJTZXQuaDoKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNH
Qyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uaDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhbGxET01EYXRhKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9NRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0
SGVhcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpzaGFsbG93
RHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpkZWVwRHVtcCk6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAg
IChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpBYnN0cmFjdEhlYXApOgorICAgICAgICAoSlND
OjpET01KSVQ6OkFic3RyYWN0SGVhcDo6c2V0UGFyZW50KToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmlzUm9vdCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RI
ZWFwOjppc0NvbXB1dGVkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OnJh
bmdlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaDoKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklURWZmZWN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0R2VuZXJhdGUpOgorICAgICAgICAqIGRvbWpp
dC9ET01KSVRIZWFwUmFuZ2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6
SGVhcFJhbmdlOjpkdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6SGVhcFJhbmdlKToKKyAgICAg
ICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcpOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
ZW5kKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnJhd1JlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3ApOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5n
ZTo6bm9uZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N0cmljdFN1YnR5
cGVPZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N1YnR5cGVPZik6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvdmVybGFwcyk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBqc2MuY3BwOgorCiAyMDE2LTEwLTIxICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBi
b3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uOTg2NTQ2YTNiNTlj
MDUyNThiNGRiMmY2ZTkyMzllYzIxYmU5YmYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0x
MC0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
RE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVj
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBs
aWZ5IG5vbkVtcHR5UmFuZ2VzT3ZlcmxhcC4KKworICAgICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6
CisgICAgICAgIChXVEY6Om5vbkVtcHR5UmFuZ2VzT3ZlcmxhcCk6CisKIDIwMTYtMTAtMjAgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIFdBU00gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTk4M2I5NjcxNGIyYjI3ZmQ4MGVhOTQ5
MGUxOGYwNGQ3ZDA5Mjg5Li45ZDdiYTQzYTgzOTExNzg2YWIwNDEwOThmYmQ0OWU4OTU2ZTQyOGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTYtMTAtMjMgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZv
ciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRE9NUGF0Y2hwb2ludCBub3cgaGFz
IHRoZSB3YXkgdG8gdGVsbCBpdHMgZWZmZWN0cyB0byBERkcgYW5kIEZUTCBjb21waWxlcnMuCisg
ICAgICAgIFdlYkNvcmUgRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHdpbGwgY29uc3Ry
dWN0IHRoZSBoaWVyYXJjaHkgb2YgdGhlIGFic3RyYWN0CisgICAgICAgIGhlYXAuIEFuZCB0aGVu
IGl0IGVuY29kZXMgdGhlc2UgaW5mb3JtYXRpb24gaW50byB0aGUgcGFpcnMgb2YgdGhlIGludGVn
ZXJzLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNoIGFsc28gY2hhbmdlcyB0aGUgRE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIFNvIHdlIGNoYW5nZSB0
aGVtIGluIGFsbCB0aGUgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCBzaXRlcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL2RvbWppdC9ET01KSVRFZmZlY3QuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omlu
c3RhbmNlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01Q
YXRjaHBvaW50LmguCisgICAgICAgICogZG9taml0L0RPTUpJVEhlbHBlcnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V29ybGRJc05vcm1hbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdFdlYWtJc0xp
dmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dHJ5TG9va1Vw
V3JhcHBlckNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6
OnRvV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpi
cmFuY2hJZkRPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVs
cGVyczo6YnJhbmNoSWZOb3RET01XcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RWxlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkRvY3VtZW50V3JhcHBlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdERv
Y3VtZW50V3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJVC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RD
aGlsZERPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6
Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERP
TSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVO
b2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAtMjIgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkaW5nIGN1c3RvbSBlbGVtZW50IHNob3Vs
ZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQgYW5kIGNvbm5lY3RlZCBjYWxsYmFja3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMWNiMjk0NzM3YjI0NGYyMWRiN2E5NTM5
NzllNDkyYjczMDA0MmQ4Li44N2Y3M2U1YTA3MGNjMTIyMWZjOGQ0MjMyMjVjMzcxODYwNjQ5ZTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MTMsNiArNDEzLDkgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4
Nl9zeW4taW50ZWwuYwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5bi5jCiAKKyAg
ICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcAorICAgIGRvbWppdC9ET01KSVRIZWFwUmFu
Z2UuY3BwCisKICAgICBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAogICAgIGZ0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFkYTMxNGRhNmNmYjQ3MDFh
MzMzOGZiMzBjMzM3MS4uZmFiMjE5ODI2YjM5Nzc1NzdkNWUwZDM0NTNjZjNjZDJjZTA1MWUxZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjMsNiArMjE2MywxMCBAQAogCQlF
MzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAz
QTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERD
NSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlclByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90
b3R5cGUuaCAqLzsgfTsKKwkJRTM1Q0ExNTMxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBS
YW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLzsgfTsKKwkJ
RTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgz
NTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzNUNBMTU1MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi87
IH07CisJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURC
QzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlFMzVFMDM2MDFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3
M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5jcHAgKi87IH07CkBAIC0yMTc3LDYgKzIxODEsNyBAQAogCQlFM0JGRDBCQjFEQUY4MDg3MDA2
NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkxREFGODA3QzAwNjVE
RUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLzsgfTsKIAkJRTNC
RkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBC
QTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAq
LzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4RTNCMURB
NDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDNzlDQUIxREI5QTREQzAwRDFFQ0E0IC8q
IERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmly
b25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwpAQCAt
NDUzMyw2ICs0NTM4LDEwIEBACiAJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRD
YWxsRE9NUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRDYWxsRE9NUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1
RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzNUNBMTRGMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01KSVRBYnN0cmFjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0Ex
NTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NTQ4LDYgKzQ1NTcsNyBAQAogCQlFM0JGRDBCOTFEQUY4MDdDMDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERP
TUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
UGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M3OUNBQTFEQjlB
NEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVEVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NC
MUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTbG93UGF0aENhbGxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlD
NzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NDAzLDggKzc0MTMsMTMgQEAKIAkJRTNGRjc1MkQxRDlDRTlFQTAw
QzdFMTZEIC8qIGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5j
cHAgKi8sCisJCQkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cC5oICovLAogCQkJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oICovLAorCQkJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0
dGVyLmggKi8sCisJCQkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5jcHAgKi8sCisJCQkJRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5oICovLAogCQkJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50
LmggKi8sCiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmgg
Ki8sCkBAIC03NjMyLDYgKzc2NDcsNyBAQAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAv
KiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIxNjQw
ODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMx
OEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVy
cyAqLywKKwkJCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRv
clJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTg2RTExNkIxMEZF
NzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkQ3
RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKQEAgLTgy
OTksNiArODMxNSw3IEBACiAJCQkJQUQyRkNDMUYxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MkMz
ODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1Jl
dGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8q
IEpTU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZCMUMxNjI1QkUwMDMyM0Y2NyAv
KiBCM0NGRy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDE3LDYgKzg0MzQsNyBAQAogCQkJCTdDMDA4
Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCURD
MDE4NDE5MUQxMEMxODkwMDU3QjA1MyAvKiBKSVRXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzNUNBMTU0MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5h
bHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTkyNCw2ICs5OTQyLDcg
QEAKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVk
Qnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNFNDBEMUI2MThCNjYwMEM4MEUx
RSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzVDQTE1MzFE
QkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5U2xvdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVy
dHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5NDIsNiArOTk2MSw3IEBACiAJCQkJODY0
MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDI4MDg0MzEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MjgwODQ0MTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQwQzdBMDFCODJF
MUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
NTQwQzdBMTFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggY2RkZjFjNjFkODdjNjhiNDk5MTE0NjEyNzE1
NGFlMWMwYzQ3NTJkOS4uODQ3MTI4YjVmMTBlOWE3MjhjN2ZmZjg4YzI4OGM1NjM3NjlmY2Y0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC0xNDcxLDExICsxNDcxLDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZW1pdERP
TUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBHUFJSZWcgYmFzZUZvckdl
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvckRPTUpJVCA9IHN0cnVjdHVyZSgp
LT5nbG9iYWxPYmplY3QoKTsKIAogICAgIHJlZ3MuYXBwZW5kKHBhcmFtVmFsdWVSZWdzKTsKKyAg
ICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOwogICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJl
R2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEFTU0VSVChwYXJhbUdsb2JhbE9iamVjdEdQUiAhPSBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShwYXJhbUds
b2JhbE9iamVjdEdQUiwgZ2xvYmFsT2JqZWN0Rm9yRE9NSklUKSk7CiAgICAgfQotICAgIHJlZ3Mu
YXBwZW5kKHBhcmFtQmFzZUdQUik7CiAKICAgICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzKSB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDFlMTEwMTkwMmRiMjVlYWQ3Zjhk
N2VmOTliNDljNDg0MWMxOGQxMWQuLmNkNjk0YmJlYmFjODA3ZDUxOGY2NmM0N2NhYWFiNmU3OGU5
MWQyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RI
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHAKQEAgLTQ1LDYgKzQ1LDEwIEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KGtpbmQoKSk7CiAgICAgaWYgKGtpbmQoKSA9PSBJ
bnZhbGlkQWJzdHJhY3RIZWFwIHx8IGtpbmQoKSA9PSBXb3JsZCB8fCBraW5kKCkgPT0gSGVhcCB8
fCBwYXlsb2FkKCkuaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChraW5kKCkgPT0g
RE9NU3RhdGUpIHsKKyAgICAgICAgb3V0LnByaW50KCIoIiwgRE9NSklUOjpIZWFwUmFuZ2U6OmZy
b21SYXcocGF5bG9hZCgpLnZhbHVlMzIoKSksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgb3V0LnByaW50KCIoIiwgcGF5bG9hZCgpLCAiKSIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCAwYWJkNTAyN2IyNmFlYjM5NGYy
OWMwMzhmZDlmMmQ1OTJlNmMxNjM5Li5mNTFmODJmZTEzN2UyNWEzZjc5YTUyYjFmMTFiMGM1MzMx
YTMwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiRE9N
SklUSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTczLDYgKzc0
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE1hdGhEb3RS
YW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKICAgICBtYWNybyhBYnNv
bHV0ZSkgXAorICAgIC8qIERPTUpJVCB0ZWxscyB0aGUgaGVhcCByYW5nZSB3aXRoIHRoZSBwYWly
IG9mIGludGVnZXJzLiAqL1wKKyAgICBtYWNybyhET01TdGF0ZSkgXAogICAgIC8qIFVzZSB0aGlz
IGZvciB3cml0ZXMgb25seSwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1heSBmaXJlIHdhdGNocG9p
bnRzLiBVc3VhbGx5IHRoaXMgaXMgbmV2ZXIgZGlyZWN0bHkgd3JpdHRlbiBidXQgaW5zdGVhZCB3
ZSB0ZXN0IHRvIHNlZSBpZiBhIG5vZGUgY2xvYmJlcnMgdGhpczsgaXQganVzdCBzbyBoYXBwZW5z
IHRoYXQgeW91IGhhdmUgdG8gd3JpdGUgd29ybGQgdG8gY2xvYmJlciBpdC4gKi9cCiAgICAgbWFj
cm8oV2F0Y2hwb2ludF9maXJlKSBcCiAgICAgLyogVXNlIHRoZXNlIGZvciByZWFkcyBvbmx5LCBq
dXN0IHRvIGluZGljYXRlIHRoYXQgaWYgdGhlIHdvcmxkIGdvdCBjbG9iYmVyZWQsIHRoZW4gdGhp
cyBvcGVyYXRpb24gd2lsbCBub3Qgd29yay4gKi9cCkBAIC0yMzMsNiArMjM2LDE1IEBAIGNsYXNz
IEFic3RyYWN0SGVhcCB7CiAgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25zdCBBYnN0cmFj
dEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgQWJzdHJhY3RIZWFwIGN1cnJlbnQg
PSAqdGhpczsKKyAgICAgICAgaWYgKGN1cnJlbnQua2luZCgpID09IERPTVN0YXRlICYmIG90aGVy
LmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAgICAgUGF5bG9hZCBjdXJyZW50UGF5bG9h
ZCA9IGN1cnJlbnQucGF5bG9hZCgpOworICAgICAgICAgICAgUGF5bG9hZCBvdGhlclBheWxvYWQg
PSBvdGhlci5wYXlsb2FkKCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFBheWxvYWQuaXNUb3Ao
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAob3RoZXJQ
YXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY3VycmVudFBheWxvYWQudmFsdWUz
MigpKS5pc1N0cmljdFN1YnR5cGVPZihET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhvdGhlclBh
eWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGN1cnJlbnQua2lu
ZCgpICE9IFdvcmxkKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5zdXBlcnR5cGUo
KTsKICAgICAgICAgICAgIGlmIChjdXJyZW50ID09IG90aGVyKQpAQCAtMjQ4LDcgKzI2MCwxNiBA
QCBjbGFzcyBBYnN0cmFjdEhlYXAgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgQWJz
dHJhY3RIZWFwJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAqdGhpcyA9PSBv
dGhlciB8fCBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikgfHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBl
T2YoKnRoaXMpOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSAmJiBvdGhlci5raW5kKCkg
PT0gRE9NU3RhdGUpIHsKKyAgICAgICAgICAgIFBheWxvYWQgY3VycmVudFBheWxvYWQgPSBwYXls
b2FkKCk7CisgICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQo
KTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpIHx8IG90aGVyUGF5bG9h
ZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGN1cnJlbnRQYXlsb2FkLnZhbHVlMzIoKSku
b3ZlcmxhcHMoRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcob3RoZXJQYXlsb2FkLnZhbHVlMzIo
KSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikg
fHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBlT2YoKnRoaXMpOwogICAgIH0KICAgICAKICAgICBib29s
IGlzRGlzam9pbnQoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBhMTJmMDljYjFiOTRhMGEzMDQzNjM3MGM3MmFhMjFjNWVkODE5NWZiLi5mMDlk
NDFiN2I3Y2EzMzNhMjQwOWIxZTU0NWI1NTg0MGRjZjBmYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yMjg5LDEwICsyMjg5LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgIGNhc2UgQ2FsbERPTTogeworICAg
ICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERP
TURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPmVmZmVjdC53cml0
ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9i
YmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwogICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChu
b2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHMo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDQ4ODQyMDZiM2Y1NmQ3NGU2ZjI2ZWY1NmI1OGNmYWE1NjU3MGQ4OTkuLjA2MDMx
NjhkOTIxNGMzNGIxNGNjYjcxMGM5MzBkZTRkMjhjMjgxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjczLDYgKzI2NzMsMTMg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCitzdGF0aWMgdm9pZCBibGVzc0NhbGxET00oTm9kZSogbm9kZSkKK3sKKyAgICBE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEo
KS0+cGF0Y2hwb2ludDsKKyAgICBpZiAoIXBhdGNocG9pbnQtPmVmZmVjdC5tdXN0R2VuZXJhdGUo
KSkKKyAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQpAQCAtMjY5MSwx
NCArMjY5OCwyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50
IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JgogICAgIC8vIFdlIGRvIG5vdCBu
ZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNjZXNz
b3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24gb2Nj
dXJzLgogICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhjaGVja0RPTVBhdGNocG9pbnQu
cHRyKCkpLCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9kZSk7CiAKKyAg
ICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEgPSBtX2dyYXBoLm1fY2FsbERPTURhdGEuYWRkKCk7
CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET01QYXRjaHBvaW50ID0g
ZG9tSklULT5jYWxsRE9NKCk7CiAgICAgbV9ncmFwaC5tX2RvbUpJVFBhdGNocG9pbnRzLmFwcGVu
ZChjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSk7CisKKyAgICBjYWxsRE9NRGF0YS0+ZG9tSklUID0g
ZG9tSklUOworICAgIGNhbGxET01EYXRhLT5wYXRjaHBvaW50ID0gY2FsbERPTVBhdGNocG9pbnQu
cHRyKCk7CisKKyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IG51bGxwdHI7CisgICAgLy8gR2xvYmFs
T2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIu
CiAgICAgaWYgKGNhbGxET01QYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAg
ICAgIE5vZGUqIGdsb2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlz
Tm9kZSk7Ci0gICAgICAgIGFkZFZhckFyZ0NoaWxkKGdsb2JhbE9iamVjdCk7IC8vIEdsb2JhbE9i
amVjdCBvZiB0aGlzTm9kZSBpcyBhbHdheXMgdXNlZCB0byBjcmVhdGUgYSBET01XcmFwcGVyLgot
ICAgIH0KLSAgICBhZGRWYXJBcmdDaGlsZCh0aGlzTm9kZSk7Ci0gICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9w
SW5mbyhjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSkpOworICAg
ICAgICBjYWxsRE9NTm9kZSA9IGFkZFRvR3JhcGgoQ2FsbERPTSwgT3BJbmZvKGNhbGxET01EYXRh
KSwgT3BJbmZvKHByZWRpY3Rpb24pLCB0aGlzTm9kZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY2FsbERPTU5vZGUgPSBhZGRUb0dyYXBoKENhbGxET00sIE9wSW5mbyhjYWxs
RE9NRGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgdGhpc05vZGUpOworICAgIGJsZXNzQ2FsbERP
TShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
Y2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcAppbmRleCBkNDYzMGUzNzBjYjBiYWMyM2Q5OTQyZjVm
ZmNlMzhmYjU4ZGEyZGVjLi41OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUxYWExYTc5MjQ0OWY3ZTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKQEAgLTgx
LDYgKzgxLDIzIEBAIGJvb2wgQ2xvYmJlclNldDo6b3ZlcmxhcHMoQWJzdHJhY3RIZWFwIGhlYXAp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY2xvYmJlcnMuZmluZChoZWFwKSAhPSBtX2Nsb2JiZXJzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5raW5kKCkgPT0gRE9NU3Rh
dGUgJiYgIWhlYXAucGF5bG9hZCgpLmlzVG9wKCkpIHsKKyAgICAgICAgLy8gRE9NU3RhdGUgaGVh
cCBoYXMgaXRzIG93biBoaWVyYXJjaHkuIEZvciBkaXJlY3QgaGVhcCBjbG9iYmVycyB0aGF0IHBh
eWxvYWQgaXMgbm90IFRvcCwKKyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1ZXJ5IHdoZXRoZXIgdGhl
IGNsb2JiZXIgb3ZlcmxhcHMgd2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAgICAgICAgRE9NSklUOjpI
ZWFwUmFuZ2UgcmFuZ2UgPSBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhoZWFwLnBheWxvYWQo
KS52YWx1ZTMyKCkpOworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fY2xvYmJlcnMpIHsKKyAg
ICAgICAgICAgIGJvb2wgZGlyZWN0ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGly
ZWN0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RIZWFw
IGNsb2JiZXIgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLmtpbmQoKSAhPSBE
T01TdGF0ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChjbG9i
YmVyLnBheWxvYWQoKS5pc1RvcCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2JiZXIucGF5bG9hZCgpLnZh
bHVlMzIoKSkub3ZlcmxhcHMocmFuZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfQogICAgIHdoaWxlIChoZWFwLmtpbmQoKSAhPSBXb3JsZCkgewogICAg
ICAgICBoZWFwID0gaGVhcC5zdXBlcnR5cGUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5zKGhlYXAp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAppbmRleCA3MjlmMzli
MTE4NTE4YTk1NTVlYzQ2MTY2ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdmZGI0MjMyZWMwYjJhYzUw
MGE2NTA1ZTRjOTU0OTM0ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJTZXQuaApAQCAtNTIsMTEgKzUyLDExIEBAIGNsYXNzIENsb2JiZXJTZXQgewogICAgIAogICAg
IHZvaWQgYWRkKEFic3RyYWN0SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwoY29uc3QgQ2xvYmJlclNl
dCYpOwotICAgIGJvb2wgY29udGFpbnMoQWJzdHJhY3RIZWFwKSBjb25zdDsKICAgICBib29sIG92
ZXJsYXBzKEFic3RyYWN0SGVhcCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAg
IC8vIENhbGxzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERv
IG5vdCBjYWxsIGZvciBub24gZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3Qg
aGFuZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxB
YnN0cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBz
dXBlcigpIGNvbnN0OwpAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBDbG9iYmVyU2V0IHsKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisgICAgYm9vbCBj
b250YWlucyhBYnN0cmFjdEhlYXApIGNvbnN0OworCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+
IHNldE9mKGJvb2wgZGlyZWN0KSBjb25zdDsKICAgICAKICAgICAvLyBNYXBzIGhlYXAgdG86CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5
Mzg3MmU1MDgxODBkMmI1ZjJjYzZiNmFiYzg0NGMuLmYyNmEwMTNkN2Y2MDhhNTk0MDhiYjAzOTY0
NjYxNTFiODU3MGU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRl
ICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKQEAgLTkwNywxMCArOTA4LDM0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAg
ICAgd3JpdGUoSGVhcCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBv
aW50OworICAgICAgICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRjaHBvaW50LT5lZmZlY3Q7
CisgICAgICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVh
ZHMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29y
bGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KERPTVN0YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9
CisgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0Lndy
aXRlcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUo
SGVhcCk7IC8vIFdlIGRvIG5vdCBhc3N1bWUgdGhhdCBET00gb3BlcmF0aW9ucyB3aWxsIHdyaXRl
KFN0YWNrKS4KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFj
dEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAg
ICAgICB9CisgICAgICAgIGlmIChlZmZlY3QuZGVmKSB7CisgICAgICAgICAgICBET01KSVQ6Okhl
YXBSYW5nZSByYW5nZSA9IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChyYW5n
ZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSwgbm9kZS0+Y2FsbERPTURhdGEoKS0+ZG9tSklUKSk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9uLiBXZSBkbyBu
b3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGluZm9ybWF0aW9u
IGlzIGluY2x1ZGVkIGluIHRoZSBiYXNlIG5vZGUuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdoZW4gc3VwcG9ydGluZyB0aGUgb3RoZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50QnlJZCgic3Ry
aW5nIiksIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBiYXNlIGFuZCB0aGUgaWQgc3RyaW5nLgorICAg
ICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIg
aGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgorICAgICAgICAgICAgICAgIGRl
ZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2Uu
cmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBj
YXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAzZjEzODQyY2FmNGI1YzZlZTFmMDljNTRh
YTNkOGEwMDYyMzZjNTI5Li5mMzViNjZjZTE3ZTQwMzk4MmQwMjhhZjM4MmI5MWJkNjA4NTdlYWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMTgsNyArMTE4
LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVy
Zmx5OgotICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNlIENoZWNrRE9NOgogICAgIGNhc2UgQ2hl
Y2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgpAQCAtMjk5LDYgKzI5OCw3IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdF
eHA6CiAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CisgICAgY2Fz
ZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0
aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggMzNjMGNmMTkyMDg1YjUwMDRiMjAwODllMmQzYjA2OTI5MDQ4ODU5OC4uZGJjMTAx
NzUyMjY0NWUwOWZlOWFjNDQxNjM4YjZjMWZlNWIzYzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzExLDExICsxNzExLDEwIEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7Ci0gICAgICAgICAgICBpbnQgY2hpbGRJbmRleCA9IDA7Ci0gICAg
ICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTVBhdGNocG9pbnQoKTsKKyAgICAgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KICAgICAgICAgICAg
IGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgr
KykpOyAvLyBHbG9iYWxPYmplY3QuCi0gICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOyAvLyBHbG9iYWxPYmpl
Y3QuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKaW5kZXggNzZiMmJhZWM3MTZjMmYzNmI2YmU1NDM2MGE5ZDMzZGQ0YTE0ZjNh
Yy4uZjk1N2Y1Y2ZiZDc4OGVkZDYyNjg5NWZmMWRlMzUwNzEzNmQxNDE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTAxLDYgKzkwMSw3IEBAIGNsYXNzIEdyYXBoIDog
cHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xv
YWRWYXJhcmdzRGF0YTsKICAgICBCYWc8U3RhY2tBY2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0
YTsKICAgICBCYWc8TGF6eUpTVmFsdWU+IG1fbGF6eUpTVmFsdWVzOworICAgIEJhZzxDYWxsRE9N
RGF0YT4gbV9jYWxsRE9NRGF0YTsKICAgICBWZWN0b3I8SW5saW5lVmFyaWFibGVEYXRhLCA0PiBt
X2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVl
X3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVMaXZlbmVzczsKICAgICBIYXNo
TWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPj4gbV9ieXRlY29k
ZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3Bw
CmluZGV4IDg0NzA2MzdkZjAwNjYwNGQzMjZkNTUxYTRiYjM0MmEyZjAyMDUwNjguLjliMjI5MmQ1
MDI2MGNmMGU3MTU0OGM2NjRmYWNkMWVkY2NlNWRmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE1Miw2ICsxNTIsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2Fz
ZSBNYXBIYXNMb2M6CiAgICAgICAgIG91dC5wcmludCgiTWFwSGFzTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIERPTVN0YXRlTG9jOgorICAgICAgICBvdXQucHJpbnQoIkRPTVN0YXRl
TG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlv
bi5oCmluZGV4IDcwNGQxOTFhZjhlNTE4YmMwZTlmNTUzZDQ3OGQ4YWY2ZDRlNjliNTYuLjYzNTdi
ZTE4MGYzZDA4MWUxZWM5MGE0ZDQyMTFkZjA0YTg2Yjg5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjAsNyArNjAsOCBAQCBlbnVtIExvY2F0
aW9uS2luZCB7CiAgICAgU3RhY2tQYXlsb2FkTG9jLAogICAgIE1hcEJ1Y2tldExvYywKICAgICBK
U01hcEdldExvYywKLSAgICBNYXBIYXNMb2MKKyAgICBNYXBIYXNMb2MsCisgICAgRE9NU3RhdGVM
b2MsCiB9OwogCiBjbGFzcyBIZWFwTG9jYXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCBjOTQxMWQ1MGNmYmE5YzU0YjAyYzM0ODY0OTdlNDAzNDEyN2FkZGJjLi4wZDFh
NGI1NTgxNDM3MjlhYThjMzIyZjI4NDYxODNkMWQ0MzY0ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtNTksNiArNTksNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVz
cGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hwb2ludDsKIGNs
YXNzIENhbGxET01QYXRjaHBvaW50OwogfQpAQCAtMjMxLDYgKzIzMiwxMSBAQCBzdHJ1Y3QgU3Rh
Y2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hl
ZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAorc3RydWN0IENhbGxET01EYXRhIHsK
KyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUIHsgbnVsbHB0ciB9OworICAgIERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgeyBudWxscHRyIH07Cit9OworCiAvLyA9
PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGlu
IHRoZSBkYXRhIGZsb3cgZ3JhcGguCkBAIC0yMzM2LDE1ICsyMzQyLDE1IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6UGF0Y2hwb2ludCo+KCk7CiAg
ICAgfQogCi0gICAgYm9vbCBoYXNDYWxsRE9NUGF0Y2hwb2ludCgpIGNvbnN0CisgICAgYm9vbCBo
YXNDYWxsRE9NRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBDYWxs
RE9NOwogICAgIH0KIAotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGNhbGxET01QYXRj
aHBvaW50KCkKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEoKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGhhc0NhbGxET01QYXRjaHBvaW50KCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8u
YXM8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCo+KCk7CisgICAgICAgIEFTU0VSVChoYXNDYWxs
RE9NRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPENhbGxET01EYXRhKj4oKTsK
ICAgICB9CiAKICAgICBib29sIGhhc0NsYXNzSW5mbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMTliMjgyNWZhYjIzOTI4NTUyNzA5MTU0MGM5YzE5
NTE3MjU4MzJkYS4uNzVhYTYyZTEyNTY3MGEzNWNjMDhmMjE3ZDNjMTc0N2NiMDRmMDkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA0LDcgKzQwNCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhUb0xvd2VyQ2FzZSwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgLyogTm9kZXMgZm9yIERPTSBKSVQgKi9cCiAgICAgbWFjcm8o
Q2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDYWxsRE9NLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhD
YWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51
bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5
cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0
aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDVlNjRiYWY5M2M3YmMx
MjcxNmNhNzc4MjMyNTc0ODk2NDMyZjg5OTEuLjZjY2ZmYjVkZjdmY2JhNzcyM2E2Y2Q2ZDY5YzRm
NWUyZDAwZWIzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC03MjI1LDcgKzcyMjUsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZVRl
bXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwgVmVjdG9y
PAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQogewot
ICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9N
UGF0Y2hwb2ludCgpOworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQg
PSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OwogCiAgICAgVmVjdG9yPEdQUlJlZz4g
Z3BTY3JhdGNoOwogICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKQEAgLTcyMzQsMTkgKzcy
MzQsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkK
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgcmVncy5hcHBlbmQo
cmVzdWx0LnJlZ3MoKSk7CiAKLSAgICBpbnQgY2hpbGRJbmRleCA9IDA7CisgICAgRWRnZSYgYmFz
ZUVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIGJhc2VFZGdlKTsKKyAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGJhc2UuZ3ByKCks
IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCiAgICAgT3B0aW9uYWw8U3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKICAgICBpZiAocGF0Y2hwb2ludC0+cmVx
dWlyZUdsb2JhbE9iamVjdCkgewotICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspOworICAgICAgICBFZGdl
JiBnbG9iYWxPYmplY3RFZGdlID0gbm9kZS0+Y2hpbGQyKCk7CiAgICAgICAgIGdsb2JhbE9iamVj
dCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAg
ICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUu
Zm9yTm9kZShnbG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCi0gICAgRWRnZSYg
YmFzZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgrKyk7
Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgcmVn
cy5hcHBlbmQoRE9NSklUOjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0YXRlLmZvck5vZGUoYmFzZUVk
Z2UpLnZhbHVlKCkpKTsKLQogICAgIFZlY3RvcjxHUFJUZW1wb3Jhcnk+IGdwVGVtcHJhcmllczsK
ICAgICBWZWN0b3I8RlBSVGVtcG9yYXJ5PiBmcFRlbXByYXJpZXM7CiAgICAgYWxsb2NhdGVUZW1w
b3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KHRoaXMsIGdwVGVtcHJhcmllcywgZnBUZW1wcmFy
aWVzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgKnBhdGNocG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY0ODU1YjlkMmJiZTc3ZDkwYTYzMWRlYTFiN2I3OGRlNGYxZmUyOTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHAK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAu
aCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKwordm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCit7CisgICAg
dW5zaWduZWQgY3VycmVudCA9IGJlZ2luOworICAgIC8vIEluY3JlbWVudCB0aGUgZW5kIG9mIHRo
ZSByYW5nZS4KKyAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yYW5n
ZSA9IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCArIDEpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAgIGNoaWxkLT5j
b21wdXRlKGN1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7
CisgICAgfQorICAgIEFTU0VSVChiZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFTU0VSVChjdXJy
ZW50IDw9IFVJTlQxNl9NQVgpOworICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1cnJl
bnQpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIHNoYWxsb3dEdW1wKG91dCk7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBv
dXQucHJpbnQoIi0+IiwgKm1fcGFyZW50KTsKK30KKwordm9pZCBBYnN0cmFjdEhlYXA6OnNoYWxs
b3dEdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fbmFtZSwg
IjwiLCBtX3JhbmdlLCAiPiIpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZGVlcER1bXAoUHJp
bnRTdHJlYW0mIG91dCwgdW5zaWduZWQgaW5kZW50KSBjb25zdAoreworICAgIGF1dG8gcHJpbnRJ
bmRlbnQgPSBbJl0gKCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRlbnQ7IGktLTsp
CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiKTsKKyAgICB9OworCisgICAgcHJpbnRJbmRl
bnQoKTsKKyAgICBzaGFsbG93RHVtcChvdXQpOworCisgICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0
eSgpKSB7CisgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG91dC5wcmludCgiOlxuIik7CisgICAgZm9yIChhdXRvKiBjaGlsZCA6IG1fY2hpbGRy
ZW4pCisgICAgICAgIGNoaWxkLT5kZWVwRHVtcChvdXQsIGluZGVudCArIDEpOworfQorCit9IH0K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTg3YjA3OTQ0OTM4YjU1YjFkMjhmMzNhYWE2ZmQ0ODMx
ZTU5YTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01K
SVRIZWFwUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIEFic3RyYWN0SGVhcCB7CitwdWJsaWM6CisgICAgQWJz
dHJhY3RIZWFwKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBzZXRQYXJlbnQoQWJzdHJhY3RIZWFwKiBwYXJlbnQpCisg
ICAgeworICAgICAgICBBU1NFUlQoIW1fcGFyZW50KTsKKyAgICAgICAgcGFyZW50LT5tX2NoaWxk
cmVuLmFwcGVuZCh0aGlzKTsKKyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisg
ICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiAhbV9wYXJlbnQ7IH0KKworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZSh1bnNpZ25lZCBiZWdpbik7CisKKyAgICBib29sIGlz
Q29tcHV0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmFuZ2U7IH0KKyAgICBIZWFwUmFuZ2UgcmFu
Z2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNoYWxsb3dEdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkZWVwRHVtcChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGluZGVudCA9IDApIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFN0cmluZyBtX25hbWU7CisgICAgQWJzdHJhY3RIZWFwKiBtX3BhcmVu
dCB7IG51bGxwdHIgfTsKKyAgICBWZWN0b3I8QWJzdHJhY3RIZWFwKj4gbV9jaGlsZHJlbiB7IH07
CisgICAgSGVhcFJhbmdlIG1fcmFuZ2U7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgK
aW5kZXggNjk1ODIwYzVhNTlkNjNkZWRhNDJmODNkNGY4YjQ3ODVjYzlhODNhMC4uNGVkYjIzMzJh
N2E5ZDdkNDJiMTBhNDE0NmY5MGE4MTIyNDZhYzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEVmZmVjdC5oIgog
I2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgog
CkBAIC00NSw2ICs0Niw4IEBAIGNsYXNzIENhbGxET01QYXRjaHBvaW50IDogcHVibGljIFBhdGNo
cG9pbnQgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI5ODAKICAgICBib29sIHJlcXVpcmVHbG9iYWxPYmplY3QgeyB0cnVlIH07CiAKKyAgICBFZmZl
Y3QgZWZmZWN0IHsgfTsKKwogcHJpdmF0ZToKICAgICBDYWxsRE9NUGF0Y2hwb2ludCgpID0gZGVm
YXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNmY1ODk2M2RiN2NiZTVjYmNjMzFkNjM5ZmU0M2QzZGNiZDNiMTZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3Qu
aApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworc3RydWN0IEVmZmVjdCB7CisgICAgSGVhcFJhbmdl
IHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07CisgICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisKKyAgICBib29s
IGV4aXRzU2lkZXdheXMgeyBmYWxzZSB9OworCisgICAgc3RhdGljIEVmZmVjdCBmb3JSZWFkV3Jp
dGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgeworICAg
ICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7Cisg
ICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOworICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgeworICAgICAgICBF
ZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsK
KyAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZl
Y3QuZGVmID0gSGVhcFJhbmdlOjpub25lKCk7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
fQorCisgICAgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZikKKyAgICB7CisgICAg
ICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKKyAgICAgICAg
ZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QuZGVmID0g
ZGVmOworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3Qg
Zm9yRGVmKEhlYXBSYW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0
ZVJhbmdlKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJl
YWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAg
ICAgICAgZWZmZWN0LmRlZiA9IGRlZjsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisK
KyAgICBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd3Jp
dGVzIHx8IGV4aXRzU2lkZXdheXM7CisgICAgfQorfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0MWYyMzkwMWNhNTEwMGJmZDI5MGNiZjEyMzM2ODAxYzZmOGNiNzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAK
QEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIK
KworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsK
Kwordm9pZCBIZWFwUmFuZ2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnRmKCIweCV4LTB4JXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYmVnaW4oKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlbmQoKSkpOworfQorCisKK30gfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJkNWQ0Y2Y5ZGZjNzVkY2QyMjY2MDlhNzQ4NWFiYzMyNjk3Y2FmZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0w
LDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBIZWFwUmFuZ2UgeworcHVibGljOgorICAgIGNv
bnN0ZXhwciBIZWFwUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIgSGVhcFJhbmdl
KHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpCisgICAgICAgIDogbV9iZWdpbihiZWdpbikK
KyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKworICAgIGVudW0gUmF3UmVwcmVz
ZW50YXRpb25UYWcgeyBSYXdSZXByZXNlbnRhdGlvbiB9OworICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBIZWFwUmFuZ2UoUmF3UmVwcmVzZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVlKQorICAgICAg
ICA6IG1fYmVnaW4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlID4+IDE2KSkKKyAgICAgICAg
LCBtX2VuZChzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CisgICAgfQorCisg
ICAgdWludDE2X3QgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgdWludDE2
X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKyAgICB1aW50MzJfdCByYXdSZXByZXNl
bnRhdGlvbigpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9iZWdpbikgPDwgMTYp
IHwgbV9lbmQ7IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5kOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIEhlYXBS
YW5nZSgwLCBVSU5UMTZfTUFYKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIG5v
bmUoKSB7IHJldHVybiBIZWFwUmFuZ2UoVUlOVDE2X01BWCwgVUlOVDE2X01BWCk7IH0gLy8gRW1w
dHkgcmFuZ2UuCisKKyAgICBib29sIGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9iZWdpbiA8PSBvdGhlci5tX2Jl
Z2luICYmIG90aGVyLm1fZW5kIDw9IG1fZW5kOworICAgIH0KKworICAgIGJvb2wgaXNTdWJ0eXBl
T2YoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghKnRo
aXMgfHwgIW90aGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKnRo
aXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGlz
U3RyaWN0U3VidHlwZU9mKG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0
IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyYW5n
ZXNPdmVybGFwKG1fYmVnaW4sIG1fZW5kLCBvdGhlci5tX2JlZ2luLCBvdGhlci5tX2VuZCk7Cisg
ICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iZWdpbiB7IFVJTlQxNl9NQVggfTsKKyAg
ICB1aW50MTZfdCBtX2VuZCB7IFVJTlQxNl9NQVggfTsKK307CisKK30gfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhNjU3
ZTA2Yzc4OTE5YzIyYzk4ZGNhYTNkYjMzMWFlOTFjZmQzMWRkLi44Y2E0NGY4NTE2MmEyNTJkOWFh
MmU4YmVlMGQyNWU4Nzk1OWQ2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC05MDY0LDI1ICs5MDY0LDI0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKICAgICB7Ci0gICAgICAgIERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTVBhdGNocG9pbnQo
KTsKLSAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOworICAgICAgICBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CisK
KyAgICAgICAgRWRnZSYgYmFzZUVkZ2UgPSBtX25vZGUtPmNoaWxkMSgpOworICAgICAgICBMVmFs
dWUgYmFzZSA9IGxvd0NlbGwoYmFzZUVkZ2UpOworICAgICAgICBKU1ZhbHVlIGJhc2VDb25zdGFu
dCA9IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKTsKIAogICAgICAgICBMVmFsdWUg
Z2xvYmFsT2JqZWN0OwogICAgICAgICBKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50OwogICAg
ICAgICBpZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7Ci0gICAgICAgICAgICBFZGdl
JiBnbG9iYWxPYmplY3RFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIGNoaWxkSW5k
ZXgrKyk7CisgICAgICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9ub2RlLT5jaGls
ZDIoKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwoZ2xvYmFsT2JqZWN0RWRn
ZSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3RDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShn
bG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgRWRnZSYgYmFz
ZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgY2hpbGRJbmRleCsrKTsKLSAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKGJhc2VFZGdlKTsKLSAgICAgICAgSlNWYWx1ZSBiYXNl
Q29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUoYmFzZUVkZ2UpLnZhbHVlKCk7Ci0KICAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgaWYg
KGRvbUpJVC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZFNvbWVSZWdpc3RlcihnbG9iYWxPYmplY3QpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01h
c2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CkBAIC05MTAxLDExICs5MTAwLDEwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOwogICAgICAgICAg
ICAgICAgIFZlY3RvcjxET01KSVQ6OlZhbHVlPiByZWdzOwogCi0gICAgICAgICAgICAgICAgaW50
IGNoaWxkSW5kZXggPSAxOwogICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6
VmFsdWUocGFyYW1zWzFdLmdwcigpLCBiYXNlQ29uc3RhbnQpKTsKICAgICAgICAgICAgICAgICBp
ZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICByZWdz
LmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1tjaGlsZEluZGV4KytdLmdwcigpLCBnbG9iYWxP
YmplY3RDb25zdGFudCkpOwotICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFs
dWUocGFyYW1zW2NoaWxkSW5kZXgrK10uZ3ByKCksIGJhc2VDb25zdGFudCkpOworICAgICAgICAg
ICAgICAgICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1syXS5ncHIoKSwgZ2xv
YmFsT2JqZWN0Q29uc3RhbnQpKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQogICAgICAgICAgICAg
ICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2goaSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAppbmRleCBhOGU3ZGE0ZjZjMzA5NTNjNGQ3ZmRmMzYwMjJlMzI1MjBiNTY2YTIzLi41
ZWI0ZDA0ZmU3NmQyOWU4NTU1OTIxNWQwYmI5OWJlYTU1ZjVjNjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtNzMzLDcgKzczMyw3IEBAIGNsYXNzIERPTUpJVEdldHRlckNvbXBsZXggOiBwdWJs
aWMgRE9NSklUTm9kZSB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdp
c3RlcnMgPSAzOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7
Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGRvbUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgZG9tR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnM7ICsraSkKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoNDIpLCBwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmlu
ZGV4IDFkMmZjMTg0ZTBjMDQwZmY3OWMxYjQ2MTUyZDkzZTUzNzZlYmNhMzcuLmMxMDkzZmE2ODA2
ODFhMjI2NjNiMjliNzcyMjExMmY3ZDk5Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01hdGhFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQ0NCwx
MiArNDQ0LDggQEAgaW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwg
VCBsZWZ0TWF4LCBUIHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQogewogICAgIEFTU0VSVChsZWZ0TWlu
IDwgbGVmdE1heCk7CiAgICAgQVNTRVJUKHJpZ2h0TWluIDwgcmlnaHRNYXgpOwotICAgIAotICAg
IGlmIChsZWZ0TWluIDw9IHJpZ2h0TWluICYmIGxlZnRNYXggPiByaWdodE1pbikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBs
ZWZ0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbGVmdE1heCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsKIH0KIAogLy8g
UGFzcyByYW5nZXMgd2l0aCB0aGUgbWluIGJlaW5nIGluY2x1c2l2ZSBhbmQgdGhlIG1heCBiZWlu
ZyBleGNsdXNpdmUuIEZvciBleGFtcGxlLCB0aGlzIHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiNmE3MGZlZWFiZDcxYzUzYmNjMmFlNzMwMWIxZDI0N2E0NTRiNjhkLi5hMjViZTc1Mjlh
OGM4Y2UxYjgyZWY4NDNjZmEzYTAwN2NkNTI1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTUzOCw2ICsxNTM4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgZG9tL2RlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAKICAgICBkb21qaXQvSlNOb2RlRE9NSklULmNwcAogCiAgICAg
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVh
cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmYjU0MjI5ZDEyMzBmOWM2N2UxZWY2ZWIyNzc1NzFjMzQ2N2JlZmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklU
QWJzdHJhY3RIZWFwX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFwX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRBYnN0cmFjdEhlYXAuaD4KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEVmZmVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYzJlZjY4OWIwNTc3NDgwM2E2NzMyYjkzNGQ0ZmZlZTcw
NzA2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklU
RWZmZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9ET01KSVRFZmZlY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzN2ZhNWVkMjVlNGU1YThmMGJiNGZmMTcxYmEzYzA4Njc4MTVlYWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9N
SklUSGVhcFJhbmdlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdl
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9ET01KSVRIZWFwUmFuZ2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NzVhZDAyZGQzMjRj
MTE2ZGRkOGJiOTQ2MTg0NzA4ZjQ4OTg0ZDIuLmRiMTQ0ZTFjNzgxMTdiYzdmZjBiN2YxMDVhZTJi
ZmE2OTNlMTk3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYxNjksNiArNjE2OSw4IEBACiAJCUUxRkY4RjZEMTgwREI1QkUw
MDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURBNzIxOTAwMDE5NDAx
MiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAg
Ki87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcy
MThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzVDQTE0RDFEQkMzQTNG
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CisJCUUzNUNBMTRF
MURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTND
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwogCQlFMzc3
RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8q
IE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgz
ODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlF
Mzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CkBAIC0xMzk1MSw2ICsxMzk1Myw4
IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjZCMTgw
REI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjI2ODQsNiArMjI2ODgsOCBAQAogCQlFM0FGQTk2MzFEQTZFOEFG
MDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAgKi8sCisJCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQw
MTIgLyogRE9NSklUSGVscGVycy5oICovLAogCQkJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAv
KiBKU05vZGVET01KSVQuY3BwICovLAogCQkJKTsKQEAgLTI2NjI2LDYgKzI2NjMyLDcgQEAKIAkJ
CQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRv
a2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVDQTE0RTFEQkMzQTQy
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzI4LDYgKzI4NzM1
LDcgQEAKIAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3Jl
VGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyog
Rm9udENhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVD
b2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmNGZiZmFmMDI1
YTlmOTBhYWU5NDU2NzA0NzVjMDI2YzQzOWZmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCAr
MSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgiCisKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg+CisjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIEVO
QUJMRShKSVQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCit7CisgICAgSlNDOjpET01KSVQ6OkFic3RyYWN0
SGVhcCBET01IZWFwKCJET00iKTsKKyNkZWZpbmUgRE9NSklUX0RFRklORV9IRUFQKG5hbWUsIHBh
cmVudCkgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBuYW1lIyNIZWFwKCNuYW1lKTsKKyAgICBE
T01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfSEVBUCkKKyN1bmRlZiBET01K
SVRfREVGSU5FX0hFQVAKKworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5hbWUsIHBh
cmVudCkgbmFtZSMjSGVhcC5zZXRQYXJlbnQoJnBhcmVudCMjSGVhcCk7CisgICAgRE9NSklUX0FC
U1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9IRUFQKQorI3VuZGVmIERPTUpJVF9J
TklUSUFMSVpFX0hFQVAKKworICAgIERPTUhlYXAuY29tcHV0ZSgwKTsKKworI2RlZmluZSBET01K
SVRfSU5JVElBTElaRV9NRU1CRVIobmFtZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5n
ZSgpOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJWkVfTUVN
QkVSKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUgorCisgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgZGF0YUxvZygiRE9NSklUIEhlYXAgUmVwb3NpdG9yeTpcbiIpOworICAgICAg
ICBET01IZWFwLmRlZXBEdW1wKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQorfQorCitjb25zdCBB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJl
cG9zaXRvcnk7CisgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Cit9CisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNjQ0OTBhZjMwYjkzNTA4MmZmODQ3ZmJmNzZjMmM3MjFi
MGQzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRv
bWppdC9ET01KSVRIZWFwUmFuZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKKy8vIERlc2NyaWJlIHlvdXIgYWJz
dHJhY3QgaGVhcCBoaWVyYXJjaHkgaGVyZS4KKy8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50
KQorI2RlZmluZSBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKFYpIFwKKyAgICBWKE5vZGUsIERP
TSkgXAorICAgIFYoTm9kZV9maXJzdENoaWxkLCBOb2RlKSBcCisgICAgVihOb2RlX2xhc3RDaGls
ZCwgTm9kZSkgXAorICAgIFYoTm9kZV9wYXJlbnROb2RlLCBOb2RlKSBcCisgICAgVihOb2RlX25l
eHRTaWJsaW5nLCBOb2RlKSBcCisgICAgVihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAor
CisKK2NsYXNzIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworV1RGX01BS0VfTk9OQ09QWUFCTEUo
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+OworICAgIHN0YXRpYyBjb25zdCBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5JiBpbnN0YW5jZSgpOworCisgICAgSlNDOjpET01KSVQ6OkhlYXBS
YW5nZSBET007CisKKyNkZWZpbmUgRE9NSklUX0RFRklORV9NRU1CRVIobmFtZSwgcGFyZW50KSBK
U0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElT
VChET01KSVRfREVGSU5FX01FTUJFUikKKyN1bmRlZiBET01KSVRfREVGSU5FX01FTUJFUgorCitw
cml2YXRlOgorICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKK307CisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4IDE4MDZiMmFmYTFjNDcx
YzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIuLmE4NWJjZGNhYjU4MWViMDFiZTBjMzBmOTZmMzVl
Y2Q5NGQ0ZDE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxw
ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtMzIs
OCArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFt
ZXNwYWNlIERPTUpJVEhlbHBlcnMgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9N
SklUIHsKIAogdXNpbmcgSlNDOjpDQ2FsbEhlbHBlcnM7CiB1c2luZyBKU0M6OkdQUlJlZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggYjk2OTNhY2FhNzUyYTQ0NDhk
NDE2Y2MwNDE3NzcyYzAwMGU4N2NiMi4uODdmNGRiN2ZhN2Y0ZmYwNjJhYjhjODYzMzc5YTdhMzM0
MzdkMWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRE9NSklUSGVscGVycy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTUyLDE1ICs1MywxNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3coSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNHbG9iYWxPYgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkTm9kZT4K
LXN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQg
aXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50KQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9m
ZnNldCwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50IGlzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudCkKIHsKLSAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IDE7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGpp
dCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1sw
XS5qc1ZhbHVlUmVncygpOwotICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0ID0gcGFyYW1zWzFd
LmdwcigpOwotICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmpl
Y3QgPSBwYXJhbXNbMl0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKKyAgICAgICAgSlNWYWx1ZSBnbG9iYWxPYmplY3RWYWx1ZSA9IHBhcmFtc1sy
XS52YWx1ZSgpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbnVsbENhc2VzOwog
ICAgICAgICAvLyBMb2FkIGEgd3JhcHBlZCBvYmplY3QuICJub2RlIiBzaG91bGQgYmUgYWxyZWFk
eSB0eXBlIGNoZWNrZWQgYnkgQ2hlY2tET00uCkBAIC03Miw3ICs3NCw3IEBAIHN0YXRpYyBSZWY8
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vzcyhw
dHJkaWZmX3Qgb2ZmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoLCBvZmZzZXQpLCBzY3JhdGNoKTsKICAgICAgICAgbnVsbENhc2VzLmFwcGVuZChqaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gpKTsKIAotICAgICAgICBE
T01KSVRIZWxwZXJzOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGppdCwgcGFyYW1zLCBzY3JhdGNo
LCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxXcmFwcGVkTm9kZT4sIHBhcmFt
c1sxXS52YWx1ZSgpKTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGpp
dCwgcGFyYW1zLCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxX
cmFwcGVkTm9kZT4sIGdsb2JhbE9iamVjdFZhbHVlKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG51bGxDYXNlcy5saW5rKCZqaXQpOwpA
QCAtODMsODMgKzg1LDk5IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2ZmCiAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CiB9CiAKLXN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05vZGUo
KQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tOb2RlKCkKIHsKLSAg
ICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50
OjpjcmVhdGUoKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVy
cyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpQYXRjaHBvaW50
OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVy
cyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKERPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1swXS5n
cHIoKSkpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoSWZOb3RO
b2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7
CiAgICAgfSk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjZmlyc3RDaGls
ZC4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjaGVja0RP
TSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpj
aGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQorUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxE
T00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENB
U1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJzdENo
aWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQp
OworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNl
dEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFp
bmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWly
ZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2ZpcnN0Q2hpbGQpOworICAgIHJldHVybiBwYXRjaHBv
aW50OwogfQogCiAvLyBOb2RlI2xhc3RDaGlsZC4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5v
ZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05v
ZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRE
T01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9k
ZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSAr
IENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENv
bnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJ
c0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5l
ZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2xhc3RDaGlsZCk7
CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbmV4dFNpYmxpbmcuCi1SZWY8
RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RP
TSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSgp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6
bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpO
b3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfbmV4dFNp
YmxpbmcpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3ByZXZpb3VzU2li
bGluZy4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6
OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2li
bGluZ0RPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05vZGUoKTsKIH0KIAot
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6
OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVByZXZp
b3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIGNvbnN0IGF1
dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7Cisg
ICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihO
b2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVp
cmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9wcmV2aW91c1NpYmxpbmcpOworICAgIHJldHVy
biBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3BhcmVudE5vZGUuCi1SZWY8RE9NSklUOjpQYXRj
aHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJl
dHVybiBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5v
ZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnRO
b2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnROb2RlTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcGFyZW50
Tm9kZSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbm9kZVR5cGUuCi1S
ZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjaGVja0RPTSgp
CiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVh
dGUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQ
dXJlKCk7CiAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwotICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6
UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIGpp
dC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZSwgSlNDOjpKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDk2YmYxY2IyYzM5
Mzg1NGEzYWRhNDNjYTYyYzY5YmJjODEwMGVlNi4uYjlhMWFmZWRjYmI2ZDZjNjViNWViY2UyMTc4
ZWQ3M2MzY2MzODc1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEwLTIzICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBh
IHdheSBmb3IgRE9NSklUOjpQYXRjaHBvaW50IHRvIGV4cHJlc3MgZWZmZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFj
Y2Vzc29yLWRpZmZlcmVudC1lZmZlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vZG9taml0LWFjY2Vzc29yLWRpZmZlcmVudC1lZmZlY3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13
aXRoLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFj
Y2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QuaHRtbDogQWRkZWQuCisgICAgICAg
ICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1ub2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3Zl
cmxhcC13aXRoLWNhbGwtc2luY2UtcHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGpzL2RvbS9kb21qaXQtYWNjZXNzb3Itbm9kZS10eXBlLWVmZmVjdC1zaG91bGQtbm90LW92ZXJs
YXAtd2l0aC1jYWxsLXNpbmNlLXB1cmUuaHRtbDogQWRkZWQuCisKIDIwMTYtMTAtMjIgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkaW5nIGN1c3RvbSBl
bGVtZW50IHNob3VsZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQgYW5kIGNvbm5lY3RlZCBjYWxs
YmFja3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZGlm
ZmVyZW50LWVmZmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFj
Y2Vzc29yLWRpZmZlcmVudC1lZmZlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNmExZWFm
OTA0NzBkYzkzYjQ3YzE0NzI2ZTZiZjE5Y2MyNWQ4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWRpZmZlcmVudC1lZmZlY3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBET01KSVQgYWNjZXNzb3JzIHdpbGwgaGFuZGxlIGRp
ZmZlcmVudCBoZWFwIGFjY2Vzc2VzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitQQVNTIHRlc3QoKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1kaWZmZXJlbnQtZWZmZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWRpZmZlcmVudC1lZmZlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzEzMGJm
OWJkZDIwOGVmOGQxNjU2OGYwZTI3YmEwY2U5YWM5MzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1kaWZmZXJlbnQtZWZmZWN0Lmh0bWwKQEAg
LTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+
PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlk
PSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGFjY2Vzc29ycyB3aWxs
IGhhbmRsZSBkaWZmZXJlbnQgaGVhcCBhY2Nlc3NlcyBjb3JyZWN0bHkuJyk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFy
Z2V0Jyk7CisgICAgdmFyIGZpcnN0Q2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmly
c3RDaGlsZCcpOworICAgIHZhciBsYXN0Q2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bGFzdENoaWxkJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICB2YXIgcmV0ID0gdGFyZ2V0LmZpcnN0Q2hpbGQgPT09IGZpcnN0Q2hpbGQ7CisgICAgICAgIHJl
dCAmPSB0YXJnZXQubGFzdENoaWxkID09PSBsYXN0Q2hpbGQ7CisgICAgICAgIHJldCAmPSB0YXJn
ZXQuZmlyc3RDaGlsZCA9PT0gZmlyc3RDaGlsZDsKKyAgICAgICAgcmV0ICY9IHRhcmdldC5sYXN0
Q2hpbGQgPT09IGxhc3RDaGlsZDsKKyAgICAgICAgaWYgKCFyZXQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzaG91bGRCZVRydWUoYHRl
c3QoKWApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmZiYTYwOGM4OTMzOGI5Zjc3Mjc3YjIxYjUyNWZhYmU2YzA0ZjQ0NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IERPTUpJVCBhY2Nlc3NvcnMgd2lsbCByZXByZXNl
bnQgdGhlaXIgaGVhcCBhY2Nlc3Nlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIGZ1bmMoImZpcnN0Q2hpbGQiLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iiks
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaXJzdENoaWxkIikpIGlzIHRydWUKK1BBU1MgZnVu
YygibGFzdENoaWxkIiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLCBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibGFzdENoaWxkIikpIGlzIHRydWUKK1BBU1MgZnVuYygibmV4dFNp
YmxpbmciLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJuZXh0U2libGluZyIpKSBpcyB0cnVlCitQQVNTIGZ1bmMoInByZXZpb3VzU2li
bGluZyIsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInByZXZpb3VzU2libGluZyIpKSBpcyB0cnVlCitQQVNTIGZ1bmMoInBhcmVudE5v
ZGUiLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwYXJlbnROb2RlIikpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3Qtc2hvdWxkLW92
ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTlkMTYzNzk5ZDE5MDEx
YWNkZWUwZWMzOTc3OTAwMjM3MDAzOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG92
ZXJsYXAgd2l0aCBlZmZlY3RzIG9mIERPTUpJVCBhY2Nlc3NvcnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRiNGFjMTNkNDc4NGMyNWY3ZTFhYjljOTFi
YjYzYWM1MWI5ODNhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtYWNjZXNzb3ItZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2
PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFz
dENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4K
KworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgYWNjZXNzb3JzLicpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcp
OworICAgIHZhciBmaXJzdENoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0Q2hp
bGQnKTsKKyAgICB2YXIgbGFzdENoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhc3RD
aGlsZCcpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFy
IHJldCA9IHRhcmdldC5maXJzdENoaWxkID09PSBmaXJzdENoaWxkOworICAgICAgICB0YXJnZXQu
YXBwZW5kQ2hpbGQobGFzdENoaWxkKTsKKyAgICAgICAgcmV0ICY9IHRhcmdldC5maXJzdENoaWxk
ID09PSBmaXJzdENoaWxkOworICAgICAgICBpZiAoIXJldCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJlVHJ1ZShgdGVzdCgp
YCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWVmZmVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNDMxNTkwNTIzZDk1NjAw
MTE5MGYyZTAyMWMwYjc4MDc2N2QzNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0icGFy
ZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRhcmdl
dCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48
L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IERPTUpJVCBhY2Nlc3NvcnMgd2lsbCByZXByZXNlbnQgdGhlaXIgaGVh
cCBhY2Nlc3Nlcy4nKTsKK3ZhciB0ZXN0cyA9IFsKKyAgICAiZmlyc3RDaGlsZCIsCisgICAgImxh
c3RDaGlsZCIsCisgICAgIm5leHRTaWJsaW5nIiwKKyAgICAicHJldmlvdXNTaWJsaW5nIiwKKyAg
ICAicGFyZW50Tm9kZSIsCitdLm1hcChmdW5jdGlvbiAobmFtZSkgeworICAgIHZhciBmdW5jID0g
YAorICAgICAgICByZXR1cm4gZnVuY3Rpb24gJHtuYW1lfShuYW1lLCBlbGVtZW50LCByZXN1bHQp
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9
PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSBy
ZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9OworICAgIGA7CisgICAgcmV0dXJuIFsgbmFtZSwgRnVuY3Rpb24oZnVuYykoKSBdOwor
fSk7CisKK2ZvciAodmFyIFtuYW1lLCBmdW5jXSBvZiB0ZXN0cykgeworICAgIHNob3VsZEJlVHJ1
ZShgZnVuYygiJHtuYW1lfSIsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIiR7bmFtZX0iKSlgKTsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nv
ci1ub2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVy
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUt
dHlwZS1lZmZlY3Qtc2hvdWxkLW5vdC1vdmVybGFwLXdpdGgtY2FsbC1zaW5jZS1wdXJlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNjIyNTAxMTZmZDUzZjE2N2YyZjYxN2YwOGJmNGI1NmEyNjU4
NDk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nv
ci1ub2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVy
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3Vs
ZCBub3Qgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklUJ3Mgbm9kZVR5cGUgYWNjZXNzb3Ig
c2luY2UgaXQgaXMgcHVyZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRl
c3QoKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1u
b2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVyZS5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1ub2RlLXR5cGUtZWZmZWN0
LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVyZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU3YzQ2YTU4NGFjOGJkNThjNjY2ZTJmZGZhMTNkYmIwOWZlODhhMmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUtdHlwZS1lZmZlY3Qt
c2hvdWxkLW5vdC1vdmVybGFwLXdpdGgtY2FsbC1zaW5jZS1wdXJlLmh0bWwKQEAgLTAsMCArMSwz
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9kaXY+PGRp
diBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJsYXN0Q2hp
bGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oYFRlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG5vdCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQncyBub2RlVHlwZSBhY2Nlc3NvciBzaW5jZSBpdCBp
cyBwdXJlLmApOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworICAgIHZhciBmaXJzdENoaWxkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0Q2hpbGQnKTsKKyAgICB2YXIgbGFzdENoaWxkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhc3RDaGlsZCcpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIHJldDEgPSB0YXJnZXQubm9kZVR5cGU7CisgICAg
ICAgIHRhcmdldC5hcHBlbmRDaGlsZChsYXN0Q2hpbGQpOworICAgICAgICB2YXIgcmV0MiA9IHRh
cmdldC5ub2RlVHlwZTsKKyAgICAgICAgaWYgKHJldDEgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8
IHJldDIgIT09IE5vZGUuRUxFTUVOVF9OT0RFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292542</attachid>
            <date>2016-10-23 00:43:35 -0700</date>
            <delta_ts>2016-10-23 00:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161023003953.patch</filename>
            <type>text/plain</type>
            <size>94646</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4xODhmMmZiNWVhOTMzMWVm
Mzg1NzM3ZTA0NWJhODc2NzI0Njg5NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTYtMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZvciBET01KSVQ6OlBhdGNocG9p
bnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRE9NSklUOjpFZmZlY3QuIEl0IGRl
c2NyaWJlcyB0aGUgc2lkZSBlZmZlY3RzIG9mCisgICAgICAgIHRoZSBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50LiBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50IGNhbiB1c2UgdGhpcworICAgICAg
ICBmZWF0dXJlIHRvIHRlYWNoIHRoZSBjb21waWxlcnMgYWJvdXQgdGhlIGVmZmVjdHMuIEFuZCB0
aGUgY29tcGlsZXJzCisgICAgICAgIHdpbGwgcGVyZm9ybSBDU0UgYmFzZWQgb24gdGhlIHJlcG9y
dGVkIGVmZmVjdHMuCisKKyAgICAgICAgQXMgdGhlIHNhbWUgdG8gQjMncyBIZWFwUmFuZ2UsIHRo
ZSBlZmZlY3RzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YKKyAgICAgICAgaW50ZWdlcnMu
IFtiZWdpbiwgZW5kKSBwYWlyIHdpbGwgcmVwcmVzZW50cyB0aGUgcmFuZ2Ugb2YgdGhlIGFic3Ry
YWN0CisgICAgICAgIGhlYXAuIFdlIGVuY29kZSB0aGUgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkg
aW50byB0aGVzZSBwYWlycy4gTGlrZSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSb290OiBbMCwgMzIpCisgICAgICAgICAgICAgICAgIENoaWxkMTogWzAsIDIwKSAgICAgICAg
ICAgICBDaGlsZDI6IFsyMCwgMzIpCisgICAgICAgIENoaWxkMTE6IFswLCA0KSBDaGlsZDEyOiBb
NCwgMjApCisKKyAgICAgICAgVGhpcyBzaW1wbGlmaWVzIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgYWJzdHJhY3QgaGVhcC4gQW5kIFdlYkNvcmUKKyAgICAgICAganVzdCB0ZWxscyBwYWlycyBv
ZiBpbnRlZ2VycyBhbmQgaXQgZG9lcyBub3QgdGVsbCBhbnkgZGV0YWlsZWQgaGllcmFyY2h5Lgor
ICAgICAgICBTbywgREZHIGFuZCBGVEwgY2FuIG9wdGltaXplIERPTSBvcGVyYXRpb25zIHdpdGhv
dXQgZGVlcCBrbm93bGVkZ2Ugb2YKKyAgICAgICAgdGhlIERPTSBhYnN0cmFjdCBoZWFwIGhpZXJh
cmNoeS4gRm9yIGV4YW1wbGUsIFdlYkNvcmUgd2lsbCB0ZWxsIHRoYXQKKyAgICAgICAgZmlyc3RD
aGlsZCB3aWxsIHJlYWQgTm9kZV9maXJzdENoaWxkIGFic3RyYWN0IGhlYXAuIEJ1dCB0aGlzIGlu
Zm9ybWF0aW9uCisgICAgICAgIGlzIGVuY29kZWQgdG8gdGhlIHBhaXIgYW5kIERGRyBkb2VzIG5v
dCBrbm93IHRoZSBkZXRhaWxzLiBCdXQgc3RpbGwKKyAgICAgICAgREZHIGNhbiB1bmRlcnN0YW5k
IHRoZSBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBhbmQgY2FuIHF1ZXJ5IHdoZXRoZXIgdGhlCisg
ICAgICAgIGdpdmVuIGFic3RyYWN0IGhlYXAgb3ZlcmxhcHMgd2l0aCBzb21lIGFic3RyYWN0IGhl
YXAuCisKKyAgICAgICAgVG9sZCBoZWFwIHJhbmdlIGlzIHJlcHJlc2VudGVkIGFzIERPTUpJVDo6
SGVhcFJhbmdlLiBERkcgd2lsbCBoYW5kbGUKKyAgICAgICAgdGhpcyB1bmRlciB0aGUgRE9NU3Rh
dGUgYWJzdHJhY3QgaGVhcC4gRE9NSklUOjpIZWFwUmFuZ2UgaXMgc3RvcmVkIGluCisgICAgICAg
IERGRzo6QWJzdHJhY3RIZWFwJ3MgUGF5bG9hZC4gV2UgbWFpbnRhaW4gdGhlIGhpZXJhcmNoeSBi
eSBET01KSVQ6OkhlYXBSYW5nZQorICAgICAgICBpbiB0aGUgRE9NU3RhdGUgYWJzdHJhY3QgaGVh
cC4gV2UgYWRkIGEgbmVjZXNzYXJ5IGhhbmRsaW5nIGluIERGRydzCisgICAgICAgIEFic3RyYWN0
SGVhcCBhbmQgQ2xvYmJlclNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBpbnRyb2R1Y2UgRE9N
U3RhdGVMb2MgZm9yIEhlYXBMb2NhdGlvbi4gSXQgaXMgY29tYmluZWQgd2l0aAorICAgICAgICBE
T01TdGF0ZSBBYnN0cmFjdEhlYXAgd2l0aCBET01KSVQ6OkhlYXBSYW5nZS4gRm9yIGV4YW1wbGUs
IHdlIGNhbgorICAgICAgICByZXByZXNlbnQgTm9kZS5maXJzdENoaWxkIGFzIGByZWFkKERPTVN0
YXRlOk5vZGVfZmlyc3RDaGlsZClgIGFuZAorICAgICAgICBgZGVmKEhlYXBMb2NhdGlvbihub2Rl
LCBET01TdGF0ZTpOb2RlX2ZpcnN0Q2hpbGQpKWAgdGhpbmd5LiBUaGlzIGFsbG93cyB1cworICAg
ICAgICB0byBwZXJmb3JtIENTRSBvbnRvIERPTSBnZXR0ZXJzIHRoYXQgd2lsbCByZWFkIHNvbWUg
b2YgRE9NIGhlYXAhCisKKyAgICAgICAgRm9yIHNpbXBsaWNpdHksIHdlIGNvbnZlcnQgQ2FsbERP
TSBmcm9tIE5vZGVWYXJBcmdzIHRvIHRoZSBub3JtYWwgb25lLgorICAgICAgICBDYWxsRE9NIGlz
IG5vdyBqdXN0IHVzZWQgZm9yIERPTUpJVCBnZXR0ZXIuIFNvIGl0cyBjaGlsZHJlbiBpcyBhdCBt
b3N0IDIuCisgICAgICAgIEl0IG1heSBoYXZlIGVpdGhlciAxIG9yIDIgY2hpbGRyZW4uIElmIHRo
ZSBnbG9iYWwgb2JqZWN0IGlzIHJlcXVpcmVkCisgICAgICAgIGJ5IENhbGxET01QYXRjaHBvaW50
LCBpdCBoYXMgMiBjaGlsZHJlbi4gQW5kIHdlIGNoYW5nZWQgdGhlIG9yZGVyIG9mCisgICAgICAg
IHRoZSBjaGlsZHJlbiB0byBmdXJ0aGVyIHNpbXBsaWZ5IHRoZSBjb2RlLiBCZWZvcmUgdGhpcyBj
aGFuZ2UsIHRoZSBvcmRlcgorICAgICAgICBpcyAxOiBnbG9iYWxPYmplY3QgMjogYmFzZS4gQWZ0
ZXIgdGhpcyBwYXRjaCwgdGhlIG9yZGVyIGJlY29tZXMgMTogYmFzZSwKKyAgICAgICAgYW5kIDI6
IGdsb2JhbE9iamVjdC4gQW5kIHRoZSBjaGlsZDIgbWF5IG5vdCBleGlzdHMgaWYgdGhlIGdsb2Jh
bCBvYmplY3QKKyAgICAgICAgaXMgbm90IHJlcXVpcmVkLiBXZSBjaGFuZ2VkIGFsbCB0aGUgZXhp
c3RpbmcgRE9NSklUIHBhdGNocG9pbnQgdG8gdGhpcworICAgICAgICBmb3JtLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SGVh
cDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SGVhcDo6aXNTdHJpY3RTdWJ0eXBlT2YpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SGVhcDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpibGVzc0NhbGxET00pOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDbG9i
YmVyU2V0OjpvdmVybGFwcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJTZXQuaDoKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNH
Qyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uaDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhbGxET01EYXRhKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9NRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0
SGVhcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpzaGFsbG93
RHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpkZWVwRHVtcCk6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAg
IChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpBYnN0cmFjdEhlYXApOgorICAgICAgICAoSlND
OjpET01KSVQ6OkFic3RyYWN0SGVhcDo6c2V0UGFyZW50KToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmlzUm9vdCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RI
ZWFwOjppc0NvbXB1dGVkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OnJh
bmdlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaDoKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklURWZmZWN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0R2VuZXJhdGUpOgorICAgICAgICAqIGRvbWpp
dC9ET01KSVRIZWFwUmFuZ2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6
SGVhcFJhbmdlOjpkdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6SGVhcFJhbmdlKToKKyAgICAg
ICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcpOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
ZW5kKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnJhd1JlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3ApOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5n
ZTo6bm9uZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N0cmljdFN1YnR5
cGVPZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N1YnR5cGVPZik6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvdmVybGFwcyk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBqc2MuY3BwOgorCiAyMDE2LTEwLTIxICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBi
b3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uOTg2NTQ2YTNiNTlj
MDUyNThiNGRiMmY2ZTkyMzllYzIxYmU5YmYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0x
MC0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
RE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVj
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBs
aWZ5IG5vbkVtcHR5UmFuZ2VzT3ZlcmxhcC4KKworICAgICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6
CisgICAgICAgIChXVEY6Om5vbkVtcHR5UmFuZ2VzT3ZlcmxhcCk6CisKIDIwMTYtMTAtMjAgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIFdBU00gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTk4M2I5NjcxNGIyYjI3ZmQ4MGVhOTQ5
MGUxOGYwNGQ3ZDA5Mjg5Li45ZDdiYTQzYTgzOTExNzg2YWIwNDEwOThmYmQ0OWU4OTU2ZTQyOGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTYtMTAtMjMgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZv
ciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRE9NUGF0Y2hwb2ludCBub3cgaGFz
IHRoZSB3YXkgdG8gdGVsbCBpdHMgZWZmZWN0cyB0byBERkcgYW5kIEZUTCBjb21waWxlcnMuCisg
ICAgICAgIFdlYkNvcmUgRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHdpbGwgY29uc3Ry
dWN0IHRoZSBoaWVyYXJjaHkgb2YgdGhlIGFic3RyYWN0CisgICAgICAgIGhlYXAuIEFuZCB0aGVu
IGl0IGVuY29kZXMgdGhlc2UgaW5mb3JtYXRpb24gaW50byB0aGUgcGFpcnMgb2YgdGhlIGludGVn
ZXJzLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNoIGFsc28gY2hhbmdlcyB0aGUgRE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIFNvIHdlIGNoYW5nZSB0
aGVtIGluIGFsbCB0aGUgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCBzaXRlcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL2RvbWppdC9ET01KSVRFZmZlY3QuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omlu
c3RhbmNlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01Q
YXRjaHBvaW50LmguCisgICAgICAgICogZG9taml0L0RPTUpJVEhlbHBlcnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V29ybGRJc05vcm1hbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdFdlYWtJc0xp
dmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dHJ5TG9va1Vw
V3JhcHBlckNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6
OnRvV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpi
cmFuY2hJZkRPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVs
cGVyczo6YnJhbmNoSWZOb3RET01XcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RWxlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkRvY3VtZW50V3JhcHBlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdERv
Y3VtZW50V3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJVC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RD
aGlsZERPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6
Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERP
TSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVO
b2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAtMjIgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkaW5nIGN1c3RvbSBlbGVtZW50IHNob3Vs
ZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQgYW5kIGNvbm5lY3RlZCBjYWxsYmFja3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMWNiMjk0NzM3YjI0NGYyMWRiN2E5NTM5
NzllNDkyYjczMDA0MmQ4Li44N2Y3M2U1YTA3MGNjMTIyMWZjOGQ0MjMyMjVjMzcxODYwNjQ5ZTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MTMsNiArNDEzLDkgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4
Nl9zeW4taW50ZWwuYwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5bi5jCiAKKyAg
ICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcAorICAgIGRvbWppdC9ET01KSVRIZWFwUmFu
Z2UuY3BwCisKICAgICBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAogICAgIGZ0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFkYTMxNGRhNmNmYjQ3MDFh
MzMzOGZiMzBjMzM3MS4uZmFiMjE5ODI2YjM5Nzc1NzdkNWUwZDM0NTNjZjNjZDJjZTA1MWUxZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjMsNiArMjE2MywxMCBAQAogCQlF
MzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAz
QTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERD
NSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlclByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90
b3R5cGUuaCAqLzsgfTsKKwkJRTM1Q0ExNTMxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBS
YW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLzsgfTsKKwkJ
RTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgz
NTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzNUNBMTU1MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi87
IH07CisJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURC
QzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlFMzVFMDM2MDFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3
M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5jcHAgKi87IH07CkBAIC0yMTc3LDYgKzIxODEsNyBAQAogCQlFM0JGRDBCQjFEQUY4MDg3MDA2
NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkxREFGODA3QzAwNjVE
RUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLzsgfTsKIAkJRTNC
RkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBC
QTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAq
LzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4RTNCMURB
NDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDNzlDQUIxREI5QTREQzAwRDFFQ0E0IC8q
IERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmly
b25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwpAQCAt
NDUzMyw2ICs0NTM4LDEwIEBACiAJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRD
YWxsRE9NUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRDYWxsRE9NUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1
RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzNUNBMTRGMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01KSVRBYnN0cmFjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0Ex
NTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NTQ4LDYgKzQ1NTcsNyBAQAogCQlFM0JGRDBCOTFEQUY4MDdDMDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERP
TUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
UGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M3OUNBQTFEQjlB
NEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVEVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NC
MUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTbG93UGF0aENhbGxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlD
NzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NDAzLDggKzc0MTMsMTMgQEAKIAkJRTNGRjc1MkQxRDlDRTlFQTAw
QzdFMTZEIC8qIGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5j
cHAgKi8sCisJCQkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cC5oICovLAogCQkJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oICovLAorCQkJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0
dGVyLmggKi8sCisJCQkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5jcHAgKi8sCisJCQkJRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5oICovLAogCQkJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50
LmggKi8sCiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmgg
Ki8sCkBAIC03NjMyLDYgKzc2NDcsNyBAQAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAv
KiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIxNjQw
ODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMx
OEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVy
cyAqLywKKwkJCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRv
clJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTg2RTExNkIxMEZF
NzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkQ3
RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKQEAgLTgy
OTksNiArODMxNSw3IEBACiAJCQkJQUQyRkNDMUYxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MkMz
ODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1Jl
dGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8q
IEpTU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZCMUMxNjI1QkUwMDMyM0Y2NyAv
KiBCM0NGRy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDE3LDYgKzg0MzQsNyBAQAogCQkJCTdDMDA4
Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCURD
MDE4NDE5MUQxMEMxODkwMDU3QjA1MyAvKiBKSVRXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzNUNBMTU0MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5h
bHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTkyNCw2ICs5OTQyLDcg
QEAKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVk
Qnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNFNDBEMUI2MThCNjYwMEM4MEUx
RSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzVDQTE1MzFE
QkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5U2xvdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVy
dHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5NDIsNiArOTk2MSw3IEBACiAJCQkJODY0
MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDI4MDg0MzEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MjgwODQ0MTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQwQzdBMDFCODJF
MUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
NTQwQzdBMTFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggY2RkZjFjNjFkODdjNjhiNDk5MTE0NjEyNzE1
NGFlMWMwYzQ3NTJkOS4uODQ3MTI4YjVmMTBlOWE3MjhjN2ZmZjg4YzI4OGM1NjM3NjlmY2Y0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC0xNDcxLDExICsxNDcxLDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZW1pdERP
TUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBHUFJSZWcgYmFzZUZvckdl
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvckRPTUpJVCA9IHN0cnVjdHVyZSgp
LT5nbG9iYWxPYmplY3QoKTsKIAogICAgIHJlZ3MuYXBwZW5kKHBhcmFtVmFsdWVSZWdzKTsKKyAg
ICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOwogICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJl
R2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEFTU0VSVChwYXJhbUdsb2JhbE9iamVjdEdQUiAhPSBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShwYXJhbUds
b2JhbE9iamVjdEdQUiwgZ2xvYmFsT2JqZWN0Rm9yRE9NSklUKSk7CiAgICAgfQotICAgIHJlZ3Mu
YXBwZW5kKHBhcmFtQmFzZUdQUik7CiAKICAgICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzKSB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDFlMTEwMTkwMmRiMjVlYWQ3Zjhk
N2VmOTliNDljNDg0MWMxOGQxMWQuLmNkNjk0YmJlYmFjODA3ZDUxOGY2NmM0N2NhYWFiNmU3OGU5
MWQyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RI
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHAKQEAgLTQ1LDYgKzQ1LDEwIEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KGtpbmQoKSk7CiAgICAgaWYgKGtpbmQoKSA9PSBJ
bnZhbGlkQWJzdHJhY3RIZWFwIHx8IGtpbmQoKSA9PSBXb3JsZCB8fCBraW5kKCkgPT0gSGVhcCB8
fCBwYXlsb2FkKCkuaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChraW5kKCkgPT0g
RE9NU3RhdGUpIHsKKyAgICAgICAgb3V0LnByaW50KCIoIiwgRE9NSklUOjpIZWFwUmFuZ2U6OmZy
b21SYXcocGF5bG9hZCgpLnZhbHVlMzIoKSksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgb3V0LnByaW50KCIoIiwgcGF5bG9hZCgpLCAiKSIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCAwYWJkNTAyN2IyNmFlYjM5NGYy
OWMwMzhmZDlmMmQ1OTJlNmMxNjM5Li5mNTFmODJmZTEzN2UyNWEzZjc5YTUyYjFmMTFiMGM1MzMx
YTMwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiRE9N
SklUSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTczLDYgKzc0
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE1hdGhEb3RS
YW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKICAgICBtYWNybyhBYnNv
bHV0ZSkgXAorICAgIC8qIERPTUpJVCB0ZWxscyB0aGUgaGVhcCByYW5nZSB3aXRoIHRoZSBwYWly
IG9mIGludGVnZXJzLiAqL1wKKyAgICBtYWNybyhET01TdGF0ZSkgXAogICAgIC8qIFVzZSB0aGlz
IGZvciB3cml0ZXMgb25seSwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1heSBmaXJlIHdhdGNocG9p
bnRzLiBVc3VhbGx5IHRoaXMgaXMgbmV2ZXIgZGlyZWN0bHkgd3JpdHRlbiBidXQgaW5zdGVhZCB3
ZSB0ZXN0IHRvIHNlZSBpZiBhIG5vZGUgY2xvYmJlcnMgdGhpczsgaXQganVzdCBzbyBoYXBwZW5z
IHRoYXQgeW91IGhhdmUgdG8gd3JpdGUgd29ybGQgdG8gY2xvYmJlciBpdC4gKi9cCiAgICAgbWFj
cm8oV2F0Y2hwb2ludF9maXJlKSBcCiAgICAgLyogVXNlIHRoZXNlIGZvciByZWFkcyBvbmx5LCBq
dXN0IHRvIGluZGljYXRlIHRoYXQgaWYgdGhlIHdvcmxkIGdvdCBjbG9iYmVyZWQsIHRoZW4gdGhp
cyBvcGVyYXRpb24gd2lsbCBub3Qgd29yay4gKi9cCkBAIC0yMzMsNiArMjM2LDE1IEBAIGNsYXNz
IEFic3RyYWN0SGVhcCB7CiAgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25zdCBBYnN0cmFj
dEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgQWJzdHJhY3RIZWFwIGN1cnJlbnQg
PSAqdGhpczsKKyAgICAgICAgaWYgKGN1cnJlbnQua2luZCgpID09IERPTVN0YXRlICYmIG90aGVy
LmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAgICAgUGF5bG9hZCBjdXJyZW50UGF5bG9h
ZCA9IGN1cnJlbnQucGF5bG9hZCgpOworICAgICAgICAgICAgUGF5bG9hZCBvdGhlclBheWxvYWQg
PSBvdGhlci5wYXlsb2FkKCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFBheWxvYWQuaXNUb3Ao
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAob3RoZXJQ
YXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY3VycmVudFBheWxvYWQudmFsdWUz
MigpKS5pc1N0cmljdFN1YnR5cGVPZihET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhvdGhlclBh
eWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGN1cnJlbnQua2lu
ZCgpICE9IFdvcmxkKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5zdXBlcnR5cGUo
KTsKICAgICAgICAgICAgIGlmIChjdXJyZW50ID09IG90aGVyKQpAQCAtMjQ4LDcgKzI2MCwxNiBA
QCBjbGFzcyBBYnN0cmFjdEhlYXAgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgQWJz
dHJhY3RIZWFwJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAqdGhpcyA9PSBv
dGhlciB8fCBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikgfHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBl
T2YoKnRoaXMpOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSAmJiBvdGhlci5raW5kKCkg
PT0gRE9NU3RhdGUpIHsKKyAgICAgICAgICAgIFBheWxvYWQgY3VycmVudFBheWxvYWQgPSBwYXls
b2FkKCk7CisgICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQo
KTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpIHx8IG90aGVyUGF5bG9h
ZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGN1cnJlbnRQYXlsb2FkLnZhbHVlMzIoKSku
b3ZlcmxhcHMoRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcob3RoZXJQYXlsb2FkLnZhbHVlMzIo
KSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikg
fHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBlT2YoKnRoaXMpOwogICAgIH0KICAgICAKICAgICBib29s
IGlzRGlzam9pbnQoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBhMTJmMDljYjFiOTRhMGEzMDQzNjM3MGM3MmFhMjFjNWVkODE5NWZiLi5mMDlk
NDFiN2I3Y2EzMzNhMjQwOWIxZTU0NWI1NTg0MGRjZjBmYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yMjg5LDEwICsyMjg5LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgIGNhc2UgQ2FsbERPTTogeworICAg
ICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERP
TURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPmVmZmVjdC53cml0
ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9i
YmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwogICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChu
b2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHMo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDQ4ODQyMDZiM2Y1NmQ3NGU2ZjI2ZWY1NmI1OGNmYWE1NjU3MGQ4OTkuLjA2MDMx
NjhkOTIxNGMzNGIxNGNjYjcxMGM5MzBkZTRkMjhjMjgxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjczLDYgKzI2NzMsMTMg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCitzdGF0aWMgdm9pZCBibGVzc0NhbGxET00oTm9kZSogbm9kZSkKK3sKKyAgICBE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEo
KS0+cGF0Y2hwb2ludDsKKyAgICBpZiAoIXBhdGNocG9pbnQtPmVmZmVjdC5tdXN0R2VuZXJhdGUo
KSkKKyAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQpAQCAtMjY5MSwx
NCArMjY5OCwyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50
IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JgogICAgIC8vIFdlIGRvIG5vdCBu
ZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNjZXNz
b3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24gb2Nj
dXJzLgogICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhjaGVja0RPTVBhdGNocG9pbnQu
cHRyKCkpLCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9kZSk7CiAKKyAg
ICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEgPSBtX2dyYXBoLm1fY2FsbERPTURhdGEuYWRkKCk7
CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET01QYXRjaHBvaW50ID0g
ZG9tSklULT5jYWxsRE9NKCk7CiAgICAgbV9ncmFwaC5tX2RvbUpJVFBhdGNocG9pbnRzLmFwcGVu
ZChjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSk7CisKKyAgICBjYWxsRE9NRGF0YS0+ZG9tSklUID0g
ZG9tSklUOworICAgIGNhbGxET01EYXRhLT5wYXRjaHBvaW50ID0gY2FsbERPTVBhdGNocG9pbnQu
cHRyKCk7CisKKyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IG51bGxwdHI7CisgICAgLy8gR2xvYmFs
T2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIu
CiAgICAgaWYgKGNhbGxET01QYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAg
ICAgIE5vZGUqIGdsb2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlz
Tm9kZSk7Ci0gICAgICAgIGFkZFZhckFyZ0NoaWxkKGdsb2JhbE9iamVjdCk7IC8vIEdsb2JhbE9i
amVjdCBvZiB0aGlzTm9kZSBpcyBhbHdheXMgdXNlZCB0byBjcmVhdGUgYSBET01XcmFwcGVyLgot
ICAgIH0KLSAgICBhZGRWYXJBcmdDaGlsZCh0aGlzTm9kZSk7Ci0gICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9w
SW5mbyhjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSkpOworICAg
ICAgICBjYWxsRE9NTm9kZSA9IGFkZFRvR3JhcGgoQ2FsbERPTSwgT3BJbmZvKGNhbGxET01EYXRh
KSwgT3BJbmZvKHByZWRpY3Rpb24pLCB0aGlzTm9kZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY2FsbERPTU5vZGUgPSBhZGRUb0dyYXBoKENhbGxET00sIE9wSW5mbyhjYWxs
RE9NRGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgdGhpc05vZGUpOworICAgIGJsZXNzQ2FsbERP
TShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
Y2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcAppbmRleCBkNDYzMGUzNzBjYjBiYWMyM2Q5OTQyZjVm
ZmNlMzhmYjU4ZGEyZGVjLi41OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUxYWExYTc5MjQ0OWY3ZTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKQEAgLTgx
LDYgKzgxLDIzIEBAIGJvb2wgQ2xvYmJlclNldDo6b3ZlcmxhcHMoQWJzdHJhY3RIZWFwIGhlYXAp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY2xvYmJlcnMuZmluZChoZWFwKSAhPSBtX2Nsb2JiZXJzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5raW5kKCkgPT0gRE9NU3Rh
dGUgJiYgIWhlYXAucGF5bG9hZCgpLmlzVG9wKCkpIHsKKyAgICAgICAgLy8gRE9NU3RhdGUgaGVh
cCBoYXMgaXRzIG93biBoaWVyYXJjaHkuIEZvciBkaXJlY3QgaGVhcCBjbG9iYmVycyB0aGF0IHBh
eWxvYWQgaXMgbm90IFRvcCwKKyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1ZXJ5IHdoZXRoZXIgdGhl
IGNsb2JiZXIgb3ZlcmxhcHMgd2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAgICAgICAgRE9NSklUOjpI
ZWFwUmFuZ2UgcmFuZ2UgPSBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhoZWFwLnBheWxvYWQo
KS52YWx1ZTMyKCkpOworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fY2xvYmJlcnMpIHsKKyAg
ICAgICAgICAgIGJvb2wgZGlyZWN0ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGly
ZWN0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RIZWFw
IGNsb2JiZXIgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLmtpbmQoKSAhPSBE
T01TdGF0ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChjbG9i
YmVyLnBheWxvYWQoKS5pc1RvcCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2JiZXIucGF5bG9hZCgpLnZh
bHVlMzIoKSkub3ZlcmxhcHMocmFuZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfQogICAgIHdoaWxlIChoZWFwLmtpbmQoKSAhPSBXb3JsZCkgewogICAg
ICAgICBoZWFwID0gaGVhcC5zdXBlcnR5cGUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5zKGhlYXAp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAppbmRleCA3MjlmMzli
MTE4NTE4YTk1NTVlYzQ2MTY2ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdmZGI0MjMyZWMwYjJhYzUw
MGE2NTA1ZTRjOTU0OTM0ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJTZXQuaApAQCAtNTIsMTEgKzUyLDExIEBAIGNsYXNzIENsb2JiZXJTZXQgewogICAgIAogICAg
IHZvaWQgYWRkKEFic3RyYWN0SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwoY29uc3QgQ2xvYmJlclNl
dCYpOwotICAgIGJvb2wgY29udGFpbnMoQWJzdHJhY3RIZWFwKSBjb25zdDsKICAgICBib29sIG92
ZXJsYXBzKEFic3RyYWN0SGVhcCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAg
IC8vIENhbGxzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERv
IG5vdCBjYWxsIGZvciBub24gZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3Qg
aGFuZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxB
YnN0cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBz
dXBlcigpIGNvbnN0OwpAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBDbG9iYmVyU2V0IHsKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisgICAgYm9vbCBj
b250YWlucyhBYnN0cmFjdEhlYXApIGNvbnN0OworCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+
IHNldE9mKGJvb2wgZGlyZWN0KSBjb25zdDsKICAgICAKICAgICAvLyBNYXBzIGhlYXAgdG86CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5
Mzg3MmU1MDgxODBkMmI1ZjJjYzZiNmFiYzg0NGMuLmYyNmEwMTNkN2Y2MDhhNTk0MDhiYjAzOTY0
NjYxNTFiODU3MGU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRl
ICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKQEAgLTkwNywxMCArOTA4LDM0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAg
ICAgd3JpdGUoSGVhcCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBv
aW50OworICAgICAgICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRjaHBvaW50LT5lZmZlY3Q7
CisgICAgICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVh
ZHMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29y
bGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KERPTVN0YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9
CisgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0Lndy
aXRlcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUo
SGVhcCk7IC8vIFdlIGRvIG5vdCBhc3N1bWUgdGhhdCBET00gb3BlcmF0aW9ucyB3aWxsIHdyaXRl
KFN0YWNrKS4KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFj
dEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAg
ICAgICB9CisgICAgICAgIGlmIChlZmZlY3QuZGVmKSB7CisgICAgICAgICAgICBET01KSVQ6Okhl
YXBSYW5nZSByYW5nZSA9IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChyYW5n
ZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSwgbm9kZS0+Y2FsbERPTURhdGEoKS0+ZG9tSklUKSk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9uLiBXZSBkbyBu
b3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGluZm9ybWF0aW9u
IGlzIGluY2x1ZGVkIGluIHRoZSBiYXNlIG5vZGUuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdoZW4gc3VwcG9ydGluZyB0aGUgb3RoZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50QnlJZCgic3Ry
aW5nIiksIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBiYXNlIGFuZCB0aGUgaWQgc3RyaW5nLgorICAg
ICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIg
aGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgorICAgICAgICAgICAgICAgIGRl
ZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2Uu
cmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBj
YXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAzZjEzODQyY2FmNGI1YzZlZTFmMDljNTRh
YTNkOGEwMDYyMzZjNTI5Li5mMzViNjZjZTE3ZTQwMzk4MmQwMjhhZjM4MmI5MWJkNjA4NTdlYWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMTgsNyArMTE4
LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVy
Zmx5OgotICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNlIENoZWNrRE9NOgogICAgIGNhc2UgQ2hl
Y2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgpAQCAtMjk5LDYgKzI5OCw3IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdF
eHA6CiAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CisgICAgY2Fz
ZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0
aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggMzNjMGNmMTkyMDg1YjUwMDRiMjAwODllMmQzYjA2OTI5MDQ4ODU5OC4uZGJjMTAx
NzUyMjY0NWUwOWZlOWFjNDQxNjM4YjZjMWZlNWIzYzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzExLDExICsxNzExLDEwIEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7Ci0gICAgICAgICAgICBpbnQgY2hpbGRJbmRleCA9IDA7Ci0gICAg
ICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTVBhdGNocG9pbnQoKTsKKyAgICAgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KICAgICAgICAgICAg
IGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgr
KykpOyAvLyBHbG9iYWxPYmplY3QuCi0gICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOyAvLyBHbG9iYWxPYmpl
Y3QuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKaW5kZXggNzZiMmJhZWM3MTZjMmYzNmI2YmU1NDM2MGE5ZDMzZGQ0YTE0ZjNh
Yy4uZjk1N2Y1Y2ZiZDc4OGVkZDYyNjg5NWZmMWRlMzUwNzEzNmQxNDE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTAxLDYgKzkwMSw3IEBAIGNsYXNzIEdyYXBoIDog
cHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xv
YWRWYXJhcmdzRGF0YTsKICAgICBCYWc8U3RhY2tBY2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0
YTsKICAgICBCYWc8TGF6eUpTVmFsdWU+IG1fbGF6eUpTVmFsdWVzOworICAgIEJhZzxDYWxsRE9N
RGF0YT4gbV9jYWxsRE9NRGF0YTsKICAgICBWZWN0b3I8SW5saW5lVmFyaWFibGVEYXRhLCA0PiBt
X2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVl
X3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVMaXZlbmVzczsKICAgICBIYXNo
TWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPj4gbV9ieXRlY29k
ZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3Bw
CmluZGV4IDg0NzA2MzdkZjAwNjYwNGQzMjZkNTUxYTRiYjM0MmEyZjAyMDUwNjguLjliMjI5MmQ1
MDI2MGNmMGU3MTU0OGM2NjRmYWNkMWVkY2NlNWRmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE1Miw2ICsxNTIsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2Fz
ZSBNYXBIYXNMb2M6CiAgICAgICAgIG91dC5wcmludCgiTWFwSGFzTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIERPTVN0YXRlTG9jOgorICAgICAgICBvdXQucHJpbnQoIkRPTVN0YXRl
TG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlv
bi5oCmluZGV4IDcwNGQxOTFhZjhlNTE4YmMwZTlmNTUzZDQ3OGQ4YWY2ZDRlNjliNTYuLjYzNTdi
ZTE4MGYzZDA4MWUxZWM5MGE0ZDQyMTFkZjA0YTg2Yjg5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjAsNyArNjAsOCBAQCBlbnVtIExvY2F0
aW9uS2luZCB7CiAgICAgU3RhY2tQYXlsb2FkTG9jLAogICAgIE1hcEJ1Y2tldExvYywKICAgICBK
U01hcEdldExvYywKLSAgICBNYXBIYXNMb2MKKyAgICBNYXBIYXNMb2MsCisgICAgRE9NU3RhdGVM
b2MsCiB9OwogCiBjbGFzcyBIZWFwTG9jYXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCBjOTQxMWQ1MGNmYmE5YzU0YjAyYzM0ODY0OTdlNDAzNDEyN2FkZGJjLi4wZDFh
NGI1NTgxNDM3MjlhYThjMzIyZjI4NDYxODNkMWQ0MzY0ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtNTksNiArNTksNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVz
cGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hwb2ludDsKIGNs
YXNzIENhbGxET01QYXRjaHBvaW50OwogfQpAQCAtMjMxLDYgKzIzMiwxMSBAQCBzdHJ1Y3QgU3Rh
Y2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hl
ZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAorc3RydWN0IENhbGxET01EYXRhIHsK
KyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUIHsgbnVsbHB0ciB9OworICAgIERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgeyBudWxscHRyIH07Cit9OworCiAvLyA9
PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGlu
IHRoZSBkYXRhIGZsb3cgZ3JhcGguCkBAIC0yMzM2LDE1ICsyMzQyLDE1IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6UGF0Y2hwb2ludCo+KCk7CiAg
ICAgfQogCi0gICAgYm9vbCBoYXNDYWxsRE9NUGF0Y2hwb2ludCgpIGNvbnN0CisgICAgYm9vbCBo
YXNDYWxsRE9NRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBDYWxs
RE9NOwogICAgIH0KIAotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGNhbGxET01QYXRj
aHBvaW50KCkKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEoKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGhhc0NhbGxET01QYXRjaHBvaW50KCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8u
YXM8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCo+KCk7CisgICAgICAgIEFTU0VSVChoYXNDYWxs
RE9NRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPENhbGxET01EYXRhKj4oKTsK
ICAgICB9CiAKICAgICBib29sIGhhc0NsYXNzSW5mbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMTliMjgyNWZhYjIzOTI4NTUyNzA5MTU0MGM5YzE5
NTE3MjU4MzJkYS4uNzVhYTYyZTEyNTY3MGEzNWNjMDhmMjE3ZDNjMTc0N2NiMDRmMDkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA0LDcgKzQwNCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhUb0xvd2VyQ2FzZSwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgLyogTm9kZXMgZm9yIERPTSBKSVQgKi9cCiAgICAgbWFjcm8o
Q2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDYWxsRE9NLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhD
YWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51
bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5
cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0
aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDVlNjRiYWY5M2M3YmMx
MjcxNmNhNzc4MjMyNTc0ODk2NDMyZjg5OTEuLjZjY2ZmYjVkZjdmY2JhNzcyM2E2Y2Q2ZDY5YzRm
NWUyZDAwZWIzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC03MjI1LDcgKzcyMjUsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZVRl
bXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwgVmVjdG9y
PAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQogewot
ICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9N
UGF0Y2hwb2ludCgpOworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQg
PSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OwogCiAgICAgVmVjdG9yPEdQUlJlZz4g
Z3BTY3JhdGNoOwogICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKQEAgLTcyMzQsMTkgKzcy
MzQsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkK
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgcmVncy5hcHBlbmQo
cmVzdWx0LnJlZ3MoKSk7CiAKLSAgICBpbnQgY2hpbGRJbmRleCA9IDA7CisgICAgRWRnZSYgYmFz
ZUVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIGJhc2VFZGdlKTsKKyAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGJhc2UuZ3ByKCks
IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCiAgICAgT3B0aW9uYWw8U3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKICAgICBpZiAocGF0Y2hwb2ludC0+cmVx
dWlyZUdsb2JhbE9iamVjdCkgewotICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspOworICAgICAgICBFZGdl
JiBnbG9iYWxPYmplY3RFZGdlID0gbm9kZS0+Y2hpbGQyKCk7CiAgICAgICAgIGdsb2JhbE9iamVj
dCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAg
ICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUu
Zm9yTm9kZShnbG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCi0gICAgRWRnZSYg
YmFzZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgrKyk7
Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgcmVn
cy5hcHBlbmQoRE9NSklUOjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0YXRlLmZvck5vZGUoYmFzZUVk
Z2UpLnZhbHVlKCkpKTsKLQogICAgIFZlY3RvcjxHUFJUZW1wb3Jhcnk+IGdwVGVtcHJhcmllczsK
ICAgICBWZWN0b3I8RlBSVGVtcG9yYXJ5PiBmcFRlbXByYXJpZXM7CiAgICAgYWxsb2NhdGVUZW1w
b3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KHRoaXMsIGdwVGVtcHJhcmllcywgZnBUZW1wcmFy
aWVzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgKnBhdGNocG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY0ODU1YjlkMmJiZTc3ZDkwYTYzMWRlYTFiN2I3OGRlNGYxZmUyOTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHAK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAu
aCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKwordm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCit7CisgICAg
dW5zaWduZWQgY3VycmVudCA9IGJlZ2luOworICAgIC8vIEluY3JlbWVudCB0aGUgZW5kIG9mIHRo
ZSByYW5nZS4KKyAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yYW5n
ZSA9IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCArIDEpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAgIGNoaWxkLT5j
b21wdXRlKGN1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7
CisgICAgfQorICAgIEFTU0VSVChiZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFTU0VSVChjdXJy
ZW50IDw9IFVJTlQxNl9NQVgpOworICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1cnJl
bnQpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIHNoYWxsb3dEdW1wKG91dCk7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBv
dXQucHJpbnQoIi0+IiwgKm1fcGFyZW50KTsKK30KKwordm9pZCBBYnN0cmFjdEhlYXA6OnNoYWxs
b3dEdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fbmFtZSwg
IjwiLCBtX3JhbmdlLCAiPiIpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZGVlcER1bXAoUHJp
bnRTdHJlYW0mIG91dCwgdW5zaWduZWQgaW5kZW50KSBjb25zdAoreworICAgIGF1dG8gcHJpbnRJ
bmRlbnQgPSBbJl0gKCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRlbnQ7IGktLTsp
CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiKTsKKyAgICB9OworCisgICAgcHJpbnRJbmRl
bnQoKTsKKyAgICBzaGFsbG93RHVtcChvdXQpOworCisgICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0
eSgpKSB7CisgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG91dC5wcmludCgiOlxuIik7CisgICAgZm9yIChhdXRvKiBjaGlsZCA6IG1fY2hpbGRy
ZW4pCisgICAgICAgIGNoaWxkLT5kZWVwRHVtcChvdXQsIGluZGVudCArIDEpOworfQorCit9IH0K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTg3YjA3OTQ0OTM4YjU1YjFkMjhmMzNhYWE2ZmQ0ODMx
ZTU5YTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01K
SVRIZWFwUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIEFic3RyYWN0SGVhcCB7CitwdWJsaWM6CisgICAgQWJz
dHJhY3RIZWFwKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBzZXRQYXJlbnQoQWJzdHJhY3RIZWFwKiBwYXJlbnQpCisg
ICAgeworICAgICAgICBBU1NFUlQoIW1fcGFyZW50KTsKKyAgICAgICAgcGFyZW50LT5tX2NoaWxk
cmVuLmFwcGVuZCh0aGlzKTsKKyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisg
ICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiAhbV9wYXJlbnQ7IH0KKworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZSh1bnNpZ25lZCBiZWdpbik7CisKKyAgICBib29sIGlz
Q29tcHV0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmFuZ2U7IH0KKyAgICBIZWFwUmFuZ2UgcmFu
Z2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNoYWxsb3dEdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkZWVwRHVtcChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGluZGVudCA9IDApIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFN0cmluZyBtX25hbWU7CisgICAgQWJzdHJhY3RIZWFwKiBtX3BhcmVu
dCB7IG51bGxwdHIgfTsKKyAgICBWZWN0b3I8QWJzdHJhY3RIZWFwKj4gbV9jaGlsZHJlbiB7IH07
CisgICAgSGVhcFJhbmdlIG1fcmFuZ2U7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgK
aW5kZXggNjk1ODIwYzVhNTlkNjNkZWRhNDJmODNkNGY4YjQ3ODVjYzlhODNhMC4uNGVkYjIzMzJh
N2E5ZDdkNDJiMTBhNDE0NmY5MGE4MTIyNDZhYzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEVmZmVjdC5oIgog
I2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgog
CkBAIC00NSw2ICs0Niw4IEBAIGNsYXNzIENhbGxET01QYXRjaHBvaW50IDogcHVibGljIFBhdGNo
cG9pbnQgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI5ODAKICAgICBib29sIHJlcXVpcmVHbG9iYWxPYmplY3QgeyB0cnVlIH07CiAKKyAgICBFZmZl
Y3QgZWZmZWN0IHsgfTsKKwogcHJpdmF0ZToKICAgICBDYWxsRE9NUGF0Y2hwb2ludCgpID0gZGVm
YXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNmY1ODk2M2RiN2NiZTVjYmNjMzFkNjM5ZmU0M2QzZGNiZDNiMTZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3Qu
aApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworc3RydWN0IEVmZmVjdCB7CisgICAgSGVhcFJhbmdl
IHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07CisgICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisKKyAgICBib29s
IGV4aXRzU2lkZXdheXMgeyBmYWxzZSB9OworCisgICAgc3RhdGljIEVmZmVjdCBmb3JSZWFkV3Jp
dGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgeworICAg
ICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7Cisg
ICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOworICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgeworICAgICAgICBF
ZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsK
KyAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZl
Y3QuZGVmID0gSGVhcFJhbmdlOjpub25lKCk7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
fQorCisgICAgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZikKKyAgICB7CisgICAg
ICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKKyAgICAgICAg
ZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QuZGVmID0g
ZGVmOworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3Qg
Zm9yRGVmKEhlYXBSYW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0
ZVJhbmdlKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJl
YWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAg
ICAgICAgZWZmZWN0LmRlZiA9IGRlZjsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisK
KyAgICBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd3Jp
dGVzIHx8IGV4aXRzU2lkZXdheXM7CisgICAgfQorfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0MWYyMzkwMWNhNTEwMGJmZDI5MGNiZjEyMzM2ODAxYzZmOGNiNzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAK
QEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIK
KworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsK
Kwordm9pZCBIZWFwUmFuZ2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnRmKCIweCV4LTB4JXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYmVnaW4oKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlbmQoKSkpOworfQorCisKK30gfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI5YzI4ZmNjNDA1YjJiYTg4OTA2OWRmOTg5YmE1MDBkZjZlZmJkNDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0w
LDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBIZWFwUmFuZ2UgeworcHVibGljOgorICAgIGNv
bnN0ZXhwciBIZWFwUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIgSGVhcFJhbmdl
KHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpCisgICAgICAgIDogbV9iZWdpbihiZWdpbikK
KyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKworICAgIGVudW0gUmF3UmVwcmVz
ZW50YXRpb25UYWcgeyBSYXdSZXByZXNlbnRhdGlvbiB9OworICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBIZWFwUmFuZ2UoUmF3UmVwcmVzZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVlKQorICAgICAg
ICA6IG1fYmVnaW4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlID4+IDE2KSkKKyAgICAgICAg
LCBtX2VuZChzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CisgICAgfQorCisg
ICAgdWludDE2X3QgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgdWludDE2
X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKyAgICB1aW50MzJfdCByYXdSZXByZXNl
bnRhdGlvbigpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9iZWdpbikgPDwgMTYp
IHwgbV9lbmQ7IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5kOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIEhlYXBS
YW5nZSgwLCBVSU5UMTZfTUFYKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIG5v
bmUoKSB7IHJldHVybiBIZWFwUmFuZ2UoVUlOVDE2X01BWCwgVUlOVDE2X01BWCk7IH0gLy8gRW1w
dHkgcmFuZ2UuCisKKyAgICBib29sIGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gb3RoZXIubV9iZWdpbiA8PSBtX2Jl
Z2luICYmIG1fZW5kIDw9IG90aGVyLm1fZW5kOworICAgIH0KKworICAgIGJvb2wgaXNTdWJ0eXBl
T2YoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghKnRo
aXMgfHwgIW90aGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKnRo
aXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGlz
U3RyaWN0U3VidHlwZU9mKG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0
IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyYW5n
ZXNPdmVybGFwKG1fYmVnaW4sIG1fZW5kLCBvdGhlci5tX2JlZ2luLCBvdGhlci5tX2VuZCk7Cisg
ICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iZWdpbiB7IFVJTlQxNl9NQVggfTsKKyAg
ICB1aW50MTZfdCBtX2VuZCB7IFVJTlQxNl9NQVggfTsKK307CisKK30gfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhNjU3
ZTA2Yzc4OTE5YzIyYzk4ZGNhYTNkYjMzMWFlOTFjZmQzMWRkLi44Y2E0NGY4NTE2MmEyNTJkOWFh
MmU4YmVlMGQyNWU4Nzk1OWQ2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC05MDY0LDI1ICs5MDY0LDI0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKICAgICB7Ci0gICAgICAgIERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTVBhdGNocG9pbnQo
KTsKLSAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOworICAgICAgICBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CisK
KyAgICAgICAgRWRnZSYgYmFzZUVkZ2UgPSBtX25vZGUtPmNoaWxkMSgpOworICAgICAgICBMVmFs
dWUgYmFzZSA9IGxvd0NlbGwoYmFzZUVkZ2UpOworICAgICAgICBKU1ZhbHVlIGJhc2VDb25zdGFu
dCA9IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKTsKIAogICAgICAgICBMVmFsdWUg
Z2xvYmFsT2JqZWN0OwogICAgICAgICBKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50OwogICAg
ICAgICBpZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7Ci0gICAgICAgICAgICBFZGdl
JiBnbG9iYWxPYmplY3RFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIGNoaWxkSW5k
ZXgrKyk7CisgICAgICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9ub2RlLT5jaGls
ZDIoKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwoZ2xvYmFsT2JqZWN0RWRn
ZSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3RDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShn
bG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgRWRnZSYgYmFz
ZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgY2hpbGRJbmRleCsrKTsKLSAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKGJhc2VFZGdlKTsKLSAgICAgICAgSlNWYWx1ZSBiYXNl
Q29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUoYmFzZUVkZ2UpLnZhbHVlKCk7Ci0KICAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgaWYg
KGRvbUpJVC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZFNvbWVSZWdpc3RlcihnbG9iYWxPYmplY3QpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01h
c2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CkBAIC05MTAxLDExICs5MTAwLDEwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOwogICAgICAgICAg
ICAgICAgIFZlY3RvcjxET01KSVQ6OlZhbHVlPiByZWdzOwogCi0gICAgICAgICAgICAgICAgaW50
IGNoaWxkSW5kZXggPSAxOwogICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6
VmFsdWUocGFyYW1zWzFdLmdwcigpLCBiYXNlQ29uc3RhbnQpKTsKICAgICAgICAgICAgICAgICBp
ZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICByZWdz
LmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1tjaGlsZEluZGV4KytdLmdwcigpLCBnbG9iYWxP
YmplY3RDb25zdGFudCkpOwotICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFs
dWUocGFyYW1zW2NoaWxkSW5kZXgrK10uZ3ByKCksIGJhc2VDb25zdGFudCkpOworICAgICAgICAg
ICAgICAgICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1syXS5ncHIoKSwgZ2xv
YmFsT2JqZWN0Q29uc3RhbnQpKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQogICAgICAgICAgICAg
ICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2goaSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAppbmRleCBhOGU3ZGE0ZjZjMzA5NTNjNGQ3ZmRmMzYwMjJlMzI1MjBiNTY2YTIzLi41
ZWI0ZDA0ZmU3NmQyOWU4NTU1OTIxNWQwYmI5OWJlYTU1ZjVjNjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtNzMzLDcgKzczMyw3IEBAIGNsYXNzIERPTUpJVEdldHRlckNvbXBsZXggOiBwdWJs
aWMgRE9NSklUTm9kZSB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdp
c3RlcnMgPSAzOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7
Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGRvbUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgZG9tR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnM7ICsraSkKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoNDIpLCBwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmlu
ZGV4IDFkMmZjMTg0ZTBjMDQwZmY3OWMxYjQ2MTUyZDkzZTUzNzZlYmNhMzcuLmMxMDkzZmE2ODA2
ODFhMjI2NjNiMjliNzcyMjExMmY3ZDk5Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01hdGhFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQ0NCwx
MiArNDQ0LDggQEAgaW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwg
VCBsZWZ0TWF4LCBUIHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQogewogICAgIEFTU0VSVChsZWZ0TWlu
IDwgbGVmdE1heCk7CiAgICAgQVNTRVJUKHJpZ2h0TWluIDwgcmlnaHRNYXgpOwotICAgIAotICAg
IGlmIChsZWZ0TWluIDw9IHJpZ2h0TWluICYmIGxlZnRNYXggPiByaWdodE1pbikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBs
ZWZ0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbGVmdE1heCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsKIH0KIAogLy8g
UGFzcyByYW5nZXMgd2l0aCB0aGUgbWluIGJlaW5nIGluY2x1c2l2ZSBhbmQgdGhlIG1heCBiZWlu
ZyBleGNsdXNpdmUuIEZvciBleGFtcGxlLCB0aGlzIHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiNmE3MGZlZWFiZDcxYzUzYmNjMmFlNzMwMWIxZDI0N2E0NTRiNjhkLi5hMjViZTc1Mjlh
OGM4Y2UxYjgyZWY4NDNjZmEzYTAwN2NkNTI1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTUzOCw2ICsxNTM4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgZG9tL2RlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAKICAgICBkb21qaXQvSlNOb2RlRE9NSklULmNwcAogCiAgICAg
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVh
cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmYjU0MjI5ZDEyMzBmOWM2N2UxZWY2ZWIyNzc1NzFjMzQ2N2JlZmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklU
QWJzdHJhY3RIZWFwX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFwX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRBYnN0cmFjdEhlYXAuaD4KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEVmZmVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYzJlZjY4OWIwNTc3NDgwM2E2NzMyYjkzNGQ0ZmZlZTcw
NzA2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklU
RWZmZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9ET01KSVRFZmZlY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzN2ZhNWVkMjVlNGU1YThmMGJiNGZmMTcxYmEzYzA4Njc4MTVlYWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9N
SklUSGVhcFJhbmdlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdl
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9ET01KSVRIZWFwUmFuZ2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NzVhZDAyZGQzMjRj
MTE2ZGRkOGJiOTQ2MTg0NzA4ZjQ4OTg0ZDIuLmRiMTQ0ZTFjNzgxMTdiYzdmZjBiN2YxMDVhZTJi
ZmE2OTNlMTk3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYxNjksNiArNjE2OSw4IEBACiAJCUUxRkY4RjZEMTgwREI1QkUw
MDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURBNzIxOTAwMDE5NDAx
MiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAg
Ki87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcy
MThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzVDQTE0RDFEQkMzQTNG
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CisJCUUzNUNBMTRF
MURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTND
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwogCQlFMzc3
RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8q
IE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgz
ODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlF
Mzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CkBAIC0xMzk1MSw2ICsxMzk1Myw4
IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjZCMTgw
REI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjI2ODQsNiArMjI2ODgsOCBAQAogCQlFM0FGQTk2MzFEQTZFOEFG
MDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAgKi8sCisJCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQw
MTIgLyogRE9NSklUSGVscGVycy5oICovLAogCQkJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAv
KiBKU05vZGVET01KSVQuY3BwICovLAogCQkJKTsKQEAgLTI2NjI2LDYgKzI2NjMyLDcgQEAKIAkJ
CQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRv
a2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVDQTE0RTFEQkMzQTQy
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzI4LDYgKzI4NzM1
LDcgQEAKIAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3Jl
VGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyog
Rm9udENhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVD
b2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmNGZiZmFmMDI1
YTlmOTBhYWU5NDU2NzA0NzVjMDI2YzQzOWZmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCAr
MSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgiCisKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg+CisjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIEVO
QUJMRShKSVQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCit7CisgICAgSlNDOjpET01KSVQ6OkFic3RyYWN0
SGVhcCBET01IZWFwKCJET00iKTsKKyNkZWZpbmUgRE9NSklUX0RFRklORV9IRUFQKG5hbWUsIHBh
cmVudCkgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBuYW1lIyNIZWFwKCNuYW1lKTsKKyAgICBE
T01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfSEVBUCkKKyN1bmRlZiBET01K
SVRfREVGSU5FX0hFQVAKKworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5hbWUsIHBh
cmVudCkgbmFtZSMjSGVhcC5zZXRQYXJlbnQoJnBhcmVudCMjSGVhcCk7CisgICAgRE9NSklUX0FC
U1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9IRUFQKQorI3VuZGVmIERPTUpJVF9J
TklUSUFMSVpFX0hFQVAKKworICAgIERPTUhlYXAuY29tcHV0ZSgwKTsKKworI2RlZmluZSBET01K
SVRfSU5JVElBTElaRV9NRU1CRVIobmFtZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5n
ZSgpOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJWkVfTUVN
QkVSKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUgorCisgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgZGF0YUxvZygiRE9NSklUIEhlYXAgUmVwb3NpdG9yeTpcbiIpOworICAgICAg
ICBET01IZWFwLmRlZXBEdW1wKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQorfQorCitjb25zdCBB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJl
cG9zaXRvcnk7CisgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Cit9CisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNjQ0OTBhZjMwYjkzNTA4MmZmODQ3ZmJmNzZjMmM3MjFi
MGQzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRv
bWppdC9ET01KSVRIZWFwUmFuZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKKy8vIERlc2NyaWJlIHlvdXIgYWJz
dHJhY3QgaGVhcCBoaWVyYXJjaHkgaGVyZS4KKy8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50
KQorI2RlZmluZSBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKFYpIFwKKyAgICBWKE5vZGUsIERP
TSkgXAorICAgIFYoTm9kZV9maXJzdENoaWxkLCBOb2RlKSBcCisgICAgVihOb2RlX2xhc3RDaGls
ZCwgTm9kZSkgXAorICAgIFYoTm9kZV9wYXJlbnROb2RlLCBOb2RlKSBcCisgICAgVihOb2RlX25l
eHRTaWJsaW5nLCBOb2RlKSBcCisgICAgVihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAor
CisKK2NsYXNzIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworV1RGX01BS0VfTk9OQ09QWUFCTEUo
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+OworICAgIHN0YXRpYyBjb25zdCBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5JiBpbnN0YW5jZSgpOworCisgICAgSlNDOjpET01KSVQ6OkhlYXBS
YW5nZSBET007CisKKyNkZWZpbmUgRE9NSklUX0RFRklORV9NRU1CRVIobmFtZSwgcGFyZW50KSBK
U0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElT
VChET01KSVRfREVGSU5FX01FTUJFUikKKyN1bmRlZiBET01KSVRfREVGSU5FX01FTUJFUgorCitw
cml2YXRlOgorICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKK307CisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4IDE4MDZiMmFmYTFjNDcx
YzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIuLmE4NWJjZGNhYjU4MWViMDFiZTBjMzBmOTZmMzVl
Y2Q5NGQ0ZDE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxw
ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtMzIs
OCArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFt
ZXNwYWNlIERPTUpJVEhlbHBlcnMgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9N
SklUIHsKIAogdXNpbmcgSlNDOjpDQ2FsbEhlbHBlcnM7CiB1c2luZyBKU0M6OkdQUlJlZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggYjk2OTNhY2FhNzUyYTQ0NDhk
NDE2Y2MwNDE3NzcyYzAwMGU4N2NiMi4uODdmNGRiN2ZhN2Y0ZmYwNjJhYjhjODYzMzc5YTdhMzM0
MzdkMWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRE9NSklUSGVscGVycy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTUyLDE1ICs1MywxNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3coSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNHbG9iYWxPYgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkTm9kZT4K
LXN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQg
aXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50KQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9m
ZnNldCwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50IGlzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudCkKIHsKLSAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IDE7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGpp
dCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1sw
XS5qc1ZhbHVlUmVncygpOwotICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0ID0gcGFyYW1zWzFd
LmdwcigpOwotICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmpl
Y3QgPSBwYXJhbXNbMl0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKKyAgICAgICAgSlNWYWx1ZSBnbG9iYWxPYmplY3RWYWx1ZSA9IHBhcmFtc1sy
XS52YWx1ZSgpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbnVsbENhc2VzOwog
ICAgICAgICAvLyBMb2FkIGEgd3JhcHBlZCBvYmplY3QuICJub2RlIiBzaG91bGQgYmUgYWxyZWFk
eSB0eXBlIGNoZWNrZWQgYnkgQ2hlY2tET00uCkBAIC03Miw3ICs3NCw3IEBAIHN0YXRpYyBSZWY8
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vzcyhw
dHJkaWZmX3Qgb2ZmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoLCBvZmZzZXQpLCBzY3JhdGNoKTsKICAgICAgICAgbnVsbENhc2VzLmFwcGVuZChqaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gpKTsKIAotICAgICAgICBE
T01KSVRIZWxwZXJzOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGppdCwgcGFyYW1zLCBzY3JhdGNo
LCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxXcmFwcGVkTm9kZT4sIHBhcmFt
c1sxXS52YWx1ZSgpKTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGpp
dCwgcGFyYW1zLCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxX
cmFwcGVkTm9kZT4sIGdsb2JhbE9iamVjdFZhbHVlKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG51bGxDYXNlcy5saW5rKCZqaXQpOwpA
QCAtODMsODMgKzg1LDk5IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2ZmCiAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CiB9CiAKLXN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05vZGUo
KQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tOb2RlKCkKIHsKLSAg
ICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50
OjpjcmVhdGUoKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVy
cyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpQYXRjaHBvaW50
OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVy
cyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKERPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1swXS5n
cHIoKSkpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoSWZOb3RO
b2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7
CiAgICAgfSk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjZmlyc3RDaGls
ZC4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjaGVja0RP
TSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpj
aGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQorUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxE
T00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENB
U1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJzdENo
aWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQp
OworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNl
dEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFp
bmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWly
ZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2ZpcnN0Q2hpbGQpOworICAgIHJldHVybiBwYXRjaHBv
aW50OwogfQogCiAvLyBOb2RlI2xhc3RDaGlsZC4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5v
ZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05v
ZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRE
T01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9k
ZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSAr
IENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENv
bnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJ
c0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5l
ZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2xhc3RDaGlsZCk7
CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbmV4dFNpYmxpbmcuCi1SZWY8
RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RP
TSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSgp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6
bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpO
b3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfbmV4dFNp
YmxpbmcpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3ByZXZpb3VzU2li
bGluZy4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6
OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2li
bGluZ0RPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05vZGUoKTsKIH0KIAot
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6
OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVByZXZp
b3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIGNvbnN0IGF1
dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7Cisg
ICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihO
b2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVp
cmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9wcmV2aW91c1NpYmxpbmcpOworICAgIHJldHVy
biBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3BhcmVudE5vZGUuCi1SZWY8RE9NSklUOjpQYXRj
aHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJl
dHVybiBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5v
ZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnRO
b2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnROb2RlTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcGFyZW50
Tm9kZSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbm9kZVR5cGUuCi1S
ZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjaGVja0RPTSgp
CiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVh
dGUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQ
dXJlKCk7CiAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwotICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6
UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIGpp
dC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZSwgSlNDOjpKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDk2YmYxY2IyYzM5
Mzg1NGEzYWRhNDNjYTYyYzY5YmJjODEwMGVlNi4uYjlhMWFmZWRjYmI2ZDZjNjViNWViY2UyMTc4
ZWQ3M2MzY2MzODc1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEwLTIzICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBh
IHdheSBmb3IgRE9NSklUOjpQYXRjaHBvaW50IHRvIGV4cHJlc3MgZWZmZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFj
Y2Vzc29yLWRpZmZlcmVudC1lZmZlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vZG9taml0LWFjY2Vzc29yLWRpZmZlcmVudC1lZmZlY3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13
aXRoLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFj
Y2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QuaHRtbDogQWRkZWQuCisgICAgICAg
ICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1ub2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3Zl
cmxhcC13aXRoLWNhbGwtc2luY2UtcHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGpzL2RvbS9kb21qaXQtYWNjZXNzb3Itbm9kZS10eXBlLWVmZmVjdC1zaG91bGQtbm90LW92ZXJs
YXAtd2l0aC1jYWxsLXNpbmNlLXB1cmUuaHRtbDogQWRkZWQuCisKIDIwMTYtMTAtMjIgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkaW5nIGN1c3RvbSBl
bGVtZW50IHNob3VsZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQgYW5kIGNvbm5lY3RlZCBjYWxs
YmFja3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZGlm
ZmVyZW50LWVmZmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFj
Y2Vzc29yLWRpZmZlcmVudC1lZmZlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNmExZWFm
OTA0NzBkYzkzYjQ3YzE0NzI2ZTZiZjE5Y2MyNWQ4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWRpZmZlcmVudC1lZmZlY3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBET01KSVQgYWNjZXNzb3JzIHdpbGwgaGFuZGxlIGRp
ZmZlcmVudCBoZWFwIGFjY2Vzc2VzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitQQVNTIHRlc3QoKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1kaWZmZXJlbnQtZWZmZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWRpZmZlcmVudC1lZmZlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzEzMGJm
OWJkZDIwOGVmOGQxNjU2OGYwZTI3YmEwY2U5YWM5MzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1kaWZmZXJlbnQtZWZmZWN0Lmh0bWwKQEAg
LTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+
PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlk
PSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGFjY2Vzc29ycyB3aWxs
IGhhbmRsZSBkaWZmZXJlbnQgaGVhcCBhY2Nlc3NlcyBjb3JyZWN0bHkuJyk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFy
Z2V0Jyk7CisgICAgdmFyIGZpcnN0Q2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmly
c3RDaGlsZCcpOworICAgIHZhciBsYXN0Q2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bGFzdENoaWxkJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICB2YXIgcmV0ID0gdGFyZ2V0LmZpcnN0Q2hpbGQgPT09IGZpcnN0Q2hpbGQ7CisgICAgICAgIHJl
dCAmPSB0YXJnZXQubGFzdENoaWxkID09PSBsYXN0Q2hpbGQ7CisgICAgICAgIHJldCAmPSB0YXJn
ZXQuZmlyc3RDaGlsZCA9PT0gZmlyc3RDaGlsZDsKKyAgICAgICAgcmV0ICY9IHRhcmdldC5sYXN0
Q2hpbGQgPT09IGxhc3RDaGlsZDsKKyAgICAgICAgaWYgKCFyZXQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzaG91bGRCZVRydWUoYHRl
c3QoKWApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmZiYTYwOGM4OTMzOGI5Zjc3Mjc3YjIxYjUyNWZhYmU2YzA0ZjQ0NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IERPTUpJVCBhY2Nlc3NvcnMgd2lsbCByZXByZXNl
bnQgdGhlaXIgaGVhcCBhY2Nlc3Nlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIGZ1bmMoImZpcnN0Q2hpbGQiLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iiks
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaXJzdENoaWxkIikpIGlzIHRydWUKK1BBU1MgZnVu
YygibGFzdENoaWxkIiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLCBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibGFzdENoaWxkIikpIGlzIHRydWUKK1BBU1MgZnVuYygibmV4dFNp
YmxpbmciLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJuZXh0U2libGluZyIpKSBpcyB0cnVlCitQQVNTIGZ1bmMoInByZXZpb3VzU2li
bGluZyIsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInByZXZpb3VzU2libGluZyIpKSBpcyB0cnVlCitQQVNTIGZ1bmMoInBhcmVudE5v
ZGUiLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwYXJlbnROb2RlIikpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3Qtc2hvdWxkLW92
ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTlkMTYzNzk5ZDE5MDEx
YWNkZWUwZWMzOTc3OTAwMjM3MDAzOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG92
ZXJsYXAgd2l0aCBlZmZlY3RzIG9mIERPTUpJVCBhY2Nlc3NvcnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRiNGFjMTNkNDc4NGMyNWY3ZTFhYjljOTFi
YjYzYWM1MWI5ODNhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtYWNjZXNzb3ItZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2
PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFz
dENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4K
KworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgYWNjZXNzb3JzLicpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcp
OworICAgIHZhciBmaXJzdENoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0Q2hp
bGQnKTsKKyAgICB2YXIgbGFzdENoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhc3RD
aGlsZCcpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFy
IHJldCA9IHRhcmdldC5maXJzdENoaWxkID09PSBmaXJzdENoaWxkOworICAgICAgICB0YXJnZXQu
YXBwZW5kQ2hpbGQobGFzdENoaWxkKTsKKyAgICAgICAgcmV0ICY9IHRhcmdldC5maXJzdENoaWxk
ID09PSBmaXJzdENoaWxkOworICAgICAgICBpZiAoIXJldCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJlVHJ1ZShgdGVzdCgp
YCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWVmZmVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNDMxNTkwNTIzZDk1NjAw
MTE5MGYyZTAyMWMwYjc4MDc2N2QzNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0icGFy
ZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRhcmdl
dCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48
L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IERPTUpJVCBhY2Nlc3NvcnMgd2lsbCByZXByZXNlbnQgdGhlaXIgaGVh
cCBhY2Nlc3Nlcy4nKTsKK3ZhciB0ZXN0cyA9IFsKKyAgICAiZmlyc3RDaGlsZCIsCisgICAgImxh
c3RDaGlsZCIsCisgICAgIm5leHRTaWJsaW5nIiwKKyAgICAicHJldmlvdXNTaWJsaW5nIiwKKyAg
ICAicGFyZW50Tm9kZSIsCitdLm1hcChmdW5jdGlvbiAobmFtZSkgeworICAgIHZhciBmdW5jID0g
YAorICAgICAgICByZXR1cm4gZnVuY3Rpb24gJHtuYW1lfShuYW1lLCBlbGVtZW50LCByZXN1bHQp
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9
PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSBy
ZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudC4ke25hbWV9ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9OworICAgIGA7CisgICAgcmV0dXJuIFsgbmFtZSwgRnVuY3Rpb24oZnVuYykoKSBdOwor
fSk7CisKK2ZvciAodmFyIFtuYW1lLCBmdW5jXSBvZiB0ZXN0cykgeworICAgIHNob3VsZEJlVHJ1
ZShgZnVuYygiJHtuYW1lfSIsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIiR7bmFtZX0iKSlgKTsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nv
ci1ub2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVy
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUt
dHlwZS1lZmZlY3Qtc2hvdWxkLW5vdC1vdmVybGFwLXdpdGgtY2FsbC1zaW5jZS1wdXJlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNjIyNTAxMTZmZDUzZjE2N2YyZjYxN2YwOGJmNGI1NmEyNjU4
NDk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nv
ci1ub2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVy
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3Vs
ZCBub3Qgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklUJ3Mgbm9kZVR5cGUgYWNjZXNzb3Ig
c2luY2UgaXQgaXMgcHVyZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRl
c3QoKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1u
b2RlLXR5cGUtZWZmZWN0LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVyZS5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1ub2RlLXR5cGUtZWZmZWN0
LXNob3VsZC1ub3Qtb3ZlcmxhcC13aXRoLWNhbGwtc2luY2UtcHVyZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU3YzQ2YTU4NGFjOGJkNThjNjY2ZTJmZGZhMTNkYmIwOWZlODhhMmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUtdHlwZS1lZmZlY3Qt
c2hvdWxkLW5vdC1vdmVybGFwLXdpdGgtY2FsbC1zaW5jZS1wdXJlLmh0bWwKQEAgLTAsMCArMSwz
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9kaXY+PGRp
diBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJsYXN0Q2hp
bGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oYFRlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG5vdCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQncyBub2RlVHlwZSBhY2Nlc3NvciBzaW5jZSBpdCBp
cyBwdXJlLmApOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworICAgIHZhciBmaXJzdENoaWxkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0Q2hpbGQnKTsKKyAgICB2YXIgbGFzdENoaWxkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhc3RDaGlsZCcpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIHJldDEgPSB0YXJnZXQubm9kZVR5cGU7CisgICAg
ICAgIHRhcmdldC5hcHBlbmRDaGlsZChsYXN0Q2hpbGQpOworICAgICAgICB2YXIgcmV0MiA9IHRh
cmdldC5ub2RlVHlwZTsKKyAgICAgICAgaWYgKHJldDEgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8
IHJldDIgIT09IE5vZGUuRUxFTUVOVF9OT0RFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292543</attachid>
            <date>2016-10-23 00:52:05 -0700</date>
            <delta_ts>2016-10-24 13:14:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161023004824.patch</filename>
            <type>text/plain</type>
            <size>96496</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi4xODhmMmZiNWVhOTMzMWVm
Mzg1NzM3ZTA0NWJhODc2NzI0Njg5NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTYtMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZvciBET01KSVQ6OlBhdGNocG9p
bnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRE9NSklUOjpFZmZlY3QuIEl0IGRl
c2NyaWJlcyB0aGUgc2lkZSBlZmZlY3RzIG9mCisgICAgICAgIHRoZSBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50LiBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50IGNhbiB1c2UgdGhpcworICAgICAg
ICBmZWF0dXJlIHRvIHRlYWNoIHRoZSBjb21waWxlcnMgYWJvdXQgdGhlIGVmZmVjdHMuIEFuZCB0
aGUgY29tcGlsZXJzCisgICAgICAgIHdpbGwgcGVyZm9ybSBDU0UgYmFzZWQgb24gdGhlIHJlcG9y
dGVkIGVmZmVjdHMuCisKKyAgICAgICAgQXMgdGhlIHNhbWUgdG8gQjMncyBIZWFwUmFuZ2UsIHRo
ZSBlZmZlY3RzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YKKyAgICAgICAgaW50ZWdlcnMu
IFtiZWdpbiwgZW5kKSBwYWlyIHdpbGwgcmVwcmVzZW50cyB0aGUgcmFuZ2Ugb2YgdGhlIGFic3Ry
YWN0CisgICAgICAgIGhlYXAuIFdlIGVuY29kZSB0aGUgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkg
aW50byB0aGVzZSBwYWlycy4gTGlrZSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSb290OiBbMCwgMzIpCisgICAgICAgICAgICAgICAgIENoaWxkMTogWzAsIDIwKSAgICAgICAg
ICAgICBDaGlsZDI6IFsyMCwgMzIpCisgICAgICAgIENoaWxkMTE6IFswLCA0KSBDaGlsZDEyOiBb
NCwgMjApCisKKyAgICAgICAgVGhpcyBzaW1wbGlmaWVzIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgYWJzdHJhY3QgaGVhcC4gQW5kIFdlYkNvcmUKKyAgICAgICAganVzdCB0ZWxscyBwYWlycyBv
ZiBpbnRlZ2VycyBhbmQgaXQgZG9lcyBub3QgdGVsbCBhbnkgZGV0YWlsZWQgaGllcmFyY2h5Lgor
ICAgICAgICBTbywgREZHIGFuZCBGVEwgY2FuIG9wdGltaXplIERPTSBvcGVyYXRpb25zIHdpdGhv
dXQgZGVlcCBrbm93bGVkZ2Ugb2YKKyAgICAgICAgdGhlIERPTSBhYnN0cmFjdCBoZWFwIGhpZXJh
cmNoeS4gRm9yIGV4YW1wbGUsIFdlYkNvcmUgd2lsbCB0ZWxsIHRoYXQKKyAgICAgICAgZmlyc3RD
aGlsZCB3aWxsIHJlYWQgTm9kZV9maXJzdENoaWxkIGFic3RyYWN0IGhlYXAuIEJ1dCB0aGlzIGlu
Zm9ybWF0aW9uCisgICAgICAgIGlzIGVuY29kZWQgdG8gdGhlIHBhaXIgYW5kIERGRyBkb2VzIG5v
dCBrbm93IHRoZSBkZXRhaWxzLiBCdXQgc3RpbGwKKyAgICAgICAgREZHIGNhbiB1bmRlcnN0YW5k
IHRoZSBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBhbmQgY2FuIHF1ZXJ5IHdoZXRoZXIgdGhlCisg
ICAgICAgIGdpdmVuIGFic3RyYWN0IGhlYXAgb3ZlcmxhcHMgd2l0aCBzb21lIGFic3RyYWN0IGhl
YXAuCisKKyAgICAgICAgVG9sZCBoZWFwIHJhbmdlIGlzIHJlcHJlc2VudGVkIGFzIERPTUpJVDo6
SGVhcFJhbmdlLiBERkcgd2lsbCBoYW5kbGUKKyAgICAgICAgdGhpcyB1bmRlciB0aGUgRE9NU3Rh
dGUgYWJzdHJhY3QgaGVhcC4gRE9NSklUOjpIZWFwUmFuZ2UgaXMgc3RvcmVkIGluCisgICAgICAg
IERGRzo6QWJzdHJhY3RIZWFwJ3MgUGF5bG9hZC4gV2UgbWFpbnRhaW4gdGhlIGhpZXJhcmNoeSBi
eSBET01KSVQ6OkhlYXBSYW5nZQorICAgICAgICBpbiB0aGUgRE9NU3RhdGUgYWJzdHJhY3QgaGVh
cC4gV2UgYWRkIGEgbmVjZXNzYXJ5IGhhbmRsaW5nIGluIERGRydzCisgICAgICAgIEFic3RyYWN0
SGVhcCBhbmQgQ2xvYmJlclNldC4KKworICAgICAgICBBbmQgd2UgYWxzbyBpbnRyb2R1Y2UgRE9N
U3RhdGVMb2MgZm9yIEhlYXBMb2NhdGlvbi4gSXQgaXMgY29tYmluZWQgd2l0aAorICAgICAgICBE
T01TdGF0ZSBBYnN0cmFjdEhlYXAgd2l0aCBET01KSVQ6OkhlYXBSYW5nZS4gRm9yIGV4YW1wbGUs
IHdlIGNhbgorICAgICAgICByZXByZXNlbnQgTm9kZS5maXJzdENoaWxkIGFzIGByZWFkKERPTVN0
YXRlOk5vZGVfZmlyc3RDaGlsZClgIGFuZAorICAgICAgICBgZGVmKEhlYXBMb2NhdGlvbihub2Rl
LCBET01TdGF0ZTpOb2RlX2ZpcnN0Q2hpbGQpKWAgdGhpbmd5LiBUaGlzIGFsbG93cyB1cworICAg
ICAgICB0byBwZXJmb3JtIENTRSBvbnRvIERPTSBnZXR0ZXJzIHRoYXQgd2lsbCByZWFkIHNvbWUg
b2YgRE9NIGhlYXAhCisKKyAgICAgICAgRm9yIHNpbXBsaWNpdHksIHdlIGNvbnZlcnQgQ2FsbERP
TSBmcm9tIE5vZGVWYXJBcmdzIHRvIHRoZSBub3JtYWwgb25lLgorICAgICAgICBDYWxsRE9NIGlz
IG5vdyBqdXN0IHVzZWQgZm9yIERPTUpJVCBnZXR0ZXIuIFNvIGl0cyBjaGlsZHJlbiBpcyBhdCBt
b3N0IDIuCisgICAgICAgIEl0IG1heSBoYXZlIGVpdGhlciAxIG9yIDIgY2hpbGRyZW4uIElmIHRo
ZSBnbG9iYWwgb2JqZWN0IGlzIHJlcXVpcmVkCisgICAgICAgIGJ5IENhbGxET01QYXRjaHBvaW50
LCBpdCBoYXMgMiBjaGlsZHJlbi4gQW5kIHdlIGNoYW5nZWQgdGhlIG9yZGVyIG9mCisgICAgICAg
IHRoZSBjaGlsZHJlbiB0byBmdXJ0aGVyIHNpbXBsaWZ5IHRoZSBjb2RlLiBCZWZvcmUgdGhpcyBj
aGFuZ2UsIHRoZSBvcmRlcgorICAgICAgICBpcyAxOiBnbG9iYWxPYmplY3QgMjogYmFzZS4gQWZ0
ZXIgdGhpcyBwYXRjaCwgdGhlIG9yZGVyIGJlY29tZXMgMTogYmFzZSwKKyAgICAgICAgYW5kIDI6
IGdsb2JhbE9iamVjdC4gQW5kIHRoZSBjaGlsZDIgbWF5IG5vdCBleGlzdHMgaWYgdGhlIGdsb2Jh
bCBvYmplY3QKKyAgICAgICAgaXMgbm90IHJlcXVpcmVkLiBXZSBjaGFuZ2VkIGFsbCB0aGUgZXhp
c3RpbmcgRE9NSklUIHBhdGNocG9pbnQgdG8gdGhpcworICAgICAgICBmb3JtLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SGVh
cDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SGVhcDo6aXNTdHJpY3RTdWJ0eXBlT2YpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SGVhcDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpibGVzc0NhbGxET00pOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDbG9i
YmVyU2V0OjpvdmVybGFwcyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJTZXQuaDoKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNH
Qyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uaDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NhbGxET01EYXRhKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpjYWxsRE9NRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNhbGxET01QYXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkFic3RyYWN0
SGVhcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpzaGFsbG93
RHVtcCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpkZWVwRHVtcCk6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAg
IChKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwOjpBYnN0cmFjdEhlYXApOgorICAgICAgICAoSlND
OjpET01KSVQ6OkFic3RyYWN0SGVhcDo6c2V0UGFyZW50KToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpBYnN0cmFjdEhlYXA6OmlzUm9vdCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6QWJzdHJhY3RI
ZWFwOjppc0NvbXB1dGVkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXA6OnJh
bmdlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaDoKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklURWZmZWN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0R2VuZXJhdGUpOgorICAgICAgICAqIGRvbWpp
dC9ET01KSVRIZWFwUmFuZ2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6
SGVhcFJhbmdlOjpkdW1wKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6SGVhcFJhbmdlKToKKyAgICAg
ICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcpOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6
ZW5kKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OnJhd1JlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3ApOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5n
ZTo6bm9uZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N0cmljdFN1YnR5
cGVPZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjppc1N1YnR5cGVPZik6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvdmVybGFwcyk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBqc2MuY3BwOgorCiAyMDE2LTEwLTIxICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBi
b3RoIHRoZSBjZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNzc5YWU0Y2RiOWY1YmU2YmNjYTg0MDlhMGQyNzQ3YTkzZjQ0ZDcyZi4uOTg2NTQ2YTNiNTlj
MDUyNThiNGRiMmY2ZTkyMzllYzIxYmU5YmYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0x
MC0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
RE9NSklUXSBBZGQgYSB3YXkgZm9yIERPTUpJVDo6UGF0Y2hwb2ludCB0byBleHByZXNzIGVmZmVj
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBs
aWZ5IG5vbkVtcHR5UmFuZ2VzT3ZlcmxhcC4KKworICAgICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6
CisgICAgICAgIChXVEY6Om5vbkVtcHR5UmFuZ2VzT3ZlcmxhcCk6CisKIDIwMTYtMTAtMjAgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIFdBU00gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTk4M2I5NjcxNGIyYjI3ZmQ4MGVhOTQ5
MGUxOGYwNGQ3ZDA5Mjg5Li45ZDdiYTQzYTgzOTExNzg2YWIwNDEwOThmYmQ0OWU4OTU2ZTQyOGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTYtMTAtMjMgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGEgd2F5IGZv
ciBET01KSVQ6OlBhdGNocG9pbnQgdG8gZXhwcmVzcyBlZmZlY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRE9NUGF0Y2hwb2ludCBub3cgaGFz
IHRoZSB3YXkgdG8gdGVsbCBpdHMgZWZmZWN0cyB0byBERkcgYW5kIEZUTCBjb21waWxlcnMuCisg
ICAgICAgIFdlYkNvcmUgRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHdpbGwgY29uc3Ry
dWN0IHRoZSBoaWVyYXJjaHkgb2YgdGhlIGFic3RyYWN0CisgICAgICAgIGhlYXAuIEFuZCB0aGVu
IGl0IGVuY29kZXMgdGhlc2UgaW5mb3JtYXRpb24gaW50byB0aGUgcGFpcnMgb2YgdGhlIGludGVn
ZXJzLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNoIGFsc28gY2hhbmdlcyB0aGUgRE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIFNvIHdlIGNoYW5nZSB0
aGVtIGluIGFsbCB0aGUgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCBzaXRlcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL2RvbWppdC9ET01KSVRFZmZlY3QuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omlu
c3RhbmNlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01Q
YXRjaHBvaW50LmguCisgICAgICAgICogZG9taml0L0RPTUpJVEhlbHBlcnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90V29ybGRJc05vcm1hbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdFdlYWtJc0xp
dmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVyczo6dHJ5TG9va1Vw
V3JhcHBlckNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6
OnRvV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpi
cmFuY2hJZkRPTVdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVs
cGVyczo6YnJhbmNoSWZOb3RET01XcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6YnJhbmNoSWZFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90RWxlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZkRvY3VtZW50V3JhcHBlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdERv
Y3VtZW50V3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJVC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RD
aGlsZERPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6
Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERP
TSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVO
b2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAtMjIgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkaW5nIGN1c3RvbSBlbGVtZW50IHNob3Vs
ZCBlbnF1ZXVlIGF0dHJpYnV0ZUNoYW5nZWQgYW5kIGNvbm5lY3RlZCBjYWxsYmFja3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMWNiMjk0NzM3YjI0NGYyMWRiN2E5NTM5
NzllNDkyYjczMDA0MmQ4Li44N2Y3M2U1YTA3MGNjMTIyMWZjOGQ0MjMyMjVjMzcxODYwNjQ5ZTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MTMsNiArNDEzLDkgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4
Nl9zeW4taW50ZWwuYwogICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5bi5jCiAKKyAg
ICBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmNwcAorICAgIGRvbWppdC9ET01KSVRIZWFwUmFu
Z2UuY3BwCisKICAgICBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAogICAgIGZ0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmNwcAogICAgIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFkYTMxNGRhNmNmYjQ3MDFh
MzMzOGZiMzBjMzM3MS4uZmFiMjE5ODI2YjM5Nzc1NzdkNWUwZDM0NTNjZjNjZDJjZTA1MWUxZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjMsNiArMjE2MywxMCBAQAogCQlF
MzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAz
QTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERD
NSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlclByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90
b3R5cGUuaCAqLzsgfTsKKwkJRTM1Q0ExNTMxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBS
YW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVDQTE1MTFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCAqLzsgfTsKKwkJ
RTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgz
NTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzNUNBMTU1MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5jcHAgKi87
IH07CisJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURC
QzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OwogCQlFMzVFMDM2MDFCN0FC
NDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3
M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5jcHAgKi87IH07CkBAIC0yMTc3LDYgKzIxODEsNyBAQAogCQlFM0JGRDBCQjFEQUY4MDg3MDA2
NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkxREFGODA3QzAwNjVE
RUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLzsgfTsKIAkJRTNC
RkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBC
QTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAq
LzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4RTNCMURB
NDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDNzlDQUIxREI5QTREQzAwRDFFQ0E0IC8q
IERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmly
b25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwpAQCAt
NDUzMyw2ICs0NTM4LDEwIEBACiAJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRD
YWxsRE9NUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRDYWxsRE9NUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1
RjM1MDFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzNUNBMTRGMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01KSVRBYnN0cmFjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0Ex
NTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NTQ4LDYgKzQ1NTcsNyBAQAogCQlFM0JGRDBCOTFEQUY4MDdDMDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERP
TUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
UGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M3OUNBQTFEQjlB
NEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVEVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NC
MUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTbG93UGF0aENhbGxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlD
NzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NDAzLDggKzc0MTMsMTMgQEAKIAkJRTNGRjc1MkQxRDlDRTlFQTAw
QzdFMTZEIC8qIGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJRTM1Q0ExNEYxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5j
cHAgKi8sCisJCQkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cC5oICovLAogCQkJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0
Y2hwb2ludC5oICovLAorCQkJCUUzQzc5Q0FBMURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZl
Y3QuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0
dGVyLmggKi8sCisJCQkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5jcHAgKi8sCisJCQkJRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5oICovLAogCQkJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50
LmggKi8sCiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmgg
Ki8sCkBAIC03NjMyLDYgKzc2NDcsNyBAQAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAv
KiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIxNjQw
ODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMx
OEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVy
cyAqLywKKwkJCQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRv
clJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTg2RTExNkIxMEZF
NzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkQ3
RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKQEAgLTgy
OTksNiArODMxNSw3IEBACiAJCQkJQUQyRkNDMUYxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MkMz
ODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1Jl
dGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8q
IEpTU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZCMUMxNjI1QkUwMDMyM0Y2NyAv
KiBCM0NGRy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDE3LDYgKzg0MzQsNyBAQAogCQkJCTdDMDA4
Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCURD
MDE4NDE5MUQxMEMxODkwMDU3QjA1MyAvKiBKSVRXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzNUNBMTU0MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5h
bHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTVGMzUzMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTkyNCw2ICs5OTQyLDcg
QEAKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVk
Qnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNFNDBEMUI2MThCNjYwMEM4MEUx
RSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzVDQTE1MzFE
QkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5U2xvdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVy
dHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5NDIsNiArOTk2MSw3IEBACiAJCQkJODY0
MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDI4MDg0MzEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MjgwODQ0MTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNTUxREJDM0E1RjAwRjgzNTE2IC8q
IERPTUpJVEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQwQzdBMDFCODJF
MUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
NTQwQzdBMTFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggY2RkZjFjNjFkODdjNjhiNDk5MTE0NjEyNzE1
NGFlMWMwYzQ3NTJkOS4uODQ3MTI4YjVmMTBlOWE3MjhjN2ZmZjg4YzI4OGM1NjM3NjlmY2Y0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC0xNDcxLDExICsxNDcxLDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZW1pdERP
TUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBHUFJSZWcgYmFzZUZvckdl
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvckRPTUpJVCA9IHN0cnVjdHVyZSgp
LT5nbG9iYWxPYmplY3QoKTsKIAogICAgIHJlZ3MuYXBwZW5kKHBhcmFtVmFsdWVSZWdzKTsKKyAg
ICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOwogICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJl
R2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEFTU0VSVChwYXJhbUdsb2JhbE9iamVjdEdQUiAhPSBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShwYXJhbUds
b2JhbE9iamVjdEdQUiwgZ2xvYmFsT2JqZWN0Rm9yRE9NSklUKSk7CiAgICAgfQotICAgIHJlZ3Mu
YXBwZW5kKHBhcmFtQmFzZUdQUik7CiAKICAgICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzKSB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDFlMTEwMTkwMmRiMjVlYWQ3Zjhk
N2VmOTliNDljNDg0MWMxOGQxMWQuLmNkNjk0YmJlYmFjODA3ZDUxOGY2NmM0N2NhYWFiNmU3OGU5
MWQyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RI
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHAKQEAgLTQ1LDYgKzQ1LDEwIEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KGtpbmQoKSk7CiAgICAgaWYgKGtpbmQoKSA9PSBJ
bnZhbGlkQWJzdHJhY3RIZWFwIHx8IGtpbmQoKSA9PSBXb3JsZCB8fCBraW5kKCkgPT0gSGVhcCB8
fCBwYXlsb2FkKCkuaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChraW5kKCkgPT0g
RE9NU3RhdGUpIHsKKyAgICAgICAgb3V0LnByaW50KCIoIiwgRE9NSklUOjpIZWFwUmFuZ2U6OmZy
b21SYXcocGF5bG9hZCgpLnZhbHVlMzIoKSksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgb3V0LnByaW50KCIoIiwgcGF5bG9hZCgpLCAiKSIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCAwYWJkNTAyN2IyNmFlYjM5NGYy
OWMwMzhmZDlmMmQ1OTJlNmMxNjM5Li5mNTFmODJmZTEzN2UyNWEzZjc5YTUyYjFmMTFiMGM1MzMx
YTMwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiRE9N
SklUSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTczLDYgKzc0
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE1hdGhEb3RS
YW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKICAgICBtYWNybyhBYnNv
bHV0ZSkgXAorICAgIC8qIERPTUpJVCB0ZWxscyB0aGUgaGVhcCByYW5nZSB3aXRoIHRoZSBwYWly
IG9mIGludGVnZXJzLiAqL1wKKyAgICBtYWNybyhET01TdGF0ZSkgXAogICAgIC8qIFVzZSB0aGlz
IGZvciB3cml0ZXMgb25seSwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIG1heSBmaXJlIHdhdGNocG9p
bnRzLiBVc3VhbGx5IHRoaXMgaXMgbmV2ZXIgZGlyZWN0bHkgd3JpdHRlbiBidXQgaW5zdGVhZCB3
ZSB0ZXN0IHRvIHNlZSBpZiBhIG5vZGUgY2xvYmJlcnMgdGhpczsgaXQganVzdCBzbyBoYXBwZW5z
IHRoYXQgeW91IGhhdmUgdG8gd3JpdGUgd29ybGQgdG8gY2xvYmJlciBpdC4gKi9cCiAgICAgbWFj
cm8oV2F0Y2hwb2ludF9maXJlKSBcCiAgICAgLyogVXNlIHRoZXNlIGZvciByZWFkcyBvbmx5LCBq
dXN0IHRvIGluZGljYXRlIHRoYXQgaWYgdGhlIHdvcmxkIGdvdCBjbG9iYmVyZWQsIHRoZW4gdGhp
cyBvcGVyYXRpb24gd2lsbCBub3Qgd29yay4gKi9cCkBAIC0yMzMsNiArMjM2LDE1IEBAIGNsYXNz
IEFic3RyYWN0SGVhcCB7CiAgICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25zdCBBYnN0cmFj
dEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgQWJzdHJhY3RIZWFwIGN1cnJlbnQg
PSAqdGhpczsKKyAgICAgICAgaWYgKGN1cnJlbnQua2luZCgpID09IERPTVN0YXRlICYmIG90aGVy
LmtpbmQoKSA9PSBET01TdGF0ZSkgeworICAgICAgICAgICAgUGF5bG9hZCBjdXJyZW50UGF5bG9h
ZCA9IGN1cnJlbnQucGF5bG9hZCgpOworICAgICAgICAgICAgUGF5bG9hZCBvdGhlclBheWxvYWQg
PSBvdGhlci5wYXlsb2FkKCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFBheWxvYWQuaXNUb3Ao
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAob3RoZXJQ
YXlsb2FkLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICByZXR1cm4gRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcoY3VycmVudFBheWxvYWQudmFsdWUz
MigpKS5pc1N0cmljdFN1YnR5cGVPZihET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhvdGhlclBh
eWxvYWQudmFsdWUzMigpKSk7CisgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGN1cnJlbnQua2lu
ZCgpICE9IFdvcmxkKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5zdXBlcnR5cGUo
KTsKICAgICAgICAgICAgIGlmIChjdXJyZW50ID09IG90aGVyKQpAQCAtMjQ4LDcgKzI2MCwxNiBA
QCBjbGFzcyBBYnN0cmFjdEhlYXAgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgQWJz
dHJhY3RIZWFwJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAqdGhpcyA9PSBv
dGhlciB8fCBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikgfHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBl
T2YoKnRoaXMpOworICAgICAgICBpZiAoKnRoaXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGtpbmQoKSA9PSBET01TdGF0ZSAmJiBvdGhlci5raW5kKCkg
PT0gRE9NU3RhdGUpIHsKKyAgICAgICAgICAgIFBheWxvYWQgY3VycmVudFBheWxvYWQgPSBwYXls
b2FkKCk7CisgICAgICAgICAgICBQYXlsb2FkIG90aGVyUGF5bG9hZCA9IG90aGVyLnBheWxvYWQo
KTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50UGF5bG9hZC5pc1RvcCgpIHx8IG90aGVyUGF5bG9h
ZC5pc1RvcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGN1cnJlbnRQYXlsb2FkLnZhbHVlMzIoKSku
b3ZlcmxhcHMoRE9NSklUOjpIZWFwUmFuZ2U6OmZyb21SYXcob3RoZXJQYXlsb2FkLnZhbHVlMzIo
KSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVPZihvdGhlcikg
fHwgb3RoZXIuaXNTdHJpY3RTdWJ0eXBlT2YoKnRoaXMpOwogICAgIH0KICAgICAKICAgICBib29s
IGlzRGlzam9pbnQoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBhMTJmMDljYjFiOTRhMGEzMDQzNjM3MGM3MmFhMjFjNWVkODE5NWZiLi5mMDlk
NDFiN2I3Y2EzMzNhMjQwOWIxZTU0NWI1NTg0MGRjZjBmYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yMjg5LDEwICsyMjg5LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgIGNhc2UgQ2FsbERPTTogeworICAg
ICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERP
TURhdGEoKS0+cGF0Y2hwb2ludDsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPmVmZmVjdC53cml0
ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9i
YmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwogICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChu
b2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHMo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDQ4ODQyMDZiM2Y1NmQ3NGU2ZjI2ZWY1NmI1OGNmYWE1NjU3MGQ4OTkuLjA2MDMx
NjhkOTIxNGMzNGIxNGNjYjcxMGM5MzBkZTRkMjhjMjgxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjczLDYgKzI2NzMsMTMg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCitzdGF0aWMgdm9pZCBibGVzc0NhbGxET00oTm9kZSogbm9kZSkKK3sKKyAgICBE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEo
KS0+cGF0Y2hwb2ludDsKKyAgICBpZiAoIXBhdGNocG9pbnQtPmVmZmVjdC5tdXN0R2VuZXJhdGUo
KSkKKyAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQpAQCAtMjY5MSwx
NCArMjY5OCwyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50
IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JgogICAgIC8vIFdlIGRvIG5vdCBu
ZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNjZXNz
b3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24gb2Nj
dXJzLgogICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhjaGVja0RPTVBhdGNocG9pbnQu
cHRyKCkpLCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9kZSk7CiAKKyAg
ICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEgPSBtX2dyYXBoLm1fY2FsbERPTURhdGEuYWRkKCk7
CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET01QYXRjaHBvaW50ID0g
ZG9tSklULT5jYWxsRE9NKCk7CiAgICAgbV9ncmFwaC5tX2RvbUpJVFBhdGNocG9pbnRzLmFwcGVu
ZChjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSk7CisKKyAgICBjYWxsRE9NRGF0YS0+ZG9tSklUID0g
ZG9tSklUOworICAgIGNhbGxET01EYXRhLT5wYXRjaHBvaW50ID0gY2FsbERPTVBhdGNocG9pbnQu
cHRyKCk7CisKKyAgICBOb2RlKiBjYWxsRE9NTm9kZSA9IG51bGxwdHI7CisgICAgLy8gR2xvYmFs
T2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIu
CiAgICAgaWYgKGNhbGxET01QYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAg
ICAgIE5vZGUqIGdsb2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlz
Tm9kZSk7Ci0gICAgICAgIGFkZFZhckFyZ0NoaWxkKGdsb2JhbE9iamVjdCk7IC8vIEdsb2JhbE9i
amVjdCBvZiB0aGlzTm9kZSBpcyBhbHdheXMgdXNlZCB0byBjcmVhdGUgYSBET01XcmFwcGVyLgot
ICAgIH0KLSAgICBhZGRWYXJBcmdDaGlsZCh0aGlzTm9kZSk7Ci0gICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9w
SW5mbyhjYWxsRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSkpOworICAg
ICAgICBjYWxsRE9NTm9kZSA9IGFkZFRvR3JhcGgoQ2FsbERPTSwgT3BJbmZvKGNhbGxET01EYXRh
KSwgT3BJbmZvKHByZWRpY3Rpb24pLCB0aGlzTm9kZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY2FsbERPTU5vZGUgPSBhZGRUb0dyYXBoKENhbGxET00sIE9wSW5mbyhjYWxs
RE9NRGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgdGhpc05vZGUpOworICAgIGJsZXNzQ2FsbERP
TShjYWxsRE9NTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
Y2FsbERPTU5vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyU2V0LmNwcAppbmRleCBkNDYzMGUzNzBjYjBiYWMyM2Q5OTQyZjVm
ZmNlMzhmYjU4ZGEyZGVjLi41OGQzYzk1YzE4NzNiYWE5ZDU1YTYyYzUxYWExYTc5MjQ0OWY3ZTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlclNldC5jcHAKQEAgLTgx
LDYgKzgxLDIzIEBAIGJvb2wgQ2xvYmJlclNldDo6b3ZlcmxhcHMoQWJzdHJhY3RIZWFwIGhlYXAp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY2xvYmJlcnMuZmluZChoZWFwKSAhPSBtX2Nsb2JiZXJzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGVhcC5raW5kKCkgPT0gRE9NU3Rh
dGUgJiYgIWhlYXAucGF5bG9hZCgpLmlzVG9wKCkpIHsKKyAgICAgICAgLy8gRE9NU3RhdGUgaGVh
cCBoYXMgaXRzIG93biBoaWVyYXJjaHkuIEZvciBkaXJlY3QgaGVhcCBjbG9iYmVycyB0aGF0IHBh
eWxvYWQgaXMgbm90IFRvcCwKKyAgICAgICAgLy8gd2Ugc2hvdWxkIHF1ZXJ5IHdoZXRoZXIgdGhl
IGNsb2JiZXIgb3ZlcmxhcHMgd2l0aCB0aGUgZ2l2ZW4gaGVhcC4KKyAgICAgICAgRE9NSklUOjpI
ZWFwUmFuZ2UgcmFuZ2UgPSBET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyhoZWFwLnBheWxvYWQo
KS52YWx1ZTMyKCkpOworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fY2xvYmJlcnMpIHsKKyAg
ICAgICAgICAgIGJvb2wgZGlyZWN0ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGly
ZWN0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQWJzdHJhY3RIZWFw
IGNsb2JiZXIgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGlmIChjbG9iYmVyLmtpbmQoKSAhPSBE
T01TdGF0ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChjbG9i
YmVyLnBheWxvYWQoKS5pc1RvcCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKERPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KGNsb2JiZXIucGF5bG9hZCgpLnZh
bHVlMzIoKSkub3ZlcmxhcHMocmFuZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfQogICAgIHdoaWxlIChoZWFwLmtpbmQoKSAhPSBXb3JsZCkgewogICAg
ICAgICBoZWFwID0gaGVhcC5zdXBlcnR5cGUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5zKGhlYXAp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyU2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJTZXQuaAppbmRleCA3MjlmMzli
MTE4NTE4YTk1NTVlYzQ2MTY2ZWVhZjdkZGVkNGFiZTQ1Li5mOTNlMjdmZGI0MjMyZWMwYjJhYzUw
MGE2NTA1ZTRjOTU0OTM0ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJTZXQuaApAQCAtNTIsMTEgKzUyLDExIEBAIGNsYXNzIENsb2JiZXJTZXQgewogICAgIAogICAg
IHZvaWQgYWRkKEFic3RyYWN0SGVhcCk7CiAgICAgdm9pZCBhZGRBbGwoY29uc3QgQ2xvYmJlclNl
dCYpOwotICAgIGJvb2wgY29udGFpbnMoQWJzdHJhY3RIZWFwKSBjb25zdDsKICAgICBib29sIG92
ZXJsYXBzKEFic3RyYWN0SGVhcCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIAogICAg
IC8vIENhbGxzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBDbG9iYmVyU2V0LgorICAgIC8vIERv
IG5vdCBjYWxsIGZvciBub24gZGVidWdnaW5nIHB1cnBvc2UuIE90aGVyd2lzZSwgeW91IG11c3Qg
aGFuZGxlIERPTVN0YXRlIGhpZXJhcmNoeSBjYXJlZnVsbHkuCiAgICAgCiAgICAgSGFzaFNldDxB
YnN0cmFjdEhlYXA+IGRpcmVjdCgpIGNvbnN0OwogICAgIEhhc2hTZXQ8QWJzdHJhY3RIZWFwPiBz
dXBlcigpIGNvbnN0OwpAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBDbG9iYmVyU2V0IHsKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisgICAgYm9vbCBj
b250YWlucyhBYnN0cmFjdEhlYXApIGNvbnN0OworCiAgICAgSGFzaFNldDxBYnN0cmFjdEhlYXA+
IHNldE9mKGJvb2wgZGlyZWN0KSBjb25zdDsKICAgICAKICAgICAvLyBNYXBzIGhlYXAgdG86CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGY5MjkzMzdhZmU5
Mzg3MmU1MDgxODBkMmI1ZjJjYzZiNmFiYzg0NGMuLmYyNmEwMTNkN2Y2MDhhNTk0MDhiYjAzOTY0
NjYxNTFiODU3MGU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHSGVhcExvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKKyNpbmNsdWRl
ICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKQEAgLTkwNywxMCArOTA4LDM0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY2FzZSBDYWxsRE9NOgotICAgICAgICByZWFkKFdvcmxkKTsKLSAgICAg
ICAgd3JpdGUoSGVhcCk7CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIERPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBv
aW50OworICAgICAgICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBwYXRjaHBvaW50LT5lZmZlY3Q7
CisgICAgICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVh
ZHMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29y
bGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KERPTVN0YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9
CisgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0Lndy
aXRlcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUo
SGVhcCk7IC8vIFdlIGRvIG5vdCBhc3N1bWUgdGhhdCBET00gb3BlcmF0aW9ucyB3aWxsIHdyaXRl
KFN0YWNrKS4KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFj
dEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAg
ICAgICB9CisgICAgICAgIGlmIChlZmZlY3QuZGVmKSB7CisgICAgICAgICAgICBET01KSVQ6Okhl
YXBSYW5nZSByYW5nZSA9IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChyYW5n
ZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQorICAgICAgICAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSwgbm9kZS0+Y2FsbERPTURhdGEoKS0+ZG9tSklUKSk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9uLiBXZSBkbyBu
b3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGluZm9ybWF0aW9u
IGlzIGluY2x1ZGVkIGluIHRoZSBiYXNlIG5vZGUuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdoZW4gc3VwcG9ydGluZyB0aGUgb3RoZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50QnlJZCgic3Ry
aW5nIiksIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBiYXNlIGFuZCB0aGUgaWQgc3RyaW5nLgorICAg
ICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIg
aGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgorICAgICAgICAgICAgICAgIGRl
ZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2Uu
cmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBj
YXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAzZjEzODQyY2FmNGI1YzZlZTFmMDljNTRh
YTNkOGEwMDYyMzZjNTI5Li5mMzViNjZjZTE3ZTQwMzk4MmQwMjhhZjM4MmI5MWJkNjA4NTdlYWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMTgsNyArMTE4
LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVy
Zmx5OgotICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNlIENoZWNrRE9NOgogICAgIGNhc2UgQ2hl
Y2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgpAQCAtMjk5LDYgKzI5OCw3IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdF
eHA6CiAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CisgICAgY2Fz
ZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0
aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggMzNjMGNmMTkyMDg1YjUwMDRiMjAwODllMmQzYjA2OTI5MDQ4ODU5OC4uZGJjMTAx
NzUyMjY0NWUwOWZlOWFjNDQxNjM4YjZjMWZlNWIzYzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzExLDExICsxNzExLDEwIEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7Ci0gICAgICAgICAgICBpbnQgY2hpbGRJbmRleCA9IDA7Ci0gICAg
ICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTVBhdGNocG9pbnQoKTsKKyAgICAgICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQq
IHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OworICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KICAgICAgICAgICAg
IGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgr
KykpOyAvLyBHbG9iYWxPYmplY3QuCi0gICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKSk7IC8vIERPTS4KKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOyAvLyBHbG9iYWxPYmpl
Y3QuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKaW5kZXggNzZiMmJhZWM3MTZjMmYzNmI2YmU1NDM2MGE5ZDMzZGQ0YTE0ZjNh
Yy4uZjk1N2Y1Y2ZiZDc4OGVkZDYyNjg5NWZmMWRlMzUwNzEzNmQxNDE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTAxLDYgKzkwMSw3IEBAIGNsYXNzIEdyYXBoIDog
cHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xv
YWRWYXJhcmdzRGF0YTsKICAgICBCYWc8U3RhY2tBY2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0
YTsKICAgICBCYWc8TGF6eUpTVmFsdWU+IG1fbGF6eUpTVmFsdWVzOworICAgIEJhZzxDYWxsRE9N
RGF0YT4gbV9jYWxsRE9NRGF0YTsKICAgICBWZWN0b3I8SW5saW5lVmFyaWFibGVEYXRhLCA0PiBt
X2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVl
X3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVMaXZlbmVzczsKICAgICBIYXNo
TWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPj4gbV9ieXRlY29k
ZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3Bw
CmluZGV4IDg0NzA2MzdkZjAwNjYwNGQzMjZkNTUxYTRiYjM0MmEyZjAyMDUwNjguLjliMjI5MmQ1
MDI2MGNmMGU3MTU0OGM2NjRmYWNkMWVkY2NlNWRmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE1Miw2ICsxNTIsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2Fz
ZSBNYXBIYXNMb2M6CiAgICAgICAgIG91dC5wcmludCgiTWFwSGFzTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIERPTVN0YXRlTG9jOgorICAgICAgICBvdXQucHJpbnQoIkRPTVN0YXRl
TG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlv
bi5oCmluZGV4IDcwNGQxOTFhZjhlNTE4YmMwZTlmNTUzZDQ3OGQ4YWY2ZDRlNjliNTYuLjYzNTdi
ZTE4MGYzZDA4MWUxZWM5MGE0ZDQyMTFkZjA0YTg2Yjg5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApAQCAtNjAsNyArNjAsOCBAQCBlbnVtIExvY2F0
aW9uS2luZCB7CiAgICAgU3RhY2tQYXlsb2FkTG9jLAogICAgIE1hcEJ1Y2tldExvYywKICAgICBK
U01hcEdldExvYywKLSAgICBNYXBIYXNMb2MKKyAgICBNYXBIYXNMb2MsCisgICAgRE9NU3RhdGVM
b2MsCiB9OwogCiBjbGFzcyBIZWFwTG9jYXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCBjOTQxMWQ1MGNmYmE5YzU0YjAyYzM0ODY0OTdlNDAzNDEyN2FkZGJjLi4wZDFh
NGI1NTgxNDM3MjlhYThjMzIyZjI4NDYxODNkMWQ0MzY0ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtNTksNiArNTksNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVz
cGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hwb2ludDsKIGNs
YXNzIENhbGxET01QYXRjaHBvaW50OwogfQpAQCAtMjMxLDYgKzIzMiwxMSBAQCBzdHJ1Y3QgU3Rh
Y2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hl
ZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAorc3RydWN0IENhbGxET01EYXRhIHsK
KyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUIHsgbnVsbHB0ciB9OworICAgIERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgeyBudWxscHRyIH07Cit9OworCiAvLyA9
PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGlu
IHRoZSBkYXRhIGZsb3cgZ3JhcGguCkBAIC0yMzM2LDE1ICsyMzQyLDE1IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6UGF0Y2hwb2ludCo+KCk7CiAg
ICAgfQogCi0gICAgYm9vbCBoYXNDYWxsRE9NUGF0Y2hwb2ludCgpIGNvbnN0CisgICAgYm9vbCBo
YXNDYWxsRE9NRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBDYWxs
RE9NOwogICAgIH0KIAotICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGNhbGxET01QYXRj
aHBvaW50KCkKKyAgICBDYWxsRE9NRGF0YSogY2FsbERPTURhdGEoKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGhhc0NhbGxET01QYXRjaHBvaW50KCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8u
YXM8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCo+KCk7CisgICAgICAgIEFTU0VSVChoYXNDYWxs
RE9NRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPENhbGxET01EYXRhKj4oKTsK
ICAgICB9CiAKICAgICBib29sIGhhc0NsYXNzSW5mbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMTliMjgyNWZhYjIzOTI4NTUyNzA5MTU0MGM5YzE5
NTE3MjU4MzJkYS4uNzVhYTYyZTEyNTY3MGEzNWNjMDhmMjE3ZDNjMTc0N2NiMDRmMDkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA0LDcgKzQwNCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhUb0xvd2VyQ2FzZSwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgLyogTm9kZXMgZm9yIERPTSBKSVQgKi9cCiAgICAgbWFjcm8o
Q2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDYWxsRE9NLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhD
YWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51
bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5
cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0
aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDVlNjRiYWY5M2M3YmMx
MjcxNmNhNzc4MjMyNTc0ODk2NDMyZjg5OTEuLjZjY2ZmYjVkZjdmY2JhNzcyM2E2Y2Q2ZDY5YzRm
NWUyZDAwZWIzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC03MjI1LDcgKzcyMjUsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZVRl
bXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwgVmVjdG9y
PAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQogewot
ICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9N
UGF0Y2hwb2ludCgpOworICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQg
PSBub2RlLT5jYWxsRE9NRGF0YSgpLT5wYXRjaHBvaW50OwogCiAgICAgVmVjdG9yPEdQUlJlZz4g
Z3BTY3JhdGNoOwogICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKQEAgLTcyMzQsMTkgKzcy
MzQsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkK
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgcmVncy5hcHBlbmQo
cmVzdWx0LnJlZ3MoKSk7CiAKLSAgICBpbnQgY2hpbGRJbmRleCA9IDA7CisgICAgRWRnZSYgYmFz
ZUVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIGJhc2VFZGdlKTsKKyAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGJhc2UuZ3ByKCks
IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCiAgICAgT3B0aW9uYWw8U3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKICAgICBpZiAocGF0Y2hwb2ludC0+cmVx
dWlyZUdsb2JhbE9iamVjdCkgewotICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspOworICAgICAgICBFZGdl
JiBnbG9iYWxPYmplY3RFZGdlID0gbm9kZS0+Y2hpbGQyKCk7CiAgICAgICAgIGdsb2JhbE9iamVj
dCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAg
ICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUu
Zm9yTm9kZShnbG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCi0gICAgRWRnZSYg
YmFzZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIGNoaWxkSW5kZXgrKyk7
Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgcmVn
cy5hcHBlbmQoRE9NSklUOjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0YXRlLmZvck5vZGUoYmFzZUVk
Z2UpLnZhbHVlKCkpKTsKLQogICAgIFZlY3RvcjxHUFJUZW1wb3Jhcnk+IGdwVGVtcHJhcmllczsK
ICAgICBWZWN0b3I8RlBSVGVtcG9yYXJ5PiBmcFRlbXByYXJpZXM7CiAgICAgYWxsb2NhdGVUZW1w
b3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KHRoaXMsIGdwVGVtcHJhcmllcywgZnBUZW1wcmFy
aWVzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgKnBhdGNocG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY0ODU1YjlkMmJiZTc3ZDkwYTYzMWRlYTFiN2I3OGRlNGYxZmUyOTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5jcHAK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXAu
aCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKwordm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCit7CisgICAg
dW5zaWduZWQgY3VycmVudCA9IGJlZ2luOworICAgIC8vIEluY3JlbWVudCB0aGUgZW5kIG9mIHRo
ZSByYW5nZS4KKyAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yYW5n
ZSA9IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCArIDEpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7CisgICAgICAgIGNoaWxkLT5j
b21wdXRlKGN1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7
CisgICAgfQorICAgIEFTU0VSVChiZWdpbiA8IFVJTlQxNl9NQVgpOworICAgIEFTU0VSVChjdXJy
ZW50IDw9IFVJTlQxNl9NQVgpOworICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1cnJl
bnQpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIHNoYWxsb3dEdW1wKG91dCk7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBv
dXQucHJpbnQoIi0+IiwgKm1fcGFyZW50KTsKK30KKwordm9pZCBBYnN0cmFjdEhlYXA6OnNoYWxs
b3dEdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fbmFtZSwg
IjwiLCBtX3JhbmdlLCAiPiIpOworfQorCit2b2lkIEFic3RyYWN0SGVhcDo6ZGVlcER1bXAoUHJp
bnRTdHJlYW0mIG91dCwgdW5zaWduZWQgaW5kZW50KSBjb25zdAoreworICAgIGF1dG8gcHJpbnRJ
bmRlbnQgPSBbJl0gKCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRlbnQ7IGktLTsp
CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiKTsKKyAgICB9OworCisgICAgcHJpbnRJbmRl
bnQoKTsKKyAgICBzaGFsbG93RHVtcChvdXQpOworCisgICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0
eSgpKSB7CisgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG91dC5wcmludCgiOlxuIik7CisgICAgZm9yIChhdXRvKiBjaGlsZCA6IG1fY2hpbGRy
ZW4pCisgICAgICAgIGNoaWxkLT5kZWVwRHVtcChvdXQsIGluZGVudCArIDEpOworfQorCit9IH0K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTg3YjA3OTQ0OTM4YjU1YjFkMjhmMzNhYWE2ZmQ0ODMx
ZTU5YTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXAuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01K
SVRIZWFwUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIEFic3RyYWN0SGVhcCB7CitwdWJsaWM6CisgICAgQWJz
dHJhY3RIZWFwKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBzZXRQYXJlbnQoQWJzdHJhY3RIZWFwKiBwYXJlbnQpCisg
ICAgeworICAgICAgICBBU1NFUlQoIW1fcGFyZW50KTsKKyAgICAgICAgcGFyZW50LT5tX2NoaWxk
cmVuLmFwcGVuZCh0aGlzKTsKKyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisg
ICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiAhbV9wYXJlbnQ7IH0KKworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZSh1bnNpZ25lZCBiZWdpbik7CisKKyAgICBib29sIGlz
Q29tcHV0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcmFuZ2U7IH0KKyAgICBIZWFwUmFuZ2UgcmFu
Z2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNoYWxsb3dEdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkZWVwRHVtcChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGluZGVudCA9IDApIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFN0cmluZyBtX25hbWU7CisgICAgQWJzdHJhY3RIZWFwKiBtX3BhcmVu
dCB7IG51bGxwdHIgfTsKKyAgICBWZWN0b3I8QWJzdHJhY3RIZWFwKj4gbV9jaGlsZHJlbiB7IH07
CisgICAgSGVhcFJhbmdlIG1fcmFuZ2U7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgK
aW5kZXggNjk1ODIwYzVhNTlkNjNkZWRhNDJmODNkNGY4YjQ3ODVjYzlhODNhMC4uNGVkYjIzMzJh
N2E5ZDdkNDJiMTBhNDE0NmY5MGE4MTIyNDZhYzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkRPTUpJVEVmZmVjdC5oIgog
I2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgog
CkBAIC00NSw2ICs0Niw4IEBAIGNsYXNzIENhbGxET01QYXRjaHBvaW50IDogcHVibGljIFBhdGNo
cG9pbnQgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI5ODAKICAgICBib29sIHJlcXVpcmVHbG9iYWxPYmplY3QgeyB0cnVlIH07CiAKKyAgICBFZmZl
Y3QgZWZmZWN0IHsgfTsKKwogcHJpdmF0ZToKICAgICBDYWxsRE9NUGF0Y2hwb2ludCgpID0gZGVm
YXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNmY1ODk2M2RiN2NiZTVjYmNjMzFkNjM5ZmU0M2QzZGNiZDNiMTZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3Qu
aApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworc3RydWN0IEVmZmVjdCB7CisgICAgSGVhcFJhbmdl
IHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07CisgICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisKKyAgICBib29s
IGV4aXRzU2lkZXdheXMgeyBmYWxzZSB9OworCisgICAgc3RhdGljIEVmZmVjdCBmb3JSZWFkV3Jp
dGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgeworICAg
ICAgICBFZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7Cisg
ICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOworICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgeworICAgICAgICBF
ZmZlY3QgZWZmZWN0OworICAgICAgICBlZmZlY3QucmVhZHMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsK
KyAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZl
Y3QuZGVmID0gSGVhcFJhbmdlOjpub25lKCk7CisgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
fQorCisgICAgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZikKKyAgICB7CisgICAg
ICAgIEVmZmVjdCBlZmZlY3Q7CisgICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKKyAgICAgICAg
ZWZmZWN0LndyaXRlcyA9IEhlYXBSYW5nZTo6bm9uZSgpOworICAgICAgICBlZmZlY3QuZGVmID0g
ZGVmOworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KKworICAgIHN0YXRpYyBFZmZlY3Qg
Zm9yRGVmKEhlYXBSYW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0
ZVJhbmdlKQorICAgIHsKKyAgICAgICAgRWZmZWN0IGVmZmVjdDsKKyAgICAgICAgZWZmZWN0LnJl
YWRzID0gcmVhZFJhbmdlOworICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKKyAg
ICAgICAgZWZmZWN0LmRlZiA9IGRlZjsKKyAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICB9CisK
KyAgICBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd3Jp
dGVzIHx8IGV4aXRzU2lkZXdheXM7CisgICAgfQorfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0MWYyMzkwMWNhNTEwMGJmZDI5MGNiZjEyMzM2ODAxYzZmOGNiNzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5jcHAK
QEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRIZWFwUmFuZ2UuaCIK
KworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsK
Kwordm9pZCBIZWFwUmFuZ2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnRmKCIweCV4LTB4JXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYmVnaW4oKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlbmQoKSkpOworfQorCisKK30gfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI5YzI4ZmNjNDA1YjJiYTg4OTA2OWRmOTg5YmE1MDBkZjZlZmJkNDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0w
LDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBIZWFwUmFuZ2UgeworcHVibGljOgorICAgIGNv
bnN0ZXhwciBIZWFwUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdGV4cHIgSGVhcFJhbmdl
KHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpCisgICAgICAgIDogbV9iZWdpbihiZWdpbikK
KyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKworICAgIGVudW0gUmF3UmVwcmVz
ZW50YXRpb25UYWcgeyBSYXdSZXByZXNlbnRhdGlvbiB9OworICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBIZWFwUmFuZ2UoUmF3UmVwcmVzZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVlKQorICAgICAg
ICA6IG1fYmVnaW4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlID4+IDE2KSkKKyAgICAgICAg
LCBtX2VuZChzdGF0aWNfY2FzdDx1aW50MTZfdD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CisgICAgfQorCisg
ICAgdWludDE2X3QgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgdWludDE2
X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKyAgICB1aW50MzJfdCByYXdSZXByZXNl
bnRhdGlvbigpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9iZWdpbikgPDwgMTYp
IHwgbV9lbmQ7IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5kOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIEhlYXBS
YW5nZSgwLCBVSU5UMTZfTUFYKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIG5v
bmUoKSB7IHJldHVybiBIZWFwUmFuZ2UoVUlOVDE2X01BWCwgVUlOVDE2X01BWCk7IH0gLy8gRW1w
dHkgcmFuZ2UuCisKKyAgICBib29sIGlzU3RyaWN0U3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCp0aGlzID09IG90aGVyKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gb3RoZXIubV9iZWdpbiA8PSBtX2Jl
Z2luICYmIG1fZW5kIDw9IG90aGVyLm1fZW5kOworICAgIH0KKworICAgIGJvb2wgaXNTdWJ0eXBl
T2YoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghKnRo
aXMgfHwgIW90aGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKnRo
aXMgPT0gb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGlz
U3RyaWN0U3VidHlwZU9mKG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0
IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyYW5n
ZXNPdmVybGFwKG1fYmVnaW4sIG1fZW5kLCBvdGhlci5tX2JlZ2luLCBvdGhlci5tX2VuZCk7Cisg
ICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iZWdpbiB7IFVJTlQxNl9NQVggfTsKKyAg
ICB1aW50MTZfdCBtX2VuZCB7IFVJTlQxNl9NQVggfTsKK307CisKK30gfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhNjU3
ZTA2Yzc4OTE5YzIyYzk4ZGNhYTNkYjMzMWFlOTFjZmQzMWRkLi44Y2E0NGY4NTE2MmEyNTJkOWFh
MmU4YmVlMGQyNWU4Nzk1OWQ2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC05MDY0LDI1ICs5MDY0LDI0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKICAgICB7Ci0gICAgICAgIERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTVBhdGNocG9pbnQo
KTsKLSAgICAgICAgaW50IGNoaWxkSW5kZXggPSAwOworICAgICAgICBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7CisK
KyAgICAgICAgRWRnZSYgYmFzZUVkZ2UgPSBtX25vZGUtPmNoaWxkMSgpOworICAgICAgICBMVmFs
dWUgYmFzZSA9IGxvd0NlbGwoYmFzZUVkZ2UpOworICAgICAgICBKU1ZhbHVlIGJhc2VDb25zdGFu
dCA9IG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKTsKIAogICAgICAgICBMVmFsdWUg
Z2xvYmFsT2JqZWN0OwogICAgICAgICBKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50OwogICAg
ICAgICBpZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7Ci0gICAgICAgICAgICBFZGdl
JiBnbG9iYWxPYmplY3RFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIGNoaWxkSW5k
ZXgrKyk7CisgICAgICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9ub2RlLT5jaGls
ZDIoKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwoZ2xvYmFsT2JqZWN0RWRn
ZSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3RDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShn
bG9iYWxPYmplY3RFZGdlKS52YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgRWRnZSYgYmFz
ZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgY2hpbGRJbmRleCsrKTsKLSAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKGJhc2VFZGdlKTsKLSAgICAgICAgSlNWYWx1ZSBiYXNl
Q29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUoYmFzZUVkZ2UpLnZhbHVlKCk7Ci0KICAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgaWYg
KGRvbUpJVC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZFNvbWVSZWdpc3RlcihnbG9iYWxPYmplY3QpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01h
c2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CkBAIC05MTAxLDExICs5MTAwLDEwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOwogICAgICAgICAg
ICAgICAgIFZlY3RvcjxET01KSVQ6OlZhbHVlPiByZWdzOwogCi0gICAgICAgICAgICAgICAgaW50
IGNoaWxkSW5kZXggPSAxOwogICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6
VmFsdWUocGFyYW1zWzFdLmdwcigpLCBiYXNlQ29uc3RhbnQpKTsKICAgICAgICAgICAgICAgICBp
ZiAoZG9tSklULT5yZXF1aXJlR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICByZWdz
LmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1tjaGlsZEluZGV4KytdLmdwcigpLCBnbG9iYWxP
YmplY3RDb25zdGFudCkpOwotICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFs
dWUocGFyYW1zW2NoaWxkSW5kZXgrK10uZ3ByKCksIGJhc2VDb25zdGFudCkpOworICAgICAgICAg
ICAgICAgICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKHBhcmFtc1syXS5ncHIoKSwgZ2xv
YmFsT2JqZWN0Q29uc3RhbnQpKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQogICAgICAgICAgICAg
ICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2goaSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAppbmRleCBhOGU3ZGE0ZjZjMzA5NTNjNGQ3ZmRmMzYwMjJlMzI1MjBiNTY2YTIzLi41
ZWI0ZDA0ZmU3NmQyOWU4NTU1OTIxNWQwYmI5OWJlYTU1ZjVjNjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtNzMzLDcgKzczMyw3IEBAIGNsYXNzIERPTUpJVEdldHRlckNvbXBsZXggOiBwdWJs
aWMgRE9NSklUTm9kZSB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdp
c3RlcnMgPSAzOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7
Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGRvbUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgZG9tR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnM7ICsraSkKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoNDIpLCBwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmlu
ZGV4IDFkMmZjMTg0ZTBjMDQwZmY3OWMxYjQ2MTUyZDkzZTUzNzZlYmNhMzcuLmMxMDkzZmE2ODA2
ODFhMjI2NjNiMjliNzcyMjExMmY3ZDk5Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01hdGhFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQ0NCwx
MiArNDQ0LDggQEAgaW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwg
VCBsZWZ0TWF4LCBUIHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQogewogICAgIEFTU0VSVChsZWZ0TWlu
IDwgbGVmdE1heCk7CiAgICAgQVNTRVJUKHJpZ2h0TWluIDwgcmlnaHRNYXgpOwotICAgIAotICAg
IGlmIChsZWZ0TWluIDw9IHJpZ2h0TWluICYmIGxlZnRNYXggPiByaWdodE1pbikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBs
ZWZ0TWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbGVmdE1heCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsKIH0KIAogLy8g
UGFzcyByYW5nZXMgd2l0aCB0aGUgbWluIGJlaW5nIGluY2x1c2l2ZSBhbmQgdGhlIG1heCBiZWlu
ZyBleGNsdXNpdmUuIEZvciBleGFtcGxlLCB0aGlzIHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiNmE3MGZlZWFiZDcxYzUzYmNjMmFlNzMwMWIxZDI0N2E0NTRiNjhkLi5hMjViZTc1Mjlh
OGM4Y2UxYjgyZWY4NDNjZmEzYTAwN2NkNTI1ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTUzOCw2ICsxNTM4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgZG9tL2RlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCiAKKyAgICBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAKICAgICBkb21qaXQvSlNOb2RlRE9NSklULmNwcAogCiAgICAg
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEFic3RyYWN0SGVh
cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmYjU0MjI5ZDEyMzBmOWM2N2UxZWY2ZWIyNzc1NzFjMzQ2N2JlZmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklU
QWJzdHJhY3RIZWFwX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUQWJzdHJhY3RIZWFwX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRBYnN0cmFjdEhlYXAuaD4KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJ
VEVmZmVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYzJlZjY4OWIwNTc3NDgwM2E2NzMyYjkzNGQ0ZmZlZTcw
NzA2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklU
RWZmZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklURWZmZWN0X2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9ET01KSVRFZmZlY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzN2ZhNWVkMjVlNGU1YThmMGJiNGZmMTcxYmEzYzA4Njc4MTVlYWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9N
SklUSGVhcFJhbmdlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdl
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUSGVhcFJhbmdlX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9ET01KSVRIZWFwUmFuZ2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NzVhZDAyZGQzMjRj
MTE2ZGRkOGJiOTQ2MTg0NzA4ZjQ4OTg0ZDIuLmRiMTQ0ZTFjNzgxMTdiYzdmZjBiN2YxMDVhZTJi
ZmE2OTNlMTk3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYxNjksNiArNjE2OSw4IEBACiAJCUUxRkY4RjZEMTgwREI1QkUw
MDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURBNzIxOTAwMDE5NDAx
MiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAg
Ki87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcy
MThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzVDQTE0RDFEQkMzQTNG
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CisJCUUzNUNBMTRF
MURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTND
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwogCQlFMzc3
RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8q
IE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgz
ODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlF
Mzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CkBAIC0xMzk1MSw2ICsxMzk1Myw4
IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjZCMTgw
REI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjI2ODQsNiArMjI2ODgsOCBAQAogCQlFM0FGQTk2MzFEQTZFOEFG
MDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAgKi8sCisJCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQw
MTIgLyogRE9NSklUSGVscGVycy5oICovLAogCQkJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAv
KiBKU05vZGVET01KSVQuY3BwICovLAogCQkJKTsKQEAgLTI2NjI2LDYgKzI2NjMyLDcgQEAKIAkJ
CQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRv
a2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVDQTE0RTFEQkMzQTQy
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzI4LDYgKzI4NzM1
LDcgQEAKIAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3Jl
VGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyog
Rm9udENhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVD
b2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmNGZiZmFmMDI1
YTlmOTBhYWU5NDU2NzA0NzVjMDI2YzQzOWZmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCAr
MSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgiCisKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg+CisjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIEVO
QUJMRShKSVQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCit7CisgICAgSlNDOjpET01KSVQ6OkFic3RyYWN0
SGVhcCBET01IZWFwKCJET00iKTsKKyNkZWZpbmUgRE9NSklUX0RFRklORV9IRUFQKG5hbWUsIHBh
cmVudCkgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBuYW1lIyNIZWFwKCNuYW1lKTsKKyAgICBE
T01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfSEVBUCkKKyN1bmRlZiBET01K
SVRfREVGSU5FX0hFQVAKKworI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5hbWUsIHBh
cmVudCkgbmFtZSMjSGVhcC5zZXRQYXJlbnQoJnBhcmVudCMjSGVhcCk7CisgICAgRE9NSklUX0FC
U1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9IRUFQKQorI3VuZGVmIERPTUpJVF9J
TklUSUFMSVpFX0hFQVAKKworICAgIERPTUhlYXAuY29tcHV0ZSgwKTsKKworI2RlZmluZSBET01K
SVRfSU5JVElBTElaRV9NRU1CRVIobmFtZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5n
ZSgpOworICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJWkVfTUVN
QkVSKQorI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUgorCisgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgZGF0YUxvZygiRE9NSklUIEhlYXAgUmVwb3NpdG9yeTpcbiIpOworICAgICAg
ICBET01IZWFwLmRlZXBEdW1wKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQorfQorCitjb25zdCBB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJl
cG9zaXRvcnk7CisgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Cit9CisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNjQ0OTBhZjMwYjkzNTA4MmZmODQ3ZmJmNzZjMmM3MjFi
MGQzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRv
bWppdC9ET01KSVRIZWFwUmFuZ2UuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKKy8vIERlc2NyaWJlIHlvdXIgYWJz
dHJhY3QgaGVhcCBoaWVyYXJjaHkgaGVyZS4KKy8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50
KQorI2RlZmluZSBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKFYpIFwKKyAgICBWKE5vZGUsIERP
TSkgXAorICAgIFYoTm9kZV9maXJzdENoaWxkLCBOb2RlKSBcCisgICAgVihOb2RlX2xhc3RDaGls
ZCwgTm9kZSkgXAorICAgIFYoTm9kZV9wYXJlbnROb2RlLCBOb2RlKSBcCisgICAgVihOb2RlX25l
eHRTaWJsaW5nLCBOb2RlKSBcCisgICAgVihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAor
CisKK2NsYXNzIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworV1RGX01BS0VfTk9OQ09QWUFCTEUo
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+OworICAgIHN0YXRpYyBjb25zdCBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5JiBpbnN0YW5jZSgpOworCisgICAgSlNDOjpET01KSVQ6OkhlYXBS
YW5nZSBET007CisKKyNkZWZpbmUgRE9NSklUX0RFRklORV9NRU1CRVIobmFtZSwgcGFyZW50KSBK
U0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7CisgICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElT
VChET01KSVRfREVGSU5FX01FTUJFUikKKyN1bmRlZiBET01KSVRfREVGSU5FX01FTUJFUgorCitw
cml2YXRlOgorICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKK307CisKK30gfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4IDE4MDZiMmFmYTFjNDcx
YzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIuLmE4NWJjZGNhYjU4MWViMDFiZTBjMzBmOTZmMzVl
Y2Q5NGQ0ZDE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxw
ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtMzIs
OCArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFt
ZXNwYWNlIERPTUpJVEhlbHBlcnMgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9N
SklUIHsKIAogdXNpbmcgSlNDOjpDQ2FsbEhlbHBlcnM7CiB1c2luZyBKU0M6OkdQUlJlZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggYjk2OTNhY2FhNzUyYTQ0NDhk
NDE2Y2MwNDE3NzcyYzAwMGU4N2NiMi4uODdmNGRiN2ZhN2Y0ZmYwNjJhYjhjODYzMzc5YTdhMzM0
MzdkMWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRE9NSklUSGVscGVycy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTUyLDE1ICs1MywxNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3coSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNHbG9iYWxPYgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkTm9kZT4K
LXN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQg
aXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50KQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9m
ZnNldCwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50IGlzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudCkKIHsKLSAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IDE7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGpp
dCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1sw
XS5qc1ZhbHVlUmVncygpOwotICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0ID0gcGFyYW1zWzFd
LmdwcigpOwotICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmpl
Y3QgPSBwYXJhbXNbMl0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKKyAgICAgICAgSlNWYWx1ZSBnbG9iYWxPYmplY3RWYWx1ZSA9IHBhcmFtc1sy
XS52YWx1ZSgpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbnVsbENhc2VzOwog
ICAgICAgICAvLyBMb2FkIGEgd3JhcHBlZCBvYmplY3QuICJub2RlIiBzaG91bGQgYmUgYWxyZWFk
eSB0eXBlIGNoZWNrZWQgYnkgQ2hlY2tET00uCkBAIC03Miw3ICs3NCw3IEBAIHN0YXRpYyBSZWY8
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vzcyhw
dHJkaWZmX3Qgb2ZmCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoLCBvZmZzZXQpLCBzY3JhdGNoKTsKICAgICAgICAgbnVsbENhc2VzLmFwcGVuZChqaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gpKTsKIAotICAgICAgICBE
T01KSVRIZWxwZXJzOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGppdCwgcGFyYW1zLCBzY3JhdGNo
LCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxXcmFwcGVkTm9kZT4sIHBhcmFt
c1sxXS52YWx1ZSgpKTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8V3JhcHBlZE5vZGU+KGpp
dCwgcGFyYW1zLCBzY3JhdGNoLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgdG9XcmFwcGVyU2xvdzxX
cmFwcGVkTm9kZT4sIGdsb2JhbE9iamVjdFZhbHVlKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG51bGxDYXNlcy5saW5rKCZqaXQpOwpA
QCAtODMsODMgKzg1LDk5IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2ZmCiAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CiB9CiAKLXN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05vZGUo
KQorc3RhdGljIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tOb2RlKCkKIHsKLSAg
ICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50
OjpjcmVhdGUoKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVy
cyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpQYXRjaHBvaW50
OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVy
cyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKERPTUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1swXS5n
cHIoKSkpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoSWZOb3RO
b2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7
CiAgICAgfSk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjZmlyc3RDaGls
ZC4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjaGVja0RP
TSgpCitSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpj
aGVja0RPTSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQorUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxE
T00oKQogewotICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENB
U1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJzdENo
aWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQp
OworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNl
dEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFp
bmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWly
ZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2ZpcnN0Q2hpbGQpOworICAgIHJldHVybiBwYXRjaHBv
aW50OwogfQogCiAvLyBOb2RlI2xhc3RDaGlsZC4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5v
ZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05v
ZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRE
T01KSVQ6OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9k
ZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSAr
IENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjppbnN0YW5jZSgpOworICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENv
bnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJ
c0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKKyAgICBwYXRjaHBvaW50LT5l
ZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2xhc3RDaGlsZCk7
CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbmV4dFNpYmxpbmcuCi1SZWY8
RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RP
TSgpCiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSgp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6
bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpO
b3RSZXF1aXJlZCk7CisgICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKKyAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfbmV4dFNp
YmxpbmcpOworICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3ByZXZpb3VzU2li
bGluZy4KLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6
OmNoZWNrRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2li
bGluZ0RPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJldHVybiBjaGVja05vZGUoKTsKIH0KIAot
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6
OmNhbGxET00oKQorUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVByZXZp
b3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIGNvbnN0IGF1
dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Omluc3RhbmNlKCk7Cisg
ICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxOb2RlPihO
b2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVp
cmVtZW50OjpOb3RSZXF1aXJlZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9wcmV2aW91c1NpYmxpbmcpOworICAgIHJldHVy
biBwYXRjaHBvaW50OwogfQogCiAvLyBOb2RlI3BhcmVudE5vZGUuCi1SZWY8RE9NSklUOjpQYXRj
aHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQorUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogewogICAgIHJl
dHVybiBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5v
ZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NKCkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnRO
b2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6Omluc3RhbmNlKCk7CisgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnROb2RlTWVtb3J5T2Zmc2V0KCks
IElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcGFyZW50
Tm9kZSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKIC8vIE5vZGUjbm9kZVR5cGUuCi1S
ZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKCkKK1Jl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjaGVja0RPTSgp
CiB7CiAgICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7Ci0gICAg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVh
dGUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQ
dXJlKCk7CiAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwotICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6
UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIGpp
dC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZSwgSlNDOjpKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDk2YmYxY2IyYzM5
Mzg1NGEzYWRhNDNjYTYyYzY5YmJjODEwMGVlNi4uYWM1OWU1MGIwN2YzYjZjODM1YTllMzZiMjll
OTI0ZTE2NTU5YjE4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTIzICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBh
IHdheSBmb3IgRE9NSklUOjpQYXRjaHBvaW50IHRvIGV4cHJlc3MgZWZmZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFj
Y2Vzc29yLWRpZmZlcmVudC1lZmZlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vZG9taml0LWFjY2Vzc29yLWRpZmZlcmVudC1lZmZlY3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13
aXRoLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFj
Y2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QuaHRtbDogQWRkZWQuCisgICAgICAg
ICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGpzL2RvbS9kb21qaXQtYWNjZXNzb3Itbm9kZS10eXBlLWVmZmVjdC1zaG91bGQtbm90LW92ZXJs
YXAtd2l0aC1jYWxsLXNpbmNlLXB1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUtdHlwZS1lZmZlY3Qtc2hvdWxkLW5vdC1vdmVybGFw
LXdpdGgtY2FsbC1zaW5jZS1wdXJlLmh0bWw6IEFkZGVkLgorCiAyMDE2LTEwLTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZ3JhZGluZyBjdXN0b20gZWxl
bWVudCBzaG91bGQgZW5xdWV1ZSBhdHRyaWJ1dGVDaGFuZ2VkIGFuZCBjb25uZWN0ZWQgY2FsbGJh
Y2tzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWRpZmZl
cmVudC1lZmZlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nl
c3Nvci1kaWZmZXJlbnQtZWZmZWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTZhMWVhZjkw
NDcwZGM5M2I0N2MxNDcyNmU2YmYxOWNjMjVkODhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1kaWZmZXJlbnQtZWZmZWN0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDkgQEAKK1Rlc3QgRE9NSklUIGFjY2Vzc29ycyB3aWxsIGhhbmRsZSBkaWZm
ZXJlbnQgaGVhcCBhY2Nlc3NlcyBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtYWNjZXNzb3ItZGlmZmVyZW50LWVmZmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1kaWZmZXJlbnQtZWZmZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcxMzBiZjli
ZGQyMDhlZjhkMTY1NjhmMGUyN2JhMGNlOWFjOTMyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZGlmZmVyZW50LWVmZmVjdC5odG1sCkBAIC0w
LDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwv
ZGl2PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0i
bGFzdENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rp
dj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBhY2Nlc3NvcnMgd2lsbCBo
YW5kbGUgZGlmZmVyZW50IGhlYXAgYWNjZXNzZXMgY29ycmVjdGx5LicpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rhcmdl
dCcpOworICAgIHZhciBmaXJzdENoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0
Q2hpbGQnKTsKKyAgICB2YXIgbGFzdENoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xh
c3RDaGlsZCcpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
dmFyIHJldCA9IHRhcmdldC5maXJzdENoaWxkID09PSBmaXJzdENoaWxkOworICAgICAgICByZXQg
Jj0gdGFyZ2V0Lmxhc3RDaGlsZCA9PT0gbGFzdENoaWxkOworICAgICAgICByZXQgJj0gdGFyZ2V0
LmZpcnN0Q2hpbGQgPT09IGZpcnN0Q2hpbGQ7CisgICAgICAgIHJldCAmPSB0YXJnZXQubGFzdENo
aWxkID09PSBsYXN0Q2hpbGQ7CisgICAgICAgIGlmICghcmV0KQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0
KClgKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZmYmE2MDhjODkzMzhiOWY3NzI3N2IyMWI1MjVmYWJlNmMwNGY0NDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBET01KSVQgYWNjZXNzb3JzIHdpbGwgcmVwcmVzZW50
IHRoZWlyIGhlYXAgYWNjZXNzZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFT
UyBmdW5jKCJmaXJzdENoaWxkIiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLCBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3RDaGlsZCIpKSBpcyB0cnVlCitQQVNTIGZ1bmMo
Imxhc3RDaGlsZCIsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxhc3RDaGlsZCIpKSBpcyB0cnVlCitQQVNTIGZ1bmMoIm5leHRTaWJs
aW5nIiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibmV4dFNpYmxpbmciKSkgaXMgdHJ1ZQorUEFTUyBmdW5jKCJwcmV2aW91c1NpYmxp
bmciLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwcmV2aW91c1NpYmxpbmciKSkgaXMgdHJ1ZQorUEFTUyBmdW5jKCJwYXJlbnROb2Rl
IiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicGFyZW50Tm9kZSIpKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0LXNob3VsZC1vdmVy
bGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE5ZDE2Mzc5OWQxOTAxMWFj
ZGVlMGVjMzk3NzkwMDIzNzAwMzlhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgYWNjZXNzb3JzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgdGVzdCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbCBi
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZWZmZWN0LXNob3VsZC1vdmVybGFw
LXdpdGgtY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0YjRhYzEzZDQ3ODRjMjVmN2UxYWI5YzkxYmI2
M2FjNTFiOTgzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWFjY2Vzc29yLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbApAQCAtMCwwICsx
LDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48
ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RD
aGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3Zlcmxh
cCB3aXRoIGVmZmVjdHMgb2YgRE9NSklUIGFjY2Vzc29ycy4nKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsK
KyAgICB2YXIgZmlyc3RDaGlsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdENoaWxk
Jyk7CisgICAgdmFyIGxhc3RDaGlsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXN0Q2hp
bGQnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBy
ZXQgPSB0YXJnZXQuZmlyc3RDaGlsZCA9PT0gZmlyc3RDaGlsZDsKKyAgICAgICAgdGFyZ2V0LmFw
cGVuZENoaWxkKGxhc3RDaGlsZCk7CisgICAgICAgIHJldCAmPSB0YXJnZXQuZmlyc3RDaGlsZCA9
PT0gZmlyc3RDaGlsZDsKKyAgICAgICAgaWYgKCFyZXQpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzaG91bGRCZVRydWUoYHRlc3QoKWAp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWFjY2Vzc29yLWVmZmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1lZmZlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDQzMTU5MDUyM2Q5NTYwMDEx
OTBmMmUwMjFjMGI3ODA3NjdkMzRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1hY2Nlc3Nvci1lZmZlY3QuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVu
dE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQi
PjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9k
aXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGVzdCBET01KSVQgYWNjZXNzb3JzIHdpbGwgcmVwcmVzZW50IHRoZWlyIGhlYXAg
YWNjZXNzZXMuJyk7Cit2YXIgdGVzdHMgPSBbCisgICAgImZpcnN0Q2hpbGQiLAorICAgICJsYXN0
Q2hpbGQiLAorICAgICJuZXh0U2libGluZyIsCisgICAgInByZXZpb3VzU2libGluZyIsCisgICAg
InBhcmVudE5vZGUiLAorXS5tYXAoZnVuY3Rpb24gKG5hbWUpIHsKKyAgICB2YXIgZnVuYyA9IGAK
KyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICR7bmFtZX0obmFtZSwgZWxlbWVudCwgcmVzdWx0KSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQuJHtuYW1lfSAhPT0gcmVzdWx0KQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuJHtuYW1lfSAhPT0g
cmVzdWx0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQuJHtuYW1lfSAhPT0gcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuJHtuYW1lfSAhPT0gcmVz
dWx0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQuJHtuYW1lfSAhPT0gcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfTsKKyAgICBgOworICAgIHJldHVybiBbIG5hbWUsIEZ1bmN0aW9uKGZ1bmMpKCkgXTsKK30p
OworCitmb3IgKHZhciBbbmFtZSwgZnVuY10gb2YgdGVzdHMpIHsKKyAgICBzaG91bGRCZVRydWUo
YGZ1bmMoIiR7bmFtZX0iLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCIke25hbWV9IikpYCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3It
bGljbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxp
Y20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YTNiZmQ2YzRlMjQ5NDQ0NzY1ODUyMzE4YmE1
MTUwYmZmZTRjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWFjY2Vzc29yLWxpY20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQg
YWNjZXNzb3Igd2lsbCBiZSBMSUNNLWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1
NjNlYmE4OWZmY2RhMjkxYjUyNGRjZGY3NTBlMmEzMDZhZTMyMDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbApAQCAtMCwwICsx
LDQ1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0iVVRGLTgiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxp
bmciPjwvZGl2PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRp
diBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+
Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBhY2Nlc3NvciB3
aWxsIGJlIExJQ00tZWQuJyk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciByZXQgPSAwOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHJldCA9IGRpdi5ub2RlVHlwZTsKKyAg
ICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KCk7CisgICAg
ICAgIHNob3VsZEJlKGByZXN1bHRgLCBgTm9kZS5FTEVNRU5UX05PREVgLCB0cnVlKTsKKyAgICB9
Cit9KCkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUtdHlwZS1lZmZlY3Qtc2hvdWxkLW5vdC1v
dmVybGFwLXdpdGgtY2FsbC1zaW5jZS1wdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtYWNjZXNzb3Itbm9kZS10eXBlLWVmZmVjdC1zaG91bGQtbm90LW92ZXJsYXAt
d2l0aC1jYWxsLXNpbmNlLXB1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MjI1MDExNmZk
NTNmMTY3ZjJmNjE3ZjA4YmY0YjU2YTI2NTg0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUtdHlwZS1lZmZlY3Qtc2hvdWxkLW5vdC1v
dmVybGFwLXdpdGgtY2FsbC1zaW5jZS1wdXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAK
K1Rlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggZWZmZWN0cyBvZiBE
T01KSVQncyBub2RlVHlwZSBhY2Nlc3NvciBzaW5jZSBpdCBpcyBwdXJlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgdGVzdCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLW5vZGUtdHlwZS1lZmZlY3Qtc2hvdWxkLW5vdC1vdmVy
bGFwLXdpdGgtY2FsbC1zaW5jZS1wdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWFjY2Vzc29yLW5vZGUtdHlwZS1lZmZlY3Qtc2hvdWxkLW5vdC1vdmVybGFwLXdpdGgtY2FsbC1z
aW5jZS1wdXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNDZhNTg0YWM4YmQ1OGM2NjZlMmZkZmExM2Ri
YjA5ZmU4OGEyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
YWNjZXNzb3Itbm9kZS10eXBlLWVmZmVjdC1zaG91bGQtbm90LW92ZXJsYXAtd2l0aC1jYWxsLXNp
bmNlLXB1cmUuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0i
cHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hp
bGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNp
YmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbihgVGVzdCBmdW5j
dGlvbiBjYWxscyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBlZmZlY3RzIG9mIERPTUpJVCdzIG5v
ZGVUeXBlIGFjY2Vzc29yIHNpbmNlIGl0IGlzIHB1cmUuYCk7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7Cisg
ICAgdmFyIGZpcnN0Q2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3RDaGlsZCcp
OworICAgIHZhciBsYXN0Q2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFzdENoaWxk
Jyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICB2YXIgcmV0
MSA9IHRhcmdldC5ub2RlVHlwZTsKKyAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGxhc3RDaGls
ZCk7CisgICAgICAgIHZhciByZXQyID0gdGFyZ2V0Lm5vZGVUeXBlOworICAgICAgICBpZiAocmV0
MSAhPT0gTm9kZS5FTEVNRU5UX05PREUgfHwgcmV0MiAhPT0gTm9kZS5FTEVNRU5UX05PREUpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitz
aG91bGRCZVRydWUoYHRlc3QoKWApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="315591"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292699</attachid>
            <date>2016-10-24 18:49:39 -0700</date>
            <delta_ts>2016-10-24 18:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161024184555.patch</filename>
            <type>text/plain</type>
            <size>1614</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRmZjhkNjFkODBhZWVl
ZDM2ZTAzZmJmYmRhYTMzNTdiYzcyNjBlYy4uMWE1YmE5ZGNmMzYyNWFiYTRmNmU0YjhiNTJhMDll
YjhjMjY5M2M2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAyMDE2LTEwLTI0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFVucmV2aWV3ZWQs
IGF0dGVtcHQgdG8gZml4IFdpbmRvd3MgYnVpbGQgYWdhaW4gYWZ0ZXIgcjIwNzc4NworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjU3CisKKyAgICAg
ICAgU2xpZ2h0bHkgY2hhbmdlZCBmcmllbmQgY2xhc3MgZGVjbGFyYXRpb24gcG9zaXRpb24gdG8g
bWFrZSBXaW5kb3dzIGJvdCBncmVlbi4KKworICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5Lmg6CisKKzIwMTYtMTAtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgYXR0ZW1wdCB0byBmaXggV2lu
ZG93cyBidWlsZCBhZnRlciByMjA3Nzg3CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMTE5ZmM5MWIwZjA4ZDgzMDA0
ZjUyNGMwMGUzMmYwY2I0MDk4NGE2My4uMGUxY2NjZmVjZWVjZWU3ZGZkYWUxYWMyMTE5MmU2N2Yz
ODZiM2IxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00NSw3ICs0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsg
bmFtZXNwYWNlIERPTUpJVCB7CiAKIAogY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7Ci1X
VEZfTUFLRV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKKyAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT47CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIHNoYXJlZCgpOwogCkBAIC01Niw3ICs1
Nyw2IEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKEFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOwogI3Vu
ZGVmIERPTUpJVF9ERUZJTkVfTUVNQkVSCiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE5l
dmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+OwogICAgIEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkoKTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292701</attachid>
            <date>2016-10-24 19:03:59 -0700</date>
            <delta_ts>2016-10-24 19:03:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163657-20161024190014.patch</filename>
            <type>text/plain</type>
            <size>1609</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRmZjhkNjFkODBhZWVl
ZDM2ZTAzZmJmYmRhYTMzNTdiYzcyNjBlYy4uMWE1YmE5ZGNmMzYyNWFiYTRmNmU0YjhiNTJhMDll
YjhjMjY5M2M2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAyMDE2LTEwLTI0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFVucmV2aWV3ZWQs
IGF0dGVtcHQgdG8gZml4IFdpbmRvd3MgYnVpbGQgYWdhaW4gYWZ0ZXIgcjIwNzc4NworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjU3CisKKyAgICAg
ICAgU2xpZ2h0bHkgY2hhbmdlZCBmcmllbmQgY2xhc3MgZGVjbGFyYXRpb24gcG9zaXRpb24gdG8g
bWFrZSBXaW5kb3dzIGJvdCBncmVlbi4KKworICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5Lmg6CisKKzIwMTYtMTAtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgYXR0ZW1wdCB0byBmaXggV2lu
ZG93cyBidWlsZCBhZnRlciByMjA3Nzg3CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjM2NTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMTE5ZmM5MWIwZjA4ZDgzMDA0
ZjUyNGMwMGUzMmYwY2I0MDk4NGE2My4uNjg5M2Q4OGM2NGFjNTQzMTA3NThlYjgxODY4NTA3MWFm
OGUzOTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsg
bmFtZXNwYWNlIERPTUpJVCB7CiAKIAogY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7Ci1X
VEZfTUFLRV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgc2hhcmVkKCk7CiAKQEAgLTU1LDggKzU1
LDYgQEAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7CiAgICAg
RE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01FTUJFUikKICN1bmRlZiBE
T01KSVRfREVGSU5FX01FTUJFUgogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRl
c3Ryb3llZDxBYnN0cmFjdEhlYXBSZXBvc2l0b3J5PjsKICAgICBBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5KCk7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>