<?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>203526</bug_id>
          
          <creation_ts>2019-10-28 15:28:27 -0700</creation_ts>
          <short_desc>Introduce WorkerEventLoop and use it in FetchBodyOwner::runNetworkTaskWhenPossible</short_desc>
          <delta_ts>2019-11-05 15:31:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          
          <blocked>203137</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1584676</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-28 15:28:27 -0700</bug_when>
    <thetext>Introduce WorkerEventLoop class to implement the worker event loop:
https://html.spec.whatwg.org/multipage/webappapis.html#worker-event-loop-2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584687</commentid>
    <comment_count>1</comment_count>
      <attachid>382122</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-28 15:40:06 -0700</bug_when>
    <thetext>Created attachment 382122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584710</commentid>
    <comment_count>2</comment_count>
      <attachid>382129</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-28 16:20:03 -0700</bug_when>
    <thetext>Created attachment 382129
Fix release builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584741</commentid>
    <comment_count>3</comment_count>
      <attachid>382136</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-28 16:42:15 -0700</bug_when>
    <thetext>Created attachment 382136
GTK+ / WPE build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584804</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-28 19:35:01 -0700</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584925</commentid>
    <comment_count>5</comment_count>
      <attachid>382136</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 09:02:52 -0700</bug_when>
    <thetext>Comment on attachment 382136
GTK+ / WPE build fix

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

&gt; Source/WebCore/dom/Document.h:1065
&gt; +    AbstractEventLoop&amp; eventLoop();

