<?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>215114</bug_id>
          
          <creation_ts>2020-08-03 17:04:40 -0700</creation_ts>
          <short_desc>CheckpointSideState shoud play nicely with StackOverflowException unwinding.</short_desc>
          <delta_ts>2020-08-04 18:45:35 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1677508</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-03 17:04:40 -0700</bug_when>
    <thetext>CheckpointSideState shoud play nicely with StackOverflowException unwinding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677517</commentid>
    <comment_count>1</comment_count>
      <attachid>405892</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-03 17:23:57 -0700</bug_when>
    <thetext>Created attachment 405892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677535</commentid>
    <comment_count>2</comment_count>
      <attachid>405892</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-03 17:45:50 -0700</bug_when>
    <thetext>Comment on attachment 405892
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        automatically unwind into the first frame before calling into the

you should say why: we do this b/c stack overflow does it purposefully because the top frame isn&apos;t fully materialized.

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        miggrated us from another thread below the current thread.

miggrated -&gt; migrated

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:663
&gt; +

revert

&gt; Source/JavaScriptCore/runtime/VM.cpp:1058
&gt; +#if ASSERT_ENABLED
&gt; +    for (const auto&amp; sideState : m_checkpointSideState)
&gt; +        ASSERT(sideState-&gt;associatedCallFrame != callFrame);
&gt; +#endif

Let&apos;s also assert it&apos;s sorted after the append.

&gt; Source/JavaScriptCore/runtime/VM.cpp:1066
&gt; +    ASSERT_UNUSED(expectedCallFrame, sideState-&gt;associatedCallFrame == expectedCallFrame);

let&apos;s make this RELEASE_ASSERT

&gt; Source/JavaScriptCore/runtime/VM.cpp:1074
&gt; +    ASSERT(bounds.contains(target));

WDYT about a release assert?

&gt; Source/WTF/wtf/StackBounds.h:107
&gt; +    StackBounds withSoftOrigin(void* origin) const

nit: Why not call this &quot;withOrigin&quot;? Seems more in line with the name &quot;origin()&quot; used elsewhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677536</commentid>
    <comment_count>3</comment_count>
      <attachid>405892</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-08-03 17:59:14 -0700</bug_when>
    <thetext>Comment on attachment 405892
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch fixes an issue where we the StackWalker would

Let&apos;s call it what it&apos;s called in code: /StackWalker/StackVisitor/.

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        with it is now marked const so we can PointerDump a CallFrame*.

What does PointerDump mean?  Do you mean dataLog?

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:663
&gt;&gt; +
&gt; 
&gt; revert

Unnecessary blank line.

&gt; Source/JavaScriptCore/runtime/VM.cpp:1054
&gt; +    payload-&gt;associatedCallFrame = callFrame;

Since every payload must have an associatedCallFrame, can you just make this initialization part of the constructor?  That would be a more robust idiom.

&gt; Source/JavaScriptCore/runtime/VM.cpp:1076
&gt; +    // We have to worry about migrating from another thread since there may be no chehckpoints in our thread but one in the other threads.

/chehckpoints/checkpoints/
/but one in the other/but have one in the other/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677537</commentid>
    <comment_count>4</comment_count>
      <attachid>405892</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-08-03 18:01:53 -0700</bug_when>
    <thetext>Comment on attachment 405892
Patch

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

&gt; Source/JavaScriptCore/runtime/VM.cpp:1070
&gt; +void VM::popAllCheckpointOSRSideStateUntil(CallFrame* target)

nit: maybe call this &quot;popAllCheckpointOSRSideStateUntilAndIncluding&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677538</commentid>
    <comment_count>5</comment_count>
      <attachid>405892</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-08-03 18:03:00 -0700</bug_when>
    <thetext>Comment on attachment 405892
Patch

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

&gt; Source/JavaScriptCore/runtime/VM.h:1209
&gt; +    Vector&lt;std::unique_ptr&lt;CheckpointOSRExitSideState&gt;, 4&gt; m_checkpointSideState;

How did you decide on this depth of 4?  Is it guaranteed to always be enough?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677540</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-03 18:05:58 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #5)
&gt; Comment on attachment 405892 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405892&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VM.h:1209
&gt; &gt; +    Vector&lt;std::unique_ptr&lt;CheckpointOSRExitSideState&gt;, 4&gt; m_checkpointSideState;
&gt; 
&gt; How did you decide on this depth of 4?  Is it guaranteed to always be enough?