It looks like this is an override? If so, why isn&apos;t is marked as final? Also, using the tighter WindowEventLoop typing in the override should work and would actually be beneficial.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:109
&gt; +{

We should likely assert that this is only called from the context thread.

&gt; Source/WebCore/workers/WorkerGlobalScope.h:69
&gt; +    AbstractEventLoop&amp; eventLoop() final;

Can use WorkerEventLoop return type.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:61
&gt; +    AbstractEventLoop&amp; eventLoop() final;

Can use tighter type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585179</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 16:56:49 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 382136 [details]
&gt; GTK+ / WPE build fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382136&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1065
&gt; &gt; +    AbstractEventLoop&amp; eventLoop();
&gt; 
&gt; It looks like this is an override? If so, why isn&apos;t is marked as final?

Good point.

&gt; Also, using the tighter WindowEventLoop typing in the override should work
&gt; and would actually be beneficial.

There is no need for that now but I guess we can do that.

&gt; 
&gt; &gt; Source/WebCore/workers/WorkerGlobalScope.cpp:109
&gt; &gt; +{
&gt; 
&gt; We should likely assert that this is only called from the context thread.

Added.

&gt; &gt; Source/WebCore/workers/WorkerGlobalScope.h:69
&gt; &gt; +    AbstractEventLoop&amp; eventLoop() final;
&gt; 
&gt; Can use WorkerEventLoop return type.

Sure. Again, there isn&apos;t any need for that. Specific type isn&apos;t necessarily better if it&apos;s not useful. In fact, I&apos;d argue that it&apos;s bad in this case because it would encourage people to add new functions to WorkerEventLoop and not to AbstractEventLoop.

&gt; &gt; Source/WebCore/worklets/WorkletGlobalScope.h:61
&gt; &gt; +    AbstractEventLoop&amp; eventLoop() final;
&gt; 
&gt; Can use tighter type.

Fixed for now but again, I don&apos;t think this is a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585181</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 17:00:23 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; Comment on attachment 382136 [details]
&gt; &gt; GTK+ / WPE build fix
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=382136&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Document.h:1065
&gt; &gt; &gt; +    AbstractEventLoop&amp; eventLoop();
&gt; &gt; 
&gt; &gt; It looks like this is an override? If so, why isn&apos;t is marked as final?
&gt; 
&gt; Good point.
&gt; 
&gt; &gt; Also, using the tighter WindowEventLoop typing in the override should work
&gt; &gt; and would actually be beneficial.
&gt; 
&gt; There is no need for that now but I guess we can do that.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/workers/WorkerGlobalScope.cpp:109
&gt; &gt; &gt; +{
&gt; &gt; 
&gt; &gt; We should likely assert that this is only called from the context thread.
&gt; 
&gt; Added.
&gt; 
&gt; &gt; &gt; Source/WebCore/workers/WorkerGlobalScope.h:69
&gt; &gt; &gt; +    AbstractEventLoop&amp; eventLoop() final;
&gt; &gt; 
&gt; &gt; Can use WorkerEventLoop return type.
&gt; 
&gt; Sure. Again, there isn&apos;t any need for that. Specific type isn&apos;t necessarily
&gt; better if it&apos;s not useful. In fact, I&apos;d argue that it&apos;s bad in this case
&gt; because it would encourage people to add new functions to WorkerEventLoop
&gt; and not to AbstractEventLoop.
&gt; 
&gt; &gt; &gt; Source/WebCore/worklets/WorkletGlobalScope.h:61
&gt; &gt; &gt; +    AbstractEventLoop&amp; eventLoop() final;
&gt; &gt; 
&gt; &gt; Can use tighter type.
&gt; 
&gt; Fixed for now but again, I don&apos;t think this is a good idea.

One reason I think it is beneficial is perf. If you do document().eventLoop().queueTask() then no virtual table lookup since you get a WindowEventLoop and WindowEventLoop::queueTask() is marked as final.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585197</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 17:49:26 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt;
&gt; One reason I think it is beneficial is perf. If you do
&gt; document().eventLoop().queueTask() then no virtual table lookup since you
&gt; get a WindowEventLoop and WindowEventLoop::queueTask() is marked as final.

I guess that&apos;s a good point although I don&apos;t think it really matters.

Ugh... now I remember why I went with AbstractEventLoop&amp;. It&apos;s because if I used WindowEventLoop then I&apos;d have to include WindowEventLoop.h in Document.h which isn&apos;t great (since otherwise the complier can&apos;t tell WindowEventLoop is covariant with AbstractEventLoop).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585208</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 18:35:26 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #8)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt;
&gt; &gt; One reason I think it is beneficial is perf. If you do
&gt; &gt; document().eventLoop().queueTask() then no virtual table lookup since you
&gt; &gt; get a WindowEventLoop and WindowEventLoop::queueTask() is marked as final.
&gt; 
&gt; I guess that&apos;s a good point although I don&apos;t think it really matters.
&gt; 
&gt; Ugh... now I remember why I went with AbstractEventLoop&amp;. It&apos;s because if I
&gt; used WindowEventLoop then I&apos;d have to include WindowEventLoop.h in
&gt; Document.h which isn&apos;t great (since otherwise the complier can&apos;t tell
&gt; WindowEventLoop is covariant with AbstractEventLoop).

This would also mean we&apos;d have to export WindowEventLoop.h to WebKit layer as well. I don&apos;t think we want to do that. I&apos;m revering back to AbstractEventLoop. It&apos;s not worth the trouble &amp; slower compilation time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585217</commentid>
    <comment_count>10</comment_count>
      <attachid>382265</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 19:11:54 -0700</bug_when>
    <thetext>Created attachment 382265
Updated per review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585227</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 19:40:27 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #10)
&gt; Created attachment 382265 [details]
&gt; Updated per review comments

I don’t see the threading assertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585229</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 19:41:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; (In reply to Ryosuke Niwa from comment #10)
&gt; &gt; Created attachment 382265 [details]
&gt; &gt; Updated per review comments
&gt; 
&gt; I don’t see the threading assertion?

The isContextThread() one I asked for in queueTask(). Or did I miss it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585255</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 20:43:24 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; (In reply to Chris Dumez from comment #11)
&gt; &gt; (In reply to Ryosuke Niwa from comment #10)
&gt; &gt; &gt; Created attachment 382265 [details]
&gt; &gt; &gt; Updated per review comments
&gt; &gt; 
&gt; &gt; I don’t see the threading assertion?
&gt; 
&gt; The isContextThread() one I asked for in queueTask(). Or did I miss it?

Oh, sorry, I misunderstood what you were asking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585257</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 20:46:37 -0700</bug_when>
    <thetext>I&apos;m gonna keep the assertion in WorkerGlobalScope::eventLoop too though since it&apos;s not safe to call that member function in a wrong thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585258</commentid>
    <comment_count>15</comment_count>
      <attachid>382274</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 20:47:35 -0700</bug_when>
    <thetext>Created attachment 382274
Added an assertion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585265</commentid>
    <comment_count>16</comment_count>
      <attachid>382274</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-29 21:03:32 -0700</bug_when>
    <thetext>Comment on attachment 382274
Added an assertion

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

r=me with comments

&gt; Source/WebCore/dom/Document.cpp:6132
&gt;  {

We likely want a isMainThread() assertion here too.

&gt; Source/WebCore/workers/WorkerEventLoop.cpp:61
&gt; +bool WorkerEventLoop::hasPendingActivity() const

Why do we need to override this. Presumably, the default implementation already returns false if you don’t use makePendingActivity / setPendingActivity.

&gt; Source/WebCore/workers/WorkerEventLoop.cpp:71
&gt; +void WorkerEventLoop::suspend(ReasonForSuspension)

We don’t suspend / resume ActiveDOMObjects on workers. Instead, we suspend the whole thread. As a result, I don’t think the suspend / resume methods do anything here.

&gt; Source/WebCore/workers/WorkerEventLoop.h:48
&gt; +    WorkerEventLoop(ScriptExecutionContext&amp;);

Explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585279</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 22:16:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; Comment on attachment 382274 [details]
&gt; Added an assertion
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382274&amp;action=review
&gt; 
&gt; r=me with comments
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:6132
&gt; &gt;  {
&gt; 
&gt; We likely want a isMainThread() assertion here too.

Good catch. Added.

&gt; &gt; Source/WebCore/workers/WorkerEventLoop.cpp:61
&gt; &gt; +bool WorkerEventLoop::hasPendingActivity() const
&gt; 
&gt; Why do we need to override this. Presumably, the default implementation
&gt; already returns false if you don’t use makePendingActivity /
&gt; setPendingActivity.

Yeah, I don&apos;t recall why I added there. Removed.

&gt; &gt; Source/WebCore/workers/WorkerEventLoop.cpp:71
&gt; &gt; +void WorkerEventLoop::suspend(ReasonForSuspension)
&gt; 
&gt; We don’t suspend / resume ActiveDOMObjects on workers. Instead, we suspend
&gt; the whole thread. As a result, I don’t think the suspend / resume methods do
&gt; anything here.

Oh, sure. I wrote this patch before your patch was landed so I forgot to reflect that. I&apos;d replace the implementation with ASSERT_NOT_REACHED().

&gt; &gt; Source/WebCore/workers/WorkerEventLoop.h:48
&gt; &gt; +    WorkerEventLoop(ScriptExecutionContext&amp;);
&gt; 
&gt; Explicit

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585280</commentid>
    <comment_count>18</comment_count>
      <attachid>382281</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 22:20:08 -0700</bug_when>
    <thetext>Created attachment 382281
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585281</commentid>
    <comment_count>19</comment_count>
      <attachid>382281</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-29 22:20:34 -0700</bug_when>
    <thetext>Comment on attachment 382281
Patch for landing

Wait for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585456</commentid>
    <comment_count>20</comment_count>
      <attachid>382281</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 12:38:02 -0700</bug_when>
    <thetext>Comment on attachment 382281
Patch for landing

Clearing flags on attachment: 382281

Committed r251792: &lt;https://trac.webkit.org/changeset/251792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585457</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 12:38:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585459</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-30 12:39:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/56754436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585980</commentid>
    <comment_count>23</comment_count>
      <attachid>382281</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-31 10:49:09 -0700</bug_when>
    <thetext>Comment on attachment 382281
Patch for landing

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

&gt; Source/WebCore/workers/WorkerEventLoop.cpp:36
&gt; +    return adoptRef(*new WorkerEventLoop(context));

This fails to call suspendIfNeeded().

&gt; Source/WebCore/workers/WorkerEventLoop.cpp:42
&gt; +    return adoptRef(*new WorkerEventLoop(context));

This fails to call suspendIfNeeded().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587567</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 15:31:37 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #23)
&gt; Comment on attachment 382281 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382281&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/WorkerEventLoop.cpp:36
&gt; &gt; +    return adoptRef(*new WorkerEventLoop(context));
&gt; 
&gt; This fails to call suspendIfNeeded().
&gt; 
&gt; &gt; Source/WebCore/workers/WorkerEventLoop.cpp:42
&gt; &gt; +    return adoptRef(*new WorkerEventLoop(context));
&gt; 
&gt; This fails to call suspendIfNeeded().

This got fixed in https://trac.webkit.org/changeset/251934.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382122</attachid>
            <date>2019-10-28 15:40:06 -0700</date>
            <delta_ts>2019-10-28 16:20:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203526-20191028154005.patch</filename>
            <type>text/plain</type>
            <size>23681</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTY3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTI4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrZXJFdmVu
dExvb3AgYW5kIHVzZSBpdCBpbiBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIFdvcmtlckV2ZW50TG9vcCB0byBpbXBsZW1lbnQgdGhlIHdvcmtlciBldmVudCBsb29wOgor
ICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlz
Lmh0bWwjd29ya2VyLWV2ZW50LWxvb3AtMgorCisgICAgICAgIEVhY2ggU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBub3cgcmV0dXJucyBhbiBBYnN0cmFjdEV2ZW50TG9vcCBzbyB0aGUgY29kZSB0aGF0
IG1heSBydW4gaW4gZWl0aGVyCisgICAgICAgIG1haW4gdGhyZWFkIG9yIGEgd29ya2VyIHRocmVh
ZCBjYW4gc2ltcGx5IGdldCB0aGUgZXZlbnQgbG9vcCBvYmplY3QgdmlhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuCisKKyAgICAgICAgRm9yIG5vdywgV29ya2VyRXZlbnRMb29wIGFsc28gaW1wbGVt
ZW50cyB0aGUgd29ya2xldCBldmVudCBsb29wOgorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd29ya2xldC1ldmVudC1sb29wCisK
KyAgICAgICAgV29ya2VyRXZlbnRMb29wIGlzIGFuIGFjdGl2ZSBET00gb2JqZWN0IHNpbmNlIGl0
J3MgdXNlZCBieSBhdCBtb3N0IG9uZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIHVu
bGlrZSBXaW5kb3dFdmVudExvb3AsIHdoaWNoIGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgZG9j
dW1lbnRzIGFuZCBuZWVkcyBhIGN1c3RvbSBsb2dpYyB0bworICAgICAgICBzdXNwZW5kIGFuZCBy
ZXN1bWUgYSBzdWJzZXQgb2YgdGFza3MgZW5xdWV1ZWQgdG8gdGhlIGV2ZW50IGxvb3AuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNo
YW5nZSBmb3Igbm93LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVu
UG9zc2libGUpOiBVc2UgV29ya2VyRXZlbnRMb29wLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vQWJzdHJhY3RFdmVudExvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRM
b29wOjpzdXNwZW5kKTogUmVtb3ZlZCBzaW5jZSBpdCdzIG5vdCBuZWVkZWQgZm9yIFdvcmtlckV2
ZW50TG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRMb29wOjpyZXN1bWUpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmV2ZW50TG9vcCk6IFJldHVybnMgQWJzdHJhY3RFdmVudExvb3AgYXMgaXQgbm93IG92
ZXJyaWRlcyB0aGUgYWJzdHJhY3QKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9uIGRlZmluZWQgaW4g
QWJzdHJhY3RFdmVudExvb3AuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRM
b29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudExvb3A6OnJlc3VtZSk6CisgICAgICAgICogZG9t
L1dpbmRvd0V2ZW50TG9vcC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjpXb3JrZXJFdmVudExvb3Ap
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6Omhhc1BlbmRpbmdBY3Rp
dml0eSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJFdmVudExvb3A6OnN1c3BlbmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2
ZW50TG9vcDo6cmVzdW1lKTogQWRkZWQuIFVubGlrZSBXaW5kb3dFdmVudExvb3AsIHdlIG9ubHkg
bmVlZCB0byBjaGVjaworICAgICAgICB3aGV0aGVyIG1fdGFza3MgaXMgZW1wdHkgb3Igbm90IHNp
bmNlIFdvcmtlckV2ZW50TG9vcCBpcyBhc3NvY2lhdGVkIHdpdGggYXQgbW9zdCBvbmUKKyAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBub3RlZCBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50TG9vcDo6c3RvcCk6IEFkZGVkLiBDbGVhciBtX3Rhc2tzIHRvIGZyZWUg
bWVtb3J5IGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50TG9vcDo6cnVuKTogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJF
dmVudExvb3AuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKTogQWRk
ZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmV2ZW50TG9vcCk6IEFkZGVkLiBJdCByZXR1cm5zIFdvcmtlckV2ZW50TG9v
cCBmb3Igbm93IHNpbmNlCisgICAgICAgIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGRpZmZl
cmVuY2UuCisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMTkt
MTAtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIGNv
ZGUgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhwZXJpbWVudApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yNDk4LDYgKzI0OTgsNyBAQCB3b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCiB3b3Jr
ZXJzL1dvcmtlci5jcHAKIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKK3dvcmtlcnMv
V29ya2VyRXZlbnRMb29wLmNwcAogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmNwcAkocmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCw5IEBAIHZvaWQg
RmV0Y2hCb2R5T3duZXI6OnJ1bk5ldHdvcmtUYXNrV2hlblAKICAgICBpZiAoIWNvbnRleHQgfHwg
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgp
KQogICAgICAgICByZXR1cm4gdGFzaygpOwogCi0gICAgaWYgKGlzPERvY3VtZW50PigqY29udGV4
dCkpIHsKLSAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgKmNvbnRleHQsIFtwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsK
LSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Y29udGV4dC0+cG9zdFRhc2soW3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
LSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGNvbnRleHQtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCAqY29udGV4dCwgW3Bl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92
ZSh0YXNrKV0geworICAgICAgICB0YXNrKCk7CisgICAgfSk7CiB9CiAKIEZldGNoQm9keU93bmVy
OjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25h
bDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzKQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA5OCw2ICsxMTA5OCw5IEBACiAJCTlC
MDk4QkUwMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpT
U3RyaW5nQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTdHJpbmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4
QkU3MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RXZlbnRMb29wLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0EzMjM2NzlBQ0YwMEI0NTA4NSAv
KiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIw
QUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dS
b290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAv
KiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExMTMzLDcgKzExMTM2LDYgQEAKIAkJOUI3NDI2MDgyMzRCRUE2RTAwREI1MkU5IC8q
IElkbGVEZWFkbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlRGVhZGxpbmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3NDI2MDkyMzRCRUE2RTAwREI1MkU5IC8qIElkbGVEZWFk
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGxlRGVhZGxpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5Qjc0MjYwQTIzNEJFQTZFMDBEQjUyRTkgLyogSWRsZURlYWRs
aW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBJZGxlRGVhZGxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5QjgyMDVBNTIzNTkyOUIxMDBDM0JGNDAgLyogQWJzdHJhY3RFdmVudExvb3AuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RFdmVudExvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5Qjg1NTMwNTIwRTczM0I1MDA5RUVGNEYgLyogRXZlbnRUYXJnZXRGYWN0
b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV2ZW50VGFyZ2V0
RmFjdG9yeS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTlCODY0RjAw
MjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWRsZVJlcXVlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCODY0
RjAxMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElkbGVS
ZXF1ZXN0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc0OCw2
ICsxNzc1MCw4IEBACiAJCQkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2RDhFIC8qIFdvcmtlckNvbnNv
bGVDbGllbnQuY3BwICovLAogCQkJCUE1NTYzOUQwMUM2RUZENTkwMDgwNkQ4RSAvKiBXb3JrZXJD
b25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUyQjM0OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtl
ckRlYnVnZ2VyUHJveHkuaCAqLywKKwkJCQk5QjBBQkNBMzIzNjc5QUNGMDBCNDUwODUgLyogV29y
a2VyRXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBNDIzNjc5QUNGMDBCNDUwODUgLyogV29y
a2VyRXZlbnRMb29wLmggKi8sCiAJCQkJQTNFMjY0MkUxNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtl
ckV2ZW50UXVldWUuY3BwICovLAogCQkJCUEzRTI2NDJGMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3Jr
ZXJFdmVudFF1ZXVlLmggKi8sCiAJCQkJMkU0MzQ2MzYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLywKQEAgLTI3NjcyLDcgKzI3Njc2LDcgQEAKIAkJCQk3Q0QwRTJC
RDFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuY3BwICovLAogCQkJCTdDRDBFMkJDMUY4
MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oICovLAogCQkJCTdDRDBFMkJFMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5pZGwgKi8sCi0JCQkJOUI4MjA1QTUyMzU5MjlCMTAwQzNC
RjQwIC8qIEFic3RyYWN0RXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBMTIzNjc5QUIzMDBC
NDUwODUgLyogQWJzdHJhY3RFdmVudExvb3AuaCAqLywKIAkJCQk3QzUyMjI5NzFFMURBRTE2MDAy
Q0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suY3BwICovLAogCQkJCTdDNTIyMjk4MUUxREFFMTYw
MDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5oICovLAogCQkJCTdDRDBCQTAyMUI4Rjc5Qzkw
MDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAkocmV2aXNpb24gMjUxNjczKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDkgKzQ2LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBU
YXNrRnVuY3Rpb247CiAgICAgdmlydHVhbCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgVGFza0Z1bmN0aW9uJiYpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAg
ICAgQWJzdHJhY3RFdmVudExvb3AoKSA9IGRlZmF1bHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTI5LDExICs2MTI5LDExIEBAIHZvaWQgRG9jdW1l
bnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoKQogICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp0
aGlzKTsKIH0KIAotV2luZG93RXZlbnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKK0Fic3Ry
YWN0RXZlbnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKIHsKICAgICBpZiAoIW1fZXZlbnRM
b29wKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHREb2N1bWVudCkKLSAgICAgICAgICAgIG1fZXZl
bnRMb29wID0gJm1fY29udGV4dERvY3VtZW50LT5ldmVudExvb3AoKTsKKyAgICAgICAgICAgIG1f
ZXZlbnRMb29wID0gbV9jb250ZXh0RG9jdW1lbnQtPm1fZXZlbnRMb29wOwogICAgICAgICBlbHNl
IC8vIEZJWE1FOiBEb2N1bWVudHMgb2Ygc2ltaWxhciBvcmlnaW4gc2hvdWxkIHNoYXJlIHRoZSBz
YW1lIGV2ZW50IGxvb3AuCiAgICAgICAgICAgICBtX2V2ZW50TG9vcCA9IFdpbmRvd0V2ZW50TG9v
cDo6Y3JlYXRlKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1
MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYyLDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBv
c3RUYXNrKFRhc2smJikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0
aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKLSAgICBXaW5kb3dFdmVudExvb3AmIGV2ZW50TG9vcCgp
OworICAgIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKTsKICAgICBXaW5kb3dFdmVudExv
b3AqIGV2ZW50TG9vcElmRXhpc3RzKCkgeyByZXR1cm4gbV9ldmVudExvb3AuZ2V0KCk7IH0KIAog
ICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciogc2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyKCkgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNp
b24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RFdmVudExvb3A7CiBjbGFz
cyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBFdmVudFF1ZXVl
OwpAQCAtODksNiArOTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1
dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgQWJzdHJhY3RFdmVudExv
b3AmIGV2ZW50TG9vcCgpID0gMDsKKwogICAgIHZpcnR1YWwgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNv
bnN0ID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAJKHJl
dmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxNiArNDMsMTQgQEAgdm9pZCBXaW5kb3dFdmVudExvb3A6
OnF1ZXVlVGFzayhUYXNrU291cgogICAgIG1fdGFza3MuYXBwZW5kKFRhc2sgeyBzb3VyY2UsIFdU
Rk1vdmUodGFzayksIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5pZGVudGlmaWVyKCkgfSk7
CiB9CiAKLXZvaWQgV2luZG93RXZlbnRMb29wOjpzdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKQordm9pZCBXaW5kb3dFdmVudExvb3A6OnN1c3BlbmQoRG9jdW1lbnQmKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKLXZvaWQgV2luZG93RXZlbnRMb29wOjpyZXN1bWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgV2luZG93RXZlbnRMb29wOjpy
ZXN1bWUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUKGlzPERvY3VtZW50Pihjb250ZXh0KSk7Ci0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAgaWYgKCFtX2RvY3VtZW50SWRlbnRp
ZmllcnNGb3JTdXNwZW5kZWRUYXNrcy5jb250YWlucyhkb2N1bWVudC5pZGVudGlmaWVyKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQw
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBxdWV1ZVRhc2soVGFza1NvdXJjZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFRhc2tGdW5jdGlvbiYmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3Vz
cGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN1bWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZChEb2N1
bWVudCYpOworICAgIHZvaWQgcmVzdW1lKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgV2lu
ZG93RXZlbnRMb29wKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRXZlbnRMb29wLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckV2ZW50TG9vcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRM
b29wLmgiCisKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXb3JrZXJFdmVu
dExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlckV2ZW50TG9vcChjb250ZXh0KSk7
Cit9CisKK1JlZjxXb3JrZXJFdmVudExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmts
ZXRHbG9iYWxTY29wZSYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3Jr
ZXJFdmVudExvb3AoY29udGV4dCkpOworfQorCitXb3JrZXJFdmVudExvb3A6OldvcmtlckV2ZW50
TG9vcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KCZjb250ZXh0KQoreworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKFRh
c2tTb3VyY2Ugc291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUYXNrRnVu
Y3Rpb24mJiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0g
JmNvbnRleHQpOworICAgIG1fdGFza3MuYXBwZW5kKHsgc291cmNlLCBXVEZNb3ZlKGZ1bmN0aW9u
KSB9KTsKKyAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKK30KKworYm9vbCBXb3JrZXJFdmVu
dExvb3A6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitjb25zdCBjaGFyKiBXb3JrZXJFdmVudExvb3A6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiAiV29ya2VyRXZlbnRMb29wIjsKK30KKwordm9pZCBXb3JrZXJF
dmVudExvb3A6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKK30KKwordm9pZCBXb3Jr
ZXJFdmVudExvb3A6OnJlc3VtZSgpCit7CisgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7Cit9
CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpzdG9wKCkKK3sKKyAgICBtX3Rhc2tzLmNsZWFyKCk7
Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKQorewor
ICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJU
KGNvbnRleHQpOworICAgIGlmIChtX2lzU2NoZWR1bGVkVG9SdW4gfHwgbV90YXNrcy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IHRydWU7Cisg
ICAgY29udGV4dC0+cG9zdFRhc2soW2V2ZW50TG9vcCA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgZXZlbnRMb29wLT5tX2lzU2NoZWR1bGVkVG9S
dW4gPSBmYWxzZTsKKyAgICAgICAgZXZlbnRMb29wLT5ydW4oKTsKKyAgICB9KTsKK30KKwordm9p
ZCBXb3JrZXJFdmVudExvb3A6OnJ1bigpCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC0+YWN0aXZlRE9N
T2JqZWN0c0FyZVN0b3BwZWQoKSB8fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIHRhc2sgOiBtX3Rhc2tzKQor
ICAgICAgICB0YXNrLnRhc2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJBYnN0cmFjdEV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29y
a2xldEdsb2JhbFNjb3BlOworCitjbGFzcyBXb3JrZXJFdmVudExvb3AgZmluYWwgOiBwdWJsaWMg
QWJzdHJhY3RFdmVudExvb3AsIHByaXZhdGUgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICAvLyBFeHBsaWNpdGx5IHRha2UgV29ya2VyR2xvYmFsU2NvcGUgYW5kIFdvcmtsZXRHbG9iYWxT
Y29wZSBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4KKyAgICBzdGF0aWMgUmVmPFdvcmtlckV2
ZW50TG9vcD4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgc3RhdGljIFJlZjxXb3Jr
ZXJFdmVudExvb3A+IGNyZWF0ZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKworICAgIHZvaWQgcXVl
dWVUYXNrKFRhc2tTb3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUYXNrRnVuY3Rpb24m
Jikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgV29ya2VyRXZlbnRMb29wKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKTsKKworICAgIHZvaWQgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7CisgICAg
dm9pZCBydW4oKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdDsKKyAgICBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN1bWUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHN0b3AoKSBvdmVycmlkZTsKKworICAgIHN0cnVjdCBUYXNrIHsKKyAgICAgICAgVGFza1NvdXJj
ZSBzb3VyY2U7CisgICAgICAgIFRhc2tGdW5jdGlvbiB0YXNrOworICAgIH07CisKKyAgICBWZWN0
b3I8VGFzaz4gbV90YXNrczsKKyAgICBib29sIG1faXNTY2hlZHVsZWRUb1J1biB7IGZhbHNlIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjUxNjczKQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVy
LmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV29ya2VyTG9jYXRpb24uaCIKQEAgLTEwNCw2ICsxMDUsMTMgQEAgV29ya2VyR2xvYmFsU2Nv
cGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAgICAgdGhyZWFkKCkud29ya2VyUmVwb3J0aW5nUHJv
eHkoKS53b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpOwogfQogCitBYnN0cmFjdEV2ZW50TG9v
cCYgV29ya2VyR2xvYmFsU2NvcGU6OmV2ZW50TG9vcCgpCit7CisgICAgaWYgKCFtX2V2ZW50TG9v
cCkKKyAgICAgICAgbV9ldmVudExvb3AgPSBXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSgqdGhpcyk7
CisgICAgcmV0dXJuICptX2V2ZW50TG9vcDsKK30KKwogU3RyaW5nIFdvcmtlckdsb2JhbFNjb3Bl
OjpvcmlnaW4oKSBjb25zdAogewogICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gdGhpcy0+c2Vj
dXJpdHlPcmlnaW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgJKHJldmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBD
cnlwdG87CiBjbGFzcyBNaWNyb3Rhc2tRdWV1ZTsKIGNsYXNzIFBlcmZvcm1hbmNlOwogY2xhc3Mg
U2NoZWR1bGVkQWN0aW9uOworY2xhc3MgV29ya2VyRXZlbnRMb29wOwogY2xhc3MgV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIFdvcmtlckxvY2F0aW9uOwogY2xhc3MgV29ya2VyTmF2
aWdhdG9yOwpAQCAtNjUsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKKyAgICBBYnN0cmFjdEV2ZW50TG9vcCYgZXZlbnRMb29wKCkgZmluYWw7CisKICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU3Ry
aW5nIG9yaWdpbigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpAQCAtMTkxLDYgKzE5NCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzT25saW5lOwogICAgIGJvb2wgbV9zaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKKyAgICBSZWZQdHI8V29ya2VyRXZlbnRMb29wPiBt
X2V2ZW50TG9vcDsKKwogICAgIG11dGFibGUgV29ya2VyRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7
CiAKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNTE2
NzMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGll
bnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KQEAgLTg5LDYgKzkwLDEzIEBAIGF1
dG8gV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0R2xvYmEKICAgICByZXR1cm4gc2NvcGVz
OwogfQogCitBYnN0cmFjdEV2ZW50TG9vcCYgV29ya2xldEdsb2JhbFNjb3BlOjpldmVudExvb3Ao
KQoreworICAgIGlmICghbV9ldmVudExvb3ApCisgICAgICAgIG1fZXZlbnRMb29wID0gV29ya2Vy
RXZlbnRMb29wOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9ldmVudExvb3A7Cit9CisK
IFN0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fdG9wT3JpZ2luLT50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTQxLDggKzQwLDEw
IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlckV2ZW50TG9vcDsKIGNsYXNzIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOwotY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIAogZW51bSBXb3JrbGV0R2xv
YmFsU2NvcGVJZGVudGlmaWVyVHlwZSB7IH07CiB1c2luZyBXb3JrbGV0R2xvYmFsU2NvcGVJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlw
ZT47CkBAIC01Nyw2ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50
V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIEFic3Ry
YWN0RXZlbnRMb29wJiBldmVudExvb3AoKSBmaW5hbDsKKwogICAgIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9CiAgICAgU3RyaW5nIG9yaWdpbigp
IGNvbnN0IGZpbmFsOwogCkBAIC0xMjksNiArMTMyLDggQEAgcHJpdmF0ZToKIAogICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiAKKyAgICBSZWZQdHI8V29ya2VyRXZlbnRMb29w
PiBtX2V2ZW50TG9vcDsKKwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBw
cm9wZXJseSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVyLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKICAgICBtdXRhYmxlIFdvcmtl
ckV2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382129</attachid>
            <date>2019-10-28 16:20:03 -0700</date>
            <delta_ts>2019-10-28 16:42:13 -0700</delta_ts>
            <desc>Fix release builds</desc>
            <filename>bug-203526-20191028162002.patch</filename>
            <type>text/plain</type>
            <size>23697</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTY3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTI4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrZXJFdmVu
dExvb3AgYW5kIHVzZSBpdCBpbiBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIFdvcmtlckV2ZW50TG9vcCB0byBpbXBsZW1lbnQgdGhlIHdvcmtlciBldmVudCBsb29wOgor
ICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlz
Lmh0bWwjd29ya2VyLWV2ZW50LWxvb3AtMgorCisgICAgICAgIEVhY2ggU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBub3cgcmV0dXJucyBhbiBBYnN0cmFjdEV2ZW50TG9vcCBzbyB0aGUgY29kZSB0aGF0
IG1heSBydW4gaW4gZWl0aGVyCisgICAgICAgIG1haW4gdGhyZWFkIG9yIGEgd29ya2VyIHRocmVh
ZCBjYW4gc2ltcGx5IGdldCB0aGUgZXZlbnQgbG9vcCBvYmplY3QgdmlhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuCisKKyAgICAgICAgRm9yIG5vdywgV29ya2VyRXZlbnRMb29wIGFsc28gaW1wbGVt
ZW50cyB0aGUgd29ya2xldCBldmVudCBsb29wOgorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd29ya2xldC1ldmVudC1sb29wCisK
KyAgICAgICAgV29ya2VyRXZlbnRMb29wIGlzIGFuIGFjdGl2ZSBET00gb2JqZWN0IHNpbmNlIGl0
J3MgdXNlZCBieSBhdCBtb3N0IG9uZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIHVu
bGlrZSBXaW5kb3dFdmVudExvb3AsIHdoaWNoIGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgZG9j
dW1lbnRzIGFuZCBuZWVkcyBhIGN1c3RvbSBsb2dpYyB0bworICAgICAgICBzdXNwZW5kIGFuZCBy
ZXN1bWUgYSBzdWJzZXQgb2YgdGFza3MgZW5xdWV1ZWQgdG8gdGhlIGV2ZW50IGxvb3AuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNo
YW5nZSBmb3Igbm93LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVu
UG9zc2libGUpOiBVc2UgV29ya2VyRXZlbnRMb29wLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vQWJzdHJhY3RFdmVudExvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRM
b29wOjpzdXNwZW5kKTogUmVtb3ZlZCBzaW5jZSBpdCdzIG5vdCBuZWVkZWQgZm9yIFdvcmtlckV2
ZW50TG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRMb29wOjpyZXN1bWUpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmV2ZW50TG9vcCk6IFJldHVybnMgQWJzdHJhY3RFdmVudExvb3AgYXMgaXQgbm93IG92
ZXJyaWRlcyB0aGUgYWJzdHJhY3QKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9uIGRlZmluZWQgaW4g
QWJzdHJhY3RFdmVudExvb3AuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRM
b29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudExvb3A6OnJlc3VtZSk6CisgICAgICAgICogZG9t
L1dpbmRvd0V2ZW50TG9vcC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjpXb3JrZXJFdmVudExvb3Ap
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6Omhhc1BlbmRpbmdBY3Rp
dml0eSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJFdmVudExvb3A6OnN1c3BlbmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2
ZW50TG9vcDo6cmVzdW1lKTogQWRkZWQuIFVubGlrZSBXaW5kb3dFdmVudExvb3AsIHdlIG9ubHkg
bmVlZCB0byBjaGVjaworICAgICAgICB3aGV0aGVyIG1fdGFza3MgaXMgZW1wdHkgb3Igbm90IHNp
bmNlIFdvcmtlckV2ZW50TG9vcCBpcyBhc3NvY2lhdGVkIHdpdGggYXQgbW9zdCBvbmUKKyAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBub3RlZCBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50TG9vcDo6c3RvcCk6IEFkZGVkLiBDbGVhciBtX3Rhc2tzIHRvIGZyZWUg
bWVtb3J5IGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50TG9vcDo6cnVuKTogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJF
dmVudExvb3AuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKTogQWRk
ZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmV2ZW50TG9vcCk6IEFkZGVkLiBJdCByZXR1cm5zIFdvcmtlckV2ZW50TG9v
cCBmb3Igbm93IHNpbmNlCisgICAgICAgIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGRpZmZl
cmVuY2UuCisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMTkt
MTAtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIGNv
ZGUgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhwZXJpbWVudApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yNDk4LDYgKzI0OTgsNyBAQCB3b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCiB3b3Jr
ZXJzL1dvcmtlci5jcHAKIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKK3dvcmtlcnMv
V29ya2VyRXZlbnRMb29wLmNwcAogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmNwcAkocmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCw5IEBAIHZvaWQg
RmV0Y2hCb2R5T3duZXI6OnJ1bk5ldHdvcmtUYXNrV2hlblAKICAgICBpZiAoIWNvbnRleHQgfHwg
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgp
KQogICAgICAgICByZXR1cm4gdGFzaygpOwogCi0gICAgaWYgKGlzPERvY3VtZW50PigqY29udGV4
dCkpIHsKLSAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgKmNvbnRleHQsIFtwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsK
LSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Y29udGV4dC0+cG9zdFRhc2soW3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
LSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGNvbnRleHQtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCAqY29udGV4dCwgW3Bl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92
ZSh0YXNrKV0geworICAgICAgICB0YXNrKCk7CisgICAgfSk7CiB9CiAKIEZldGNoQm9keU93bmVy
OjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25h
bDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzKQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA5OCw2ICsxMTA5OCw5IEBACiAJCTlC
MDk4QkUwMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpT
U3RyaW5nQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTdHJpbmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4
QkU3MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RXZlbnRMb29wLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0EzMjM2NzlBQ0YwMEI0NTA4NSAv
KiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIw
QUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dS
b290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAv
KiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExMTMzLDcgKzExMTM2LDYgQEAKIAkJOUI3NDI2MDgyMzRCRUE2RTAwREI1MkU5IC8q
IElkbGVEZWFkbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlRGVhZGxpbmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3NDI2MDkyMzRCRUE2RTAwREI1MkU5IC8qIElkbGVEZWFk
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGxlRGVhZGxpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5Qjc0MjYwQTIzNEJFQTZFMDBEQjUyRTkgLyogSWRsZURlYWRs
aW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBJZGxlRGVhZGxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5QjgyMDVBNTIzNTkyOUIxMDBDM0JGNDAgLyogQWJzdHJhY3RFdmVudExvb3AuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RFdmVudExvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5Qjg1NTMwNTIwRTczM0I1MDA5RUVGNEYgLyogRXZlbnRUYXJnZXRGYWN0
b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV2ZW50VGFyZ2V0
RmFjdG9yeS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTlCODY0RjAw
MjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWRsZVJlcXVlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCODY0
RjAxMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElkbGVS
ZXF1ZXN0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc0OCw2
ICsxNzc1MCw4IEBACiAJCQkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2RDhFIC8qIFdvcmtlckNvbnNv
bGVDbGllbnQuY3BwICovLAogCQkJCUE1NTYzOUQwMUM2RUZENTkwMDgwNkQ4RSAvKiBXb3JrZXJD
b25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUyQjM0OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtl
ckRlYnVnZ2VyUHJveHkuaCAqLywKKwkJCQk5QjBBQkNBMzIzNjc5QUNGMDBCNDUwODUgLyogV29y
a2VyRXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBNDIzNjc5QUNGMDBCNDUwODUgLyogV29y
a2VyRXZlbnRMb29wLmggKi8sCiAJCQkJQTNFMjY0MkUxNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtl
ckV2ZW50UXVldWUuY3BwICovLAogCQkJCUEzRTI2NDJGMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3Jr
ZXJFdmVudFF1ZXVlLmggKi8sCiAJCQkJMkU0MzQ2MzYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLywKQEAgLTI3NjcyLDcgKzI3Njc2LDcgQEAKIAkJCQk3Q0QwRTJC
RDFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuY3BwICovLAogCQkJCTdDRDBFMkJDMUY4
MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oICovLAogCQkJCTdDRDBFMkJFMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5pZGwgKi8sCi0JCQkJOUI4MjA1QTUyMzU5MjlCMTAwQzNC
RjQwIC8qIEFic3RyYWN0RXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBMTIzNjc5QUIzMDBC
NDUwODUgLyogQWJzdHJhY3RFdmVudExvb3AuaCAqLywKIAkJCQk3QzUyMjI5NzFFMURBRTE2MDAy
Q0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suY3BwICovLAogCQkJCTdDNTIyMjk4MUUxREFFMTYw
MDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5oICovLAogCQkJCTdDRDBCQTAyMUI4Rjc5Qzkw
MDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAkocmV2aXNpb24gMjUxNjczKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDkgKzQ2LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBU
YXNrRnVuY3Rpb247CiAgICAgdmlydHVhbCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgVGFza0Z1bmN0aW9uJiYpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAg
ICAgQWJzdHJhY3RFdmVudExvb3AoKSA9IGRlZmF1bHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTI5LDExICs2MTI5LDExIEBAIHZvaWQgRG9jdW1l
bnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoKQogICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp0
aGlzKTsKIH0KIAotV2luZG93RXZlbnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKK0Fic3Ry
YWN0RXZlbnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKIHsKICAgICBpZiAoIW1fZXZlbnRM
b29wKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHREb2N1bWVudCkKLSAgICAgICAgICAgIG1fZXZl
bnRMb29wID0gJm1fY29udGV4dERvY3VtZW50LT5ldmVudExvb3AoKTsKKyAgICAgICAgICAgIG1f
ZXZlbnRMb29wID0gbV9jb250ZXh0RG9jdW1lbnQtPm1fZXZlbnRMb29wOwogICAgICAgICBlbHNl
IC8vIEZJWE1FOiBEb2N1bWVudHMgb2Ygc2ltaWxhciBvcmlnaW4gc2hvdWxkIHNoYXJlIHRoZSBz
YW1lIGV2ZW50IGxvb3AuCiAgICAgICAgICAgICBtX2V2ZW50TG9vcCA9IFdpbmRvd0V2ZW50TG9v
cDo6Y3JlYXRlKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1
MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYyLDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBv
c3RUYXNrKFRhc2smJikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0
aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKLSAgICBXaW5kb3dFdmVudExvb3AmIGV2ZW50TG9vcCgp
OworICAgIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKTsKICAgICBXaW5kb3dFdmVudExv
b3AqIGV2ZW50TG9vcElmRXhpc3RzKCkgeyByZXR1cm4gbV9ldmVudExvb3AuZ2V0KCk7IH0KIAog
ICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciogc2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyKCkgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNp
b24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RFdmVudExvb3A7CiBjbGFz
cyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBFdmVudFF1ZXVl
OwpAQCAtODksNiArOTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1
dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgQWJzdHJhY3RFdmVudExv
b3AmIGV2ZW50TG9vcCgpID0gMDsKKwogICAgIHZpcnR1YWwgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNv
bnN0ID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAJKHJl
dmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxNiArNDMsMTQgQEAgdm9pZCBXaW5kb3dFdmVudExvb3A6
OnF1ZXVlVGFzayhUYXNrU291cgogICAgIG1fdGFza3MuYXBwZW5kKFRhc2sgeyBzb3VyY2UsIFdU
Rk1vdmUodGFzayksIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5pZGVudGlmaWVyKCkgfSk7
CiB9CiAKLXZvaWQgV2luZG93RXZlbnRMb29wOjpzdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKQordm9pZCBXaW5kb3dFdmVudExvb3A6OnN1c3BlbmQoRG9jdW1lbnQmKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKLXZvaWQgV2luZG93RXZlbnRMb29wOjpyZXN1bWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgV2luZG93RXZlbnRMb29wOjpy
ZXN1bWUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUKGlzPERvY3VtZW50Pihjb250ZXh0KSk7Ci0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAgaWYgKCFtX2RvY3VtZW50SWRlbnRp
ZmllcnNGb3JTdXNwZW5kZWRUYXNrcy5jb250YWlucyhkb2N1bWVudC5pZGVudGlmaWVyKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQw
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBxdWV1ZVRhc2soVGFza1NvdXJjZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFRhc2tGdW5jdGlvbiYmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3Vz
cGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN1bWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZChEb2N1
bWVudCYpOworICAgIHZvaWQgcmVzdW1lKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgV2lu
ZG93RXZlbnRMb29wKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRXZlbnRMb29wLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckV2ZW50TG9vcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRM
b29wLmgiCisKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXb3JrZXJFdmVu
dExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlckV2ZW50TG9vcChjb250ZXh0KSk7
Cit9CisKK1JlZjxXb3JrZXJFdmVudExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmts
ZXRHbG9iYWxTY29wZSYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3Jr
ZXJFdmVudExvb3AoY29udGV4dCkpOworfQorCitXb3JrZXJFdmVudExvb3A6OldvcmtlckV2ZW50
TG9vcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KCZjb250ZXh0KQoreworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKFRh
c2tTb3VyY2Ugc291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUYXNrRnVu
Y3Rpb24mJiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09ICZjb250ZXh0KTsKKyAgICBtX3Rhc2tzLmFwcGVuZCh7IHNvdXJjZSwg
V1RGTW92ZShmdW5jdGlvbikgfSk7CisgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7Cit9CisK
K2Jvb2wgV29ya2VyRXZlbnRMb29wOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworY29uc3QgY2hhciogV29ya2VyRXZlbnRMb29wOjphY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIldvcmtlckV2ZW50TG9vcCI7Cit9
CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7
Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpyZXN1bWUoKQoreworICAgIHNjaGVkdWxlVG9S
dW5JZk5lZWRlZCgpOworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6c3RvcCgpCit7CisgICAg
bV90YXNrcy5jbGVhcigpOworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6c2NoZWR1bGVUb1J1
bklmTmVlZGVkKCkKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBpZiAobV9pc1NjaGVkdWxlZFRvUnVuIHx8
IG1fdGFza3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzU2NoZWR1bGVk
VG9SdW4gPSB0cnVlOworICAgIGNvbnRleHQtPnBvc3RUYXNrKFtldmVudExvb3AgPSBtYWtlUmVm
KCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgICAgIGV2ZW50TG9vcC0+
bV9pc1NjaGVkdWxlZFRvUnVuID0gZmFsc2U7CisgICAgICAgIGV2ZW50TG9vcC0+cnVuKCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpydW4oKQoreworICAgIGF1dG8qIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0IHx8IGNv
bnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkgfHwgY29udGV4dC0+YWN0aXZlRE9N
T2JqZWN0c0FyZVN1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiB0
YXNrIDogbV90YXNrcykKKyAgICAgICAgdGFzay50YXNrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3Au
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29w
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKKyNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKKworY2xhc3MgV29ya2VyRXZlbnRMb29w
IGZpbmFsIDogcHVibGljIEFic3RyYWN0RXZlbnRMb29wLCBwcml2YXRlIEFjdGl2ZURPTU9iamVj
dCB7CitwdWJsaWM6CisgICAgLy8gRXhwbGljaXRseSB0YWtlIFdvcmtlckdsb2JhbFNjb3BlIGFu
ZCBXb3JrbGV0R2xvYmFsU2NvcGUgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMuCisgICAgc3Rh
dGljIFJlZjxXb3JrZXJFdmVudExvb3A+IGNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSYpOworICAg
IHN0YXRpYyBSZWY8V29ya2VyRXZlbnRMb29wPiBjcmVhdGUoV29ya2xldEdsb2JhbFNjb3BlJik7
CisKKyAgICB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgVGFza0Z1bmN0aW9uJiYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdvcmtlckV2ZW50
TG9vcChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisKKyAgICB2b2lkIHNjaGVkdWxlVG9SdW5J
Zk5lZWRlZCgpOworICAgIHZvaWQgcnVuKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3Q7Cisg
ICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzdXNw
ZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIG92ZXJyaWRlOworICAgIHZvaWQgcmVzdW1lKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisKKyAgICBzdHJ1Y3QgVGFzayB7Cisg
ICAgICAgIFRhc2tTb3VyY2Ugc291cmNlOworICAgICAgICBUYXNrRnVuY3Rpb24gdGFzazsKKyAg
ICB9OworCisgICAgVmVjdG9yPFRhc2s+IG1fdGFza3M7CisgICAgYm9vbCBtX2lzU2NoZWR1bGVk
VG9SdW4geyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI1
MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Q
b2xpY3kuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2luY2x1
ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCkBAIC0xMDQsNiArMTA1LDEzIEBA
IFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogICAgIHRocmVhZCgpLndv
cmtlclJlcG9ydGluZ1Byb3h5KCkud29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKTsKIH0KIAor
QWJzdHJhY3RFdmVudExvb3AmIFdvcmtlckdsb2JhbFNjb3BlOjpldmVudExvb3AoKQoreworICAg
IGlmICghbV9ldmVudExvb3ApCisgICAgICAgIG1fZXZlbnRMb29wID0gV29ya2VyRXZlbnRMb29w
OjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9ldmVudExvb3A7Cit9CisKIFN0cmluZyBX
b3JrZXJHbG9iYWxTY29wZTo6b3JpZ2luKCkgY29uc3QKIHsKICAgICBhdXRvKiBzZWN1cml0eU9y
aWdpbiA9IHRoaXMtPnNlY3VyaXR5T3JpZ2luKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAgY2xhc3MgQ3J5cHRvOwogY2xhc3MgTWljcm90YXNrUXVldWU7CiBjbGFzcyBQZXJm
b3JtYW5jZTsKIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKK2NsYXNzIFdvcmtlckV2ZW50TG9vcDsK
IGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsK
IGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKQEAgLTY1LDYgKzY2LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgQWJzdHJhY3RFdmVudExvb3AmIGV2ZW50TG9v
cCgpIGZpbmFsOworCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3VybDsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KQEAgLTE5MSw2
ICsxOTQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc09ubGluZTsKICAgICBib29sIG1fc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgUmVmUHRyPFdv
cmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CisKICAgICBtdXRhYmxlIFdvcmtlckV2ZW50UXVl
dWUgbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cAkocmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC04
OSw2ICs5MCwxMyBAQCBhdXRvIFdvcmtsZXRHbG9iYWxTY29wZTo6YWxsV29ya2xldEdsb2JhCiAg
ICAgcmV0dXJuIHNjb3BlczsKIH0KIAorQWJzdHJhY3RFdmVudExvb3AmIFdvcmtsZXRHbG9iYWxT
Y29wZTo6ZXZlbnRMb29wKCkKK3sKKyAgICBpZiAoIW1fZXZlbnRMb29wKQorICAgICAgICBtX2V2
ZW50TG9vcCA9IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gKm1f
ZXZlbnRMb29wOworfQorCiBTdHJpbmcgV29ya2xldEdsb2JhbFNjb3BlOjpvcmlnaW4oKSBjb25z
dAogewogICAgIHJldHVybiBtX3RvcE9yaWdpbi0+dG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNTE2NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
CiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkBAIC00MSw4ICs0MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBXb3JrZXJFdmVudExvb3A7CiBj
bGFzcyBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjsKLWNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAK
IGVudW0gV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGUgeyB9OwogdXNpbmcgV29ya2xl
dEdsb2JhbFNjb3BlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8V29ya2xldEdsb2JhbFNj
b3BlSWRlbnRpZmllclR5cGU+OwpAQCAtNTcsNiArNTgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKKyAgICBBYnN0cmFjdEV2ZW50TG9vcCYgZXZlbnRMb29wKCkgZmluYWw7CisKICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51cmwoKTsgfQogICAg
IFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbDsKIApAQCAtMTI5LDYgKzEzMiw4IEBAIHByaXZh
dGU6CiAKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwogCisgICAgUmVmUHRy
PFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CisKICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3QgaW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CiAg
ICAgbXV0YWJsZSBXb3JrZXJFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382136</attachid>
            <date>2019-10-28 16:42:15 -0700</date>
            <delta_ts>2019-10-29 19:11:53 -0700</delta_ts>
            <desc>GTK+ / WPE build fix</desc>
            <filename>bug-203526-20191028164214.patch</filename>
            <type>text/plain</type>
            <size>23775</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTY3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTI4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrZXJFdmVu
dExvb3AgYW5kIHVzZSBpdCBpbiBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIFdvcmtlckV2ZW50TG9vcCB0byBpbXBsZW1lbnQgdGhlIHdvcmtlciBldmVudCBsb29wOgor
ICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlz
Lmh0bWwjd29ya2VyLWV2ZW50LWxvb3AtMgorCisgICAgICAgIEVhY2ggU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBub3cgcmV0dXJucyBhbiBBYnN0cmFjdEV2ZW50TG9vcCBzbyB0aGUgY29kZSB0aGF0
IG1heSBydW4gaW4gZWl0aGVyCisgICAgICAgIG1haW4gdGhyZWFkIG9yIGEgd29ya2VyIHRocmVh
ZCBjYW4gc2ltcGx5IGdldCB0aGUgZXZlbnQgbG9vcCBvYmplY3QgdmlhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuCisKKyAgICAgICAgRm9yIG5vdywgV29ya2VyRXZlbnRMb29wIGFsc28gaW1wbGVt
ZW50cyB0aGUgd29ya2xldCBldmVudCBsb29wOgorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd29ya2xldC1ldmVudC1sb29wCisK
KyAgICAgICAgV29ya2VyRXZlbnRMb29wIGlzIGFuIGFjdGl2ZSBET00gb2JqZWN0IHNpbmNlIGl0
J3MgdXNlZCBieSBhdCBtb3N0IG9uZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIHVu
bGlrZSBXaW5kb3dFdmVudExvb3AsIHdoaWNoIGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgZG9j
dW1lbnRzIGFuZCBuZWVkcyBhIGN1c3RvbSBsb2dpYyB0bworICAgICAgICBzdXNwZW5kIGFuZCBy
ZXN1bWUgYSBzdWJzZXQgb2YgdGFza3MgZW5xdWV1ZWQgdG8gdGhlIGV2ZW50IGxvb3AuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNo
YW5nZSBmb3Igbm93LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVu
UG9zc2libGUpOiBVc2UgV29ya2VyRXZlbnRMb29wLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vQWJzdHJhY3RFdmVudExvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRM
b29wOjpzdXNwZW5kKTogUmVtb3ZlZCBzaW5jZSBpdCdzIG5vdCBuZWVkZWQgZm9yIFdvcmtlckV2
ZW50TG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRMb29wOjpyZXN1bWUpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmV2ZW50TG9vcCk6IFJldHVybnMgQWJzdHJhY3RFdmVudExvb3AgYXMgaXQgbm93IG92
ZXJyaWRlcyB0aGUgYWJzdHJhY3QKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9uIGRlZmluZWQgaW4g
QWJzdHJhY3RFdmVudExvb3AuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRM
b29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudExvb3A6OnJlc3VtZSk6CisgICAgICAgICogZG9t
L1dpbmRvd0V2ZW50TG9vcC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjpXb3JrZXJFdmVudExvb3Ap
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6Omhhc1BlbmRpbmdBY3Rp
dml0eSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJFdmVudExvb3A6OnN1c3BlbmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2
ZW50TG9vcDo6cmVzdW1lKTogQWRkZWQuIFVubGlrZSBXaW5kb3dFdmVudExvb3AsIHdlIG9ubHkg
bmVlZCB0byBjaGVjaworICAgICAgICB3aGV0aGVyIG1fdGFza3MgaXMgZW1wdHkgb3Igbm90IHNp
bmNlIFdvcmtlckV2ZW50TG9vcCBpcyBhc3NvY2lhdGVkIHdpdGggYXQgbW9zdCBvbmUKKyAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBub3RlZCBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50TG9vcDo6c3RvcCk6IEFkZGVkLiBDbGVhciBtX3Rhc2tzIHRvIGZyZWUg
bWVtb3J5IGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50TG9vcDo6cnVuKTogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJF
dmVudExvb3AuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKTogQWRk
ZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmV2ZW50TG9vcCk6IEFkZGVkLiBJdCByZXR1cm5zIFdvcmtlckV2ZW50TG9v
cCBmb3Igbm93IHNpbmNlCisgICAgICAgIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGRpZmZl
cmVuY2UuCisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMTkt
MTAtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIGNv
ZGUgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhwZXJpbWVudApJbmRleDogU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yNDk4LDYgKzI0OTgsNyBAQCB3b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCiB3b3Jr
ZXJzL1dvcmtlci5jcHAKIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKK3dvcmtlcnMv
V29ya2VyRXZlbnRMb29wLmNwcAogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmNwcAkocmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCw5IEBAIHZvaWQg
RmV0Y2hCb2R5T3duZXI6OnJ1bk5ldHdvcmtUYXNrV2hlblAKICAgICBpZiAoIWNvbnRleHQgfHwg
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgp
KQogICAgICAgICByZXR1cm4gdGFzaygpOwogCi0gICAgaWYgKGlzPERvY3VtZW50PigqY29udGV4
dCkpIHsKLSAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgKmNvbnRleHQsIFtwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsK
LSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Y29udGV4dC0+cG9zdFRhc2soW3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
LSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGNvbnRleHQtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCAqY29udGV4dCwgW3Bl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92
ZSh0YXNrKV0geworICAgICAgICB0YXNrKCk7CisgICAgfSk7CiB9CiAKIEZldGNoQm9keU93bmVy
OjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25h
bDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzKQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA5OCw2ICsxMTA5OCw5IEBACiAJCTlC
MDk4QkUwMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpT
U3RyaW5nQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTdHJpbmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4
QkU3MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RXZlbnRMb29wLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0EzMjM2NzlBQ0YwMEI0NTA4NSAv
KiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIw
QUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dS
b290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAv
KiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExMTMzLDcgKzExMTM2LDYgQEAKIAkJOUI3NDI2MDgyMzRCRUE2RTAwREI1MkU5IC8q
IElkbGVEZWFkbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlRGVhZGxpbmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3NDI2MDkyMzRCRUE2RTAwREI1MkU5IC8qIElkbGVEZWFk
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGxlRGVhZGxpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5Qjc0MjYwQTIzNEJFQTZFMDBEQjUyRTkgLyogSWRsZURlYWRs
aW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBJZGxlRGVhZGxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5QjgyMDVBNTIzNTkyOUIxMDBDM0JGNDAgLyogQWJzdHJhY3RFdmVudExvb3AuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RFdmVudExvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5Qjg1NTMwNTIwRTczM0I1MDA5RUVGNEYgLyogRXZlbnRUYXJnZXRGYWN0
b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV2ZW50VGFyZ2V0
RmFjdG9yeS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTlCODY0RjAw
MjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWRsZVJlcXVlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCODY0
RjAxMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElkbGVS
ZXF1ZXN0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc0OCw2
ICsxNzc1MCw4IEBACiAJCQkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2RDhFIC8qIFdvcmtlckNvbnNv
bGVDbGllbnQuY3BwICovLAogCQkJCUE1NTYzOUQwMUM2RUZENTkwMDgwNkQ4RSAvKiBXb3JrZXJD
b25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUyQjM0OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtl
ckRlYnVnZ2VyUHJveHkuaCAqLywKKwkJCQk5QjBBQkNBMzIzNjc5QUNGMDBCNDUwODUgLyogV29y
a2VyRXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBNDIzNjc5QUNGMDBCNDUwODUgLyogV29y
a2VyRXZlbnRMb29wLmggKi8sCiAJCQkJQTNFMjY0MkUxNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtl
ckV2ZW50UXVldWUuY3BwICovLAogCQkJCUEzRTI2NDJGMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3Jr
ZXJFdmVudFF1ZXVlLmggKi8sCiAJCQkJMkU0MzQ2MzYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLywKQEAgLTI3NjcyLDcgKzI3Njc2LDcgQEAKIAkJCQk3Q0QwRTJC
RDFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuY3BwICovLAogCQkJCTdDRDBFMkJDMUY4
MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oICovLAogCQkJCTdDRDBFMkJFMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5pZGwgKi8sCi0JCQkJOUI4MjA1QTUyMzU5MjlCMTAwQzNC
RjQwIC8qIEFic3RyYWN0RXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBMTIzNjc5QUIzMDBC
NDUwODUgLyogQWJzdHJhY3RFdmVudExvb3AuaCAqLywKIAkJCQk3QzUyMjI5NzFFMURBRTE2MDAy
Q0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suY3BwICovLAogCQkJCTdDNTIyMjk4MUUxREFFMTYw
MDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5oICovLAogCQkJCTdDRDBCQTAyMUI4Rjc5Qzkw
MDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQWJzdHJhY3RFdmVudExvb3AuaAkocmV2aXNpb24gMjUxNjczKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDkgKzQ2LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBU
YXNrRnVuY3Rpb247CiAgICAgdmlydHVhbCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgVGFza0Z1bmN0aW9uJiYpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlc3VtZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAg
ICAgQWJzdHJhY3RFdmVudExvb3AoKSA9IGRlZmF1bHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTI5LDExICs2MTI5LDExIEBAIHZvaWQgRG9jdW1l
bnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoKQogICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp0
aGlzKTsKIH0KIAotV2luZG93RXZlbnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKK0Fic3Ry
YWN0RXZlbnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKIHsKICAgICBpZiAoIW1fZXZlbnRM
b29wKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHREb2N1bWVudCkKLSAgICAgICAgICAgIG1fZXZl
bnRMb29wID0gJm1fY29udGV4dERvY3VtZW50LT5ldmVudExvb3AoKTsKKyAgICAgICAgICAgIG1f
ZXZlbnRMb29wID0gbV9jb250ZXh0RG9jdW1lbnQtPm1fZXZlbnRMb29wOwogICAgICAgICBlbHNl
IC8vIEZJWE1FOiBEb2N1bWVudHMgb2Ygc2ltaWxhciBvcmlnaW4gc2hvdWxkIHNoYXJlIHRoZSBz
YW1lIGV2ZW50IGxvb3AuCiAgICAgICAgICAgICBtX2V2ZW50TG9vcCA9IFdpbmRvd0V2ZW50TG9v
cDo6Y3JlYXRlKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1
MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYyLDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBv
c3RUYXNrKFRhc2smJikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0
aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKLSAgICBXaW5kb3dFdmVudExvb3AmIGV2ZW50TG9vcCgp
OworICAgIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKTsKICAgICBXaW5kb3dFdmVudExv
b3AqIGV2ZW50TG9vcElmRXhpc3RzKCkgeyByZXR1cm4gbV9ldmVudExvb3AuZ2V0KCk7IH0KIAog
ICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciogc2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyKCkgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNp
b24gMjUxNjczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RFdmVudExvb3A7CiBjbGFz
cyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBFdmVudFF1ZXVl
OwpAQCAtODksNiArOTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1
dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgQWJzdHJhY3RFdmVudExv
b3AmIGV2ZW50TG9vcCgpID0gMDsKKwogICAgIHZpcnR1YWwgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNv
bnN0ID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAJKHJl
dmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxNiArNDMsMTQgQEAgdm9pZCBXaW5kb3dFdmVudExvb3A6
OnF1ZXVlVGFzayhUYXNrU291cgogICAgIG1fdGFza3MuYXBwZW5kKFRhc2sgeyBzb3VyY2UsIFdU
Rk1vdmUodGFzayksIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5pZGVudGlmaWVyKCkgfSk7
CiB9CiAKLXZvaWQgV2luZG93RXZlbnRMb29wOjpzdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKQordm9pZCBXaW5kb3dFdmVudExvb3A6OnN1c3BlbmQoRG9jdW1lbnQmKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKLXZvaWQgV2luZG93RXZlbnRMb29wOjpyZXN1bWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgV2luZG93RXZlbnRMb29wOjpy
ZXN1bWUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUKGlzPERvY3VtZW50Pihjb250ZXh0KSk7Ci0gICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAgaWYgKCFtX2RvY3VtZW50SWRlbnRp
ZmllcnNGb3JTdXNwZW5kZWRUYXNrcy5jb250YWlucyhkb2N1bWVudC5pZGVudGlmaWVyKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQw
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBxdWV1ZVRhc2soVGFza1NvdXJjZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFRhc2tGdW5jdGlvbiYmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3Vz
cGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN1bWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZChEb2N1
bWVudCYpOworICAgIHZvaWQgcmVzdW1lKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgV2lu
ZG93RXZlbnRMb29wKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRXZlbnRMb29wLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckV2ZW50TG9vcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRM
b29wLmgiCisKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXb3JrZXJFdmVu
dExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlckV2ZW50TG9vcChjb250ZXh0KSk7
Cit9CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK1JlZjxXb3JrZXJFdmVudExvb3A+
IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJFdmVudExvb3AoY29udGV4dCkpOworfQor
I2VuZGlmCisKK1dvcmtlckV2ZW50TG9vcDo6V29ya2VyRXZlbnRMb29wKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCit7Cit9
CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpxdWV1ZVRhc2soVGFza1NvdXJjZSBzb3VyY2UsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRhc2tGdW5jdGlvbiYmIGZ1bmN0aW9uKQor
eworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gJmNv
bnRleHQpOworICAgIG1fdGFza3MuYXBwZW5kKHsgc291cmNlLCBXVEZNb3ZlKGZ1bmN0aW9uKSB9
KTsKKyAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKK30KKworYm9vbCBXb3JrZXJFdmVudExv
b3A6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citjb25zdCBjaGFyKiBXb3JrZXJFdmVudExvb3A6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiAiV29ya2VyRXZlbnRMb29wIjsKK30KKwordm9pZCBXb3JrZXJFdmVu
dExvb3A6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKK30KKwordm9pZCBXb3JrZXJF
dmVudExvb3A6OnJlc3VtZSgpCit7CisgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7Cit9CisK
K3ZvaWQgV29ya2VyRXZlbnRMb29wOjpzdG9wKCkKK3sKKyAgICBtX3Rhc2tzLmNsZWFyKCk7Cit9
CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKQoreworICAg
IGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJUKGNv
bnRleHQpOworICAgIGlmIChtX2lzU2NoZWR1bGVkVG9SdW4gfHwgbV90YXNrcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IHRydWU7CisgICAg
Y29udGV4dC0+cG9zdFRhc2soW2V2ZW50TG9vcCA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgZXZlbnRMb29wLT5tX2lzU2NoZWR1bGVkVG9SdW4g
PSBmYWxzZTsKKyAgICAgICAgZXZlbnRMb29wLT5ydW4oKTsKKyAgICB9KTsKK30KKwordm9pZCBX
b3JrZXJFdmVudExvb3A6OnJ1bigpCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC0+YWN0aXZlRE9NT2Jq
ZWN0c0FyZVN0b3BwZWQoKSB8fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIHRhc2sgOiBtX3Rhc2tzKQorICAg
ICAgICB0YXNrLnRhc2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
YnN0cmFjdEV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2xl
dEdsb2JhbFNjb3BlOworCitjbGFzcyBXb3JrZXJFdmVudExvb3AgZmluYWwgOiBwdWJsaWMgQWJz
dHJhY3RFdmVudExvb3AsIHByaXZhdGUgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICAv
LyBFeHBsaWNpdGx5IHRha2UgV29ya2VyR2xvYmFsU2NvcGUgYW5kIFdvcmtsZXRHbG9iYWxTY29w
ZSBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4KKyAgICBzdGF0aWMgUmVmPFdvcmtlckV2ZW50
TG9vcD4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJik7CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKKyAgICBzdGF0aWMgUmVmPFdvcmtlckV2ZW50TG9vcD4gY3JlYXRlKFdvcmtsZXRH
bG9iYWxTY29wZSYpOworI2VuZGlmCisKKyAgICB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVGFza0Z1bmN0aW9uJiYpIG92ZXJyaWRlOworCitwcml2
YXRlOgorICAgIFdvcmtlckV2ZW50TG9vcChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisKKyAg
ICB2b2lkIHNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpOworICAgIHZvaWQgcnVuKCk7CisKKyAgICAv
LyBBY3RpdmVET01PYmplY3Q7CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVzdW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisK
KyAgICBzdHJ1Y3QgVGFzayB7CisgICAgICAgIFRhc2tTb3VyY2Ugc291cmNlOworICAgICAgICBU
YXNrRnVuY3Rpb24gdGFzazsKKyAgICB9OworCisgICAgVmVjdG9yPFRhc2s+IG1fdGFza3M7Cisg
ICAgYm9vbCBtX2lzU2NoZWR1bGVkVG9SdW4geyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAJKHJldmlzaW9uIDI1MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUgIldvcmtl
ckV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgi
CkBAIC0xMDQsNiArMTA1LDEzIEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2Nv
cGUoKQogICAgIHRocmVhZCgpLndvcmtlclJlcG9ydGluZ1Byb3h5KCkud29ya2VyR2xvYmFsU2Nv
cGVEZXN0cm95ZWQoKTsKIH0KIAorQWJzdHJhY3RFdmVudExvb3AmIFdvcmtlckdsb2JhbFNjb3Bl
OjpldmVudExvb3AoKQoreworICAgIGlmICghbV9ldmVudExvb3ApCisgICAgICAgIG1fZXZlbnRM
b29wID0gV29ya2VyRXZlbnRMb29wOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9ldmVu
dExvb3A7Cit9CisKIFN0cmluZyBXb3JrZXJHbG9iYWxTY29wZTo6b3JpZ2luKCkgY29uc3QKIHsK
ICAgICBhdXRvKiBzZWN1cml0eU9yaWdpbiA9IHRoaXMtPnNlY3VyaXR5T3JpZ2luKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAy
NTE2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ3J5cHRvOwogY2xhc3MgTWljcm90
YXNrUXVldWU7CiBjbGFzcyBQZXJmb3JtYW5jZTsKIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKK2Ns
YXNzIFdvcmtlckV2ZW50TG9vcDsKIGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBj
bGFzcyBXb3JrZXJMb2NhdGlvbjsKIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKQEAgLTY1LDYgKzY2
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgQWJzdHJh
Y3RFdmVudExvb3AmIGV2ZW50TG9vcCgpIGZpbmFsOworCiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KQEAgLTE5MSw2ICsxOTQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc09u
bGluZTsKICAgICBib29sIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5OwogCisgICAgUmVmUHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CisKICAgICBt
dXRhYmxlIFdvcmtlckV2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmPFNlY3VyaXR5
T3JpZ2luPiBtX3RvcE9yaWdpbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjUxNjczKQorKysgU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldv
cmtlckV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CkBAIC04OSw2ICs5MCwxMyBAQCBhdXRvIFdvcmtsZXRHbG9iYWxTY29w
ZTo6YWxsV29ya2xldEdsb2JhCiAgICAgcmV0dXJuIHNjb3BlczsKIH0KIAorQWJzdHJhY3RFdmVu
dExvb3AmIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZlbnRMb29wKCkKK3sKKyAgICBpZiAoIW1fZXZl
bnRMb29wKQorICAgICAgICBtX2V2ZW50TG9vcCA9IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKCp0
aGlzKTsKKyAgICByZXR1cm4gKm1fZXZlbnRMb29wOworfQorCiBTdHJpbmcgV29ya2xldEdsb2Jh
bFNjb3BlOjpvcmlnaW4oKSBjb25zdAogewogICAgIHJldHVybiBtX3RvcE9yaWdpbi0+dG9TdHJp
bmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5oCShyZXZpc2lvbiAyNTE2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC00MSw4ICs0MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFz
cyBXb3JrZXJFdmVudExvb3A7CiBjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjsKLWNsYXNz
IFNjcmlwdFNvdXJjZUNvZGU7CiAKIGVudW0gV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5
cGUgeyB9OwogdXNpbmcgV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8V29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGU+OwpAQCAtNTcsNiArNTgsOCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBBYnN0cmFjdEV2ZW50TG9vcCYgZXZlbnRM
b29wKCkgZmluYWw7CisKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY29kZS51cmwoKTsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbDsKIApAQCAt
MTI5LDYgKzEzMiw4IEBAIHByaXZhdGU6CiAKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9w
T3JpZ2luOwogCisgICAgUmVmUHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CisKICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1c3Qgc2F0
aXNmaWVzIHRoZSBjb21waWxlci4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxMTM2CiAgICAgbXV0YWJsZSBXb3JrZXJFdmVudFF1ZXVlIG1fZXZlbnRR
dWV1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382265</attachid>
            <date>2019-10-29 19:11:54 -0700</date>
            <delta_ts>2019-10-29 20:47:33 -0700</delta_ts>
            <desc>Updated per review comments</desc>
            <filename>bug-203526-20191029191153.patch</filename>
            <type>text/plain</type>
            <size>27806</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTI5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrZXJFdmVu
dExvb3AgYW5kIHVzZSBpdCBpbiBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIFdvcmtlckV2ZW50TG9vcCB0byBpbXBsZW1lbnQgdGhlIHdvcmtlciBldmVudCBsb29wOgor
ICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlz
Lmh0bWwjd29ya2VyLWV2ZW50LWxvb3AtMgorCisgICAgICAgIEVhY2ggU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBub3cgcmV0dXJucyBhbiBBYnN0cmFjdEV2ZW50TG9vcCBzbyB0aGUgY29kZSB0aGF0
IG1heSBydW4gaW4gZWl0aGVyCisgICAgICAgIG1haW4gdGhyZWFkIG9yIGEgd29ya2VyIHRocmVh
ZCBjYW4gc2ltcGx5IGdldCB0aGUgZXZlbnQgbG9vcCBvYmplY3QgdmlhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuCisKKyAgICAgICAgRm9yIG5vdywgV29ya2VyRXZlbnRMb29wIGFsc28gaW1wbGVt
ZW50cyB0aGUgd29ya2xldCBldmVudCBsb29wOgorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd29ya2xldC1ldmVudC1sb29wCisK
KyAgICAgICAgV29ya2VyRXZlbnRMb29wIGlzIGFuIGFjdGl2ZSBET00gb2JqZWN0IHNpbmNlIGl0
J3MgdXNlZCBieSBhdCBtb3N0IG9uZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIHVu
bGlrZSBXaW5kb3dFdmVudExvb3AsIHdoaWNoIGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgZG9j
dW1lbnRzIGFuZCBuZWVkcyBhIGN1c3RvbSBsb2dpYyB0bworICAgICAgICBzdXNwZW5kIGFuZCBy
ZXN1bWUgYSBzdWJzZXQgb2YgdGFza3MgZW5xdWV1ZWQgdG8gdGhlIGV2ZW50IGxvb3AuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNo
YW5nZSBmb3Igbm93LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVu
UG9zc2libGUpOiBVc2UgV29ya2VyRXZlbnRMb29wLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vQWJzdHJhY3RFdmVudExvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRM
b29wOjpzdXNwZW5kKTogUmVtb3ZlZCBzaW5jZSBpdCdzIG5vdCBuZWVkZWQgZm9yIFdvcmtlckV2
ZW50TG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRMb29wOjpyZXN1bWUpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmV2ZW50TG9vcCk6IFJldHVybnMgQWJzdHJhY3RFdmVudExvb3AgYXMgaXQgbm93IG92
ZXJyaWRlcyB0aGUgYWJzdHJhY3QKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9uIGRlZmluZWQgaW4g
QWJzdHJhY3RFdmVudExvb3AuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRM
b29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudExvb3A6OnJlc3VtZSk6CisgICAgICAgICogZG9t
L1dpbmRvd0V2ZW50TG9vcC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjpXb3JrZXJFdmVudExvb3Ap
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6Omhhc1BlbmRpbmdBY3Rp
dml0eSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJFdmVudExvb3A6OnN1c3BlbmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2
ZW50TG9vcDo6cmVzdW1lKTogQWRkZWQuIFVubGlrZSBXaW5kb3dFdmVudExvb3AsIHdlIG9ubHkg
bmVlZCB0byBjaGVjaworICAgICAgICB3aGV0aGVyIG1fdGFza3MgaXMgZW1wdHkgb3Igbm90IHNp
bmNlIFdvcmtlckV2ZW50TG9vcCBpcyBhc3NvY2lhdGVkIHdpdGggYXQgbW9zdCBvbmUKKyAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBub3RlZCBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50TG9vcDo6c3RvcCk6IEFkZGVkLiBDbGVhciBtX3Rhc2tzIHRvIGZyZWUg
bWVtb3J5IGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50TG9vcDo6cnVuKTogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJF
dmVudExvb3AuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKTogQWRk
ZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmV2ZW50TG9vcCk6IEFkZGVkLiBJdCByZXR1cm5zIFdvcmtlckV2ZW50TG9v
cCBmb3Igbm93IHNpbmNlCisgICAgICAgIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGRpZmZl
cmVuY2UuCisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMTkt
MTAtMjkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJB
bmltYXRpb24gc2hvdWxkIG5ldmVyIHByZXZlbnQgZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBj
YWNoZQpJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNTAwLDYgKzI1MDAsNyBAQCB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQuY3BwCiB3b3JrZXJzL1dvcmtlci5jcHAKIHdvcmtlcnMvV29ya2VyQ29uc29sZUNs
aWVudC5jcHAKK3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcAogd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcAogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKIHdvcmtlcnMvV29ya2Vy
SW5zcGVjdG9yUHJveHkuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDE1ICs0NSw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnJ1bk5ldHdvcmtUYXNrV2hlblAKICAg
ICBpZiAoIWNvbnRleHQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2Jq
ZWN0c0FyZVN1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm4gdGFzaygpOwogCi0gICAgaWYgKGlz
PERvY3VtZW50PigqY29udGV4dCkpIHsKLSAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250
ZXh0KS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgKmNvbnRl
eHQsIFtwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9
IFdURk1vdmUodGFzayldIHsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2soW3BlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAg
fQorICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3Jr
aW5nLCAqY29udGV4dCwgW3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0geworICAgICAgICB0YXNrKCk7CisgICAgfSk7CiB9
CiAKIEZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4m
JiBoZWFkZXJzKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEwMSw2
ICsxMTEwMSw5IEBACiAJCTlCMDk4QkUwMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zl
ckl0ZW1MaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNE
NkFGNjAwMkRENTYyIC8qIEpTU3RyaW5nQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCMDk4QkU3MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8q
IEFic3RyYWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFi
c3RyYWN0RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0Ez
MjM2NzlBQ0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9v
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8q
IERvY3VtZW50T3JTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVu
dE9yU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdC
MUYzRDJBQkEwMERBQUI2OSAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFk
b3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTM2LDcgKzExMTM5LDYgQEAKIAkJOUI3NDI2MDgy
MzRCRUE2RTAwREI1MkU5IC8qIElkbGVEZWFkbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlRGVh
ZGxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3NDI2MDkyMzRCRUE2RTAw
REI1MkU5IC8qIElkbGVEZWFkbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGxlRGVhZGxp
bmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjc0MjYwQTIzNEJFQTZFMDBE
QjUyRTkgLyogSWRsZURlYWRsaW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJZGxlRGVhZGxpbmUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5QjgyMDVBNTIzNTkyOUIxMDBDM0JGNDAgLyogQWJzdHJh
Y3RFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RFdmVudExvb3AuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjg1NTMwNTIwRTczM0I1MDA5RUVGNEYg
LyogRXZlbnRUYXJnZXRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0V2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTlCODY0RjAwMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSWRsZVJlcXVlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCODY0RjAxMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlv
bnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IElkbGVSZXF1ZXN0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNzc2NSw2ICsxNzc2Nyw4IEBACiAJCQkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2
RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuY3BwICovLAogCQkJCUE1NTYzOUQwMUM2RUZENTkw
MDgwNkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUyQjM0OUMxRkE0MTZG
ODAwOEI2MjQ2IC8qIFdvcmtlckRlYnVnZ2VyUHJveHkuaCAqLywKKwkJCQk5QjBBQkNBMzIzNjc5
QUNGMDBCNDUwODUgLyogV29ya2VyRXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBNDIzNjc5
QUNGMDBCNDUwODUgLyogV29ya2VyRXZlbnRMb29wLmggKi8sCiAJCQkJQTNFMjY0MkUxNDc0ODk5
MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuY3BwICovLAogCQkJCUEzRTI2NDJGMTQ3NDg5
OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmggKi8sCiAJCQkJMkU0MzQ2MzYwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLywKQEAgLTIyMTE2LDggKzIyMTIw
LDggQEAKIAkJCQlBMUY3NkIwRTFGNDRDMENGMDAxNEMzMTggLyogcGF5bWVudHJlcXVlc3QgKi8s
CiAJCQkJMURFRjA2QTIyMzNDMzJEQjAwRUUyMjhEIC8qIHBpY3R1cmVpbnBpY3R1cmUgKi8sCiAJ
CQkJMDcyQUUxREUxODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8sCi0JCQkJQ0RDMzEyRTAy
MkZDRDBCMDAwMTIwNEVDIC8qIHJlbW90ZXBsYXliYWNrICovLAogCQkJCTg5RjYwQjA4MTU3RjY4
MzUwMDc1RTE1NyAvKiBxdW90YSAqLywKKwkJCQlDREMzMTJFMDIyRkNEMEIwMDAxMjA0RUMgLyog
cmVtb3RlcGxheWJhY2sgKi8sCiAJCQkJQUEyQTVBQjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVj
aCAqLywKIAkJCQk0MUEwMjNFQTFBMzlEQjc5MDBGNzIyQ0YgLyogc3RyZWFtcyAqLywKIAkJCQlG
RDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVkaW8gKi8sCkBAIC0yNzcxNSw3ICsyNzcx
OSw3IEBACiAJCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAq
LywKIAkJCQk3Q0QwRTJCQzFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKIAkJ
CQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAotCQkJCTlC
ODIwNUE1MjM1OTI5QjEwMEMzQkY0MCAvKiBBYnN0cmFjdEV2ZW50TG9vcC5jcHAgKi8sCisJCQkJ
OUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29wLmggKi8sCiAJCQkJ
N0M1MjIyOTcxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNwcCAqLywKIAkJ
CQk3QzUyMjI5ODFFMURBRTE2MDAyQ0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suaCAqLywKIAkJ
CQk3Q0QwQkEwMjFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2su
Y3BwICovLApAQCAtMjkxNDksNyArMjkxNTMsNiBAQAogCQkJCUUxQzQxNURBMEY2NTVENkYwMDky
RDJGQiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2QjFGNDgxMTIyOThBMzdFMDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2OTgwM0QxMTMzNTQyRDAwODk0MTE1IC8q
IENSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlDREMzMTJFOTIyRkNEN0MwMDAx
MjA0RUMgLyogUmVtb3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NUNBMjhCMTMw
MzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOUFDQTk4MUYz
Q0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxNzJBRjZFMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjk4NDgsNyArMjk4NTEsNiBAQAogCQkJCUE4RUE3OUZBMEExOTE2REYwMEE4
RUY1RiAvKiBIVE1MRGlyZWN0b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdD
QjcwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZh
aWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEU1MDgyNDVFNTkw
MDFFOUFCQyAvKiBIVE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODY3MTIy
ODgzRTkwMEI4MUZGOCAvKiBIVE1MRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OEU2MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTg5MSw2ICsyOTg5Myw3IEBACiAJCQkJRTQ0NjEzQTUwQ0Q2MzMxMDAwRkFEQTc1IC8q
IEhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU2MUIwQkQ5RTEw
MDc3MTg0RSAvKiBIVE1MTWVkaWFFbGVtZW50RW51bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5
MzdGRThEMUIxRjY4MjEwMDhFQ0M1RCAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREMzMTJFQTIyRkNEN0M2MDAxMjA0RUMgLyogSFRNTE1lZGlh
RWxlbWVudFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGNDBBMTkx
NkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRjMx
RTA3NTFGQTNCNjJCMDBFMDU5QkEgLyogSFRNTE1lbnVJdGVtRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkJFOEUyQzcxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTYyOCw2ICszMTYzMSw4IEBACiAJCQkJQ0Q4QUNBODkx
RDIzN0FBMjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90ZUZyYW1l
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEgLyogUmVt
b3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE4OTQsNyArMzE4OTksNiBAQAog
CQkJCUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0
U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDMzEyRUEyMkZDRDdDNjAwMTIwNEVD
IC8qIEhUTUxNZWRpYUVsZW1lbnRSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJh
Y3RFdmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RF
dmVudExvb3AuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Fic3Ry
YWN0RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBUYXNrRnVuY3Rpb247CiAgICAgdmly
dHVhbCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
VGFza0Z1bmN0aW9uJiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgQWJzdHJhY3RFdmVudExvb3Ao
KSA9IGRlZmF1bHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAy
NTE3NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTI4LDExICs2MTI4LDExIEBAIHZvaWQgRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVy
RmlyZWQoKQogICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp0aGlzKTsKIH0KIAotV2luZG93RXZl
bnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKK0Fic3RyYWN0RXZlbnRMb29wJiBEb2N1bWVu
dDo6ZXZlbnRMb29wKCkKIHsKICAgICBpZiAoIW1fZXZlbnRMb29wKSB7CiAgICAgICAgIGlmICht
X2NvbnRleHREb2N1bWVudCkKLSAgICAgICAgICAgIG1fZXZlbnRMb29wID0gJm1fY29udGV4dERv
Y3VtZW50LT5ldmVudExvb3AoKTsKKyAgICAgICAgICAgIG1fZXZlbnRMb29wID0gbV9jb250ZXh0
RG9jdW1lbnQtPm1fZXZlbnRMb29wOwogICAgICAgICBlbHNlIC8vIEZJWE1FOiBEb2N1bWVudHMg
b2Ygc2ltaWxhciBvcmlnaW4gc2hvdWxkIHNoYXJlIHRoZSBzYW1lIGV2ZW50IGxvb3AuCiAgICAg
ICAgICAgICBtX2V2ZW50TG9vcCA9IFdpbmRvd0V2ZW50TG9vcDo6Y3JlYXRlKCk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIGNsYXNz
IElucHV0Q3Vyc29yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RXZl
bnRMb29wOwogY2xhc3MgQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyOwogY2xhc3MgQVhP
YmplY3RDYWNoZTsKIGNsYXNzIEF0dHI7CkBAIC0xMjgsNiArMTI5LDcgQEAgY2xhc3MgRm9ybUNv
bnRyb2xsZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEZ1bGxzY3Jl
ZW5NYW5hZ2VyOworY2xhc3MgR1BVQ2FudmFzQ29udGV4dDsKIGNsYXNzIEhUTUxBbGxDb2xsZWN0
aW9uOwogY2xhc3MgSFRNTEJvZHlFbGVtZW50OwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CkBA
IC0yMDUsNyArMjA3LDYgQEAgY2xhc3MgVmlzaXRlZExpbmtTdGF0ZTsKIGNsYXNzIFdlYkFuaW1h
dGlvbjsKIGNsYXNzIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ7Ci1jbGFzcyBHUFVDYW52YXNDb250ZXh0OwogY2xhc3MgV2luZG93RXZlbnRMb29w
OwogY2xhc3MgV2luZG93UHJveHk7CiBjbGFzcyBXb3JrbGV0OwpAQCAtMTA2MSw3ICsxMDYyLDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZp
bmFsOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgogCi0gICAgV2luZG93RXZlbnRMb29wJiBldmVudExvb3AoKTsKKyAgICBBYnN0cmFjdEV2
ZW50TG9vcCYgZXZlbnRMb29wKCkgZmluYWw7CiAgICAgV2luZG93RXZlbnRMb29wKiBldmVudExv
b3BJZkV4aXN0cygpIHsgcmV0dXJuIG1fZXZlbnRMb29wLmdldCgpOyB9CiAKICAgICBTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIqIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0
dXJuIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmdldCgpOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDI1MTc0MikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RXZlbnRMb29wOwogY2xhc3MgQ2FjaGVkU2Ny
aXB0OwogY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgRXZlbnRRdWV1ZTsKQEAgLTg5LDYg
KzkwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExv
b3AoKSA9IDA7CisKICAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCA9IDA7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCShyZXZpc2lvbiAyNTE3
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTYgKzQzLDE0IEBAIHZvaWQgV2luZG93RXZlbnRMb29wOjpxdWV1ZVRhc2so
VGFza1NvdXIKICAgICBtX3Rhc2tzLmFwcGVuZChUYXNrIHsgc291cmNlLCBXVEZNb3ZlKHRhc2sp
LCBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuaWRlbnRpZmllcigpIH0pOwogfQogCi12b2lk
IFdpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKK3ZvaWQg
V2luZG93RXZlbnRMb29wOjpzdXNwZW5kKERvY3VtZW50JikKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogfQogCi12b2lkIFdpbmRvd0V2ZW50TG9vcDo6cmVzdW1lKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpCit2b2lkIFdpbmRvd0V2ZW50TG9vcDo6cmVzdW1lKERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VChpczxEb2N1bWVudD4oY29udGV4dCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KGNvbnRleHQpOwogICAgIGlmICghbV9kb2N1bWVudElkZW50aWZpZXJzRm9yU3Vz
cGVuZGVkVGFza3MuY29udGFpbnMoZG9jdW1lbnQuaWRlbnRpZmllcigpKSkKICAgICAgICAgcmV0
dXJuOwogICAgIHNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1dpbmRvd0V2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9X
aW5kb3dFdmVudExvb3AuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1dpbmRvd0V2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBUYXNrRnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHN1c3BlbmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzdW1lKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoRG9jdW1lbnQmKTsKKyAg
ICB2b2lkIHJlc3VtZShEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIFdpbmRvd0V2ZW50TG9v
cCgpID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRM
b29wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50
TG9vcC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJF
dmVudExvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgorCisj
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V29ya2VyRXZlbnRMb29wPiBXb3Jr
ZXJFdmVudExvb3A6OmNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSYgY29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJFdmVudExvb3AoY29udGV4dCkpOworfQorCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCitSZWY8V29ya2VyRXZlbnRMb29wPiBXb3JrZXJFdmVu
dExvb3A6OmNyZWF0ZShXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV29ya2VyRXZlbnRMb29wKGNvbnRleHQpKTsKK30KKyNlbmRpZgorCitX
b3JrZXJFdmVudExvb3A6OldvcmtlckV2ZW50TG9vcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQoreworfQorCit2b2lkIFdv
cmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBUYXNrRnVuY3Rpb24mJiBmdW5jdGlvbikKK3sKKyAgICBpZiAo
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09ICZjb250ZXh0KTsKKyAg
ICBtX3Rhc2tzLmFwcGVuZCh7IHNvdXJjZSwgV1RGTW92ZShmdW5jdGlvbikgfSk7CisgICAgc2No
ZWR1bGVUb1J1bklmTmVlZGVkKCk7Cit9CisKK2Jvb2wgV29ya2VyRXZlbnRMb29wOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3QgY2hh
ciogV29ya2VyRXZlbnRMb29wOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIldvcmtlckV2ZW50TG9vcCI7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpzdXNw
ZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpy
ZXN1bWUoKQoreworICAgIHNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpOworfQorCit2b2lkIFdvcmtl
ckV2ZW50TG9vcDo6c3RvcCgpCit7CisgICAgbV90YXNrcy5jbGVhcigpOworfQorCit2b2lkIFdv
cmtlckV2ZW50TG9vcDo6c2NoZWR1bGVUb1J1bklmTmVlZGVkKCkKK3sKKyAgICBhdXRvKiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIEFTU0VSVChjb250ZXh0KTsKKyAg
ICBpZiAobV9pc1NjaGVkdWxlZFRvUnVuIHx8IG1fdGFza3MuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2lzU2NoZWR1bGVkVG9SdW4gPSB0cnVlOworICAgIGNvbnRleHQtPnBv
c3RUYXNrKFtldmVudExvb3AgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CisgICAgICAgIGV2ZW50TG9vcC0+bV9pc1NjaGVkdWxlZFRvUnVuID0gZmFsc2U7Cisg
ICAgICAgIGV2ZW50TG9vcC0+cnVuKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRM
b29wOjpydW4oKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9w
cGVkKCkgfHwgY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgZm9yIChhdXRvJiB0YXNrIDogbV90YXNrcykKKyAgICAgICAgdGFzay50
YXNrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVu
dExvb3AuaCIKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29w
ZTsKKworY2xhc3MgV29ya2VyRXZlbnRMb29wIGZpbmFsIDogcHVibGljIEFic3RyYWN0RXZlbnRM
b29wLCBwcml2YXRlIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgLy8gRXhwbGljaXRs
eSB0YWtlIFdvcmtlckdsb2JhbFNjb3BlIGFuZCBXb3JrbGV0R2xvYmFsU2NvcGUgZm9yIGRvY3Vt
ZW50YXRpb24gcHVycG9zZXMuCisgICAgc3RhdGljIFJlZjxXb3JrZXJFdmVudExvb3A+IGNyZWF0
ZShXb3JrZXJHbG9iYWxTY29wZSYpOworCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisg
ICAgc3RhdGljIFJlZjxXb3JrZXJFdmVudExvb3A+IGNyZWF0ZShXb3JrbGV0R2xvYmFsU2NvcGUm
KTsKKyNlbmRpZgorCisgICAgdm9pZCBxdWV1ZVRhc2soVGFza1NvdXJjZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFRhc2tGdW5jdGlvbiYmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBX
b3JrZXJFdmVudExvb3AoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworCisgICAgdm9pZCBzY2hl
ZHVsZVRvUnVuSWZOZWVkZWQoKTsKKyAgICB2b2lkIHJ1bigpOworCisgICAgLy8gQWN0aXZlRE9N
T2JqZWN0OworICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
c3VtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworCisgICAgc3RydWN0
IFRhc2sgeworICAgICAgICBUYXNrU291cmNlIHNvdXJjZTsKKyAgICAgICAgVGFza0Z1bmN0aW9u
IHRhc2s7CisgICAgfTsKKworICAgIFZlY3RvcjxUYXNrPiBtX3Rhc2tzOworICAgIGJvb2wgbV9p
c1NjaGVkdWxlZFRvUnVuIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCShy
ZXZpc2lvbiAyNTE3NDIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudExvb3Au
aCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29y
a2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgpAQCAtMTA0LDYg
KzEwNSwxNCBAQCBXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKICAgICB0
aHJlYWQoKS53b3JrZXJSZXBvcnRpbmdQcm94eSgpLndvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVk
KCk7CiB9CiAKK0Fic3RyYWN0RXZlbnRMb29wJiBXb3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29w
KCkKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworICAgIGlmICghbV9ldmVudExv
b3ApCisgICAgICAgIG1fZXZlbnRMb29wID0gV29ya2VyRXZlbnRMb29wOjpjcmVhdGUoKnRoaXMp
OworICAgIHJldHVybiAqbV9ldmVudExvb3A7Cit9CisKIFN0cmluZyBXb3JrZXJHbG9iYWxTY29w
ZTo6b3JpZ2luKCkgY29uc3QKIHsKICAgICBhdXRvKiBzZWN1cml0eU9yaWdpbiA9IHRoaXMtPnNl
Y3VyaXR5T3JpZ2luKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCShyZXZpc2lvbiAyNTE3NDIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0MiwxMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RXZlbnRMb29wOwogY2xhc3MgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOwogY2xhc3MgQ3J5cHRvOwogY2xhc3Mg
TWljcm90YXNrUXVldWU7CiBjbGFzcyBQZXJmb3JtYW5jZTsKIGNsYXNzIFNjaGVkdWxlZEFjdGlv
bjsKK2NsYXNzIFdvcmtlckV2ZW50TG9vcDsKIGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsKIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKQEAgLTY1
LDYgKzY3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
QWJzdHJhY3RFdmVudExvb3AmIGV2ZW50TG9vcCgpIGZpbmFsOworCiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KQEAgLTE5MSw2ICsxOTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc09ubGluZTsKICAgICBib29sIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5OwogCisgICAgUmVmUHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CisK
ICAgICBtdXRhYmxlIFdvcmtlckV2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmPFNl
Y3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC04OSw2ICs5MCwxMyBAQCBhdXRvIFdvcmtsZXRHbG9i
YWxTY29wZTo6YWxsV29ya2xldEdsb2JhCiAgICAgcmV0dXJuIHNjb3BlczsKIH0KIAorQWJzdHJh
Y3RFdmVudExvb3AmIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZlbnRMb29wKCkKK3sKKyAgICBpZiAo
IW1fZXZlbnRMb29wKQorICAgICAgICBtX2V2ZW50TG9vcCA9IFdvcmtlckV2ZW50TG9vcDo6Y3Jl
YXRlKCp0aGlzKTsKKyAgICByZXR1cm4gKm1fZXZlbnRMb29wOworfQorCiBTdHJpbmcgV29ya2xl
dEdsb2JhbFNjb3BlOjpvcmlnaW4oKSBjb25zdAogewogICAgIHJldHVybiBtX3RvcE9yaWdpbi0+
dG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5oCShyZXZpc2lvbiAyNTE3NDIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBACiAK
ICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CkBAIC00MSw4ICs0MSwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QWJzdHJhY3RFdmVudExvb3A7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlckV2ZW50TG9v
cDsKIGNsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOwotY2xhc3MgU2NyaXB0U291cmNlQ29k
ZTsKIAogZW51bSBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZSB7IH07CiB1c2luZyBX
b3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxXb3JrbGV0R2xv
YmFsU2NvcGVJZGVudGlmaWVyVHlwZT47CkBAIC01Nyw2ICs2MCw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKSBmaW5hbDsKKwog
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9
CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0IGZpbmFsOwogCkBAIC0xMjksNiArMTM0LDggQEAg
cHJpdmF0ZToKIAogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiAKKyAgICBS
ZWZQdHI8V29ya2VyRXZlbnRMb29wPiBtX2V2ZW50TG9vcDsKKwogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIG5vdCBpbXBsZW1lbnRlZCBwcm9wZXJseSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBp
bGVyLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEx
MzYKICAgICBtdXRhYmxlIFdvcmtlckV2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382274</attachid>
            <date>2019-10-29 20:47:35 -0700</date>
            <delta_ts>2019-10-29 22:20:04 -0700</delta_ts>
            <desc>Added an assertion</desc>
            <filename>bug-203526-20191029204734.patch</filename>
            <type>text/plain</type>
            <size>27864</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTI5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrZXJFdmVu
dExvb3AgYW5kIHVzZSBpdCBpbiBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIFdvcmtlckV2ZW50TG9vcCB0byBpbXBsZW1lbnQgdGhlIHdvcmtlciBldmVudCBsb29wOgor
ICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlz
Lmh0bWwjd29ya2VyLWV2ZW50LWxvb3AtMgorCisgICAgICAgIEVhY2ggU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBub3cgcmV0dXJucyBhbiBBYnN0cmFjdEV2ZW50TG9vcCBzbyB0aGUgY29kZSB0aGF0
IG1heSBydW4gaW4gZWl0aGVyCisgICAgICAgIG1haW4gdGhyZWFkIG9yIGEgd29ya2VyIHRocmVh
ZCBjYW4gc2ltcGx5IGdldCB0aGUgZXZlbnQgbG9vcCBvYmplY3QgdmlhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuCisKKyAgICAgICAgRm9yIG5vdywgV29ya2VyRXZlbnRMb29wIGFsc28gaW1wbGVt
ZW50cyB0aGUgd29ya2xldCBldmVudCBsb29wOgorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd29ya2xldC1ldmVudC1sb29wCisK
KyAgICAgICAgV29ya2VyRXZlbnRMb29wIGlzIGFuIGFjdGl2ZSBET00gb2JqZWN0IHNpbmNlIGl0
J3MgdXNlZCBieSBhdCBtb3N0IG9uZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIHVu
bGlrZSBXaW5kb3dFdmVudExvb3AsIHdoaWNoIGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgZG9j
dW1lbnRzIGFuZCBuZWVkcyBhIGN1c3RvbSBsb2dpYyB0bworICAgICAgICBzdXNwZW5kIGFuZCBy
ZXN1bWUgYSBzdWJzZXQgb2YgdGFza3MgZW5xdWV1ZWQgdG8gdGhlIGV2ZW50IGxvb3AuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNo
YW5nZSBmb3Igbm93LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVu
UG9zc2libGUpOiBVc2UgV29ya2VyRXZlbnRMb29wLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vQWJzdHJhY3RFdmVudExvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRM
b29wOjpzdXNwZW5kKTogUmVtb3ZlZCBzaW5jZSBpdCdzIG5vdCBuZWVkZWQgZm9yIFdvcmtlckV2
ZW50TG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRMb29wOjpyZXN1bWUpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmV2ZW50TG9vcCk6IFJldHVybnMgQWJzdHJhY3RFdmVudExvb3AgYXMgaXQgbm93IG92
ZXJyaWRlcyB0aGUgYWJzdHJhY3QKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9uIGRlZmluZWQgaW4g
QWJzdHJhY3RFdmVudExvb3AuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRM
b29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudExvb3A6OnJlc3VtZSk6CisgICAgICAgICogZG9t
L1dpbmRvd0V2ZW50TG9vcC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjpXb3JrZXJFdmVudExvb3Ap
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6Omhhc1BlbmRpbmdBY3Rp
dml0eSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjph
Y3RpdmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJFdmVudExvb3A6OnN1c3BlbmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2
ZW50TG9vcDo6cmVzdW1lKTogQWRkZWQuIFVubGlrZSBXaW5kb3dFdmVudExvb3AsIHdlIG9ubHkg
bmVlZCB0byBjaGVjaworICAgICAgICB3aGV0aGVyIG1fdGFza3MgaXMgZW1wdHkgb3Igbm90IHNp
bmNlIFdvcmtlckV2ZW50TG9vcCBpcyBhc3NvY2lhdGVkIHdpdGggYXQgbW9zdCBvbmUKKyAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBub3RlZCBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50TG9vcDo6c3RvcCk6IEFkZGVkLiBDbGVhciBtX3Rhc2tzIHRvIGZyZWUg
bWVtb3J5IGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50TG9vcDo6cnVuKTogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJF
dmVudExvb3AuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKTogQWRk
ZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmV2ZW50TG9vcCk6IEFkZGVkLiBJdCByZXR1cm5zIFdvcmtlckV2ZW50TG9v
cCBmb3Igbm93IHNpbmNlCisgICAgICAgIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGRpZmZl
cmVuY2UuCisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMTkt
MTAtMjkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJB
bmltYXRpb24gc2hvdWxkIG5ldmVyIHByZXZlbnQgZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBj
YWNoZQpJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNTAwLDYgKzI1MDAsNyBAQCB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQuY3BwCiB3b3JrZXJzL1dvcmtlci5jcHAKIHdvcmtlcnMvV29ya2VyQ29uc29sZUNs
aWVudC5jcHAKK3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcAogd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcAogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKIHdvcmtlcnMvV29ya2Vy
SW5zcGVjdG9yUHJveHkuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDE1ICs0NSw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnJ1bk5ldHdvcmtUYXNrV2hlblAKICAg
ICBpZiAoIWNvbnRleHQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2Jq
ZWN0c0FyZVN1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm4gdGFzaygpOwogCi0gICAgaWYgKGlz
PERvY3VtZW50PigqY29udGV4dCkpIHsKLSAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250
ZXh0KS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgKmNvbnRl
eHQsIFtwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9
IFdURk1vdmUodGFzayldIHsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2soW3BlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAg
fQorICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3Jr
aW5nLCAqY29udGV4dCwgW3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0geworICAgICAgICB0YXNrKCk7CisgICAgfSk7CiB9
CiAKIEZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4m
JiBoZWFkZXJzKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEwMSw2
ICsxMTEwMSw5IEBACiAJCTlCMDk4QkUwMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zl
ckl0ZW1MaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNE
NkFGNjAwMkRENTYyIC8qIEpTU3RyaW5nQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCMDk4QkU3MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8q
IEFic3RyYWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFi
c3RyYWN0RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0Ez
MjM2NzlBQ0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9v
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8q
IERvY3VtZW50T3JTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVu
dE9yU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdC
MUYzRDJBQkEwMERBQUI2OSAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFk
b3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTM2LDcgKzExMTM5LDYgQEAKIAkJOUI3NDI2MDgy
MzRCRUE2RTAwREI1MkU5IC8qIElkbGVEZWFkbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlRGVh
ZGxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3NDI2MDkyMzRCRUE2RTAw
REI1MkU5IC8qIElkbGVEZWFkbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGxlRGVhZGxp
bmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjc0MjYwQTIzNEJFQTZFMDBE
QjUyRTkgLyogSWRsZURlYWRsaW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJZGxlRGVhZGxpbmUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5QjgyMDVBNTIzNTkyOUIxMDBDM0JGNDAgLyogQWJzdHJh
Y3RFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RFdmVudExvb3AuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjg1NTMwNTIwRTczM0I1MDA5RUVGNEYg
LyogRXZlbnRUYXJnZXRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0V2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTlCODY0RjAwMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSWRsZVJlcXVlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCODY0RjAxMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlv
bnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IElkbGVSZXF1ZXN0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNzc2NSw2ICsxNzc2Nyw4IEBACiAJCQkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2
RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuY3BwICovLAogCQkJCUE1NTYzOUQwMUM2RUZENTkw
MDgwNkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUyQjM0OUMxRkE0MTZG
ODAwOEI2MjQ2IC8qIFdvcmtlckRlYnVnZ2VyUHJveHkuaCAqLywKKwkJCQk5QjBBQkNBMzIzNjc5
QUNGMDBCNDUwODUgLyogV29ya2VyRXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBNDIzNjc5
QUNGMDBCNDUwODUgLyogV29ya2VyRXZlbnRMb29wLmggKi8sCiAJCQkJQTNFMjY0MkUxNDc0ODk5
MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuY3BwICovLAogCQkJCUEzRTI2NDJGMTQ3NDg5
OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmggKi8sCiAJCQkJMkU0MzQ2MzYwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLywKQEAgLTIyMTE2LDggKzIyMTIw
LDggQEAKIAkJCQlBMUY3NkIwRTFGNDRDMENGMDAxNEMzMTggLyogcGF5bWVudHJlcXVlc3QgKi8s
CiAJCQkJMURFRjA2QTIyMzNDMzJEQjAwRUUyMjhEIC8qIHBpY3R1cmVpbnBpY3R1cmUgKi8sCiAJ
CQkJMDcyQUUxREUxODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8sCi0JCQkJQ0RDMzEyRTAy
MkZDRDBCMDAwMTIwNEVDIC8qIHJlbW90ZXBsYXliYWNrICovLAogCQkJCTg5RjYwQjA4MTU3RjY4
MzUwMDc1RTE1NyAvKiBxdW90YSAqLywKKwkJCQlDREMzMTJFMDIyRkNEMEIwMDAxMjA0RUMgLyog
cmVtb3RlcGxheWJhY2sgKi8sCiAJCQkJQUEyQTVBQjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVj
aCAqLywKIAkJCQk0MUEwMjNFQTFBMzlEQjc5MDBGNzIyQ0YgLyogc3RyZWFtcyAqLywKIAkJCQlG
RDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVkaW8gKi8sCkBAIC0yNzcxNSw3ICsyNzcx
OSw3IEBACiAJCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAq
LywKIAkJCQk3Q0QwRTJCQzFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKIAkJ
CQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAotCQkJCTlC
ODIwNUE1MjM1OTI5QjEwMEMzQkY0MCAvKiBBYnN0cmFjdEV2ZW50TG9vcC5jcHAgKi8sCisJCQkJ
OUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29wLmggKi8sCiAJCQkJ
N0M1MjIyOTcxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNwcCAqLywKIAkJ
CQk3QzUyMjI5ODFFMURBRTE2MDAyQ0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suaCAqLywKIAkJ
CQk3Q0QwQkEwMjFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2su
Y3BwICovLApAQCAtMjkxNDksNyArMjkxNTMsNiBAQAogCQkJCUUxQzQxNURBMEY2NTVENkYwMDky
RDJGQiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2QjFGNDgxMTIyOThBMzdFMDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2OTgwM0QxMTMzNTQyRDAwODk0MTE1IC8q
IENSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlDREMzMTJFOTIyRkNEN0MwMDAx
MjA0RUMgLyogUmVtb3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NUNBMjhCMTMw
MzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOUFDQTk4MUYz
Q0NEQUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxNzJBRjZFMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjk4NDgsNyArMjk4NTEsNiBAQAogCQkJCUE4RUE3OUZBMEExOTE2REYwMEE4
RUY1RiAvKiBIVE1MRGlyZWN0b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdD
QjcwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZh
aWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEU1MDgyNDVFNTkw
MDFFOUFCQyAvKiBIVE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODY3MTIy
ODgzRTkwMEI4MUZGOCAvKiBIVE1MRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjE5OEU2MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTg5MSw2ICsyOTg5Myw3IEBACiAJCQkJRTQ0NjEzQTUwQ0Q2MzMxMDAwRkFEQTc1IC8q
IEhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU2MUIwQkQ5RTEw
MDc3MTg0RSAvKiBIVE1MTWVkaWFFbGVtZW50RW51bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5
MzdGRThEMUIxRjY4MjEwMDhFQ0M1RCAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREMzMTJFQTIyRkNEN0M2MDAxMjA0RUMgLyogSFRNTE1lZGlh
RWxlbWVudFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGNDBBMTkx
NkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRjMx
RTA3NTFGQTNCNjJCMDBFMDU5QkEgLyogSFRNTE1lbnVJdGVtRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkJFOEUyQzcxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTYyOCw2ICszMTYzMSw4IEBACiAJCQkJQ0Q4QUNBODkx
RDIzN0FBMjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90ZUZyYW1l
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3Rl
UGxheWJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAv
KiBSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEgLyogUmVt
b3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE4OTQsNyArMzE4OTksNiBAQAog
CQkJCUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0
U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDMzEyRUEyMkZDRDdDNjAwMTIwNEVD
IC8qIEhUTUxNZWRpYUVsZW1lbnRSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJh
Y3RFdmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RF
dmVudExvb3AuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Fic3Ry
YWN0RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBUYXNrRnVuY3Rpb247CiAgICAgdmly
dHVhbCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
VGFza0Z1bmN0aW9uJiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgQWJzdHJhY3RFdmVudExvb3Ao
KSA9IGRlZmF1bHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAy
NTE3NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTI4LDExICs2MTI4LDExIEBAIHZvaWQgRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVy
RmlyZWQoKQogICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp0aGlzKTsKIH0KIAotV2luZG93RXZl
bnRMb29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKK0Fic3RyYWN0RXZlbnRMb29wJiBEb2N1bWVu
dDo6ZXZlbnRMb29wKCkKIHsKICAgICBpZiAoIW1fZXZlbnRMb29wKSB7CiAgICAgICAgIGlmICht
X2NvbnRleHREb2N1bWVudCkKLSAgICAgICAgICAgIG1fZXZlbnRMb29wID0gJm1fY29udGV4dERv
Y3VtZW50LT5ldmVudExvb3AoKTsKKyAgICAgICAgICAgIG1fZXZlbnRMb29wID0gbV9jb250ZXh0
RG9jdW1lbnQtPm1fZXZlbnRMb29wOwogICAgICAgICBlbHNlIC8vIEZJWE1FOiBEb2N1bWVudHMg
b2Ygc2ltaWxhciBvcmlnaW4gc2hvdWxkIHNoYXJlIHRoZSBzYW1lIGV2ZW50IGxvb3AuCiAgICAg
ICAgICAgICBtX2V2ZW50TG9vcCA9IFdpbmRvd0V2ZW50TG9vcDo6Y3JlYXRlKCk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIGNsYXNz
IElucHV0Q3Vyc29yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RXZl
bnRMb29wOwogY2xhc3MgQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyOwogY2xhc3MgQVhP
YmplY3RDYWNoZTsKIGNsYXNzIEF0dHI7CkBAIC0xMjgsNiArMTI5LDcgQEAgY2xhc3MgRm9ybUNv
bnRyb2xsZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEZ1bGxzY3Jl
ZW5NYW5hZ2VyOworY2xhc3MgR1BVQ2FudmFzQ29udGV4dDsKIGNsYXNzIEhUTUxBbGxDb2xsZWN0
aW9uOwogY2xhc3MgSFRNTEJvZHlFbGVtZW50OwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CkBA
IC0yMDUsNyArMjA3LDYgQEAgY2xhc3MgVmlzaXRlZExpbmtTdGF0ZTsKIGNsYXNzIFdlYkFuaW1h
dGlvbjsKIGNsYXNzIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ7Ci1jbGFzcyBHUFVDYW52YXNDb250ZXh0OwogY2xhc3MgV2luZG93RXZlbnRMb29w
OwogY2xhc3MgV2luZG93UHJveHk7CiBjbGFzcyBXb3JrbGV0OwpAQCAtMTA2MSw3ICsxMDYyLDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZp
bmFsOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgogCi0gICAgV2luZG93RXZlbnRMb29wJiBldmVudExvb3AoKTsKKyAgICBBYnN0cmFjdEV2
ZW50TG9vcCYgZXZlbnRMb29wKCkgZmluYWw7CiAgICAgV2luZG93RXZlbnRMb29wKiBldmVudExv
b3BJZkV4aXN0cygpIHsgcmV0dXJuIG1fZXZlbnRMb29wLmdldCgpOyB9CiAKICAgICBTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIqIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0
dXJuIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmdldCgpOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDI1MTc0MikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFic3RyYWN0RXZlbnRMb29wOwogY2xhc3MgQ2FjaGVkU2Ny
aXB0OwogY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgRXZlbnRRdWV1ZTsKQEAgLTg5LDYg
KzkwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExv
b3AoKSA9IDA7CisKICAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCA9IDA7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCShyZXZpc2lvbiAyNTE3
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTYgKzQzLDE0IEBAIHZvaWQgV2luZG93RXZlbnRMb29wOjpxdWV1ZVRhc2so
VGFza1NvdXIKICAgICBtX3Rhc2tzLmFwcGVuZChUYXNrIHsgc291cmNlLCBXVEZNb3ZlKHRhc2sp
LCBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuaWRlbnRpZmllcigpIH0pOwogfQogCi12b2lk
IFdpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKK3ZvaWQg
V2luZG93RXZlbnRMb29wOjpzdXNwZW5kKERvY3VtZW50JikKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogfQogCi12b2lkIFdpbmRvd0V2ZW50TG9vcDo6cmVzdW1lKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpCit2b2lkIFdpbmRvd0V2ZW50TG9vcDo6cmVzdW1lKERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VChpczxEb2N1bWVudD4oY29udGV4dCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KGNvbnRleHQpOwogICAgIGlmICghbV9kb2N1bWVudElkZW50aWZpZXJzRm9yU3Vz
cGVuZGVkVGFza3MuY29udGFpbnMoZG9jdW1lbnQuaWRlbnRpZmllcigpKSkKICAgICAgICAgcmV0
dXJuOwogICAgIHNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1dpbmRvd0V2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9X
aW5kb3dFdmVudExvb3AuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1dpbmRvd0V2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBUYXNrRnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHN1c3BlbmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzdW1lKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoRG9jdW1lbnQmKTsKKyAg
ICB2b2lkIHJlc3VtZShEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIFdpbmRvd0V2ZW50TG9v
cCgpID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRM
b29wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50
TG9vcC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJF
dmVudExvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgorCisj
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V29ya2VyRXZlbnRMb29wPiBXb3Jr
ZXJFdmVudExvb3A6OmNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSYgY29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJFdmVudExvb3AoY29udGV4dCkpOworfQorCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCitSZWY8V29ya2VyRXZlbnRMb29wPiBXb3JrZXJFdmVu
dExvb3A6OmNyZWF0ZShXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV29ya2VyRXZlbnRMb29wKGNvbnRleHQpKTsKK30KKyNlbmRpZgorCitX
b3JrZXJFdmVudExvb3A6OldvcmtlckV2ZW50TG9vcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQoreworfQorCit2b2lkIFdv
cmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBUYXNrRnVuY3Rpb24mJiBmdW5jdGlvbikKK3sKKyAgICBpZiAo
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSAmY29udGV4dCk7Cisg
ICAgbV90YXNrcy5hcHBlbmQoeyBzb3VyY2UsIFdURk1vdmUoZnVuY3Rpb24pIH0pOworICAgIHNj
aGVkdWxlVG9SdW5JZk5lZWRlZCgpOworfQorCitib29sIFdvcmtlckV2ZW50TG9vcDo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2NvbnN0IGNo
YXIqIFdvcmtlckV2ZW50TG9vcDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICJXb3JrZXJFdmVudExvb3AiOworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6c3Vz
cGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6
cmVzdW1lKCkKK3sKKyAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKK30KKwordm9pZCBXb3Jr
ZXJFdmVudExvb3A6OnN0b3AoKQoreworICAgIG1fdGFza3MuY2xlYXIoKTsKK30KKwordm9pZCBX
b3JrZXJFdmVudExvb3A6OnNjaGVkdWxlVG9SdW5JZk5lZWRlZCgpCit7CisgICAgYXV0byogY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBBU1NFUlQoY29udGV4dCk7Cisg
ICAgaWYgKG1faXNTY2hlZHVsZWRUb1J1biB8fCBtX3Rhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9pc1NjaGVkdWxlZFRvUnVuID0gdHJ1ZTsKKyAgICBjb250ZXh0LT5w
b3N0VGFzayhbZXZlbnRMb29wID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgeworICAgICAgICBldmVudExvb3AtPm1faXNTY2hlZHVsZWRUb1J1biA9IGZhbHNlOwor
ICAgICAgICBldmVudExvb3AtPnJ1bigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckV2ZW50
TG9vcDo6cnVuKCkKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3Rv
cHBlZCgpIHx8IGNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGZvciAoYXV0byYgdGFzayA6IG1fdGFza3MpCisgICAgICAgIHRhc2su
dGFzaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFic3RyYWN0RXZl
bnRMb29wLmgiCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2Nv
cGU7CisKK2NsYXNzIFdvcmtlckV2ZW50TG9vcCBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdEV2ZW50
TG9vcCwgcHJpdmF0ZSBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIC8vIEV4cGxpY2l0
bHkgdGFrZSBXb3JrZXJHbG9iYWxTY29wZSBhbmQgV29ya2xldEdsb2JhbFNjb3BlIGZvciBkb2N1
bWVudGF0aW9uIHB1cnBvc2VzLgorICAgIHN0YXRpYyBSZWY8V29ya2VyRXZlbnRMb29wPiBjcmVh
dGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
ICAgIHN0YXRpYyBSZWY8V29ya2VyRXZlbnRMb29wPiBjcmVhdGUoV29ya2xldEdsb2JhbFNjb3Bl
Jik7CisjZW5kaWYKKworICAgIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBUYXNrRnVuY3Rpb24mJikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAg
V29ya2VyRXZlbnRMb29wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKworICAgIHZvaWQgc2No
ZWR1bGVUb1J1bklmTmVlZGVkKCk7CisgICAgdm9pZCBydW4oKTsKKworICAgIC8vIEFjdGl2ZURP
TU9iamVjdDsKKyAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXN1bWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKworICAgIHN0cnVj
dCBUYXNrIHsKKyAgICAgICAgVGFza1NvdXJjZSBzb3VyY2U7CisgICAgICAgIFRhc2tGdW5jdGlv
biB0YXNrOworICAgIH07CisKKyAgICBWZWN0b3I8VGFzaz4gbV90YXNrczsKKyAgICBib29sIG1f
aXNTY2hlZHVsZWRUb1J1biB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAko
cmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldv
cmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKQEAgLTEwNCw2
ICsxMDUsMTQgQEAgV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAgICAg
dGhyZWFkKCkud29ya2VyUmVwb3J0aW5nUHJveHkoKS53b3JrZXJHbG9iYWxTY29wZURlc3Ryb3ll
ZCgpOwogfQogCitBYnN0cmFjdEV2ZW50TG9vcCYgV29ya2VyR2xvYmFsU2NvcGU6OmV2ZW50TG9v
cCgpCit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBpZiAoIW1fZXZlbnRM
b29wKQorICAgICAgICBtX2V2ZW50TG9vcCA9IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKCp0aGlz
KTsKKyAgICByZXR1cm4gKm1fZXZlbnRMb29wOworfQorCiBTdHJpbmcgV29ya2VyR2xvYmFsU2Nv
cGU6Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSB0aGlzLT5z
ZWN1cml0eU9yaWdpbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0cmFjdEV2ZW50TG9vcDsKIGNsYXNzIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKIGNsYXNzIENyeXB0bzsKIGNsYXNz
IE1pY3JvdGFza1F1ZXVlOwogY2xhc3MgUGVyZm9ybWFuY2U7CiBjbGFzcyBTY2hlZHVsZWRBY3Rp
b247CitjbGFzcyBXb3JrZXJFdmVudExvb3A7CiBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyOwogY2xhc3MgV29ya2VyTG9jYXRpb247CiBjbGFzcyBXb3JrZXJOYXZpZ2F0b3I7CkBAIC02
NSw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAg
IEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKSBmaW5hbDsKKwogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICBTdHJpbmcgb3JpZ2luKCkg
Y29uc3QgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CkBAIC0xOTEsNiArMTk1LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNPbmxpbmU7CiAgICAgYm9vbCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeTsKIAorICAgIFJlZlB0cjxXb3JrZXJFdmVudExvb3A+IG1fZXZlbnRMb29wOwor
CiAgICAgbXV0YWJsZSBXb3JrZXJFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKIAogICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlICJXb3JrZXJFdmVudExvb3AuaCIKICNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtODksNiArOTAsMTMgQEAgYXV0byBXb3JrbGV0R2xv
YmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYQogICAgIHJldHVybiBzY29wZXM7CiB9CiAKK0Fic3Ry
YWN0RXZlbnRMb29wJiBXb3JrbGV0R2xvYmFsU2NvcGU6OmV2ZW50TG9vcCgpCit7CisgICAgaWYg
KCFtX2V2ZW50TG9vcCkKKyAgICAgICAgbV9ldmVudExvb3AgPSBXb3JrZXJFdmVudExvb3A6OmNy
ZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuICptX2V2ZW50TG9vcDsKK30KKwogU3RyaW5nIFdvcmts
ZXRHbG9iYWxTY29wZTo6b3JpZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90b3BPcmlnaW4t
PnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMSBAQAog
CiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIldvcmtlckV2ZW50
UXVldWUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgpAQCAtNDEsOCArNDEsMTEgQEAK
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFic3RyYWN0RXZlbnRMb29wOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBXb3JrZXJFdmVudExv
b3A7CiBjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjsKLWNsYXNzIFNjcmlwdFNvdXJjZUNv
ZGU7CiAKIGVudW0gV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGUgeyB9OwogdXNpbmcg
V29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8V29ya2xldEds
b2JhbFNjb3BlSWRlbnRpZmllclR5cGU+OwpAQCAtNTcsNiArNjAsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKKyAgICBBYnN0cmFjdEV2ZW50TG9vcCYgZXZlbnRMb29wKCkgZmluYWw7CisK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51cmwoKTsg
fQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbDsKIApAQCAtMTI5LDYgKzEzNCw4IEBA
IHByaXZhdGU6CiAKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwogCisgICAg
UmVmUHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CisKICAgICAvLyBGSVhNRTogVGhp
cyBpcyBub3QgaW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21w
aWxlci4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
MTM2CiAgICAgbXV0YWJsZSBXb3JrZXJFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382281</attachid>
            <date>2019-10-29 22:20:08 -0700</date>
            <delta_ts>2019-10-30 12:38:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203526-20191029222007.patch</filename>
            <type>text/plain</type>
            <size>27799</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTI5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrZXJFdmVu
dExvb3AgYW5kIHVzZSBpdCBpbiBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzUyNgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZGVk
IFdvcmtlckV2ZW50TG9vcCB0byBpbXBsZW1lbnQgdGhlIHdvcmtlciBldmVudCBsb29wOgorICAg
ICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0
bWwjd29ya2VyLWV2ZW50LWxvb3AtMgorCisgICAgICAgIEVhY2ggU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCBub3cgcmV0dXJucyBhbiBBYnN0cmFjdEV2ZW50TG9vcCBzbyB0aGUgY29kZSB0aGF0IG1h
eSBydW4gaW4gZWl0aGVyCisgICAgICAgIG1haW4gdGhyZWFkIG9yIGEgd29ya2VyIHRocmVhZCBj
YW4gc2ltcGx5IGdldCB0aGUgZXZlbnQgbG9vcCBvYmplY3QgdmlhIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuCisKKyAgICAgICAgRm9yIG5vdywgV29ya2VyRXZlbnRMb29wIGFsc28gaW1wbGVtZW50
cyB0aGUgd29ya2xldCBldmVudCBsb29wOgorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjd29ya2xldC1ldmVudC1sb29wCisKKyAg
ICAgICAgV29ya2VyRXZlbnRMb29wIGlzIGFuIGFjdGl2ZSBET00gb2JqZWN0IHNpbmNlIGl0J3Mg
dXNlZCBieSBhdCBtb3N0IG9uZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIHVubGlr
ZSBXaW5kb3dFdmVudExvb3AsIHdoaWNoIGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgZG9jdW1l
bnRzIGFuZCBuZWVkcyBhIGN1c3RvbSBsb2dpYyB0bworICAgICAgICBzdXNwZW5kIGFuZCByZXN1
bWUgYSBzdWJzZXQgb2YgdGFza3MgZW5xdWV1ZWQgdG8gdGhlIGV2ZW50IGxvb3AuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5n
ZSBmb3Igbm93LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9z
c2libGUpOiBVc2UgV29ya2VyRXZlbnRMb29wLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
QWJzdHJhY3RFdmVudExvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRMb29w
OjpzdXNwZW5kKTogUmVtb3ZlZCBzaW5jZSBpdCdzIG5vdCBuZWVkZWQgZm9yIFdvcmtlckV2ZW50
TG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RXZlbnRMb29wOjpyZXN1bWUpOiBEaXR0
by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmV2ZW50TG9vcCk6IFJldHVybnMgQWJzdHJhY3RFdmVudExvb3AgYXMgaXQgbm93IG92ZXJy
aWRlcyB0aGUgYWJzdHJhY3QKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9uIGRlZmluZWQgaW4gQWJz
dHJhY3RFdmVudExvb3AuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV2luZG93RXZlbnRMb29w
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50TG9vcDo6c3VzcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXaW5kb3dFdmVudExvb3A6OnJlc3VtZSk6CisgICAgICAgICogZG9tL1dp
bmRvd0V2ZW50TG9vcC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjpXb3JrZXJFdmVudExvb3ApOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudExvb3A6Omhhc1BlbmRpbmdBY3Rpdml0
eSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRMb29wOjphY3Rp
dmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJF
dmVudExvb3A6OnN1c3BlbmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50
TG9vcDo6cmVzdW1lKTogQWRkZWQuIFVubGlrZSBXaW5kb3dFdmVudExvb3AsIHdlIG9ubHkgbmVl
ZCB0byBjaGVjaworICAgICAgICB3aGV0aGVyIG1fdGFza3MgaXMgZW1wdHkgb3Igbm90IHNpbmNl
IFdvcmtlckV2ZW50TG9vcCBpcyBhc3NvY2lhdGVkIHdpdGggYXQgbW9zdCBvbmUKKyAgICAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBub3RlZCBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50TG9vcDo6c3RvcCk6IEFkZGVkLiBDbGVhciBtX3Rhc2tzIHRvIGZyZWUgbWVt
b3J5IGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRM
b29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckV2ZW50TG9vcDo6cnVuKTogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVu
dExvb3AuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKTogQWRkZWQu
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xv
YmFsU2NvcGU6OmV2ZW50TG9vcCk6IEFkZGVkLiBJdCByZXR1cm5zIFdvcmtlckV2ZW50TG9vcCBm
b3Igbm93IHNpbmNlCisgICAgICAgIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGRpZmZlcmVu
Y2UuCisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisKIDIwMTktMTAt
MjkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBbmlt
YXRpb24gc2hvdWxkIG5ldmVyIHByZXZlbnQgZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNo
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNTAwLDYgKzI1MDAsNyBAQCB3b3JrZXJz
L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJU
aHJlYWQuY3BwCiB3b3JrZXJzL1dvcmtlci5jcHAKIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVu
dC5jcHAKK3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcAogd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmNwcAogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKIHdvcmtlcnMvV29ya2VySW5z
cGVjdG9yUHJveHkuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE1
ICs0NSw5IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnJ1bk5ldHdvcmtUYXNrV2hlblAKICAgICBp
ZiAoIWNvbnRleHQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm4gdGFzaygpOwogCi0gICAgaWYgKGlzPERv
Y3VtZW50PigqY29udGV4dCkpIHsKLSAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0
KS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgKmNvbnRleHQs
IFtwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdU
Rk1vdmUodGFzayldIHsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2soW3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQor
ICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5n
LCAqY29udGV4dCwgW3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMp
LCB0YXNrID0gV1RGTW92ZSh0YXNrKV0geworICAgICAgICB0YXNrKCk7CisgICAgfSk7CiB9CiAK
IEZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBo
ZWFkZXJzKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEwMSw2ICsx
MTEwMSw5IEBACiAJCTlCMDk4QkUwMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0
ZW1MaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVy
SXRlbUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTYxRjNENkFG
NjAwMkRENTYyIC8qIEpTU3RyaW5nQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMDk4QkU3MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFi
c3RyYWN0RXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3Ry
YWN0RXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEFCQ0EzMjM2
NzlBQ0YwMEI0NTA4NSAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERv
Y3VtZW50T3JTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9y
U2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdCMUYz
RDJBQkEwMERBQUI2OSAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dS
b290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTM2LDcgKzExMTM5LDYgQEAKIAkJOUI3NDI2MDgyMzRC
RUE2RTAwREI1MkU5IC8qIElkbGVEZWFkbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGxlRGVhZGxp
bmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3NDI2MDkyMzRCRUE2RTAwREI1
MkU5IC8qIElkbGVEZWFkbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGxlRGVhZGxpbmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjc0MjYwQTIzNEJFQTZFMDBEQjUy
RTkgLyogSWRsZURlYWRsaW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJZGxlRGVhZGxpbmUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5QjgyMDVBNTIzNTkyOUIxMDBDM0JGNDAgLyogQWJzdHJhY3RF
dmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RFdmVudExvb3AuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjg1NTMwNTIwRTczM0I1MDA5RUVGNEYgLyog
RXZlbnRUYXJnZXRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0V2ZW50VGFyZ2V0RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTlCODY0RjAwMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSWRsZVJlcXVlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCODY0RjAxMjM0QzAyOEEwMDZEMTBFQiAvKiBJZGxlUmVxdWVzdE9wdGlvbnMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IElkbGVSZXF1ZXN0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzc2NSw2ICsxNzc2Nyw4IEBACiAJCQkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2RDhF
IC8qIFdvcmtlckNvbnNvbGVDbGllbnQuY3BwICovLAogCQkJCUE1NTYzOUQwMUM2RUZENTkwMDgw
NkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmggKi8sCiAJCQkJQTUyQjM0OUMxRkE0MTZGODAw
OEI2MjQ2IC8qIFdvcmtlckRlYnVnZ2VyUHJveHkuaCAqLywKKwkJCQk5QjBBQkNBMzIzNjc5QUNG
MDBCNDUwODUgLyogV29ya2VyRXZlbnRMb29wLmNwcCAqLywKKwkJCQk5QjBBQkNBNDIzNjc5QUNG
MDBCNDUwODUgLyogV29ya2VyRXZlbnRMb29wLmggKi8sCiAJCQkJQTNFMjY0MkUxNDc0ODk5MTAw
NUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuY3BwICovLAogCQkJCUEzRTI2NDJGMTQ3NDg5OTEw
MDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmggKi8sCiAJCQkJMkU0MzQ2MzYwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLywKQEAgLTIyMTE2LDggKzIyMTIwLDgg
QEAKIAkJCQlBMUY3NkIwRTFGNDRDMENGMDAxNEMzMTggLyogcGF5bWVudHJlcXVlc3QgKi8sCiAJ
CQkJMURFRjA2QTIyMzNDMzJEQjAwRUUyMjhEIC8qIHBpY3R1cmVpbnBpY3R1cmUgKi8sCiAJCQkJ
MDcyQUUxREUxODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8sCi0JCQkJQ0RDMzEyRTAyMkZD
RDBCMDAwMTIwNEVDIC8qIHJlbW90ZXBsYXliYWNrICovLAogCQkJCTg5RjYwQjA4MTU3RjY4MzUw
MDc1RTE1NyAvKiBxdW90YSAqLywKKwkJCQlDREMzMTJFMDIyRkNEMEIwMDAxMjA0RUMgLyogcmVt
b3RlcGxheWJhY2sgKi8sCiAJCQkJQUEyQTVBQjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVjaCAq
LywKIAkJCQk0MUEwMjNFQTFBMzlEQjc5MDBGNzIyQ0YgLyogc3RyZWFtcyAqLywKIAkJCQlGRDMx
NUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVkaW8gKi8sCkBAIC0yNzcxNSw3ICsyNzcxOSw3
IEBACiAJCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywK
IAkJCQk3Q0QwRTJCQzFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKIAkJCQk3
Q0QwRTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAotCQkJCTlCODIw
NUE1MjM1OTI5QjEwMEMzQkY0MCAvKiBBYnN0cmFjdEV2ZW50TG9vcC5jcHAgKi8sCisJCQkJOUIw
QUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29wLmggKi8sCiAJCQkJN0M1
MjIyOTcxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNwcCAqLywKIAkJCQk3
QzUyMjI5ODFFMURBRTE2MDAyQ0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suaCAqLywKIAkJCQk3
Q0QwQkEwMjFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3Bw
ICovLApAQCAtMjkxNDksNyArMjkxNTMsNiBAQAogCQkJCUUxQzQxNURBMEY2NTVENkYwMDkyRDJG
QiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2QjFGNDgxMTIyOThBMzdFMDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFu
c2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2OTgwM0QxMTMzNTQyRDAwODk0MTE1IC8qIENS
dW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NUNBMjhCMTMwMzY1
RjgwMEU5OUFEOSAvKiBDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOUFDQTk4MUYzQ0NE
QUQwMEYzQUEwOSAvKiBDcnlwdG9BZXNLZXlBbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxNzJBRjZFMTgwRjI0QzYwMEZCQURCOSAvKiBDcnlwdG9BbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovLApAQCAtMjk4NDgsNyArMjk4NTEsNiBAQAogCQkJCUE4RUE3OUZBMEExOTE2REYwMEE4RUY1
RiAvKiBIVE1MRGlyZWN0b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQjcw
QTE5MkI5QzAwQThFRjVGIC8qIEhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEVBNzlGNzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTERMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZhaWxh
YmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEU1MDgyNDVFNTkwMDFF
OUFCQyAvKiBIVE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODY3MTIyODgz
RTkwMEI4MUZGOCAvKiBIVE1MRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RjE5OEU2MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yOTg5MSw2ICsyOTg5Myw3IEBACiAJCQkJRTQ0NjEzQTUwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhU
TUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU2MUIwQkQ5RTEwMDc3
MTg0RSAvKiBIVE1MTWVkaWFFbGVtZW50RW51bXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5MzdG
RThEMUIxRjY4MjEwMDhFQ0M1RCAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDREMzMTJFQTIyRkNEN0M2MDAxMjA0RUMgLyogSFRNTE1lZGlhRWxl
bWVudFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGNDBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRjMxRTA3
NTFGQTNCNjJCMDBFMDU5QkEgLyogSFRNTE1lbnVJdGVtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkJFOEUyQzcxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTYyOCw2ICszMTYzMSw4IEBACiAJCQkJQ0Q4QUNBODkxRDIz
N0FBMjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREMzMTJFOTIyRkNEN0MwMDAxMjA0RUMgLyogUmVtb3RlUGxh
eWJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQzMxMkVCMjJGQ0Q3QzkwMDEyMDRFQyAvKiBS
ZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzNBMTU1NDIxNzdBNDI2MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3Zl
Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE4OTQsNyArMzE4OTksNiBAQAogCQkJ
CUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDMzEyRUEyMkZDRDdDNjAwMTIwNEVDIC8q
IEhUTUxNZWRpYUVsZW1lbnRSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFD
NzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RF
dmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RFdmVu
dExvb3AuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0
RXZlbnRMb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGljOgogICAg
IHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBUYXNrRnVuY3Rpb247CiAgICAgdmlydHVh
bCB2b2lkIHF1ZXVlVGFzayhUYXNrU291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVGFz
a0Z1bmN0aW9uJiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgQWJzdHJhY3RFdmVudExvb3AoKSA9
IGRlZmF1bHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNTE3
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MTI4LDExICs2MTI4LDEyIEBAIHZvaWQgRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmly
ZWQoKQogICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp0aGlzKTsKIH0KIAotV2luZG93RXZlbnRM
b29wJiBEb2N1bWVudDo6ZXZlbnRMb29wKCkKK0Fic3RyYWN0RXZlbnRMb29wJiBEb2N1bWVudDo6
ZXZlbnRMb29wKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9l
dmVudExvb3ApIHsKICAgICAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQotICAgICAgICAgICAg
bV9ldmVudExvb3AgPSAmbV9jb250ZXh0RG9jdW1lbnQtPmV2ZW50TG9vcCgpOworICAgICAgICAg
ICAgbV9ldmVudExvb3AgPSBtX2NvbnRleHREb2N1bWVudC0+bV9ldmVudExvb3A7CiAgICAgICAg
IGVsc2UgLy8gRklYTUU6IERvY3VtZW50cyBvZiBzaW1pbGFyIG9yaWdpbiBzaG91bGQgc2hhcmUg
dGhlIHNhbWUgZXZlbnQgbG9vcC4KICAgICAgICAgICAgIG1fZXZlbnRMb29wID0gV2luZG93RXZl
bnRMb29wOjpjcmVhdGUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDYgKzg4LDcgQEAgY2xhc3MgSW5wdXRDdXJzb3I7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQWJzdHJhY3RFdmVudExvb3A7CiBjbGFzcyBBcHBsaWNhdGlvblN0YXRl
Q2hhbmdlTGlzdGVuZXI7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgQXR0cjsKQEAgLTEy
OCw2ICsxMjksNyBAQCBjbGFzcyBGb3JtQ29udHJvbGxlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
RnJhbWVWaWV3OwogY2xhc3MgRnVsbHNjcmVlbk1hbmFnZXI7CitjbGFzcyBHUFVDYW52YXNDb250
ZXh0OwogY2xhc3MgSFRNTEFsbENvbGxlY3Rpb247CiBjbGFzcyBIVE1MQm9keUVsZW1lbnQ7CiBj
bGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKQEAgLTIwNSw3ICsyMDcsNiBAQCBjbGFzcyBWaXNpdGVk
TGlua1N0YXRlOwogY2xhc3MgV2ViQW5pbWF0aW9uOwogY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKLWNsYXNzIEdQVUNhbnZhc0NvbnRl
eHQ7CiBjbGFzcyBXaW5kb3dFdmVudExvb3A7CiBjbGFzcyBXaW5kb3dQcm94eTsKIGNsYXNzIFdv
cmtsZXQ7CkBAIC0xMDYxLDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBvc3RUYXNrKFRhc2smJikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNv
bnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKLSAgICBXaW5kb3dFdmVudExvb3AmIGV2
ZW50TG9vcCgpOworICAgIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKSBmaW5hbDsKICAg
ICBXaW5kb3dFdmVudExvb3AqIGV2ZW50TG9vcElmRXhpc3RzKCkgeyByZXR1cm4gbV9ldmVudExv
b3AuZ2V0KCk7IH0KIAogICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciogc2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyKCkgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAkocmV2aXNpb24gMjUxNzQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBjbGFzcyBT
Y3JpcHRDYWxsU3RhY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RF
dmVudExvb3A7CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBj
bGFzcyBFdmVudFF1ZXVlOwpAQCAtODksNiArOTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwg
QWJzdHJhY3RFdmVudExvb3AmIGV2ZW50TG9vcCgpID0gMDsKKwogICAgIHZpcnR1YWwgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpIGNvbnN0ID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dpbmRv
d0V2ZW50TG9vcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2
ZW50TG9vcC5jcHAJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaW5k
b3dFdmVudExvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNiArNDMsMTQgQEAgdm9pZCBX
aW5kb3dFdmVudExvb3A6OnF1ZXVlVGFzayhUYXNrU291cgogICAgIG1fdGFza3MuYXBwZW5kKFRh
c2sgeyBzb3VyY2UsIFdURk1vdmUodGFzayksIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5p
ZGVudGlmaWVyKCkgfSk7CiB9CiAKLXZvaWQgV2luZG93RXZlbnRMb29wOjpzdXNwZW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKQordm9pZCBXaW5kb3dFdmVudExvb3A6OnN1c3BlbmQoRG9jdW1l
bnQmKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKLXZvaWQgV2luZG93RXZl
bnRMb29wOjpyZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgV2lu
ZG93RXZlbnRMb29wOjpyZXN1bWUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGlzPERvY3VtZW50Pihjb250ZXh0KSk7Ci0gICAg
YXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAgaWYgKCFt
X2RvY3VtZW50SWRlbnRpZmllcnNGb3JTdXNwZW5kZWRUYXNrcy5jb250YWlucyhkb2N1bWVudC5p
ZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm47CiAgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVk
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5oCShyZXZpc2lvbiAyNTE3
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBxdWV1ZVRhc2soVGFza1Nv
dXJjZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRhc2tGdW5jdGlvbiYmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgc3VzcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZv
aWQgc3VzcGVuZChEb2N1bWVudCYpOworICAgIHZvaWQgcmVzdW1lKERvY3VtZW50Jik7CiAKIHBy
aXZhdGU6CiAgICAgV2luZG93RXZlbnRMb29wKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV29ya2VyRXZlbnRMb29wLmgiCisKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1JlZjxXb3JrZXJFdmVudExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmtlckdsb2Jh
bFNjb3BlJiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlckV2ZW50
TG9vcChjb250ZXh0KSk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK1JlZjxX
b3JrZXJFdmVudExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmtsZXRHbG9iYWxTY29w
ZSYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJFdmVudExvb3Ao
Y29udGV4dCkpOworfQorI2VuZGlmCisKK1dvcmtlckV2ZW50TG9vcDo6V29ya2VyRXZlbnRMb29w
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
JmNvbnRleHQpCit7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRMb29wOjpxdWV1ZVRhc2soVGFza1Nv
dXJjZSBzb3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRhc2tGdW5jdGlv
biYmIGZ1bmN0aW9uKQoreworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250
ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpID09ICZjb250ZXh0KTsKKyAgICBtX3Rhc2tzLmFwcGVuZCh7IHNvdXJjZSwgV1RG
TW92ZShmdW5jdGlvbikgfSk7CisgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7Cit9CisKK2Nv
bnN0IGNoYXIqIFdvcmtlckV2ZW50TG9vcDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICJXb3JrZXJFdmVudExvb3AiOworfQorCit2b2lkIFdvcmtlckV2ZW50TG9v
cDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXb3JrZXJFdmVudExvb3A6OnN0b3AoKQoreworICAg
IG1fdGFza3MuY2xlYXIoKTsKK30KKwordm9pZCBXb3JrZXJFdmVudExvb3A6OnNjaGVkdWxlVG9S
dW5JZk5lZWRlZCgpCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKKyAgICBBU1NFUlQoY29udGV4dCk7CisgICAgaWYgKG1faXNTY2hlZHVsZWRUb1J1biB8
fCBtX3Rhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1NjaGVkdWxl
ZFRvUnVuID0gdHJ1ZTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhbZXZlbnRMb29wID0gbWFrZVJl
ZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICBldmVudExvb3At
Pm1faXNTY2hlZHVsZWRUb1J1biA9IGZhbHNlOworICAgICAgICBldmVudExvb3AtPnJ1bigpOwor
ICAgIH0pOworfQorCit2b2lkIFdvcmtlckV2ZW50TG9vcDo6cnVuKCkKK3sKKyAgICBhdXRvKiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCB8fCBj
b250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpIHx8IGNvbnRleHQtPmFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYg
dGFzayA6IG1fdGFza3MpCisgICAgICAgIHRhc2sudGFzaygpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29w
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3Au
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9v
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFic3RyYWN0RXZlbnRMb29wLmgiCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2VyR2xvYmFs
U2NvcGU7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CisKK2NsYXNzIFdvcmtlckV2ZW50TG9v
cCBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdEV2ZW50TG9vcCwgcHJpdmF0ZSBBY3RpdmVET01PYmpl
Y3QgeworcHVibGljOgorICAgIC8vIEV4cGxpY2l0bHkgdGFrZSBXb3JrZXJHbG9iYWxTY29wZSBh
bmQgV29ya2xldEdsb2JhbFNjb3BlIGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLgorICAgIHN0
YXRpYyBSZWY8V29ya2VyRXZlbnRMb29wPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKwor
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIHN0YXRpYyBSZWY8V29ya2VyRXZlbnRM
b29wPiBjcmVhdGUoV29ya2xldEdsb2JhbFNjb3BlJik7CisjZW5kaWYKKworICAgIHZvaWQgcXVl
dWVUYXNrKFRhc2tTb3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUYXNrRnVuY3Rpb24m
Jikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV29ya2VyRXZlbnRMb29wKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKworICAgIHZvaWQgc2NoZWR1bGVUb1J1bklmTmVlZGVk
KCk7CisgICAgdm9pZCBydW4oKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdDsKKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIG92ZXJyaWRlOworICAgIHZvaWQgcmVzdW1lKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisKKyAgICBzdHJ1Y3QgVGFzayB7
CisgICAgICAgIFRhc2tTb3VyY2Ugc291cmNlOworICAgICAgICBUYXNrRnVuY3Rpb24gdGFzazsK
KyAgICB9OworCisgICAgVmVjdG9yPFRhc2s+IG1fdGFza3M7CisgICAgYm9vbCBtX2lzU2NoZWR1
bGVkVG9SdW4geyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9u
IDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJMb2Fk
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCkBAIC0xMDQsNiArMTA1LDE0
IEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogICAgIHRocmVhZCgp
LndvcmtlclJlcG9ydGluZ1Byb3h5KCkud29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKTsKIH0K
IAorQWJzdHJhY3RFdmVudExvb3AmIFdvcmtlckdsb2JhbFNjb3BlOjpldmVudExvb3AoKQorewor
ICAgIEFTU0VSVChpc0NvbnRleHRUaHJlYWQoKSk7CisgICAgaWYgKCFtX2V2ZW50TG9vcCkKKyAg
ICAgICAgbV9ldmVudExvb3AgPSBXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSgqdGhpcyk7CisgICAg
cmV0dXJuICptX2V2ZW50TG9vcDsKK30KKwogU3RyaW5nIFdvcmtlckdsb2JhbFNjb3BlOjpvcmln
aW4oKSBjb25zdAogewogICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gdGhpcy0+c2VjdXJpdHlP
cmlnaW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmgJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RFdmVudExvb3A7CiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiBjbGFzcyBDcnlwdG87CiBjbGFzcyBNaWNyb3Rh
c2tRdWV1ZTsKIGNsYXNzIFBlcmZvcm1hbmNlOwogY2xhc3MgU2NoZWR1bGVkQWN0aW9uOworY2xh
c3MgV29ya2VyRXZlbnRMb29wOwogY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjsKIGNs
YXNzIFdvcmtlckxvY2F0aW9uOwogY2xhc3MgV29ya2VyTmF2aWdhdG9yOwpAQCAtNjUsNiArNjcs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBBYnN0cmFj
dEV2ZW50TG9vcCYgZXZlbnRMb29wKCkgZmluYWw7CisKICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0IGZp
bmFsOwogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQpAQCAtMTkxLDYgKzE5NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT25s
aW5lOwogICAgIGJvb2wgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3k7CiAKKyAgICBSZWZQdHI8V29ya2VyRXZlbnRMb29wPiBtX2V2ZW50TG9vcDsKKwogICAgIG11
dGFibGUgV29ya2VyRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7CiAKICAgICBSZWY8U2VjdXJpdHlP
cmlnaW4+IG1fdG9wT3JpZ2luOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNTE3NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV29y
a2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0xvY2suaD4KQEAgLTg5LDYgKzkwLDEzIEBAIGF1dG8gV29ya2xldEdsb2JhbFNjb3Bl
OjphbGxXb3JrbGV0R2xvYmEKICAgICByZXR1cm4gc2NvcGVzOwogfQogCitBYnN0cmFjdEV2ZW50
TG9vcCYgV29ya2xldEdsb2JhbFNjb3BlOjpldmVudExvb3AoKQoreworICAgIGlmICghbV9ldmVu
dExvb3ApCisgICAgICAgIG1fZXZlbnRMb29wID0gV29ya2VyRXZlbnRMb29wOjpjcmVhdGUoKnRo
aXMpOworICAgIHJldHVybiAqbV9ldmVudExvb3A7Cit9CisKIFN0cmluZyBXb3JrbGV0R2xvYmFs
U2NvcGU6Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdG9wT3JpZ2luLT50b1N0cmlu
ZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmgJKHJldmlzaW9uIDI1MTc0MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXb3JrZXJFdmVudExvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KQEAgLTQxLDggKzQxLDExIEBACiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBYnN0cmFj
dEV2ZW50TG9vcDsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgV29ya2VyRXZlbnRMb29wOwogY2xh
c3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXI7Ci1jbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCiBl
bnVtIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlIHsgfTsKIHVzaW5nIFdvcmtsZXRH
bG9iYWxTY29wZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29w
ZUlkZW50aWZpZXJUeXBlPjsKQEAgLTU3LDYgKzYwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCisgICAgQWJzdHJhY3RFdmVudExvb3AmIGV2ZW50TG9vcCgpIGZpbmFsOworCiAgICAgY29u
c3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KICAgICBT
dHJpbmcgb3JpZ2luKCkgY29uc3QgZmluYWw7CiAKQEAgLTEyOSw2ICsxMzQsOCBAQCBwcml2YXRl
OgogCiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKIAorICAgIFJlZlB0cjxX
b3JrZXJFdmVudExvb3A+IG1fZXZlbnRMb29wOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IGltcGxlbWVudGVkIHByb3Blcmx5LCBpdCBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTEzNgogICAg
IG11dGFibGUgV29ya2VyRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>