No, this is a dynamic value. This is an inline capacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677542</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-08-03 18:07:44 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; (In reply to Mark Lam from comment #5)
&gt; &gt; Comment on attachment 405892 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=405892&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/VM.h:1209
&gt; &gt; &gt; +    Vector&lt;std::unique_ptr&lt;CheckpointOSRExitSideState&gt;, 4&gt; m_checkpointSideState;
&gt; &gt; 
&gt; &gt; How did you decide on this depth of 4?  Is it guaranteed to always be enough?
&gt; 
&gt; No, this is a dynamic value. This is an inline capacity.

Oh, right.  Ignore me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677684</commentid>
    <comment_count>8</comment_count>
      <attachid>405892</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-04 12:03:20 -0700</bug_when>
    <thetext>Comment on attachment 405892
Patch

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

Looking into the microbenchmark failures now.

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        This patch fixes an issue where we the StackWalker would
&gt; 
&gt; Let&apos;s call it what it&apos;s called in code: /StackWalker/StackVisitor/.

Yeah, whoops, dunno why I wrote StackWalker...

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        automatically unwind into the first frame before calling into the
&gt; 
&gt; you should say why: we do this b/c stack overflow does it purposefully because the top frame isn&apos;t fully materialized.

Sure.

&gt;&gt; Source/JavaScriptCore/ChangeLog:16
&gt;&gt; +        miggrated us from another thread below the current thread.
&gt; 
&gt; miggrated -&gt; migrated

fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:21
&gt;&gt; +        with it is now marked const so we can PointerDump a CallFrame*.
&gt; 
&gt; What does PointerDump mean?  Do you mean dataLog?

It&apos;s a class that dumps your pointers in DataLog.

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1054
&gt;&gt; +    payload-&gt;associatedCallFrame = callFrame;
&gt; 
&gt; Since every payload must have an associatedCallFrame, can you just make this initialization part of the constructor?  That would be a more robust idiom.

I&apos;m not sure that&apos;s more robust because the only person that cares about that is VM for the clearing below. I kept it this way so it&apos;s more or of a HashMap style usage. The fact that it&apos;s a stack under the hood shouldn&apos;t matter. This way if for whatever reason we need to switch back to a HashMap we can do that without touching clients.

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1058
&gt;&gt; +#endif
&gt; 
&gt; Let&apos;s also assert it&apos;s sorted after the append.

That&apos;s not necessarily true because of stack switching. I guess you could be sorted as long as your in the same stack but that&apos;s getting complicated...

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1066
&gt;&gt; +    ASSERT_UNUSED(expectedCallFrame, sideState-&gt;associatedCallFrame == expectedCallFrame);
&gt; 
&gt; let&apos;s make this RELEASE_ASSERT

Sure.

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1070
&gt;&gt; +void VM::popAllCheckpointOSRSideStateUntil(CallFrame* target)
&gt; 
&gt; nit: maybe call this &quot;popAllCheckpointOSRSideStateUntilAndIncluding&quot;?

I think of until as inclusive and before as exclusive...

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1074
&gt;&gt; +    ASSERT(bounds.contains(target));
&gt; 
&gt; WDYT about a release assert?

Don&apos;t think it matters because the compiler will remove the assert if it&apos;s true.

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1076
&gt;&gt; +    // We have to worry about migrating from another thread since there may be no chehckpoints in our thread but one in the other threads.
&gt; 
&gt; /chehckpoints/checkpoints/
&gt; /but one in the other/but have one in the other/

I need spell check for comments. lol

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/VM.h:1209
&gt;&gt;&gt;&gt; +    Vector&lt;std::unique_ptr&lt;CheckpointOSRExitSideState&gt;, 4&gt; m_checkpointSideState;
&gt;&gt;&gt; 
&gt;&gt;&gt; How did you decide on this depth of 4?  Is it guaranteed to always be enough?
&gt;&gt; 
&gt;&gt; No, this is a dynamic value. This is an inline capacity.
&gt; 
&gt; Oh, right.  Ignore me.

Yeah, I just picked it because checkpoints are rare but you may hit them often enough during repeated OSR exiting it&apos;d be good to avoid pathological malloc/free.

&gt;&gt; Source/WTF/wtf/StackBounds.h:107
&gt;&gt; +    StackBounds withSoftOrigin(void* origin) const
&gt; 
&gt; nit: Why not call this &quot;withOrigin&quot;? Seems more in line with the name &quot;origin()&quot; used elsewhere

I was thinking soft because it&apos;s not the real stack bound and it should be within the current StackBounds. But I don&apos;t feel strongly about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677809</commentid>
    <comment_count>9</comment_count>
      <attachid>405892</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-04 17:01:26 -0700</bug_when>
    <thetext>Comment on attachment 405892
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1054
&gt;&gt;&gt; +    payload-&gt;associatedCallFrame = callFrame;
&gt;&gt; 
&gt;&gt; Since every payload must have an associatedCallFrame, can you just make this initialization part of the constructor?  That would be a more robust idiom.
&gt; 
&gt; I&apos;m not sure that&apos;s more robust because the only person that cares about that is VM for the clearing below. I kept it this way so it&apos;s more or of a HashMap style usage. The fact that it&apos;s a stack under the hood shouldn&apos;t matter. This way if for whatever reason we need to switch back to a HashMap we can do that without touching clients.

Nvm, I fixed a bug where I forgot to flip the inline stack before pushing it. Once you do that it&apos;s more annoying to have the frame not part of the CheckpointOSRExitSideState constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677828</commentid>
    <comment_count>10</comment_count>
      <attachid>405969</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-04 17:41:12 -0700</bug_when>
    <thetext>Created attachment 405969
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677849</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-04 18:32:56 -0700</bug_when>
    <thetext>Committed r265272: &lt;https://trac.webkit.org/changeset/265272&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405969.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677850</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-04 18:33:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/66552728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677856</commentid>
    <comment_count>13</comment_count>
      <attachid>405969</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-04 18:45:35 -0700</bug_when>
    <thetext>Comment on attachment 405969
Patch for landing

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

&gt; Source/JavaScriptCore/runtime/VM.cpp:1051
&gt; +void VM::pushCheckpointOSRSideState(std::unique_ptr&lt;CheckpointOSRExitSideState&gt;&amp;&amp; payload)

we should assert at the end of this function that the side stack is sorted.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405892</attachid>
            <date>2020-08-03 17:23:57 -0700</date>
            <delta_ts>2020-08-04 17:41:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215114-20200803172357.patch</filename>
            <type>text/plain</type>
            <size>19940</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NjhlYTg4NjliM2Y1NGQxYmE5MTBhOWQ2OWEyN2U2NTgxZjY3MmY1Li5iM2FmMzM3MzZjMDFjOTFh
ZmNhNzljZTBmNzkxMTNiODA4ZGI1ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAyMC0wOC0wMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBDaGVja3BvaW50U2lkZVN0YXRlIHNob3VkIHBsYXkgbmljZWx5IHdp
dGggU3RhY2tPdmVyZmxvd0V4Y2VwdGlvbiB1bndpbmRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxMTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdo
ZXJlIHdlIHRoZSBTdGFja1dhbGtlciB3b3VsZAorICAgICAgICBhdXRvbWF0aWNhbGx5IHVud2lu
ZCBpbnRvIHRoZSBmaXJzdCBmcmFtZSBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZQorICAgICAgICBw
cm92aWRlZCBmdW5jdG9yLiBXaGVuIHRoaXMgaGFwcGVuZWQgd2Ugd291bGQgZmFpbCB0byBjbGVh
ciB0aGUKKyAgICAgICAgc2lkZSBzdGF0ZSBjYXVzaW5nIGEgbWVtb3J5IGxlYWsuIFRvIGZpeCB0
aGlzIHRoZSB1bndpbmQgZnVuY3Rpb24KKyAgICAgICAgbm93IGNsZWFycyBldmVyeSBjaGVja3Bv
aW50IHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGNhbGwgZnJhbWUKKyAgICAgICAgY29udGFpbmlu
ZyBvdXIgaGFuZGxlci4gU29tZSBjYXJlIG5lZWRzIHRvIGJlIHRha2VuIHRoYXQgd2UgZG9uJ3QK
KyAgICAgICAgY2xlYXIgY2hlY2twb2ludCBzaWRlIHN0YXRlIGZvciBvdGhlciB0aHJlYWRzLCB3
aGljaCBjb3VsZCBoYXBwZW4KKyAgICAgICAgaWYgdGhlcmUgYXJlIG5vIGNoZWNrcG9pbnRzIG9u
IHRoZSBjdXJyZW50IHRocmVhZCBhbmQgYW4gQVBJCisgICAgICAgIG1pZ2dyYXRlZCB1cyBmcm9t
IGFub3RoZXIgdGhyZWFkIGJlbG93IHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gbWFrZXMgdHdvIHJlZmFjb3JpbmdzLiBUaGUgZmlyc3QgaXMgdG8gbWFrZSB0
aGUKKyAgICAgICAgY2hlY2twb2ludCBzaWRlIHN0YXRlIGludG8gYSBzdGFjaywgd2hpY2ggaXMg
aG93IHdlIHVzZWQgaXQKKyAgICAgICAgYW55d2F5LiBUaGUgc2Vjb25kIGlzIHRoYXQgQ2FsbEZy
YW1lOjpkdW1wIGFuZCBldmVyeXRoaW5nIGFzc29jaWF0ZWQKKyAgICAgICAgd2l0aCBpdCBpcyBu
b3cgbWFya2VkIGNvbnN0IHNvIHdlIGNhbiBQb2ludGVyRHVtcCBhIENhbGxGcmFtZSouCisKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxs
RnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmJ5dGVjb2RlSW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNvZGVPcmlnaW4gY29uc3QpOgorICAgICAgICAo
SlNDOjpDYWxsRnJhbWU6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmJ5
dGVjb2RlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNvZGVPcmln
aW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmR1bXApOiBEZWxldGVkLgor
ICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6OmFyZ3VtZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp1bmNoZWNrZWRB
cmd1bWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Z2V0QXJndW1lbnRVbnNh
ZmUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhbGxGcmFtZTo6bmV3VGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
Q2FsbEZyYW1lOjphcmd1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
dW5jaGVja2VkQXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6Omdl
dEFyZ3VtZW50VW5zYWZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp0aGlz
VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6Om5ld1RhcmdldCk6IERl
bGV0ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUu
aDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6dW53aW5kKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2xvd19wYXRoX2NoZWNrcG9p
bnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2xv
d19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6c2NhblNpZGVTdGF0ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZN
OjpwdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0ZSk6CisgICAgICAgIChKU0M6OlZNOjpwb3BDaGVj
a3BvaW50T1NSU2lkZVN0YXRlKToKKyAgICAgICAgKEpTQzo6Vk06OnBvcEFsbENoZWNrcG9pbnRP
U1JTaWRlU3RhdGVVbnRpbCk6CisgICAgICAgIChKU0M6OlZNOjphZGRDaGVja3BvaW50T1NSU2lk
ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OmZpbmRDaGVja3BvaW50T1NSU2lk
ZVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjAtMDctMTEg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRsLkxvY2Fs
ZSBtYXhpbWl6ZSwgbWluaW1pemUgc2hvdWxkIHJldHVybiBJbnRsLkxvY2FsZSBpbnN0ZWFkIG9m
IFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCBmOWEzZjU4MzUwMTkxOThmMjBiMzE3OGJmYTNlY2E4YzI4MjVjOGE3Li5k
MTY1ZTIyMDI5Y2ZhNGI3MmQ0NzlkYTQwOWE0Y2JiODg4ZmE2YmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA4LTAzICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgor
CisgICAgICAgIENoZWNrcG9pbnRTaWRlU3RhdGUgc2hvdWQgcGxheSBuaWNlbHkgd2l0aCBTdGFj
a092ZXJmbG93RXhjZXB0aW9uIHVud2luZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTExNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBzbyB3ZSBjYW4gaGF2ZSBzb2Z0IHN0
YWNrIGJvdW5kcy4KKworICAgICAgICAqIHd0Zi9TdGFja0JvdW5kcy5oOgorICAgICAgICAoV1RG
OjpTdGFja0JvdW5kczo6d2l0aFNvZnRPcmlnaW4gY29uc3QpOgorCiAyMDIwLTA3LTExICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI2NDI3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCmluZGV4IDY4NGFiYTQ4ZDE3ZjQxOWIzMzhhMzMzMGIxN2JlMTkzMDNmMzI1MjIuLjQ3MGQz
NDQ2MTBlYmQzMmQzY2EwMGVkZWZmN2UwNzVhYjM0YWM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhp
dCwgY29uc3QKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIHZtUHRyLT5hZGRDaGVja3BvaW50T1NSU2lkZVN0YXRlKGZyYW1lLCBXVEZN
b3ZlKHNpZGVTdGF0ZSkpOworICAgICAgICAgICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9T
UlNpZGVTdGF0ZShmcmFtZSwgV1RGTW92ZShzaWRlU3RhdGUpKTsKICAgICAgICAgICAgIH07CiAK
ICAgICAgICAgICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CkBAIC02NjAsNiArNjYw
LDcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZt
LCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgaWYgKCFjb2RlT3JpZ2lu
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAorCiAgICAgICAgICAgICBpZiAoQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29k
ZUluZGV4LmNoZWNrcG9pbnQoKSkKICAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZy
YW1lLCBieXRlY29kZUluZGV4LCAwKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggNTczZDhkZjA0Yzg3N2U2
M2VkYzk1YTUwZGFkMThkNTZmNmUwZWIwYi4uMjhlYzIyMzhhZTRlN2MxNDkwNjlhZGYxNzMxM2Q3
NzBlYWQwOWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcApAQCAtNDg4LDcgKzQ4OCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHVi
KFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0
CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1DaGVja3BvaW50
VG1wczsgKytpKQogICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSB0bXBT
Y3JhdGNoW2kgKyB0bXBPZmZzZXRdOwogCi0gICAgICAgICAgICAgICAgdm1QdHItPmFkZENoZWNr
cG9pbnRPU1JTaWRlU3RhdGUoZnJhbWUsIFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgICAgICAg
ICAgICAgdm1QdHItPnB1c2hDaGVja3BvaW50T1NSU2lkZVN0YXRlKGZyYW1lLCBXVEZNb3ZlKHNp
ZGVTdGF0ZSkpOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgY29uc3QgQ29kZU9yaWdp
biogY29kZU9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5jcHAKaW5kZXggOTRkM2M4NTA2MzBmNmRmYzVmOWE1MjFkYTU0MmM3MGI1ZGY5OTVk
YS4uZjA5M2Q4YjNjZjU0MDY3MWE5NTQ0Y2I5NzgwMjg5N2ZjN2YyZThiMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTEyNiw3ICsx
MjYsNyBAQCB1bnNpZ25lZCBDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQo
KSBjb25zdAogICAgIHJldHVybiBjYWxsU2l0ZUluZGV4KCkuYml0cygpOwogfQogCi1CeXRlY29k
ZUluZGV4IENhbGxGcmFtZTo6Ynl0ZWNvZGVJbmRleCgpCitCeXRlY29kZUluZGV4IENhbGxGcmFt
ZTo6Ynl0ZWNvZGVJbmRleCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjYWxsZWUoKS5pc1dhc20o
KSk7CiAgICAgaWYgKCFjb2RlQmxvY2soKSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBCeXRlY29kZUlu
ZGV4IENhbGxGcmFtZTo6Ynl0ZWNvZGVJbmRleCgpCiAgICAgcmV0dXJuIGNhbGxTaXRlSW5kZXgo
KS5ieXRlY29kZUluZGV4KCk7CiB9CiAKLUNvZGVPcmlnaW4gQ2FsbEZyYW1lOjpjb2RlT3JpZ2lu
KCkKK0NvZGVPcmlnaW4gQ2FsbEZyYW1lOjpjb2RlT3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAo
IWNvZGVCbG9jaygpKQogICAgICAgICByZXR1cm4gQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDAp
KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBTdHJpbmcgQ2FsbEZyYW1lOjpmcmllbmRseUZ1bmN0aW9u
TmFtZSgpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXZvaWQgQ2FsbEZyYW1lOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpCit2b2lkIENhbGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogewogICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVC
bG9jaygpKSB7CiAgICAgICAgIG91dC5wcmludChjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLCAi
IyIsIGNvZGVCbG9jay0+aGFzaEFzU3RyaW5nSWZQb3NzaWJsZSgpLCAiIFsiLCBjb2RlQmxvY2st
PmppdFR5cGUoKSwgIiAiLCBieXRlY29kZUluZGV4KCksICJdIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKaW5kZXggNTIzYjNlMzY1OGEwMmE2MTBi
YmI1NGExNDc3ODgxZTA0ZjMzOTUzNi4uOTMwMmE5OWI4MGViNjRiNTZiMmI1ZmRjMDk2MTNjNjZj
YTQ5NjQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaApAQCAtMTc1LDExICsxNzUsMTEgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICAvLyBh
bHNvIHJldHVybiAwIGlmIHRoZSBjYWxsIGZyYW1lIGhhcyBubyBub3Rpb24gb2YgYnl0ZWNvZGUg
b2Zmc2V0cyAoZm9yCiAgICAgICAgIC8vIGV4YW1wbGUgaWYgaXQncyBuYXRpdmUgY29kZSkuCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3NTQK
LSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KCk7CisgICAgICAgIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCgpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyB3
aWxsIGdldCB5b3UgYSBDb2RlT3JpZ2luLiBJdCB3aWxsIGFsd2F5cyBzdWNjZWVkLiBNYXkgcmV0
dXJuCiAgICAgICAgIC8vIENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSkgaWYgd2UncmUgaW4g
bmF0aXZlIGNvZGUuCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvZGVPcmlnaW4gY29kZU9y
aWdpbigpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb2RlT3JpZ2luIGNvZGVPcmlnaW4o
KSBjb25zdDsKIAogICAgICAgICBpbmxpbmUgUmVnaXN0ZXIqIHRvcE9mRnJhbWUoKTsKICAgICAK
QEAgLTIxMiwxMyArMjEyLDEzIEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgLy8gdXNlIHRo
aXNWYWx1ZSgpIGFuZCBzZXRUaGlzVmFsdWUoKSBiZWxvdy4KIAogICAgICAgICBKU1ZhbHVlKiBh
ZGRyZXNzT2ZBcmd1bWVudHNTdGFydCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1Zh
bHVlKj4odGhpcyArIGFyZ3VtZW50T2Zmc2V0KDApKTsgfQotICAgICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50KHNpemVfdCBhcmd1bWVudCkKKyAgICAgICAgSlNWYWx1ZSBhcmd1bWVudChzaXplX3QgYXJn
dW1lbnQpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChhcmd1bWVudCA+PSBhcmd1
bWVudENvdW50KCkpCiAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
ICAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50VW5zYWZlKGFyZ3VtZW50KTsKICAgICAgICAgfQot
ICAgICAgICBKU1ZhbHVlIHVuY2hlY2tlZEFyZ3VtZW50KHNpemVfdCBhcmd1bWVudCkKKyAgICAg
ICAgSlNWYWx1ZSB1bmNoZWNrZWRBcmd1bWVudChzaXplX3QgYXJndW1lbnQpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChhcmd1bWVudCA8IGFyZ3VtZW50Q291bnQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0QXJndW1lbnRVbnNhZmUoYXJndW1lbnQpOwpAQCAtMjI4LDcg
KzIyOCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHRoaXNbYXJndW1lbnRPZmZz
ZXQoYXJndW1lbnQpXSA9IHZhbHVlOwogICAgICAgICB9CiAKLSAgICAgICAgSlNWYWx1ZSBnZXRB
cmd1bWVudFVuc2FmZShzaXplX3QgYXJnSW5kZXgpCisgICAgICAgIEpTVmFsdWUgZ2V0QXJndW1l
bnRVbnNhZmUoc2l6ZV90IGFyZ0luZGV4KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICAv
LyBVc2VyIGJld2FyZSEgVGhpcyBtZXRob2QgZG9lcyBub3QgdmVyaWZ5IHRoYXQgdGhlcmUgaXMg
YSB2YWxpZAogICAgICAgICAgICAgLy8gYXJndW1lbnQgYXQgdGhlIHNwZWNpZmllZCBhcmdJbmRl
eC4gVGhpcyBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcKQEAgLTIzOCwxMiArMjM4LDEyIEBAIG5hbWVz
cGFjZSBKU0MgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBpbnQgdGhpc0FyZ3VtZW50
T2Zmc2V0KCkgeyByZXR1cm4gYXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApOyB9Ci0gICAg
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlKCkgeyByZXR1cm4gdGhpc1t0aGlzQXJndW1lbnRPZmZzZXQo
KV0uanNWYWx1ZSgpOyB9CisgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gdGhpc1t0aGlzQXJndW1lbnRPZmZzZXQoKV0uanNWYWx1ZSgpOyB9CiAgICAgICAgIHZvaWQg
c2V0VGhpc1ZhbHVlKEpTVmFsdWUgdmFsdWUpIHsgdGhpc1t0aGlzQXJndW1lbnRPZmZzZXQoKV0g
PSB2YWx1ZTsgfQogCiAgICAgICAgIC8vIFVuZGVyIHRoZSBjb25zdHJ1Y3RvciBpbXBsZW1lbnRl
ZCBpbiBDKyssIHRoaXNWYWx1ZSBob2xkcyB0aGUgbmV3VGFyZ2V0IGluc3RlYWQgb2YgdGhlIGF1
dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgdmFsdWUuCiAgICAgICAgIC8vIFRoZSByZXN1bHQgb2Yg
dGhpcyBmdW5jdGlvbiBpcyBvbmx5IGVmZmVjdGl2ZSB1bmRlciB0aGUgImNvbnN0cnVjdCIgY29u
dGV4dC4KLSAgICAgICAgSlNWYWx1ZSBuZXdUYXJnZXQoKSB7IHJldHVybiB0aGlzVmFsdWUoKTsg
fQorICAgICAgICBKU1ZhbHVlIG5ld1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHRoaXNWYWx1ZSgp
OyB9CiAKICAgICAgICAgSlNWYWx1ZSBhcmd1bWVudEFmdGVyQ2FwdHVyZShzaXplX3QgYXJndW1l
bnQpOwogCkBAIC0yNzksNyArMjc5LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICAgICAg
U3RhY2tWaXNpdG9yOjp2aXNpdDxhY3Rpb24sIEZ1bmN0b3I+KHRoaXMsIHZtLCBmdW5jdG9yKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpOworICAgICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIHVzZWQgaW4gTExEQiBidGpzLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBj
aGFyKiBkZXNjcmliZUZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oCmluZGV4IDg5
Mzg5ZDg4OTEzYTJkMGE1NmE3YmMxMmQ0ZDFjMGM0ZDgwZGQxZmEuLmQwM2RjNDM5MDQxZTBhMWEw
NDZhMTI2Yjk0MTI5ODZlYmNiODM5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oCkBA
IC0zNCw2ICszNCw3IEBAIHN0cnVjdCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKKyAgICBDYWxsRnJhbWUqIGFzc29j
aWF0ZWRDYWxsRnJhbWUgeyBudWxscHRyIH07CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4OwogICAgIEpTVmFsdWUgdG1wc1ttYXhOdW1DaGVja3BvaW50VG1wc10geyB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IDRhNDI3ZWI4NmE3Mjk3ZTY3ZGFjYjJkZGEwYzJmNDUwOWFjMjFjMTQuLjMzOWE5MTI3OGQz
MzExYWNhZTJhMjA4ZmY2NGM3MGFhY2M0M2NlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTI0LDExICs1MjQsNiBAQCBw
dWJsaWM6CiAKICAgICAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKG1fY29k
ZUJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgZXhjZXB0
aW9uIGhhbmRsaW5nIGluIGNoZWNrcG9pbnRzLgotI2lmIEVOQUJMRShERkdfSklUKQotICAgICAg
ICAgICAgaWYgKHJlbW92ZUNvZGVQdHJUYWcobV9yZXR1cm5QQykgPT0gTExJbnQ6OmdldENvZGVQ
dHI8Tm9QdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBv
bGluZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+
dm0oKS5maW5kQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShtX2NhbGxGcmFtZSk7Ci0jZW5kaWYKICAg
ICAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgbV9oYW5k
bGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVk
SGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgICAgICAgICAgaWYgKG1faGFuZGxlcikKQEAg
LTU1MSw3ICs1NDYsNiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzaG91bGRTdG9wVW53aW5kaW5n
KQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIAotICAgICAgICBtX3Jl
dHVyblBDID0gbV9jYWxsRnJhbWUtPnJldHVyblBDKCkudmFsdWUoKTsKICAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAgICAgfQogCkBAIC01ODgsNyArNTgyLDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNUZXJtaW5hdGlvbjsKICAgICBDb2RlQmxvY2sqJiBtX2NvZGVC
bG9jazsKICAgICBIYW5kbGVySW5mbyomIG1faGFuZGxlcjsKLSAgICBtdXRhYmxlIGNvbnN0IHZv
aWQqIG1fcmV0dXJuUEMgeyBudWxscHRyIH07CiB9OwogCiBORVZFUl9JTkxJTkUgSGFuZGxlcklu
Zm8qIEludGVycHJldGVyOjp1bndpbmQoVk0mIHZtLCBDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEV4
Y2VwdGlvbiogZXhjZXB0aW9uKQpAQCAtNjEyLDYgKzYwNSw5IEBAIE5FVkVSX0lOTElORSBIYW5k
bGVySW5mbyogSW50ZXJwcmV0ZXI6OnVud2luZChWTSYgdm0sIENhbGxGcmFtZSomIGNhbGxGcmFt
ZSwgRXhjCiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBudWxscHRyOwogICAgIFVud2luZEZ1
bmN0b3IgZnVuY3Rvcih2bSwgY2FsbEZyYW1lLCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24odm0sIGV4Y2VwdGlvbiksIGNvZGVCbG9jaywgaGFuZGxlcik7CiAgICAgU3RhY2tWaXNpdG9y
Ojp2aXNpdDxTdGFja1Zpc2l0b3I6OlRlcm1pbmF0ZUlmVG9wRW50cnlGcmFtZUlzRW1wdHk+KGNh
bGxGcmFtZSwgdm0sIGZ1bmN0b3IpOworICAgIGlmICh2bS5oYXNDaGVja3BvaW50T1NSU2lkZVN0
YXRlKCkpCisgICAgICAgIHZtLnBvcEFsbENoZWNrcG9pbnRPU1JTaWRlU3RhdGVVbnRpbChjYWxs
RnJhbWUpOworCiAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXgg
MTZhYzE4MDE4YjM0YzEyYTk1NTNlMGIzOTMxMWMwNWEzNzU1NDRmMy4uNTg5ZGJjNjc0YmM3ODcw
ZGZmNjIxODgwZDU1MzhiMjM3YzhjMDRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0yMjAyLDcgKzIyMDIsNyBAQCBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lu
bGluZWRfY2FsbChDYQogICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4gc2lkZVN0YXRlID0gdm0u
ZmluZENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoY2FsbEZyYW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IHNpZGVTdGF0ZSA9IHZtLnBvcENoZWNrcG9p
bnRPU1JTaWRlU3RhdGUoY2FsbEZyYW1lKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXggPSBzaWRlU3RhdGUtPmJ5dGVjb2RlSW5kZXg7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpKTsKIApAQCAtMjI1Myw3ICsyMjUzLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgc2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lk
ZVN0YXRlPiBzaWRlU3RhdGUgPSB2bS5maW5kQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShjYWxsRnJh
bWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4gc2lk
ZVN0YXRlID0gdm0ucG9wQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShjYWxsRnJhbWUpOwogICAgIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleDsKICAg
ICBBU1NFUlQoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggY2EwZTFjODllYzE2NmVmNWQ5YjgzYTE5NzEwNDY1ZjZkZDE5
YzE2NC4uM2Y5MjMyYjZkOGQ0ZTU0ZjkxMGZjNjJkZDIzZDRiODdhMjQxODk1NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTA0MSwyNyArMTA0MSw0MyBAQCB2b2lkIFZN
OjpnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2
ZVJvb3RzKQogdm9pZCBWTTo6c2NhblNpZGVTdGF0ZShDb25zZXJ2YXRpdmVSb290cyYgcm9vdHMp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhlYXAud29ybGRJc1N0b3BwZWQoKSk7Ci0gICAgZm9yIChj
b25zdCBhdXRvJiBpdGVyIDogbV9jaGVja3BvaW50U2lkZVN0YXRlKSB7Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKGl0ZXIudmFsdWUtPnRtcHMpIC8gc2l6ZW9mKEpTVmFsdWUpID09IG1h
eE51bUNoZWNrcG9pbnRUbXBzKTsKLSAgICAgICAgcm9vdHMuYWRkKGl0ZXIudmFsdWUtPnRtcHMs
IGl0ZXIudmFsdWUtPnRtcHMgKyBtYXhOdW1DaGVja3BvaW50VG1wcyk7CisgICAgZm9yIChjb25z
dCBhdXRvJiBzaWRlU3RhdGUgOiBtX2NoZWNrcG9pbnRTaWRlU3RhdGUpIHsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzaXplb2Yoc2lkZVN0YXRlLT50bXBzKSAvIHNpemVvZihKU1ZhbHVlKSA9PSBt
YXhOdW1DaGVja3BvaW50VG1wcyk7CisgICAgICAgIHJvb3RzLmFkZChzaWRlU3RhdGUtPnRtcHMs
IHNpZGVTdGF0ZS0+dG1wcyArIG1heE51bUNoZWNrcG9pbnRUbXBzKTsKICAgICB9CiB9CiAjZW5k
aWYKIAotdm9pZCBWTTo6YWRkQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiYmIHBheWxv
YWQpCit2b2lkIFZNOjpwdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiYmIHBheWxv
YWQpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9jaGVja3BvaW50U2lkZVN0YXRlLmFkZChjYWxsRnJhbWUsIFdU
Rk1vdmUocGF5bG9hZCkpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CisgICAgcGF5bG9hZC0+YXNzb2NpYXRlZENhbGxGcmFtZSA9IGNhbGxGcmFt
ZTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGZvciAoY29uc3QgYXV0byYgc2lkZVN0YXRlIDog
bV9jaGVja3BvaW50U2lkZVN0YXRlKQorICAgICAgICBBU1NFUlQoc2lkZVN0YXRlLT5hc3NvY2lh
dGVkQ2FsbEZyYW1lICE9IGNhbGxGcmFtZSk7CisjZW5kaWYKKyAgICBtX2NoZWNrcG9pbnRTaWRl
U3RhdGUuYXBwZW5kKFdURk1vdmUocGF5bG9hZCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q2hl
Y2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IFZNOjpmaW5kQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3N0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNp
ZGVTdGF0ZT4gVk06OnBvcENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoQ2FsbEZyYW1lKiBleHBlY3Rl
ZENhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2so
KSk7Ci0gICAgYXV0byBzaWRlU3RhdGUgPSBtX2NoZWNrcG9pbnRTaWRlU3RhdGUudGFrZShjYWxs
RnJhbWUpOworICAgIGF1dG8gc2lkZVN0YXRlID0gbV9jaGVja3BvaW50U2lkZVN0YXRlLnRha2VM
YXN0KCk7CisgICAgQVNTRVJUX1VOVVNFRChleHBlY3RlZENhbGxGcmFtZSwgc2lkZVN0YXRlLT5h
c3NvY2lhdGVkQ2FsbEZyYW1lID09IGV4cGVjdGVkQ2FsbEZyYW1lKTsKICAgICByZXR1cm4gc2lk
ZVN0YXRlOwogfQogCit2b2lkIFZNOjpwb3BBbGxDaGVja3BvaW50T1NSU2lkZVN0YXRlVW50aWwo
Q2FsbEZyYW1lKiB0YXJnZXQpCit7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOworICAgIGF1dG8gYm91bmRzID0gU3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRT
dGFja0JvdW5kcygpLndpdGhTb2Z0T3JpZ2luKHRhcmdldCk7CisgICAgQVNTRVJUKGJvdW5kcy5j
b250YWlucyh0YXJnZXQpKTsKKworICAgIC8vIFdlIGhhdmUgdG8gd29ycnkgYWJvdXQgbWlncmF0
aW5nIGZyb20gYW5vdGhlciB0aHJlYWQgc2luY2UgdGhlcmUgbWF5IGJlIG5vIGNoZWhja3BvaW50
cyBpbiBvdXIgdGhyZWFkIGJ1dCBvbmUgaW4gdGhlIG90aGVyIHRocmVhZHMuCisgICAgd2hpbGUg
KG1fY2hlY2twb2ludFNpZGVTdGF0ZS5zaXplKCkgJiYgYm91bmRzLmNvbnRhaW5zKG1fY2hlY2tw
b2ludFNpZGVTdGF0ZS5sYXN0KCktPmFzc29jaWF0ZWRDYWxsRnJhbWUpKQorICAgICAgICBtX2No
ZWNrcG9pbnRTaWRlU3RhdGUudGFrZUxhc3QoKTsKK30KKwogdm9pZCBsb2dTYW5pdGl6ZVN0YWNr
KFZNJiB2bSkKIHsKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZVNhbml0aXplU3RhY2soKSAmJiB2
bS50b3BDYWxsRnJhbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGFkZjhj
ZmVlZjUxZWJjNTU3ZmZmNjgxNGRhMDk1OTRjMDE1NmVkNmMuLjQyNGM4OTAwZTZmMzA1YmViZDFj
YWQ0MjdjNTA1Y2VmZGU1NjFhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
OTQxLDggKzk0MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJv
b3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7CiAKLSAgICB2b2lkIGFkZENoZWNrcG9pbnRPU1JTaWRl
U3RhdGUoQ2FsbEZyYW1lKiwgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0
YXRlPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+
IGZpbmRDaGVja3BvaW50T1NSU2lkZVN0YXRlKENhbGxGcmFtZSopOworICAgIHZvaWQgcHVzaENo
ZWNrcG9pbnRPU1JTaWRlU3RhdGUoQ2FsbEZyYW1lKiwgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9p
bnRPU1JFeGl0U2lkZVN0YXRlPiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9T
UkV4aXRTaWRlU3RhdGU+IHBvcENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoQ2FsbEZyYW1lKik7Cisg
ICAgdm9pZCBwb3BBbGxDaGVja3BvaW50T1NSU2lkZVN0YXRlVW50aWwoQ2FsbEZyYW1lKiB0YXJn
ZXRGcmFtZSk7CiAgICAgYm9vbCBoYXNDaGVja3BvaW50T1NSU2lkZVN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jaGVja3BvaW50U2lkZVN0YXRlLnNpemUoKTsgfQogICAgIHZvaWQgc2NhblNpZGVT
dGF0ZShDb25zZXJ2YXRpdmVSb290cyYpIGNvbnN0OwogCkBAIC0xMjA1LDcgKzEyMDYsNyBAQCBw
cml2YXRlOgogICAgIExvY2sgbV9zY3JhdGNoQnVmZmVyTG9jazsKICAgICBWZWN0b3I8U2NyYXRj
aEJ1ZmZlcio+IG1fc2NyYXRjaEJ1ZmZlcnM7CiAgICAgc2l6ZV90IG1fc2l6ZU9mTGFzdFNjcmF0
Y2hCdWZmZXIgeyAwIH07Ci0gICAgSGFzaE1hcDxDYWxsRnJhbWUqLCBzdGQ6OnVuaXF1ZV9wdHI8
Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+PiBtX2NoZWNrcG9pbnRTaWRlU3RhdGU7CisgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4sIDQ+IG1f
Y2hlY2twb2ludFNpZGVTdGF0ZTsKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fcHJpbWl0aXZl
R2lnYWNhZ2VFbmFibGVkOwogICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSBtX2Z1bmN0aW9u
SGFzRXhlY3V0ZWRDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEZsb3dQcm9maWxl
cj4gbV9jb250cm9sRmxvd1Byb2ZpbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3Rh
Y2tCb3VuZHMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgKaW5kZXggNzVjNzA0OTI4
NDdiOGUxMzRhMDFiZjBmMWRjMTg1OWMzZDMxYjNlNC4uNjVlZDExNGU3NjNlM2RhNGVjMjhjYjBi
ODNhOWU4MDcwMzIwZTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCkBAIC0xMDQsNiArMTA0LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXJ0T2ZVc2VyU3RhY2sgLSBtYXhVc2VyU3RhY2tX
aXRoUmVzZXJ2ZWRab25lOwogICAgIH0KIAorICAgIFN0YWNrQm91bmRzIHdpdGhTb2Z0T3JpZ2lu
KHZvaWQqIG9yaWdpbikgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250YWlucyhvcmln
aW4pKTsKKyAgICAgICAgcmV0dXJuIFN0YWNrQm91bmRzKG9yaWdpbiwgbV9ib3VuZCk7CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0YWNrQm91bmRzKHZvaWQqIG9yaWdpbiwgdm9pZCogZW5kKQog
ICAgICAgICA6IG1fb3JpZ2luKG9yaWdpbikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTI5MGQ4YjE3MWFhOTdhY2Y0NmM2OTUyNDM1ZThi
MGNmMmNiMGU5NS4uMjM3ZmQ0ZWM1YjI1YTQ4YThlNWE3ZTAzMjM4NWFmZjFiNTA5OTNhYyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wOC0wMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBDaGVja3BvaW50U2lkZVN0YXRlIHNob3VkIHBsYXkgbmljZWx5IHdp
dGggU3RhY2tPdmVyZmxvd0V4Y2VwdGlvbiB1bndpbmRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxMTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9zdGFjay1vdmVyZmxvdy1pbnRv
LWZyYW1lLXdpdGgtcGVuZGluZy1jaGVja3BvaW50LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvby5j
YXRjaC5hc3luYyBiYXIpOgorICAgICAgICAoZm9vLmNhdGNoKToKKyAgICAgICAgKGZvbyk6CisK
IDIwMjAtMDctMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbnRsLkxvY2FsZSBtYXhpbWl6ZSwgbWluaW1pemUgc2hvdWxkIHJldHVybiBJbnRsLkxvY2Fs
ZSBpbnN0ZWFkIG9mIFN0cmluZwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3Zl
cmZsb3ctaW50by1mcmFtZS13aXRoLXBlbmRpbmctY2hlY2twb2ludC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3N0YWNrLW92ZXJmbG93LWludG8tZnJhbWUtd2l0aC1wZW5kaW5nLWNoZWNrcG9pbnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzM0ZTcyYjFjYTVmYmMxNzU3YjVlNmExMzFlMTk4NjkwMTMzYWEyOQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LWludG8tZnJhbWUt
d2l0aC1wZW5kaW5nLWNoZWNrcG9pbnQuanMKQEAgLTAsMCArMSwxOSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLWppdFBvbGljeVNjYWxlPTAiKQorCitmdW5jdGlvbiBmb28oKSB7CisgICd1c2Ug
c3RyaWN0JworICB0cnkgeworICAgIGZvbygpOworICB9IGNhdGNoKGUpIHsKKyAgICAoe19fcHJv
dG9fXzowfSk7CisgICAgYXN5bmMgZnVuY3Rpb24gYmFyKGEwKSB7CisgICAgICBiYXIoYTAsIC4u
LlswXSk7CisgICAgfQorICAgIGZvciAobGV0IGk9MDsgaTwxMDAwOyBpKyspIHsKKyAgICAgIGJh
cigpOworICAgIH0KKyAgICBiYXIoMCwgIDApOworICB9Cit9CisKK2ZvbygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405969</attachid>
            <date>2020-08-04 17:41:12 -0700</date>
            <delta_ts>2020-08-04 18:32:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-215114-20200804174111.patch</filename>
            <type>text/plain</type>
            <size>22363</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NjhlYTg4NjliM2Y1NGQxYmE5MTBhOWQ2OWEyN2U2NTgxZjY3MmY1Li5mYmM2ZTdmYjU5ZmE4MWIx
M2QyNDM2ZTJhOTlmYzBiYTRmMDAyZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0wOC0wNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBDaGVja3BvaW50U2lkZVN0YXRlIHNob3VkIHBsYXkgbmljZWx5IHdp
dGggU3RhY2tPdmVyZmxvd0V4Y2VwdGlvbiB1bndpbmRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxMTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdoZXJl
IHdlIHRoZSBTdGFja1Zpc2l0b3Igd291bGQKKyAgICAgICAgYXV0b21hdGljYWxseSB1bndpbmQg
aW50byB0aGUgZmlyc3QgZnJhbWUgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUKKyAgICAgICAgcHJv
dmlkZWQgZnVuY3Rvci4gQXMgYSBub3RlLCB3ZSBkbyB0aGlzIGJlY2F1c2UgdGhlIGZpcnN0IGZy
YW1lIGlzCisgICAgICAgIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGUgdGltZSB3ZSBjaGVj
ayBmb3Igc3RhY2sKKyAgICAgICAgb3ZlcmZsb3cuIFdoZW4gdGhpcyBoYXBwZW5lZCB3ZSB3b3Vs
ZCBmYWlsIHRvIGNsZWFyIHRoZSBzaWRlIHN0YXRlCisgICAgICAgIGNhdXNpbmcgYSBtZW1vcnkg
bGVhay4gVG8gZml4IHRoaXMgdGhlIHVud2luZCBmdW5jdGlvbiBub3cgY2xlYXJzCisgICAgICAg
IGV2ZXJ5IGNoZWNrcG9pbnQgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgY2FsbCBmcmFtZSBjb250
YWluaW5nIG91cgorICAgICAgICBoYW5kbGVyLiBTb21lIGNhcmUgbmVlZHMgdG8gYmUgdGFrZW4g
dGhhdCB3ZSBkb24ndCBjbGVhcgorICAgICAgICBjaGVja3BvaW50IHNpZGUgc3RhdGUgZm9yIG90
aGVyIHRocmVhZHMsIHdoaWNoIGNvdWxkIGhhcHBlbiBpZgorICAgICAgICB0aGVyZSBhcmUgbm8g
Y2hlY2twb2ludHMgb24gdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBhbiBBUEkKKyAgICAgICAgbWln
Z3JhdGVkIHVzIGZyb20gYW5vdGhlciB0aHJlYWQgYmVsb3cgdGhlIGN1cnJlbnQgdGhyZWFkLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyB0d28gcmVmYWNvcmluZ3MuIFRoZSBmaXJz
dCBpcyB0byBtYWtlIHRoZQorICAgICAgICBjaGVja3BvaW50IHNpZGUgc3RhdGUgaW50byBhIHN0
YWNrLCB3aGljaCBpcyBob3cgd2UgdXNlZCBpdAorICAgICAgICBhbnl3YXkuIFRoZSBzZWNvbmQg
aXMgdGhhdCBDYWxsRnJhbWU6OmR1bXAgYW5kIGV2ZXJ5dGhpbmcgYXNzb2NpYXRlZAorICAgICAg
ICB3aXRoIGl0IGlzIG5vdyBtYXJrZWQgY29uc3Qgc28gd2UgY2FuIFBvaW50ZXJEdW1wIGEgQ2Fs
bEZyYW1lKi4KKworICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Ynl0ZWNv
ZGVJbmRleCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Y29kZU9yaWdpbiBjb25z
dCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6Ynl0ZWNvZGVJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxG
cmFtZTo6Y29kZU9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6ZHVt
cCk6IERlbGV0ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZTo6YXJndW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJh
bWU6OnVuY2hlY2tlZEFyZ3VtZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpn
ZXRBcmd1bWVudFVuc2FmZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dGhpc1Zh
bHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpuZXdUYXJnZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmFyZ3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Q2FsbEZyYW1lOjp1bmNoZWNrZWRBcmd1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6Z2V0QXJndW1lbnRVbnNhZmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWU6OnRoaXNWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
bmV3VGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnRlcnByZXRlci9DaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oOgorICAgICAgICAoSlNDOjpDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0
ZTo6Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUpOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmQpOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2Fs
bCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpzY2FuU2lkZVN0
YXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Vk06OnB1c2hDaGVja3BvaW50T1NSU2lkZVN0YXRl
KToKKyAgICAgICAgKEpTQzo6Vk06OnBvcENoZWNrcG9pbnRPU1JTaWRlU3RhdGUpOgorICAgICAg
ICAoSlNDOjpWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGlsKToKKyAgICAgICAg
KEpTQzo6Vk06OmFkZENoZWNrcG9pbnRPU1JTaWRlU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpWTTo6ZmluZENoZWNrcG9pbnRPU1JTaWRlU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMC0wNy0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIEludGwuTG9jYWxlIG1heGltaXplLCBtaW5pbWl6ZSBzaG91bGQg
cmV0dXJuIEludGwuTG9jYWxlIGluc3RlYWQgb2YgU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5YTNmNTgzNTAxOTE5
OGYyMGIzMTc4YmZhM2VjYThjMjgyNWM4YTcuLjMwODEwODE3M2FjNTE4MDc0NjhmNjZkNWExNDVl
MDlmMjkwYzM2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDQgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2twb2ludFNpZGVTdGF0
ZSBzaG91ZCBwbGF5IG5pY2VseSB3aXRoIFN0YWNrT3ZlcmZsb3dFeGNlcHRpb24gdW53aW5kaW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MTE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgQWRkIGEgaGVs
cGVyIHNvIHdlIGNhbiBoYXZlIHNvZnQgc3RhY2sgYm91bmRzLgorCisgICAgICAgICogd3RmL1N0
YWNrQm91bmRzLmg6CisgICAgICAgIChXVEY6OlN0YWNrQm91bmRzOjp3aXRoU29mdE9yaWdpbiBj
b25zdCk6CisKIDIwMjAtMDctMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0MjcwLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggNjg0YWJhNDhkMTdmNDE5YjMzOGEz
MzMwYjE3YmUxOTMwM2YzMjUyMi4uZWQ4ZmVhNGYyZjVkMjA4NjFmMWQyMzBiNDIzMDk4YTBlODZk
OWM4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC00Miw2
ICs0Miw4IEBACiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvYmVD
b250ZXh0LmgiCiAKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKwogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCiBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVT
b3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVBy
b2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25l
ZCByZWNvdmVyeUluZGV4KQpAQCAtNTkzLDggKzU5NSwxNiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNv
bnN0CiAgICAgICAgIFZNKiB2bVB0ciA9ICZ2bTsKICAgICAgICAgYXV0byogdG1wU2NyYXRjaCA9
IHNjcmF0Y2ggKyBvcGVyYW5kcy50bXBJbmRleCgwKTsKICAgICAgICAgaml0LnByb2JlKFs9LCB2
YWx1ZXMgPSBXVEZNb3ZlKHZhbHVlcyldIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0
ZT4+IHNpZGVTdGF0ZXM7CisgICAgICAgICAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgICAgICAgICBhdXRv
IHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRlcy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAg
ICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShXVEZNb3ZlKHNpZGVTdGF0
ZXNbaV0pKTsKKyAgICAgICAgICAgIH0pOworCisKICAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0
YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3Qg
dG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRP
U1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9T
UkV4aXRTaWRlU3RhdGU+KCk7CisgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKIAogICAgICAgICAgICAgICAgIHNpZGVTdGF0
ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsraSkgewpAQCAtNjQzLDcgKzY1Myw3IEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29u
c3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHZtUHRyLT5hZGRDaGVja3BvaW50T1NSU2lkZVN0
YXRlKGZyYW1lLCBXVEZNb3ZlKHNpZGVTdGF0ZSkpOworICAgICAgICAgICAgICAgIHNpZGVTdGF0
ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDU3M2Q4ZGYwNGM4NzdlNjNl
ZGM5NWE1MGRhZDE4ZDU2ZjZlMGViMGIuLmVmNzQwODJmODhkNTNiYTBiZDY5YjA4NjNlNWMwYzVj
YzRkYTJlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKQEAgLTQzLDYgKzQzLDggQEAKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMu
aCIKICNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgor
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBERkc7
CkBAIC00ODEsMTQgKzQ4MywyMSBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVu
c2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICBK
U1ZhbHVlKiB0bXBTY3JhdGNoID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oc2NyYXRjaCAr
IGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKSk7CiAgICAgICAgIFZNKiB2
bVB0ciA9ICZ2bTsKICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4
aXRTaWRlU3RhdGU+PiBzaWRlU3RhdGVzOworICAgICAgICAgICAgc2lkZVN0YXRlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGV4aXQubV9jb2RlT3JpZ2luLmlubGluZURlcHRoKCkpOworICAgICAg
ICAgICAgYXV0byBzaWRlU3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IHNpZGVTdGF0ZXMuc2l6ZSgpOyBpLS07KQorICAg
ICAgICAgICAgICAgICAgICB2bVB0ci0+cHVzaENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoV1RGTW92
ZShzaWRlU3RhdGVzW2ldKSk7CisgICAgICAgICAgICB9KTsKKwogICAgICAgICAgICAgYXV0byBh
ZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXggaW5kZXgs
IHNpemVfdCB0bXBPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2hl
Y2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IHNpZGVTdGF0ZSA9IFdURjo6bWFrZVVuaXF1ZTxDaGVj
a3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4oKTsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IHNpZGVTdGF0ZSA9IFdURjo6bWFrZVVuaXF1
ZTxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4oZnJhbWUpOwogCiAgICAgICAgICAgICAgICAg
c2lkZVN0YXRlLT5ieXRlY29kZUluZGV4ID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtYXhOdW1DaGVja3BvaW50VG1wczsgKytpKQogICAgICAgICAgICAg
ICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSB0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdOwog
Ci0gICAgICAgICAgICAgICAgdm1QdHItPmFkZENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoZnJhbWUs
IFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgICAgICAgICAgICAgc2lkZVN0YXRlcy5hcHBlbmQo
V1RGTW92ZShzaWRlU3RhdGUpKTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGNvbnN0
IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCmluZGV4IDk0ZDNjODUwNjMwZjZkZmM1ZjlhNTIxZGE1NDJj
NzBiNWRmOTk1ZGEuLmYwOTNkOGIzY2Y1NDA2NzFhOTU0NGNiOTc4MDI4OTdmYzdmMmU4YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBA
IC0xMjYsNyArMTI2LDcgQEAgdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBc0J5dGVj
b2RlT2Zmc2V0KCkgY29uc3QKICAgICByZXR1cm4gY2FsbFNpdGVJbmRleCgpLmJpdHMoKTsKIH0K
IAotQnl0ZWNvZGVJbmRleCBDYWxsRnJhbWU6OmJ5dGVjb2RlSW5kZXgoKQorQnl0ZWNvZGVJbmRl
eCBDYWxsRnJhbWU6OmJ5dGVjb2RlSW5kZXgoKSBjb25zdAogewogICAgIEFTU0VSVCghY2FsbGVl
KCkuaXNXYXNtKCkpOwogICAgIGlmICghY29kZUJsb2NrKCkpCkBAIC0xNDYsNyArMTQ2LDcgQEAg
Qnl0ZWNvZGVJbmRleCBDYWxsRnJhbWU6OmJ5dGVjb2RlSW5kZXgoKQogICAgIHJldHVybiBjYWxs
U2l0ZUluZGV4KCkuYnl0ZWNvZGVJbmRleCgpOwogfQogCi1Db2RlT3JpZ2luIENhbGxGcmFtZTo6
Y29kZU9yaWdpbigpCitDb2RlT3JpZ2luIENhbGxGcmFtZTo6Y29kZU9yaWdpbigpIGNvbnN0CiB7
CiAgICAgaWYgKCFjb2RlQmxvY2soKSkKICAgICAgICAgcmV0dXJuIENvZGVPcmlnaW4oQnl0ZWNv
ZGVJbmRleCgwKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgU3RyaW5nIENhbGxGcmFtZTo6ZnJpZW5k
bHlGdW5jdGlvbk5hbWUoKQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi12b2lkIENh
bGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQordm9pZCBDYWxsRnJhbWU6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB0
aGlzLT5jb2RlQmxvY2soKSkgewogICAgICAgICBvdXQucHJpbnQoY29kZUJsb2NrLT5pbmZlcnJl
ZE5hbWUoKSwgIiMiLCBjb2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSwgIiBbIiwg
Y29kZUJsb2NrLT5qaXRUeXBlKCksICIgIiwgYnl0ZWNvZGVJbmRleCgpLCAiXSIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDUyM2IzZTM2
NThhMDJhNjEwYmJiNTRhMTQ3Nzg4MWUwNGYzMzk1MzYuLjkzMDJhOTliODBlYjY0YjU2YjJiNWZk
YzA5NjEzYzY2Y2E0OTY0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgKQEAgLTE3NSwxMSArMTc1LDExIEBAIG5hbWVzcGFjZSBKU0MgIHsKICAg
ICAgICAgLy8gYWxzbyByZXR1cm4gMCBpZiB0aGUgY2FsbCBmcmFtZSBoYXMgbm8gbm90aW9uIG9m
IGJ5dGVjb2RlIG9mZnNldHMgKGZvcgogICAgICAgICAvLyBleGFtcGxlIGlmIGl0J3MgbmF0aXZl
IGNvZGUpLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxNzU0Ci0gICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCgpOworICAgICAg
ICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgd2lsbCBnZXQgeW91IGEgQ29kZU9yaWdpbi4gSXQgd2lsbCBhbHdheXMgc3VjY2Vl
ZC4gTWF5IHJldHVybgogICAgICAgICAvLyBDb2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkpIGlm
IHdlJ3JlIGluIG5hdGl2ZSBjb2RlLgotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4oKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luKCkgY29uc3Q7CiAKICAgICAgICAgaW5saW5lIFJlZ2lzdGVyKiB0b3BPZkZyYW1l
KCk7CiAgICAgCkBAIC0yMTIsMTMgKzIxMiwxMyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAg
IC8vIHVzZSB0aGlzVmFsdWUoKSBhbmQgc2V0VGhpc1ZhbHVlKCkgYmVsb3cuCiAKICAgICAgICAg
SlNWYWx1ZSogYWRkcmVzc09mQXJndW1lbnRzU3RhcnQoKSBjb25zdCB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8SlNWYWx1ZSo+KHRoaXMgKyBhcmd1bWVudE9mZnNldCgwKSk7IH0KLSAgICAgICAgSlNW
YWx1ZSBhcmd1bWVudChzaXplX3QgYXJndW1lbnQpCisgICAgICAgIEpTVmFsdWUgYXJndW1lbnQo
c2l6ZV90IGFyZ3VtZW50KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoYXJndW1l
bnQgPj0gYXJndW1lbnRDb3VudCgpKQogICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAgICAgICAgIHJldHVybiBnZXRBcmd1bWVudFVuc2FmZShhcmd1bWVudCk7CiAg
ICAgICAgIH0KLSAgICAgICAgSlNWYWx1ZSB1bmNoZWNrZWRBcmd1bWVudChzaXplX3QgYXJndW1l
bnQpCisgICAgICAgIEpTVmFsdWUgdW5jaGVja2VkQXJndW1lbnQoc2l6ZV90IGFyZ3VtZW50KSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBhcmd1bWVudENv
dW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50VW5zYWZlKGFyZ3VtZW50KTsK
QEAgLTIyOCw3ICsyMjgsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgICAgICB0aGlzW2Fy
Z3VtZW50T2Zmc2V0KGFyZ3VtZW50KV0gPSB2YWx1ZTsKICAgICAgICAgfQogCi0gICAgICAgIEpT
VmFsdWUgZ2V0QXJndW1lbnRVbnNhZmUoc2l6ZV90IGFyZ0luZGV4KQorICAgICAgICBKU1ZhbHVl
IGdldEFyZ3VtZW50VW5zYWZlKHNpemVfdCBhcmdJbmRleCkgY29uc3QKICAgICAgICAgewogICAg
ICAgICAgICAgLy8gVXNlciBiZXdhcmUhIFRoaXMgbWV0aG9kIGRvZXMgbm90IHZlcmlmeSB0aGF0
IHRoZXJlIGlzIGEgdmFsaWQKICAgICAgICAgICAgIC8vIGFyZ3VtZW50IGF0IHRoZSBzcGVjaWZp
ZWQgYXJnSW5kZXguIFRoaXMgaXMgdXNlZCBmb3IgZGVidWdnaW5nCkBAIC0yMzgsMTIgKzIzOCwx
MiBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgaW50IHRo
aXNBcmd1bWVudE9mZnNldCgpIHsgcmV0dXJuIGFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygw
KTsgfQotICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSgpIHsgcmV0dXJuIHRoaXNbdGhpc0FyZ3Vt
ZW50T2Zmc2V0KCldLmpzVmFsdWUoKTsgfQorICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIHRoaXNbdGhpc0FyZ3VtZW50T2Zmc2V0KCldLmpzVmFsdWUoKTsgfQogICAg
ICAgICB2b2lkIHNldFRoaXNWYWx1ZShKU1ZhbHVlIHZhbHVlKSB7IHRoaXNbdGhpc0FyZ3VtZW50
T2Zmc2V0KCldID0gdmFsdWU7IH0KIAogICAgICAgICAvLyBVbmRlciB0aGUgY29uc3RydWN0b3Ig
aW1wbGVtZW50ZWQgaW4gQysrLCB0aGlzVmFsdWUgaG9sZHMgdGhlIG5ld1RhcmdldCBpbnN0ZWFk
IG9mIHRoZSBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdGVkIHZhbHVlLgogICAgICAgICAvLyBUaGUg
cmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgb25seSBlZmZlY3RpdmUgdW5kZXIgdGhlICJjb25z
dHJ1Y3QiIGNvbnRleHQuCi0gICAgICAgIEpTVmFsdWUgbmV3VGFyZ2V0KCkgeyByZXR1cm4gdGhp
c1ZhbHVlKCk7IH0KKyAgICAgICAgSlNWYWx1ZSBuZXdUYXJnZXQoKSBjb25zdCB7IHJldHVybiB0
aGlzVmFsdWUoKTsgfQogCiAgICAgICAgIEpTVmFsdWUgYXJndW1lbnRBZnRlckNhcHR1cmUoc2l6
ZV90IGFyZ3VtZW50KTsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAg
ICAgICAgICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQ8YWN0aW9uLCBGdW5jdG9yPih0aGlzLCB2bSwg
ZnVuY3Rvcik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKTsK
KyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhp
cyBmdW5jdGlvbiBpcyB1c2VkIGluIExMREIgYnRqcy4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgY29uc3QgY2hhciogZGVzY3JpYmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUu
aAppbmRleCA4OTM4OWQ4ODkxM2EyZDBhNTZhN2JjMTJkNGQxYzBjNGQ4MGRkMWZhLi4yYjExNzVm
OTUzOTQxOTMzYzY5ZTQ0ODIzNTZiNjRhMGJhYzg2ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGUuaApAQCAtMzMsNyArMzMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgQ2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgorICAgIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlKENhbGxGcmFtZSogZnJhbWUpCisg
ICAgICAgIDogYXNzb2NpYXRlZENhbGxGcmFtZShmcmFtZSkKKyAgICB7IH0KIAorICAgIENhbGxG
cmFtZSogYXNzb2NpYXRlZENhbGxGcmFtZTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXg7CiAgICAgSlNWYWx1ZSB0bXBzW21heE51bUNoZWNrcG9pbnRUbXBzXSB7IH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5k
ZXggNGE0MjdlYjg2YTcyOTdlNjdkYWNiMmRkYTBjMmY0NTA5YWMyMWMxNC4uMzM5YTkxMjc4ZDMz
MTFhY2FlMmEyMDhmZjY0YzcwYWFjYzQzY2U3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MjQsMTEgKzUyNCw2IEBAIHB1
YmxpYzoKIAogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAgICBpZiAobV9jb2Rl
QmxvY2spIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBleGNlcHRp
b24gaGFuZGxpbmcgaW4gY2hlY2twb2ludHMuCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAg
ICAgICBpZiAocmVtb3ZlQ29kZVB0clRhZyhtX3JldHVyblBDKSA9PSBMTEludDo6Z2V0Q29kZVB0
cjxOb1B0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9s
aW5lKS5leGVjdXRhYmxlQWRkcmVzcygpKQotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLT52
bSgpLmZpbmRDaGVja3BvaW50T1NSU2lkZVN0YXRlKG1fY2FsbEZyYW1lKTsKLSNlbmRpZgogICAg
ICAgICAgICAgaWYgKCFtX2lzVGVybWluYXRpb24pIHsKICAgICAgICAgICAgICAgICBtX2hhbmRs
ZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgICAgICAgICBpZiAobV9oYW5kbGVyKQpAQCAt
NTUxLDcgKzU0Niw2IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNob3VsZFN0b3BVbndpbmRpbmcp
CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCi0gICAgICAgIG1fcmV0
dXJuUEMgPSBtX2NhbGxGcmFtZS0+cmV0dXJuUEMoKS52YWx1ZSgpOwogICAgICAgICByZXR1cm4g
U3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICB9CiAKQEAgLTU4OCw3ICs1ODIsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW9uOwogICAgIENvZGVCbG9jayomIG1fY29kZUJs
b2NrOwogICAgIEhhbmRsZXJJbmZvKiYgbV9oYW5kbGVyOwotICAgIG11dGFibGUgY29uc3Qgdm9p
ZCogbV9yZXR1cm5QQyB7IG51bGxwdHIgfTsKIH07CiAKIE5FVkVSX0lOTElORSBIYW5kbGVySW5m
byogSW50ZXJwcmV0ZXI6OnVud2luZChWTSYgdm0sIENhbGxGcmFtZSomIGNhbGxGcmFtZSwgRXhj
ZXB0aW9uKiBleGNlcHRpb24pCkBAIC02MTIsNiArNjA1LDkgQEAgTkVWRVJfSU5MSU5FIEhhbmRs
ZXJJbmZvKiBJbnRlcnByZXRlcjo6dW53aW5kKFZNJiB2bSwgQ2FsbEZyYW1lKiYgY2FsbEZyYW1l
LCBFeGMKICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IG51bGxwdHI7CiAgICAgVW53aW5kRnVu
Y3RvciBmdW5jdG9yKHZtLCBjYWxsRnJhbWUsIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bih2bSwgZXhjZXB0aW9uKSwgY29kZUJsb2NrLCBoYW5kbGVyKTsKICAgICBTdGFja1Zpc2l0b3I6
OnZpc2l0PFN0YWNrVmlzaXRvcjo6VGVybWluYXRlSWZUb3BFbnRyeUZyYW1lSXNFbXB0eT4oY2Fs
bEZyYW1lLCB2bSwgZnVuY3Rvcik7CisgICAgaWYgKHZtLmhhc0NoZWNrcG9pbnRPU1JTaWRlU3Rh
dGUoKSkKKyAgICAgICAgdm0ucG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGlsKGNhbGxG
cmFtZSk7CisKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAx
NmFjMTgwMThiMzRjMTJhOTU1M2UwYjM5MzExYzA1YTM3NTU0NGYzLi41ODlkYmM2NzRiYzc4NzBk
ZmY2MjE4ODBkNTUzOGIyMzdjOGMwNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTIyMDIsNyArMjIwMiw3IEBAIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5s
aW5lZF9jYWxsKENhCiAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSB2bS5m
aW5kQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShjYWxsRnJhbWUpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4gc2lkZVN0YXRlID0gdm0ucG9wQ2hlY2twb2lu
dE9TUlNpZGVTdGF0ZShjYWxsRnJhbWUpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCA9IHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleDsKICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpOwogCkBAIC0yMjUzLDcgKzIyNTMsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBzbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdChDYWxsRnJhbWUqIGNhbGxG
cmFtZQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGU+IHNpZGVTdGF0ZSA9IHZtLmZpbmRDaGVja3BvaW50T1NSU2lkZVN0YXRlKGNhbGxGcmFt
ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRl
U3RhdGUgPSB2bS5wb3BDaGVja3BvaW50T1NSU2lkZVN0YXRlKGNhbGxGcmFtZSk7CiAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gc2lkZVN0YXRlLT5ieXRlY29kZUluZGV4OwogICAg
IEFTU0VSVChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCBjYTBlMWM4OWVjMTY2ZWY1ZDliODNhMTk3MTA0NjVmNmRkMTlj
MTY0Li41Y2MwN2U3YmZjYzE2MDA2ZWU0MjY5YzM0MWUwYTQ5MmNiNGNjZTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMDQxLDI3ICsxMDQxLDQzIEBAIHZvaWQgVk06
OmdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZl
Um9vdHMpCiB2b2lkIFZNOjpzY2FuU2lkZVN0YXRlKENvbnNlcnZhdGl2ZVJvb3RzJiByb290cykg
Y29uc3QKIHsKICAgICBBU1NFUlQoaGVhcC53b3JsZElzU3RvcHBlZCgpKTsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIGl0ZXIgOiBtX2NoZWNrcG9pbnRTaWRlU3RhdGUpIHsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoaXRlci52YWx1ZS0+dG1wcykgLyBzaXplb2YoSlNWYWx1ZSkgPT0gbWF4
TnVtQ2hlY2twb2ludFRtcHMpOwotICAgICAgICByb290cy5hZGQoaXRlci52YWx1ZS0+dG1wcywg
aXRlci52YWx1ZS0+dG1wcyArIG1heE51bUNoZWNrcG9pbnRUbXBzKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHNpZGVTdGF0ZSA6IG1fY2hlY2twb2ludFNpZGVTdGF0ZSkgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihzaWRlU3RhdGUtPnRtcHMpIC8gc2l6ZW9mKEpTVmFsdWUpID09IG1h
eE51bUNoZWNrcG9pbnRUbXBzKTsKKyAgICAgICAgcm9vdHMuYWRkKHNpZGVTdGF0ZS0+dG1wcywg
c2lkZVN0YXRlLT50bXBzICsgbWF4TnVtQ2hlY2twb2ludFRtcHMpOwogICAgIH0KIH0KICNlbmRp
ZgogCi12b2lkIFZNOjphZGRDaGVja3BvaW50T1NSU2lkZVN0YXRlKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+JiYgcGF5bG9h
ZCkKK3ZvaWQgVk06OnB1c2hDaGVja3BvaW50T1NSU2lkZVN0YXRlKHN0ZDo6dW5pcXVlX3B0cjxD
aGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4mJiBwYXlsb2FkKQogewogICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY2hl
Y2twb2ludFNpZGVTdGF0ZS5hZGQoY2FsbEZyYW1lLCBXVEZNb3ZlKHBheWxvYWQpKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIEFTU0VS
VChwYXlsb2FkLT5hc3NvY2lhdGVkQ2FsbEZyYW1lKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
IGZvciAoY29uc3QgYXV0byYgc2lkZVN0YXRlIDogbV9jaGVja3BvaW50U2lkZVN0YXRlKQorICAg
ICAgICBBU1NFUlQoc2lkZVN0YXRlLT5hc3NvY2lhdGVkQ2FsbEZyYW1lICE9IHBheWxvYWQtPmFz
c29jaWF0ZWRDYWxsRnJhbWUpOworI2VuZGlmCisgICAgbV9jaGVja3BvaW50U2lkZVN0YXRlLmFw
cGVuZChXVEZNb3ZlKHBheWxvYWQpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRP
U1JFeGl0U2lkZVN0YXRlPiBWTTo6ZmluZENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+
IFZNOjpwb3BDaGVja3BvaW50T1NSU2lkZVN0YXRlKENhbGxGcmFtZSogZXhwZWN0ZWRDYWxsRnJh
bWUpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
IGF1dG8gc2lkZVN0YXRlID0gbV9jaGVja3BvaW50U2lkZVN0YXRlLnRha2UoY2FsbEZyYW1lKTsK
KyAgICBhdXRvIHNpZGVTdGF0ZSA9IG1fY2hlY2twb2ludFNpZGVTdGF0ZS50YWtlTGFzdCgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHNpZGVTdGF0ZS0+YXNzb2NpYXRlZENhbGxGcmFtZSA9PSBleHBl
Y3RlZENhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHNpZGVTdGF0ZTsKIH0KIAordm9pZCBWTTo6cG9w
QWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudGlsKENhbGxGcmFtZSogdGFyZ2V0KQoreworICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBhdXRvIGJvdW5k
cyA9IFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKS53aXRoU29mdE9yaWdp
bih0YXJnZXQpOworICAgIEFTU0VSVChib3VuZHMuY29udGFpbnModGFyZ2V0KSk7CisKKyAgICAv
LyBXZSBoYXZlIHRvIHdvcnJ5IGFib3V0IG1pZ3JhdGluZyBmcm9tIGFub3RoZXIgdGhyZWFkIHNp
bmNlIHRoZXJlIG1heSBiZSBubyBjaGVja3BvaW50cyBpbiBvdXIgdGhyZWFkIGJ1dCBvbmUgaW4g
dGhlIG90aGVyIHRocmVhZHMuCisgICAgd2hpbGUgKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5zaXpl
KCkgJiYgYm91bmRzLmNvbnRhaW5zKG1fY2hlY2twb2ludFNpZGVTdGF0ZS5sYXN0KCktPmFzc29j
aWF0ZWRDYWxsRnJhbWUpKQorICAgICAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUudGFrZUxhc3Qo
KTsKK30KKwogdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJiB2bSkKIHsKICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZVNhbml0aXplU3RhY2soKSAmJiB2bS50b3BDYWxsRnJhbWUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IGFkZjhjZmVlZjUxZWJjNTU3ZmZmNjgxNGRhMDk1OTRj
MDE1NmVkNmMuLmI0MTc0OThiMTliNDM4NDE2YTIxYTU1YzYxZjgyMzM3MDI0NDFkNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtOTQxLDggKzk0MSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7CiAK
LSAgICB2b2lkIGFkZENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoQ2FsbEZyYW1lKiwgc3RkOjp1bmlx
dWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IGZpbmRDaGVja3BvaW50T1NSU2lkZVN0YXRl
KENhbGxGcmFtZSopOworICAgIHZvaWQgcHVzaENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoc3RkOjp1
bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiYmKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IHBvcENoZWNrcG9pbnRPU1JTaWRlU3Rh
dGUoQ2FsbEZyYW1lKiBleHBlY3RlZEZyYW1lKTsKKyAgICB2b2lkIHBvcEFsbENoZWNrcG9pbnRP
U1JTaWRlU3RhdGVVbnRpbChDYWxsRnJhbWUqIHRhcmdldEZyYW1lKTsKICAgICBib29sIGhhc0No
ZWNrcG9pbnRPU1JTaWRlU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrcG9pbnRTaWRlU3Rh
dGUuc2l6ZSgpOyB9CiAgICAgdm9pZCBzY2FuU2lkZVN0YXRlKENvbnNlcnZhdGl2ZVJvb3RzJikg
Y29uc3Q7CiAKQEAgLTEyMDUsNyArMTIwNiw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX3NjcmF0
Y2hCdWZmZXJMb2NrOwogICAgIFZlY3RvcjxTY3JhdGNoQnVmZmVyKj4gbV9zY3JhdGNoQnVmZmVy
czsKICAgICBzaXplX3QgbV9zaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlciB7IDAgfTsKLSAgICBIYXNo
TWFwPENhbGxGcmFtZSosIHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0
ZT4+IG1fY2hlY2twb2ludFNpZGVTdGF0ZTsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENo
ZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgND4gbV9jaGVja3BvaW50U2lkZVN0YXRlOwogICAg
IElubGluZVdhdGNocG9pbnRTZXQgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQ7CiAgICAgRnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlIG1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250cm9sRmxvd1Byb2ZpbGVyPiBtX2NvbnRyb2xGbG93UHJvZmlsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oIGIvU291cmNlL1dURi93
dGYvU3RhY2tCb3VuZHMuaAppbmRleCA3NWM3MDQ5Mjg0N2I4ZTEzNGEwMWJmMGYxZGMxODU5YzNk
MzFiM2U0Li42NWVkMTE0ZTc2M2UzZGE0ZWMyOGNiMGI4M2E5ZTgwNzAzMjBlMWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0
YWNrQm91bmRzLmgKQEAgLTEwNCw2ICsxMDQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
c3RhcnRPZlVzZXJTdGFjayAtIG1heFVzZXJTdGFja1dpdGhSZXNlcnZlZFpvbmU7CiAgICAgfQog
CisgICAgU3RhY2tCb3VuZHMgd2l0aFNvZnRPcmlnaW4odm9pZCogb3JpZ2luKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5zKG9yaWdpbikpOworICAgICAgICByZXR1cm4gU3Rh
Y2tCb3VuZHMob3JpZ2luLCBtX2JvdW5kKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgU3RhY2tC
b3VuZHModm9pZCogb3JpZ2luLCB2b2lkKiBlbmQpCiAgICAgICAgIDogbV9vcmlnaW4ob3JpZ2lu
KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBhMjkwZDhiMTcxYWE5N2FjZjQ2YzY5NTI0MzVlOGIwY2YyY2IwZTk1Li40Y2YzYjQ0NTMyYjI0
NjljZmI2NTkzMGIxOGU2ODBmYzNmYmQyN2ExIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTA0ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIENoZWNrcG9p
bnRTaWRlU3RhdGUgc2hvdWQgcGxheSBuaWNlbHkgd2l0aCBTdGFja092ZXJmbG93RXhjZXB0aW9u
IHVud2luZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTExNAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAg
ICogc3RyZXNzL3N0YWNrLW92ZXJmbG93LWludG8tZnJhbWUtd2l0aC1wZW5kaW5nLWNoZWNrcG9p
bnQuanM6IEFkZGVkLgorICAgICAgICAoZm9vLmNhdGNoLmFzeW5jIGJhcik6CisgICAgICAgIChm
b28uY2F0Y2gpOgorICAgICAgICAoZm9vKToKKwogMjAyMC0wNy0xMSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIEludGwuTG9jYWxlIG1heGltaXplLCBtaW5p
bWl6ZSBzaG91bGQgcmV0dXJuIEludGwuTG9jYWxlIGluc3RlYWQgb2YgU3RyaW5nCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1pbnRvLWZyYW1lLXdpdGgtcGVuZGlu
Zy1jaGVja3BvaW50LmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW50by1mcmFt
ZS13aXRoLXBlbmRpbmctY2hlY2twb2ludC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzRlNzJiMWNhNWZiYzE3
NTdiNWU2YTEzMWUxOTg2OTAxMzNhYTI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvc3RhY2stb3ZlcmZsb3ctaW50by1mcmFtZS13aXRoLXBlbmRpbmctY2hlY2twb2ludC5qcwpA
QCAtMCwwICsxLDE5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0taml0UG9saWN5U2NhbGU9MCIp
CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgJ3VzZSBzdHJpY3QnCisgIHRyeSB7CisgICAgZm9vKCk7
CisgIH0gY2F0Y2goZSkgeworICAgICh7X19wcm90b19fOjB9KTsKKyAgICBhc3luYyBmdW5jdGlv
biBiYXIoYTApIHsKKyAgICAgIGJhcihhMCwgLi4uWzBdKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aT0wOyBpPDEwMDA7IGkrKykgeworICAgICAgYmFyKCk7CisgICAgfQorICAgIGJhcigwLCAgMCk7
CisgIH0KK30KKworZm9vKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>