<?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>187284</bug_id>
          
          <creation_ts>2018-07-02 19:01:07 -0700</creation_ts>
          <short_desc>Nullptr crash accessing Document in GenericEventQueue::dispatchOneEvent()</short_desc>
          <delta_ts>2018-07-30 11:17:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=187371</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=187303</see_also>
          <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>
          <dependson>188025</dependson>
    
    <dependson>188094</dependson>
    
    <dependson>188097</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jeremyj-wk</cc>
    
    <cc>jer.noble</cc>
    
    <cc>realdawei</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1438750</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-02 19:01:07 -0700</bug_when>
    <thetext>e.g.

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   WebCore                       	0x000000018aa74988 WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;) + 76 (Document.h:1933)
1   WebCore                       	0x000000018aa74984 WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;) + 72 (EventTarget.cpp:258)
2   WebCore                       	0x000000018aa707ec WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;) + 596 (EventTarget.cpp:231)
3   WebCore                       	0x000000018aa74920 WebCore::EventTarget::dispatchEvent(WebCore::Event&amp;) + 116 (EventTarget.cpp:190)
4   WebCore                       	0x000000018aa77744 WebCore::GenericEventQueue::dispatchOneEvent() + 168 (GenericEventQueue.cpp:68)
5   WebCore                       	0x000000018ae5876c WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimerFired() + 208 (Function.h:56)
6   WebCore                       	0x0000000189e0c044 WebCore::ThreadTimers::sharedTimerFiredInternal() + 352 (ThreadTimers.cpp:118)
7   WebCore                       	0x0000000189e0bed0 WebCore::timerFired(__CFRunLoopTimer*, void*) + 28 (MainThreadSharedTimerCF.cpp:74)
8   CoreFoundation                	0x0000000181c84aa8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28 (CFRunLoop.c:1832)
9   CoreFoundation                	0x0000000181c8476c __CFRunLoopDoTimer + 864 (CFRunLoop.c:2415)
10  CoreFoundation                	0x0000000181c84010 __CFRunLoopDoTimers + 248 (CFRunLoop.c:2562)
11  CoreFoundation                	0x0000000181c81b60 __CFRunLoopRun + 2168 (CFRunLoop.c:0)
12  CoreFoundation                	0x0000000181ba1da8 CFRunLoopRunSpecific + 552 (CFRunLoop.c:3245)
13  Foundation                    	0x000000018261a464 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304 (NSRunLoop.m:367)
14  Foundation                    	0x000000018266c0cc -[NSRunLoop(NSRunLoop) run] + 88 (NSRunLoop.m:389)
15  libxpc.dylib                  	0x000000018194db54 _xpc_objc_main + 516 (main.m:167)
16  libxpc.dylib                  	0x000000018194fc28 xpc_main + 180 (init.c:1476)
17  com.apple.WebKit.WebContent   	0x0000000102ef35ac main + 380 (XPCServiceMain.mm:148)
18  libdyld.dylib                 	0x0000000181635fc0 start + 4

&lt;rdar://problem/38184148&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439042</commentid>
    <comment_count>1</comment_count>
      <attachid>344236</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-03 16:04:14 -0700</bug_when>
    <thetext>Created attachment 344236
Fixes the crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439053</commentid>
    <comment_count>2</comment_count>
      <attachid>344236</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-07-03 16:28:16 -0700</bug_when>
    <thetext>Comment on attachment 344236
Fixes the crash

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

As mentioned in irc, I think you also need to block HTMLMediaElement::prepareForLoad() and HTMLMediaElement::prepareToPlay() so setting video.src and calling video.load() don&apos;t cause media loading and related events.

It would be nice to have a test of a media element inside a template element, although that can be added later if you prefer.

&gt; Source/WebCore/ChangeLog:56
&gt; +        inside a stopped document, which should never is never correct and causes this crash down the line.

Nit: &quot;which should never is never correct&quot;

&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:696
&gt; +    ASSERT(scriptExecutionContext());
&gt; +    if (!scriptExecutionContext()-&gt;activeDOMObjectsAreStopped()) {

Nit: I can&apos;t tell from the diff, but can you change this to an early return?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439066</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-03 17:03:40 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #2)
&gt; Comment on attachment 344236 [details]
&gt; Fixes the crash
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=344236&amp;action=review
&gt; 
&gt; As mentioned in irc, I think you also need to block
&gt; HTMLMediaElement::prepareForLoad() and HTMLMediaElement::prepareToPlay() so
&gt; setting video.src and calling video.load() don&apos;t cause media loading and
&gt; related events.

Will do.

&gt; It would be nice to have a test of a media element inside a template
&gt; element, although that can be added later if you prefer.

We do have a test already: LayoutTests/media/track/track-display-before-controls-crash.html

&gt; &gt; Source/WebCore/ChangeLog:56
&gt; &gt; +        inside a stopped document, which should never is never correct and causes this crash down the line.
&gt; 
&gt; Nit: &quot;which should never is never correct&quot;

Fixed.

&gt; &gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:696
&gt; &gt; +    ASSERT(scriptExecutionContext());
&gt; &gt; +    if (!scriptExecutionContext()-&gt;activeDOMObjectsAreStopped()) {
&gt; 
&gt; Nit: I can&apos;t tell from the diff, but can you change this to an early return?

That would mean I&apos;d have to duplicate calls to m_activeSourceBuffers-&gt;remove(buffer); and m_sourceBuffers-&gt;remove(buffer); so I&apos;d keep this as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439076</commentid>
    <comment_count>4</comment_count>
      <attachid>344243</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-03 17:15:34 -0700</bug_when>
    <thetext>Created attachment 344243
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439078</commentid>
    <comment_count>5</comment_count>
      <attachid>344243</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-03 17:15:47 -0700</bug_when>
    <thetext>Comment on attachment 344243
Patch for landing

Wait for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439127</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-03 20:31:31 -0700</bug_when>
    <thetext>Committed r233496: &lt;https://trac.webkit.org/changeset/233496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439414</commentid>
    <comment_count>7</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-05 09:33:22 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; Committed r233496: &lt;https://trac.webkit.org/changeset/233496&gt;

Looks like this change is causing crashes on Sierra Debug WK1

Test: http/tests/security/contentSecurityPolicy/audio-redirect-allowed.html

Crash Log:
https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/r233517%20(7131)/http/tests/security/contentSecurityPolicy/audio-redirect-allowed-crash-log.txt


Test: http/tests/security/contentSecurityPolicy/video-redirect-allowed.html
Crash Log:
https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/r233517%20(7131)/http/tests/security/contentSecurityPolicy/video-redirect-allowed-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439416</commentid>
    <comment_count>8</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-05 09:39:07 -0700</bug_when>
    <thetext>(In reply to David Fenton (:realdawei) from comment #7)
&gt; (In reply to Ryosuke Niwa from comment #6)
&gt; &gt; Committed r233496: &lt;https://trac.webkit.org/changeset/233496&gt;
&gt; 
&gt; Looks like this change is causing crashes on Sierra Debug WK1
&gt; 
&gt; Test: http/tests/security/contentSecurityPolicy/audio-redirect-allowed.html
&gt; 
&gt; Crash Log:
&gt; https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/
&gt; r233517%20(7131)/http/tests/security/contentSecurityPolicy/audio-redirect-
&gt; allowed-crash-log.txt
&gt; 
&gt; 
&gt; Test: http/tests/security/contentSecurityPolicy/video-redirect-allowed.html
&gt; Crash Log:
&gt; https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/
&gt; r233517%20(7131)/http/tests/security/contentSecurityPolicy/video-redirect-
&gt; allowed-crash-log.txt

Actually on Sierra Debug WK1 and WK2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439617</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-05 16:44:24 -0700</bug_when>
    <thetext>Weird. This assertion seems to fail only on Sierra :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439637</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-05 17:28:16 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #9)
&gt; Weird. This assertion seems to fail only on Sierra :(

How I have a machine with macOS Sierra. Waiting for WebKit to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439700</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-05 22:02:19 -0700</bug_when>
    <thetext>Tracking the bug assertion failure in https://bugs.webkit.org/show_bug.cgi?id=187378.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441011</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-10 16:26:53 -0700</bug_when>
    <thetext>Some WebRTC tests are crashing according flakiness dashboard with the following trace:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x0000000349512874 WebCore::TrackPrivateBase::~TrackPrivateBase() + 4 (TrackPrivateBase.h:57)
1   com.apple.JavaScriptCore      	0x000000034d33dfde WTF::dispatchFunctionsFromMainThread() + 318 (MainThread.cpp:132)
2   com.apple.JavaScriptCore      	0x000000034d33ecdf WTF::timerFired(__CFRunLoopTimer*, void*) + 31 (MainThreadMac.mm:110)
3   com.apple.CoreFoundation      	0x00007fff41f9b704 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
4   com.apple.CoreFoundation      	0x00007fff41f9b384 __CFRunLoopDoTimer + 1108
5   com.apple.CoreFoundation      	0x00007fff41f9ae7a __CFRunLoopDoTimers + 346
6   com.apple.CoreFoundation      	0x00007fff41f9261b __CFRunLoopRun + 2427
7   com.apple.CoreFoundation      	0x00007fff41f91a07 CFRunLoopRunSpecific + 487
8   com.apple.HIToolbox           	0x00007fff4126fd96 RunCurrentEventLoopInMode + 286
9   com.apple.HIToolbox           	0x00007fff4126fb06 ReceiveNextEventCommon + 613
10  com.apple.HIToolbox           	0x00007fff4126f884 _BlockUntilNextEventMatchingListInModeWithFilter + 64
11  com.apple.AppKit              	0x00007fff3f522a73 _DPSNextEvent + 2085
12  com.apple.AppKit              	0x00007fff3fcb8e34 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
13  com.apple.AppKit              	0x00007fff3f517885 -[NSApplication run] + 764
14  com.apple.AppKit              	0x00007fff3f4e6a72 NSApplicationMain + 804
15  libxpc.dylib                  	0x00007fff6a690f57 _xpc_objc_main + 580
16  libxpc.dylib                  	0x00007fff6a68fbaa xpc_main + 417
17  com.apple.WebKit.WebContent   	0x0000000109fd56b5 main + 485
18  libdyld.dylib                 	0x00007fff6a336015 start + 1

It started to happen very soon after this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442626</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-16 20:29:52 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #12)
&gt; Some WebRTC tests are crashing according flakiness dashboard with the
&gt; following trace:

Is it still happening after https://bugs.webkit.org/show_bug.cgi?id=187378 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442663</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-17 05:43:10 -0700</bug_when>
    <thetext>https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r233795%20(4095)/webrtc/video-addTransceiver-crash-log.txt is showing this crash trace.

https://build.webkit.org/results/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r233853%20(5654)/webrtc/video-with-receiver-crash-log.txt is also a recent crash.

webrtc/video-addTrack.html and webrtc/video-with-receiver.html might allow reproing the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444777</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-24 12:10:18 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #14)
&gt; https://build.webkit.org/results/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r233795%20(4095)/webrtc/video-
&gt; addTransceiver-crash-log.txt is showing this crash trace.
&gt; 
&gt; https://build.webkit.org/results/
&gt; Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r233853%20(5654)/webrtc/
&gt; video-with-receiver-crash-log.txt is also a recent crash.
&gt; 
&gt; webrtc/video-addTrack.html and webrtc/video-with-receiver.html might allow
&gt; reproing the crash.

Youenn&apos;s latest crash traces are from r233853. The fix for Bug 187378 went into r233571 so I believe we still have a regression from r233496.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444871</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-24 16:13:27 -0700</bug_when>
    <thetext>Reverted r233496 and r233571 for reason:

Likely cause of &lt;rdar://problem/42160890&gt; and &lt;rdar://problem/42329658&gt; as ActiveDOMObjects can now be constructed / destroyed while we are iterating over them.

Committed r234177: &lt;https://trac.webkit.org/changeset/234177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445707</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-27 09:02:27 -0700</bug_when>
    <thetext>Addressing crashes caused by ActiveDOMObject creation/destruction while iterating over them via Bug 188094 &amp; Bug 188025.

What will remain to re-land this patch will be to fix the following use-after free: rdar://problem/42558823.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446214</commentid>
    <comment_count>18</comment_count>
      <attachid>346060</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-30 08:48:54 -0700</bug_when>
    <thetext>Created attachment 346060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446215</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-30 08:49:28 -0700</bug_when>
    <thetext>Re-landing Ryosuke&apos;s patch now that all known issues should have been fixed via dependency bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446269</commentid>
    <comment_count>20</comment_count>
      <attachid>346060</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-30 11:17:19 -0700</bug_when>
    <thetext>Comment on attachment 346060
Patch

Clearing flags on attachment: 346060

Committed r234374: &lt;https://trac.webkit.org/changeset/234374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446270</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-30 11:17:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344236</attachid>
            <date>2018-07-03 16:04:14 -0700</date>
            <delta_ts>2018-07-03 17:15:31 -0700</delta_ts>
            <desc>Fixes the crash</desc>
            <filename>bug-187284-20180703160414.patch</filename>
            <type>text/plain</type>
            <size>38734</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDE4LTA3LTAzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2ggYWNjZXNz
aW5nIERvY3VtZW50IGluIEdlbmVyaWNFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2ZW50KCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzI4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBudWxsIHBv
aW50ZXIgY3Jhc2ggd2FzIGNhdXNlZCBieSBzb21lIEdlbmVyaWNFdmVudFF1ZXVlIGRpc3BhdGNo
aW5nIGFuIGV2ZW50IGluIGEgc3RvcHBlZCBkb2N1bWVudCwKKyAgICAgICAgd2hpY2ggZG9lcyBu
b3QgaGF2ZSBhIHZhbGlkIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBiZWNhdXNlIHNvbWUgdXNl
cyBvZiBHZW5lcmljRXZlbnRRdWV1ZSBpbiBtZWRpYSBjb2RlCisgICAgICAgIHdhcyBub3QgY2xv
c2luZyB0aGUgcXVldWUgdXBvbiBzdG9wcGluZyBvZiBhbGwgYWN0aXZlIERPTSBvYmplY3RzLgor
CisgICAgICAgIEZpeGVkIGFsbCB1c2VzIG9mIEdlbmVyaWNFdmVudFF1ZXVlIHdoaWNoIGRpZCBu
b3Qgc3VzcGVuZCBvciBzdG9wIHRoZSBxdWV1ZSB3aXRoIGFjdGl2ZSBET00gb2JqZWN0cy4KKyAg
ICAgICAgTWFkZSBTb3VyY2VCdWZmZXJMaXN0IGFuZCBUcmFja0xpc3RCYXNlIChhbG9uZyB3aXRo
IEF1ZGlvVHJhY2tMaXN0LCBUZXh0VHJhY2tMaXN0LCBhbmQgVmlkZW9UcmFja0xpc3QpCisgICAg
ICAgIGluaGVyaXQgZnJvbSBBY3RpdmVET01PYmplY3QgaW5zdGVhZCBvZiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB0byBkbyB0aGlzLgorCisgICAgICAgIEFsc28gZml4ZWQgYSBidWcgdGhh
dCBtZWRpYSBlbGVtZW50cyBpbnNpZGUgYSB0ZW1wbGF0ZSBlbGVtZW50IChhbmQgb3RoZXIgY2Fz
ZXMgd2hlcmUgdGhlIGRvY3VtZW50IGRvZXNuJ3QKKyAgICAgICAgaGF2ZSBhIGJyb3dzaW5nIGNv
bnRleHQpIHdlcmUgc2NoZWR1bGluZyBldmVudHMgc2luY2UgdGhpcyB3b3VsZCBoaXQgdGhlIG5l
d2x5IGFkZGVkIGRlYnVnIGFzc2VydGlvbiBpbgorICAgICAgICBHZW5lcmljRXZlbnRRdWV1ZTo6
ZGlzcGF0Y2hPbmVFdmVudC4KKworICAgICAgICBUZXN0OiBtZWRpYS90cmFjay92aWRlby10cmFj
ay1hZGRpdGlvbi1hbmQtZnJhbWUtcmVtb3ZhbC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdXNwZW5kKTogQXNzZXJ0IHRoYXQgd2Ug
bmV2ZXIgdHJ5IHRvIHN1c3BlbmQgd2hlbiB0aGUgZG9jdW1lbnQgaGFzCisgICAgICAgIHRoaXMg
b2JqZWN0IGFsaXZlIHNpbmNlIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gYWx3YXlz
IHJldHVybnMgZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Npb246
OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9u
OjpzdG9wKTogU3RvcCB0aGUgZXZlbnQgcXVldWUgdG8gYXZvaWQgdGhlIGNyYXNoLgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcik6IERvbid0IGRvIGFu
eSB3b3JrIHRvIHVwZGF0ZSB0cmFja3Mgd2hlbiB0aGUgYWN0aXZlIERPTQorICAgICAgICBvYmpl
Y3RzIGFyZSBzdG9wcGVkIHNpbmNlIHRoaXMgTWVkaWFTb3VyY2UgYW5kIHRoZSByZWxhdGVkIG1l
ZGlhIG9iamVjdHMgYXJlIGFib3V0IHRvIGJlIGRlc3RydWN0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZTo6c3VzcGVuZCk6IEFzc2VydCB0aGF0IG1fYXN5bmNFdmVudFF1ZXVlIGlz
IGVtcHR5IGFzIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24KKyAgICAgICAgcmV0dXJu
cyBmYWxzZSB3aGVuZXZlciB0aGUgcXVldWUgaXMgbm90IGVtcHR5LgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2U6OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnN1c3BlbmQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6cmVzdW1lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnN0b3ApOiBTdG9wIHRoZSBldmVudCBxdWV1
ZSB0byBhdm9pZCB0aGUgY3Jhc2guCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyTGlzdCk6IE1hZGUgdGhpcyBh
biBhY3RpdmUgRE9NIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckxpc3Q6
OlNvdXJjZUJ1ZmZlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyTGlzdDo6
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6IEFkZGVkLiBSZXR1cm4gZmFs
c2Ugd2hlbiB0aGVyZSBhcmUKKyAgICAgICAgcGVuZGluZyBldmVudHMgdG8gbWF0Y2ggb3RoZXIg
bWVkaWEgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckxpc3Q6OnN1c3BlbmQp
OiBBZGRlZC4gQXNzZXJ0IHRoYXQgdGhlIGV2ZW50IHF1ZXVlIGlzIGVtcHR5IGhlcmUuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJMaXN0OjpyZXN1bWUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckxpc3Q6OnN0b3ApOiBBZGRlZC4gU3RvcCB0aGUgZXZlbnQg
cXVldWUgdG8gYXZvaWQgdGhlIGNyYXNoLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
TGlzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyTGlzdCk6IE1hZGUgdGhpcyBhbiBhY3RpdmUgRE9NIG9iamVjdC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc0Jyb3dzaW5nQ29u
dGV4dCBjb25zdCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hPbmVFdmVudCk6
IEFkZGVkIGFuIGFzc2VydGlvbiB0byBjYXRjaCB3aGVuIGFuIGV2ZW50IGlzIGRpc3BhdGNoZWQK
KyAgICAgICAgaW5zaWRlIGEgc3RvcHBlZCBkb2N1bWVudCwgd2hpY2ggc2hvdWxkIG5ldmVyIGlz
IG5ldmVyIGNvcnJlY3QgYW5kIGNhdXNlcyB0aGlzIGNyYXNoIGRvd24gdGhlIGxpbmUuCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IEV4aXQgZWFybHkgd2hlbiB0aGUgZG9jdW1lbnQg
ZG9lc24ndCBoYXZlIGEgYnJvd3NpbmcgY29udGV4dDsKKyAgICAgICAgZS5nLiB3aGVuIHRoZSBt
ZWRpYSBlbGVtZW50IGlzIGluc2lkZSBhIHRlbXBsYXRlIGVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZCk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwOgorICAgICAgICAoQXVkaW9UcmFja0xp
c3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL0F1ZGlvVHJhY2tMaXN0Lmg6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcDo6CisgICAgICAg
IChUZXh0VHJhY2tMaXN0OjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6CisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSk6IE1hZGUgdGhpcyBhbiBhY3RpdmUg
RE9NIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJh
c2UpOiAKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OmNhblN1c3BlbmRGb3JEb2N1
bWVudFN1c3BlbnNpb24gY29uc3QpOiBBZGRlZC4gUmV0dXJuIGZhbHNlIHdoZW4gdGhlcmUgYXJl
IHBlbmRpbmcgZXZlbnRzCisgICAgICAgIHRvIG1hdGNoIG90aGVyIG1lZGlhIGNvZGUuCisgICAg
ICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzdXNwZW5kKTogQWRkZWQuIEFzc2VydCB0aGF0
IHRoZSBldmVudCBxdWV1ZSBpcyBlbXB0eSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tM
aXN0QmFzZTo6cmVzdW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNl
OjpzdG9wKTogQWRkZWQuIFN0b3AgdGhlIGV2ZW50IHF1ZXVlIHRvIGF2b2lkIHRoZSBjcmFzaC4K
KyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjphY3RpdmVE
T01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOgorCiAy
MDE4LTA3LTAzICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAg
ICAgICBbQ3VybF0gRW1iZWQgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24gaW50byBSZXNvdXJjZVJl
c3BvbnNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3Bw
CShyZXZpc2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzksOCArMjM5LDE5IEBAIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWMK
ICAgICByZXR1cm4gKG1fa2V5cyAmJiBtX3Nlc3Npb24pIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhh
c1BlbmRpbmdFdmVudHMoKTsKIH0KIAordm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnJlc3VtZSgpCit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9wKCkKIHsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIGNsb3NlKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlh
S2V5U2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oCShyZXZpc2lvbiAyMzM0ODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICB2b2lkIHN1c3BlbmQo
UmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3Bl
bnNpb24oKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMjMzNDgxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5MiwxMjQgKzY5MiwxMjcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnJl
bW92ZVNvdQogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VCdWZmZXIudXBkYXRpbmcgYXR0cmlidXRl
IGVxdWFscyB0cnVlLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOiAuLi4KICAgICBidWZm
ZXIuYWJvcnRJZlVwZGF0aW5nKCk7CiAKLSAgICAvLyA0LiBMZXQgU291cmNlQnVmZmVyIGF1ZGlv
VHJhY2tzIGxpc3QgZXF1YWwgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSBz
b3VyY2VCdWZmZXIuYXVkaW9UcmFja3MuCi0gICAgYXV0byYgYXVkaW9UcmFja3MgPSBidWZmZXIu
YXVkaW9UcmFja3MoKTsKLQotICAgIC8vIDUuIElmIHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFj
a3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAg
aWYgKGF1ZGlvVHJhY2tzLmxlbmd0aCgpKSB7Ci0gICAgICAgIC8vIDUuMSBMZXQgSFRNTE1lZGlh
RWxlbWVudCBhdWRpb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3Qg
cmV0dXJuZWQgYnkgdGhlIGF1ZGlvVHJhY2tzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUg
SFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgLy8gNS4yIExldCB0aGUgcmVtb3ZlZCBlbmFibGVk
IGF1ZGlvIHRyYWNrIGZsYWcgZXF1YWwgZmFsc2UuCi0gICAgICAgIGJvb2wgcmVtb3ZlZEVuYWJs
ZWRBdWRpb1RyYWNrID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gNS4zIEZvciBlYWNoIEF1ZGlvVHJh
Y2sgb2JqZWN0IGluIHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIHdoaWxlIChhdWRpb1RyYWNrcy5sZW5ndGgoKSkgewot
ICAgICAgICAgICAgYXV0byYgdHJhY2sgPSAqYXVkaW9UcmFja3MubGFzdEl0ZW0oKTsKLQotICAg
ICAgICAgICAgLy8gNS4zLjEgU2V0IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBB
dWRpb1RyYWNrIG9iamVjdCB0byBudWxsLgotICAgICAgICAgICAgdHJhY2suc2V0U291cmNlQnVm
ZmVyKG51bGxwdHIpOwotCi0gICAgICAgICAgICAvLyA1LjMuMiBJZiB0aGUgZW5hYmxlZCBhdHRy
aWJ1dGUgb24gdGhlIEF1ZGlvVHJhY2sgb2JqZWN0IGlzIHRydWUsIHRoZW4gc2V0IHRoZSByZW1v
dmVkIGVuYWJsZWQKLSAgICAgICAgICAgIC8vIGF1ZGlvIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KLSAg
ICAgICAgICAgIGlmICh0cmFjay5lbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgcmVtb3ZlZEVu
YWJsZWRBdWRpb1RyYWNrID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gNS4zLjMgUmVtb3ZlIHRo
ZSBBdWRpb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tz
IGxpc3QuCi0gICAgICAgICAgICAvLyA1LjMuNCBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0
ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBu
b3QKLSAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZl
bnQgaW50ZXJmYWNlLCBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCBhdWRpb1RyYWNrcyBsaXN0Lgot
ICAgICAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIG1lZGlhRWxl
bWVudCgpLT5yZW1vdmVBdWRpb1RyYWNrKHRyYWNrKTsKLQotICAgICAgICAgICAgLy8gNS4zLjUg
UmVtb3ZlIHRoZSBBdWRpb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9U
cmFja3MgbGlzdC4KLSAgICAgICAgICAgIC8vIDUuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
dHJ1c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5k
IGlzIG5vdAotICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJh
Y2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdC4K
LSAgICAgICAgICAgIGF1ZGlvVHJhY2tzLnJlbW92ZSh0cmFjayk7CisgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpIHsKKyAgICAgICAgLy8gNC4gTGV0IFNvdXJj
ZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3Qg
cmV0dXJuZWQgYnkgc291cmNlQnVmZmVyLmF1ZGlvVHJhY2tzLgorICAgICAgICBhdXRvJiBhdWRp
b1RyYWNrcyA9IGJ1ZmZlci5hdWRpb1RyYWNrcygpOworCisgICAgICAgIC8vIDUuIElmIHRoZSBT
b3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGlmIChhdWRpb1RyYWNrcy5sZW5ndGgoKSkgeworICAg
ICAgICAgICAgLy8gNS4xIExldCBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QgZXF1
YWwgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgYXVkaW9UcmFja3MK
KyAgICAgICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAgICAg
ICAgICAgIC8vIDUuMiBMZXQgdGhlIHJlbW92ZWQgZW5hYmxlZCBhdWRpbyB0cmFjayBmbGFnIGVx
dWFsIGZhbHNlLgorICAgICAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSBm
YWxzZTsKKworICAgICAgICAgICAgLy8gNS4zIEZvciBlYWNoIEF1ZGlvVHJhY2sgb2JqZWN0IGlu
IHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisgICAgICAgICAgICB3aGlsZSAoYXVkaW9UcmFja3MubGVuZ3RoKCkpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvJiB0cmFjayA9ICphdWRpb1RyYWNrcy5sYXN0SXRlbSgpOworCisgICAgICAg
ICAgICAgICAgLy8gNS4zLjEgU2V0IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBB
dWRpb1RyYWNrIG9iamVjdCB0byBudWxsLgorICAgICAgICAgICAgICAgIHRyYWNrLnNldFNvdXJj
ZUJ1ZmZlcihudWxscHRyKTsKKworICAgICAgICAgICAgICAgIC8vIDUuMy4yIElmIHRoZSBlbmFi
bGVkIGF0dHJpYnV0ZSBvbiB0aGUgQXVkaW9UcmFjayBvYmplY3QgaXMgdHJ1ZSwgdGhlbiBzZXQg
dGhlIHJlbW92ZWQgZW5hYmxlZAorICAgICAgICAgICAgICAgIC8vIGF1ZGlvIHRyYWNrIGZsYWcg
dG8gdHJ1ZS4KKyAgICAgICAgICAgICAgICBpZiAodHJhY2suZW5hYmxlZCgpKQorICAgICAgICAg
ICAgICAgICAgICByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSB0cnVlOworCisgICAgICAgICAg
ICAgICAgLy8gNS4zLjMgUmVtb3ZlIHRoZSBBdWRpb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1M
TWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgLy8gNS4zLjQg
UXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0
aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gY2FuY2Vs
YWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1M
TWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgaWYgKG1lZGlh
RWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlQXVk
aW9UcmFjayh0cmFjayk7CisKKyAgICAgICAgICAgICAgICAvLyA1LjMuNSBSZW1vdmUgdGhlIEF1
ZGlvVHJhY2sgb2JqZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0Lgor
ICAgICAgICAgICAgICAgIC8vIDUuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBl
dmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAor
ICAgICAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZl
bnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QuCisgICAg
ICAgICAgICAgICAgYXVkaW9UcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gNS40IElmIHRoZSByZW1vdmVkIGVuYWJsZWQgYXVkaW8gdHJhY2sgZmxh
ZyBlcXVhbHMgdHJ1ZSwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAor
ICAgICAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1ZGlv
VHJhY2tzIGxpc3QuCisgICAgICAgICAgICBpZiAocmVtb3ZlZEVuYWJsZWRBdWRpb1RyYWNrKQor
ICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrcygpLnNjaGVkdWxlQ2hh
bmdlRXZlbnQoKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIDUuNCBJZiB0aGUgcmVtb3ZlZCBl
bmFibGVkIGF1ZGlvIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0YXNrIHRv
IGZpcmUgYSBzaW1wbGUgZXZlbnQKLSAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1M
TWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCi0gICAgICAgIGlmIChyZW1vdmVkRW5hYmxl
ZEF1ZGlvVHJhY2spCi0gICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+YXVkaW9UcmFja3MoKS5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Ci0gICAgfQotCi0gICAgLy8gNi4gTGV0IFNvdXJjZUJ1ZmZl
ciB2aWRlb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJu
ZWQgYnkgc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLgotICAgIGF1dG8mIHZpZGVvVHJhY2tzID0g
YnVmZmVyLnZpZGVvVHJhY2tzKCk7CisgICAgICAgIC8vIDYuIExldCBTb3VyY2VCdWZmZXIgdmlk
ZW9UcmFja3MgbGlzdCBlcXVhbCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5
IHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy4KKyAgICAgICAgYXV0byYgdmlkZW9UcmFja3MgPSBi
dWZmZXIudmlkZW9UcmFja3MoKTsKIAotICAgIC8vIDcuIElmIHRoZSBTb3VyY2VCdWZmZXIgdmlk
ZW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
Ci0gICAgaWYgKHZpZGVvVHJhY2tzLmxlbmd0aCgpKSB7Ci0gICAgICAgIC8vIDcuMSBMZXQgSFRN
TE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBWaWRlb1RyYWNrTGlzdCBv
YmplY3QgcmV0dXJuZWQgYnkgdGhlIHZpZGVvVHJhY2tzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgLy8gNy4yIExldCB0aGUgcmVtb3ZlZCBz
ZWxlY3RlZCB2aWRlbyB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgotICAgICAgICBib29sIHJlbW92
ZWRTZWxlY3RlZFZpZGVvVHJhY2sgPSBmYWxzZTsKLQotICAgICAgICAvLyA3LjMgRm9yIGVhY2gg
VmlkZW9UcmFjayBvYmplY3QgaW4gdGhlIFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNrcyBsaXN0LCBy
dW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgd2hpbGUgKHZpZGVvVHJhY2tzLmxlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0cmFjayA9ICp2aWRlb1RyYWNrcy5sYXN0SXRlbSgp
OwotCi0gICAgICAgICAgICAvLyA3LjMuMSBTZXQgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUg
b24gdGhlIFZpZGVvVHJhY2sgb2JqZWN0IHRvIG51bGwuCi0gICAgICAgICAgICB0cmFjay5zZXRT
b3VyY2VCdWZmZXIobnVsbHB0cik7Ci0KLSAgICAgICAgICAgIC8vIDcuMy4yIElmIHRoZSBzZWxl
Y3RlZCBhdHRyaWJ1dGUgb24gdGhlIFZpZGVvVHJhY2sgb2JqZWN0IGlzIHRydWUsIHRoZW4gc2V0
IHRoZSByZW1vdmVkIHNlbGVjdGVkCi0gICAgICAgICAgICAvLyB2aWRlbyB0cmFjayBmbGFnIHRv
IHRydWUuCi0gICAgICAgICAgICBpZiAodHJhY2suc2VsZWN0ZWQoKSkKLSAgICAgICAgICAgICAg
ICByZW1vdmVkU2VsZWN0ZWRWaWRlb1RyYWNrID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gNy4z
LjMgUmVtb3ZlIHRoZSBWaWRlb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50
IHZpZGVvVHJhY2tzIGxpc3QuCi0gICAgICAgICAgICAvLyA3LjMuNCBRdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnVi
YmxlIGFuZCBpcyBub3QKLSAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMg
dGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1Ry
YWNrcyBsaXN0LgotICAgICAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICAgICAg
ICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVWaWRlb1RyYWNrKHRyYWNrKTsKLQotICAgICAgICAg
ICAgLy8gNy4zLjUgUmVtb3ZlIHRoZSBWaWRlb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBTb3VyY2VC
dWZmZXIgdmlkZW9UcmFja3MgbGlzdC4KLSAgICAgICAgICAgIC8vIDcuMy42IFF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5v
dCBidWJibGUgYW5kIGlzIG5vdAotICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQg
dXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9U
cmFja3MgbGlzdC4KLSAgICAgICAgICAgIHZpZGVvVHJhY2tzLnJlbW92ZSh0cmFjayk7CisgICAg
ICAgIC8vIDcuIElmIHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdCBpcyBub3QgZW1w
dHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGlmICh2aWRlb1RyYWNr
cy5sZW5ndGgoKSkgeworICAgICAgICAgICAgLy8gNy4xIExldCBIVE1MTWVkaWFFbGVtZW50IHZp
ZGVvVHJhY2tzIGxpc3QgZXF1YWwgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBi
eSB0aGUgdmlkZW9UcmFja3MKKyAgICAgICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1l
ZGlhRWxlbWVudC4KKyAgICAgICAgICAgIC8vIDcuMiBMZXQgdGhlIHJlbW92ZWQgc2VsZWN0ZWQg
dmlkZW8gdHJhY2sgZmxhZyBlcXVhbCBmYWxzZS4KKyAgICAgICAgICAgIGJvb2wgcmVtb3ZlZFNl
bGVjdGVkVmlkZW9UcmFjayA9IGZhbHNlOworCisgICAgICAgICAgICAvLyA3LjMgRm9yIGVhY2gg
VmlkZW9UcmFjayBvYmplY3QgaW4gdGhlIFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNrcyBsaXN0LCBy
dW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgICAgIHdoaWxlICh2aWRlb1RyYWNrcy5s
ZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIHRyYWNrID0gKnZpZGVvVHJhY2tzLmxh
c3RJdGVtKCk7CisKKyAgICAgICAgICAgICAgICAvLyA3LjMuMSBTZXQgdGhlIHNvdXJjZUJ1ZmZl
ciBhdHRyaWJ1dGUgb24gdGhlIFZpZGVvVHJhY2sgb2JqZWN0IHRvIG51bGwuCisgICAgICAgICAg
ICAgICAgdHJhY2suc2V0U291cmNlQnVmZmVyKG51bGxwdHIpOworCisgICAgICAgICAgICAgICAg
Ly8gNy4zLjIgSWYgdGhlIHNlbGVjdGVkIGF0dHJpYnV0ZSBvbiB0aGUgVmlkZW9UcmFjayBvYmpl
Y3QgaXMgdHJ1ZSwgdGhlbiBzZXQgdGhlIHJlbW92ZWQgc2VsZWN0ZWQKKyAgICAgICAgICAgICAg
ICAvLyB2aWRlbyB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICAgICAgaWYgKHRyYWNr
LnNlbGVjdGVkKCkpCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRTZWxlY3RlZFZpZGVvVHJh
Y2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gNy4zLjMgUmVtb3ZlIHRoZSBWaWRlb1Ry
YWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCisg
ICAgICAgICAgICAgICAgLy8gNy4zLjQgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2
ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90Cisg
ICAgICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVu
dCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCisg
ICAgICAgICAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICBt
ZWRpYUVsZW1lbnQoKS0+cmVtb3ZlVmlkZW9UcmFjayh0cmFjayk7CisKKyAgICAgICAgICAgICAg
ICAvLyA3LjMuNSBSZW1vdmUgdGhlIFZpZGVvVHJhY2sgb2JqZWN0IGZyb20gdGhlIFNvdXJjZUJ1
ZmZlciB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgICAgIC8vIDcuMy42IFF1ZXVlIGEg
dGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2Vz
IG5vdCBidWJibGUgYW5kIGlzIG5vdAorICAgICAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFu
ZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVy
IHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgdmlkZW9UcmFja3MucmVtb3ZlKHRy
YWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gNy40IElmIHRoZSByZW1vdmVk
IHNlbGVjdGVkIHZpZGVvIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQKKyAgICAgICAgICAgIC8vIG5hbWVkIGNoYW5nZSBhdCB0
aGUgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgaWYgKHJl
bW92ZWRTZWxlY3RlZFZpZGVvVHJhY2spCisgICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50KCkt
PnZpZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgLy8gNy40IElmIHRoZSByZW1vdmVkIHNlbGVjdGVkIHZpZGVvIHRyYWNrIGZsYWcgZXF1YWxz
IHRydWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQKLSAgICAgICAg
Ly8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3Qu
Ci0gICAgICAgIGlmIChyZW1vdmVkU2VsZWN0ZWRWaWRlb1RyYWNrKQotICAgICAgICAgICAgbWVk
aWFFbGVtZW50KCktPnZpZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwotICAgIH0K
LQotICAgIC8vIDguIExldCBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0IGVxdWFsIHRoZSBU
ZXh0VHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSBzb3VyY2VCdWZmZXIudGV4dFRyYWNrcy4K
LSAgICBhdXRvJiB0ZXh0VHJhY2tzID0gYnVmZmVyLnRleHRUcmFja3MoKTsKKyAgICAgICAgLy8g
OC4gTGV0IFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xp
c3Qgb2JqZWN0IHJldHVybmVkIGJ5IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgorICAgICAgICBh
dXRvJiB0ZXh0VHJhY2tzID0gYnVmZmVyLnRleHRUcmFja3MoKTsKIAotICAgIC8vIDkuIElmIHRo
ZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlbiBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICBpZiAodGV4dFRyYWNrcy5sZW5ndGgoKSkgewotICAgICAg
ICAvLyA5LjEgTGV0IEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0IGVxdWFsIHRoZSBU
ZXh0VHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgdGV4dFRyYWNrcwotICAgICAgICAv
LyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgICAgIC8vIDkuMiBMZXQg
dGhlIHJlbW92ZWQgZW5hYmxlZCB0ZXh0IHRyYWNrIGZsYWcgZXF1YWwgZmFsc2UuCi0gICAgICAg
IGJvb2wgcmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2sgPSBmYWxzZTsKLQotICAgICAgICAvLyA5LjMg
Rm9yIGVhY2ggVGV4dFRyYWNrIG9iamVjdCBpbiB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3Mg
bGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIHdoaWxlICh0ZXh0VHJhY2tz
Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0cmFjayA9ICp0ZXh0VHJhY2tzLmxhc3RJ
dGVtKCk7Ci0KLSAgICAgICAgICAgIC8vIDkuMy4xIFNldCB0aGUgc291cmNlQnVmZmVyIGF0dHJp
YnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9iamVjdCB0byBudWxsLgotICAgICAgICAgICAgdHJhY2su
c2V0U291cmNlQnVmZmVyKG51bGxwdHIpOwotCi0gICAgICAgICAgICAvLyA5LjMuMiBJZiB0aGUg
bW9kZSBhdHRyaWJ1dGUgb24gdGhlIFRleHRUcmFjayBvYmplY3QgaXMgc2V0IHRvICJzaG93aW5n
IiBvciAiaGlkZGVuIiwgdGhlbgotICAgICAgICAgICAgLy8gc2V0IHRoZSByZW1vdmVkIGVuYWJs
ZWQgdGV4dCB0cmFjayBmbGFnIHRvIHRydWUuCi0gICAgICAgICAgICBpZiAodHJhY2subW9kZSgp
ID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZyB8fCB0cmFjay5tb2RlKCkgPT0gVGV4dFRyYWNr
OjpNb2RlOjpIaWRkZW4pCi0gICAgICAgICAgICAgICAgcmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2sg
PSB0cnVlOwotCi0gICAgICAgICAgICAvLyA5LjMuMyBSZW1vdmUgdGhlIFRleHRUcmFjayBvYmpl
Y3QgZnJvbSB0aGUgSFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3QuCi0gICAgICAgICAg
ICAvLyA5LjMuNCBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgcmVt
b3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKLSAgICAgICAgICAgIC8v
IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0
aGUgSFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3QuCi0gICAgICAgICAgICBpZiAobWVk
aWFFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnJlbW92ZVRleHRU
cmFjayh0cmFjayk7Ci0KLSAgICAgICAgICAgIC8vIDkuMy41IFJlbW92ZSB0aGUgVGV4dFRyYWNr
IG9iamVjdCBmcm9tIHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0LgotICAgICAgICAg
ICAgLy8gOS4zLjYgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJl
bW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90Ci0gICAgICAgICAgICAv
LyBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQg
dGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QuCi0gICAgICAgICAgICB0ZXh0VHJhY2tz
LnJlbW92ZSh0cmFjayk7CisgICAgICAgIC8vIDkuIElmIHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRy
YWNrcyBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAg
ICAgICAgaWYgKHRleHRUcmFja3MubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIC8vIDkuMSBMZXQg
SFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qg
b2JqZWN0IHJldHVybmVkIGJ5IHRoZSB0ZXh0VHJhY2tzCisgICAgICAgICAgICAvLyBhdHRyaWJ1
dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgICAgICAgICAvLyA5LjIgTGV0IHRoZSBy
ZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgorICAgICAgICAgICAg
Ym9vbCByZW1vdmVkRW5hYmxlZFRleHRUcmFjayA9IGZhbHNlOworCisgICAgICAgICAgICAvLyA5
LjMgRm9yIGVhY2ggVGV4dFRyYWNrIG9iamVjdCBpbiB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFj
a3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICB3aGlsZSAodGV4
dFRyYWNrcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIHRyYWNrID0gKnRleHRU
cmFja3MubGFzdEl0ZW0oKTsKKworICAgICAgICAgICAgICAgIC8vIDkuMy4xIFNldCB0aGUgc291
cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9iamVjdCB0byBudWxsLgorICAg
ICAgICAgICAgICAgIHRyYWNrLnNldFNvdXJjZUJ1ZmZlcihudWxscHRyKTsKKworICAgICAgICAg
ICAgICAgIC8vIDkuMy4yIElmIHRoZSBtb2RlIGF0dHJpYnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9i
amVjdCBpcyBzZXQgdG8gInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuCisgICAgICAgICAgICAg
ICAgLy8gc2V0IHRoZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIHRvIHRydWUuCisg
ICAgICAgICAgICAgICAgaWYgKHRyYWNrLm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dp
bmcgfHwgdHJhY2subW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKQorICAgICAgICAg
ICAgICAgICAgICByZW1vdmVkRW5hYmxlZFRleHRUcmFjayA9IHRydWU7CisKKyAgICAgICAgICAg
ICAgICAvLyA5LjMuMyBSZW1vdmUgdGhlIFRleHRUcmFjayBvYmplY3QgZnJvbSB0aGUgSFRNTE1l
ZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgLy8gOS4zLjQgUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0
IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gY2FuY2VsYWJs
ZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVk
aWFFbGVtZW50IHRleHRUcmFja3MgbGlzdC4KKyAgICAgICAgICAgICAgICBpZiAobWVkaWFFbGVt
ZW50KCkpCisgICAgICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVUZXh0VHJh
Y2sodHJhY2spOworCisgICAgICAgICAgICAgICAgLy8gOS4zLjUgUmVtb3ZlIHRoZSBUZXh0VHJh
Y2sgb2JqZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QuCisgICAgICAg
ICAgICAgICAgLy8gOS4zLjYgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5h
bWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAg
ICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRl
cmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0LgorICAgICAgICAgICAg
ICAgIHRleHRUcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gOS40IElmIHRoZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIGVxdWFscyB0
cnVlLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50CisgICAgICAgICAg
ICAvLyBuYW1lZCBjaGFuZ2UgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0
LgorICAgICAgICAgICAgaWYgKHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrKQorICAgICAgICAgICAg
ICAgIG1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gOS40IElmIHRoZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0
cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxl
IGV2ZW50Ci0gICAgICAgIC8vIG5hbWVkIGNoYW5nZSBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCB0
ZXh0VHJhY2tzIGxpc3QuCi0gICAgICAgIGlmIChyZW1vdmVkRW5hYmxlZFRleHRUcmFjaykKLSAg
ICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVu
dCgpOwogICAgIH0KIAogICAgIC8vIDEwLiBJZiBzb3VyY2VCdWZmZXIgaXMgaW4gYWN0aXZlU291
cmNlQnVmZmVycywgdGhlbiByZW1vdmUgc291cmNlQnVmZmVyIGZyb20gYWN0aXZlU291cmNlQnVm
ZmVycyAuLi4KQEAgLTkzMiw2ICs5MzUsMTYgQEAgYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgYwogICAgICAgICB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpOwogfQogCit2b2lkIE1lZGlhU291cmNlOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNp
b24pCit7CisgICAgQVNTRVJUKCFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCkp
OworfQorCit2b2lkIE1lZGlhU291cmNlOjpyZXN1bWUoKQoreworICAgIEFTU0VSVCghbV9hc3lu
Y0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpKTsKK30KKwogdm9pZCBNZWRpYVNvdXJjZTo6
c3RvcCgpCiB7CiAgICAgbV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgJKHJldmlzaW9u
IDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgTWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCisg
ICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVz
dW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAkocmV2aXNpb24gMjMz
NDgxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgsOCArNDU4LDE5IEBAIGJvb2wgU291cmNlQnVmZmVy
OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSAKICAgICByZXR1cm4gbV9zb3VyY2UgfHwgbV9hc3luY0V2
ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c3Vz
cGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIEFTU0VSVCghaGFzUGVuZGluZ0FjdGl2
aXR5KCkpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQo
IWhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQog
eworICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1l
ci5zdG9wKCk7CiAgICAgbV9yZW1vdmVUaW1lci5zdG9wKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgJKHJldmlzaW9u
IDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbikgZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qg
ZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlckxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDkgKzQwLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNvdXJjZUJ1
ZmZlckxpc3Q6OlNvdXJjZUJ1ZmZlckxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCisgICAgOiBBY3Rp
dmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQogewor
ICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBTb3VyY2VCdWZmZXJMaXN0Ojp+U291cmNlQnVm
ZmVyTGlzdCgpCkBAIC05Nyw2ICs5OCwzMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnNjaGVk
dWxlRXZlbnQoY29uCiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKIH0KIAorYm9vbCBTb3VyY2VCdWZmZXJMaXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fYXN5bmNFdmVudFF1ZXVlLmhh
c1BlbmRpbmdFdmVudHMoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJMaXN0OjpzdXNwZW5kKFJl
YXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgQVNTRVJUKCFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQ
ZW5kaW5nRXZlbnRzKCkpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnJlc3VtZSgpCit7
CisgICAgQVNTRVJUKCFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCkpOworfQor
Cit2b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnN0b3AoKQoreworICAgIG1fYXN5bmNFdmVudFF1ZXVl
LmNsb3NlKCk7Cit9CisKK2NvbnN0IGNoYXIqIFNvdXJjZUJ1ZmZlckxpc3Q6OmFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiU291cmNlQnVmZmVyTGlzdCI7Cit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgJKHJldmlzaW9uIDIzMzQ4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTb3VyY2VCdWZmZXI7
CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlckxpc3QgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxTb3Vy
Y2VCdWZmZXJMaXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBTb3VyY2VCdWZmZXJMaXN0IGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8U291cmNlQnVmZmVyTGlzdD4sIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNvdXJjZUJ1ZmZlckxpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIHsKQEAgLTc3LDYgKzc3LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAorICAgIGJvb2wgY2FuU3VzcGVuZEZvckRv
Y3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBmaW5hbDsKKwogICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VCdWZmZXI+PiBtX2xpc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5p
ZGwJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICAqLwogIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1NRURJQV9T
T1VSQ0UsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogXSBpbnRlcmZhY2UgU291cmNl
QnVmZmVyTGlzdCA6IEV2ZW50VGFyZ2V0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtODAzLDYgKzgwMyw4IEBAIHB1YmxpYzoKICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCiAgICAg
V0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHdpbmRvd1Byb3h5KCkgY29uc3Q7CiAKKyAgICBi
b29sIGhhc0Jyb3dzaW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuICEhZnJhbWUoKTsgfQorCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IG1ha2VX
ZWFrUHRyKGRvY3VtZW50KTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2
ZW50UXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZl
bnRRdWV1ZS5jcHAJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9HZW5l
cmljRXZlbnRRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKIAorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAt
NjUsNiArNjcsOSBAQCB2b2lkIEdlbmVyaWNFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2ZW50CiAg
ICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0KG1fb3duZXIpOwogICAgIFJlZlB0cjxFdmVudD4g
ZXZlbnQgPSBtX3BlbmRpbmdFdmVudHMudGFrZUZpcnN0KCk7CiAgICAgRXZlbnRUYXJnZXQmIHRh
cmdldCA9IGV2ZW50LT50YXJnZXQoKSA/ICpldmVudC0+dGFyZ2V0KCkgOiBtX293bmVyOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXRhcmdldC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFj
dGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCksCisgICAgICAgICJBbiBhdHRlbXB0IHRvIGRpc3Bh
dGNoIGFuIGV2ZW50IG9uIGEgc3RvcHBlZCB0YXJnZXQgYnkgRXZlbnRUYXJnZXRJbnRlcmZhY2U9
JWQgKG5vZGVOYW1lPSVzIHRhcmdldD0lcCBvd25lcj0lcCkiLAorICAgICAgICBtX293bmVyLmV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCksIG1fb3duZXIuaXNOb2RlKCkgPyBzdGF0aWNfY2FzdDxOb2Rl
Jj4obV9vd25lcikubm9kZU5hbWUoKS5hc2NpaSgpLmRhdGEoKSA6ICIiLCAmdGFyZ2V0LCAmbV9v
d25lcik7CiAgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoKmV2ZW50KTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzM0ODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAxLDcgKzE0MDEsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlh
UmVzb3VyCiAgICAgLy8gcHV0IGludG8gdGhlIGJhY2tncm91bmQuCiAgICAgbV9tZWRpYVNlc3Np
b24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwogCi0KICAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFz
a1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSAgewogICAgICAgICAvLyA1LiBJZiB0aGUgbWVkaWEg
ZWxlbWVudOKAmXMgYmxvY2tlZC1vbi1wYXJzZXIgZmxhZyBpcyBmYWxzZSwgdGhlbiBwb3B1bGF0
ZSB0aGUgbGlzdCBvZiBwZW5kaW5nIHRleHQgdHJhY2tzLgogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKQEAgLTM0NzIsNiArMzQ3MSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRl
cm5hbCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIWRvY3VtZW50KCkuaGFz
QnJvd3NpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiAg
cmV0dXJuaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gYnJvd3NpbmcgY29udGV4dCIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJl
Z2luUGxheWJhY2soKSkgewogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICIgIHJl
dHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIpOwogICAgICAgICByZXR1cm47CkBAIC0z
NTYzLDYgKzM1NjcsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghZG9jdW1lbnQoKS5oYXNCcm93c2lu
Z0NvbnRleHQoKSkgeworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiICByZXR1cm5p
bmcgYmVjYXVzZSB0aGVyZSBpcyBubyBicm93c2luZyBjb250ZXh0Iik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5
YmFjaygpKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIiAgcmV0dXJuaW5n
IGJlY2F1c2Ugb2YgaW50ZXJydXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKQEAgLTQ2MjQsNiAr
NDYzMywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUCiAgICAg
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICInc3JjJyBpcyAiLCB1cmwpOwogICAgIH0KIAor
ICAgIGlmICghZG9jdW1lbnQoKS5oYXNCcm93c2luZ0NvbnRleHQoKSkgeworICAgICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSLCAiPHNvdXJjZT4gaW5zZXJ0ZWQgaW5zaWRlIGEgZG9jdW1lbnQg
d2l0aG91dCBhIGJyb3dzaW5nIGNvbnRleHQgaXMgbm90IGxvYWRlZCIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgY29uc2lkZXIgYSA8c291cmNlPiBl
bGVtZW50IHdoZW4gdGhlcmUgaXMgbm90IHNyYyBhdHRyaWJ1dGUgYXQgYWxsLgogICAgIGlmICho
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpKQogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNw
cAkocmV2aXNpb24gMjMzNDgxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDQgKzgxLDkgQEAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgQXVkaW9UcmFja0xpc3Q6OmV2ZQogICAgIHJldHVybiBBdWRpb1RyYWNrTGlzdEV2
ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAorY29uc3QgY2hhciogQXVkaW9UcmFja0xpc3Q6
OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiQXVkaW9UcmFja0xp
c3QiOworfQorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2tMaXN0LmgJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgQXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbAkocmV2aXNpb24g
MjMzNDgxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiBbCisgICAgQWN0aXZlRE9N
T2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbEVsZW1lbnRSb290LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCShyZXZpc2lvbiAy
MzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNCArMjY1LDkgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgVGV4
dFRyYWNrTGlzdDo6ZXZlbgogICAgIHJldHVybiBUZXh0VHJhY2tMaXN0RXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOwogfQogCitjb25zdCBjaGFyKiBUZXh0VHJhY2tMaXN0OjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIlRleHRUcmFja0xpc3QiOworfQorCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCShyZXZp
c2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIFRleHRUcmFj
a0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAg
IHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrJik7CisgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxUcmFja0Jhc2U+PiBtX2FkZFRyYWNrVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQ
dHI8VHJhY2tCYXNlPj4gbV9lbGVtZW50VHJhY2tzOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCShyZXZpc2lvbiAyMzM0ODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAgKi8KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRp
b25hbD1WSURFT19UUkFDSywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9v
dCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAkocmV2aXNpb24gMjMzNDgxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTQgKzM0LDE1IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlRyYWNrRXZlbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UoSFRNTE1lZGlhRWxlbWVu
dCogZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9hc3luY0V2ZW50UXVldWUo
KnRoaXMpCiB7Ci0gICAgQVNTRVJUKGlzPERvY3VtZW50Pihjb250ZXh0KSk7CisgICAgQVNTRVJU
KCFjb250ZXh0IHx8IGlzPERvY3VtZW50Pihjb250ZXh0KSk7CisgICAgc3VzcGVuZElmTmVlZGVk
KCk7CiB9CiAKIFRyYWNrTGlzdEJhc2U6On5UcmFja0xpc3RCYXNlKCkKQEAgLTE3NCw0ICsxNzUs
MjYgQEAgYm9vbCBUcmFja0xpc3RCYXNlOjppc0FueVRyYWNrRW5hYmxlZCgpIAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBUcmFja0xpc3RCYXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRT
dXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fYXN5bmNFdmVudFF1ZXVlLmhhc1Bl
bmRpbmdFdmVudHMoKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjpzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pCit7CisgICAgQVNTRVJUKCFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5n
RXZlbnRzKCkpOworfQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnJlc3VtZSgpCit7CisgICAgQVNT
RVJUKCFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCkpOworfQorCit2b2lkIFRy
YWNrTGlzdEJhc2U6OnN0b3AoKQoreworICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaAkocmV2aXNpb24gMjMzNDgxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotI2luY2x1ZGUgIkNvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgVHJhY2tCYXNlOwogCi1jbGFzcyBU
cmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgeworY2xhc3MgVHJhY2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrTGlzdEJh
c2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhY2tMaXN0QmFzZSgpOwogCkBAIC03NCw2
ICs3NCwxMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVUcmFja0V2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmKTsKIAor
ICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJl
c3VtZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCiAgICAgLy8gRXZlbnRUYXJn
ZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDIzMzQ4MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NCw0ICs5NCw5IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIFZpZGVvVHJhY2tMaXN0
OjpldmUKICAgICByZXR1cm4gVmlkZW9UcmFja0xpc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
CiB9CiAKK2NvbnN0IGNoYXIqIFZpZGVvVHJhY2tMaXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIlZpZGVvVHJhY2tMaXN0IjsKK30KKwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCShyZXZpc2lvbiAy
MzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFZp
ZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw3IEBACiAgKi8KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25h
bD1WSURFT19UUkFDSywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwK
ICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzQ4MSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDE4LTA3LTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE51
bGxwdHIgY3Jhc2ggYWNjZXNzaW5nIERvY3VtZW50IGluIEdlbmVyaWNFdmVudFF1ZXVlOjpkaXNw
YXRjaE9uZUV2ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NzI4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGEgcmVncmVzc2lvbiB0ZXN0IHdoaWNoIHJlbGlhYmx5IGhpdHMgdGhlIG5l
d2x5IGFkZGVkIGRlYnVnIGFzc2VydGlvbi4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL3ZpZGVv
LXRyYWNrLWFkZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvdHJhY2svdmlkZW8tdHJhY2stYWRkaXRpb24tYW5kLWZyYW1lLXJlbW92
YWwuaHRtbDogQWRkZWQuCisKIDIwMTgtMDctMDMgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzM0NjEuCklu
ZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay92aWRlby10cmFjay1hZGRpdGlvbi1hbmQtZnJh
bWUtcmVtb3ZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdmlkZW8tdHJhY2stYWRkaXRpb24tYW5kLWZyYW1lLXJlbW92YWwtZXhwZWN0ZWQudHh0
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLWFk
ZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgcmVtb3ZpbmcgYSBmcmFtZSBpbW1lZGlhdGVseSBhZnRl
ciBpbnNlcnRpbmcgYSBuZXcgdHJhY2sgZWxlbWVudC4KK1dlYktpdCBzaG91bGQgbm90IGhpdCBh
bnkgYXNzZXJ0aW9ucy4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay92aWRlby10
cmFjay1hZGRpdGlvbi1hbmQtZnJhbWUtcmVtb3ZhbC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLWFkZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFs
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdmlkZW8tdHJh
Y2stYWRkaXRpb24tYW5kLWZyYW1lLXJlbW92YWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Rz
IHJlbW92aW5nIGEgZnJhbWUgaW1tZWRpYXRlbHkgYWZ0ZXIgaW5zZXJ0aW5nIGEgbmV3IHRyYWNr
IGVsZW1lbnQuPGJyPgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGFueSBhc3NlcnRpb25zLjwvcD4K
KzxzY3JpcHQgc3JjPS4uLy4uL3Jlc291cmNlcy9nYy5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+CisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICBjb25zdCBkb2MgPSBmcmFtZS5jb250ZW50
RG9jdW1lbnQ7CisgICAgY29uc3QgdHJhY2tFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3Ry
YWNrJyk7CisgICAgZG9jLnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJykuYXBwZW5kQ2hpbGQodHJhY2tF
bGVtZW50KTsKKworICAgIGZyYW1lLnJlbW92ZSgpOworICAgIGdjKCk7CisgICAgc2V0VGltZW91
dCgoKSA9PiB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAgICAgCisgICAgfSwgMTAwKTsKK30KKworPC9zY3Jp
cHQ+Cis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSIuL3ZpZGVvLXRyYWNrLWFkZC1yZW1vdmUuaHRt
bCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344243</attachid>
            <date>2018-07-03 17:15:34 -0700</date>
            <delta_ts>2018-07-30 08:48:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187284-20180703171534.patch</filename>
            <type>text/plain</type>
            <size>39385</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDE4LTA3LTAzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2ggYWNjZXNz
aW5nIERvY3VtZW50IGluIEdlbmVyaWNFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2ZW50KCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzI4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBUaGUgbnVsbCBwb2lu
dGVyIGNyYXNoIHdhcyBjYXVzZWQgYnkgc29tZSBHZW5lcmljRXZlbnRRdWV1ZSBkaXNwYXRjaGlu
ZyBhbiBldmVudCBpbiBhIHN0b3BwZWQgZG9jdW1lbnQsCisgICAgICAgIHdoaWNoIGRvZXMgbm90
IGhhdmUgYSB2YWxpZCBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgYmVjYXVzZSBzb21lIHVzZXMg
b2YgR2VuZXJpY0V2ZW50UXVldWUgaW4gbWVkaWEgY29kZQorICAgICAgICB3YXMgbm90IGNsb3Np
bmcgdGhlIHF1ZXVlIHVwb24gc3RvcHBpbmcgb2YgYWxsIGFjdGl2ZSBET00gb2JqZWN0cy4KKwor
ICAgICAgICBGaXhlZCBhbGwgdXNlcyBvZiBHZW5lcmljRXZlbnRRdWV1ZSB3aGljaCBkaWQgbm90
IHN1c3BlbmQgb3Igc3RvcCB0aGUgcXVldWUgd2l0aCBhY3RpdmUgRE9NIG9iamVjdHMuCisgICAg
ICAgIE1hZGUgU291cmNlQnVmZmVyTGlzdCBhbmQgVHJhY2tMaXN0QmFzZSAoYWxvbmcgd2l0aCBB
dWRpb1RyYWNrTGlzdCwgVGV4dFRyYWNrTGlzdCwgYW5kIFZpZGVvVHJhY2tMaXN0KQorICAgICAg
ICBpbmhlcml0IGZyb20gQWN0aXZlRE9NT2JqZWN0IGluc3RlYWQgb2YgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIgdG8gZG8gdGhpcy4KKworICAgICAgICBBbHNvIGZpeGVkIGEgYnVnIHRoYXQg
bWVkaWEgZWxlbWVudHMgaW5zaWRlIGEgdGVtcGxhdGUgZWxlbWVudCAoYW5kIG90aGVyIGNhc2Vz
IHdoZXJlIHRoZSBkb2N1bWVudCBkb2Vzbid0CisgICAgICAgIGhhdmUgYSBicm93c2luZyBjb250
ZXh0KSB3ZXJlIHNjaGVkdWxpbmcgZXZlbnRzIHNpbmNlIHRoaXMgd291bGQgaGl0IHRoZSBuZXds
eSBhZGRlZCBkZWJ1ZyBhc3NlcnRpb24gaW4KKyAgICAgICAgR2VuZXJpY0V2ZW50UXVldWU6OmRp
c3BhdGNoT25lRXZlbnQuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svdmlkZW8tdHJhY2st
YWRkaXRpb24tYW5kLWZyYW1lLXJlbW92YWwuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c3VzcGVuZCk6IEFzc2VydCB0aGF0IHdlIG5l
dmVyIHRyeSB0byBzdXNwZW5kIHdoZW4gdGhlIGRvY3VtZW50IGhhcworICAgICAgICB0aGlzIG9i
amVjdCBhbGl2ZSBzaW5jZSBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGFsd2F5cyBy
ZXR1cm5zIGZhbHNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpy
ZXN1bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6
c3RvcCk6IFN0b3AgdGhlIGV2ZW50IHF1ZXVlIHRvIGF2b2lkIHRoZSBjcmFzaC4KKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIpOiBEb24ndCBkbyBhbnkg
d29yayB0byB1cGRhdGUgdHJhY2tzIHdoZW4gdGhlIGFjdGl2ZSBET00KKyAgICAgICAgb2JqZWN0
cyBhcmUgc3RvcHBlZCBzaW5jZSB0aGlzIE1lZGlhU291cmNlIGFuZCB0aGUgcmVsYXRlZCBtZWRp
YSBvYmplY3RzIGFyZSBhYm91dCB0byBiZSBkZXN0cnVjdGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTb3VyY2U6OnN1c3BlbmQpOiBBc3NlcnQgdGhhdCBtX2FzeW5jRXZlbnRRdWV1ZSBpcyBl
bXB0eSBhcyBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uCisgICAgICAgIHJldHVybnMg
ZmFsc2Ugd2hlbmV2ZXIgdGhlIHF1ZXVlIGlzIG5vdCBlbXB0eS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpyZXN1bWUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdXNwZW5kKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnJlc3VtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdG9wKTogU3RvcCB0aGUgZXZlbnQgcXVldWUg
dG8gYXZvaWQgdGhlIGNyYXNoLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckxpc3QpOiBNYWRlIHRoaXMgYW4g
YWN0aXZlIERPTSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJMaXN0OjpT
b3VyY2VCdWZmZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckxpc3Q6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOiBBZGRlZC4gUmV0dXJuIGZhbHNl
IHdoZW4gdGhlcmUgYXJlCisgICAgICAgIHBlbmRpbmcgZXZlbnRzIHRvIG1hdGNoIG90aGVyIG1l
ZGlhIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJMaXN0OjpzdXNwZW5kKTog
QWRkZWQuIEFzc2VydCB0aGF0IHRoZSBldmVudCBxdWV1ZSBpcyBlbXB0eSBoZXJlLgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyTGlzdDo6cmVzdW1lKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJMaXN0OjpzdG9wKTogQWRkZWQuIFN0b3AgdGhlIGV2ZW50IHF1
ZXVlIHRvIGF2b2lkIHRoZSBjcmFzaC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckxp
c3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlckxpc3QpOiBNYWRlIHRoaXMgYW4gYWN0aXZlIERPTSBvYmplY3QuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbDoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNCcm93c2luZ0NvbnRl
eHQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0V2ZW50UXVldWU6OmRpc3BhdGNoT25lRXZlbnQpOiBB
ZGRlZCBhbiBhc3NlcnRpb24gdG8gY2F0Y2ggd2hlbiBhbiBldmVudCBpcyBkaXNwYXRjaGVkCisg
ICAgICAgIGluc2lkZSBhIHN0b3BwZWQgZG9jdW1lbnQsIHdoaWNoIGlzIG5ldmVyIGNvcnJlY3Qg
YW5kIGNhdXNlcyB0aGlzIGNyYXNoIGRvd24gdGhlIGxpbmUuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXlJbnRlcm5hbCk6IEV4aXQgZWFybHkgd2hlbiB0aGUgZG9jdW1lbnQgZG9lc24ndCBoYXZlIGEg
YnJvd3NpbmcgY29udGV4dDsKKyAgICAgICAgZS5nLiB3aGVuIHRoZSBtZWRpYSBlbGVtZW50IGlz
IGluc2lkZSBhIHRlbXBsYXRlIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpwYXVzZUludGVybmFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuY3BwOgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OmFjdGl2ZURPTU9i
amVjdE5hbWUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0Lmg6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcDo6CisgICAgICAgIChUZXh0VHJhY2tMaXN0
OjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0Lmg6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmlk
bDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tMaXN0QmFzZSk6IE1hZGUgdGhpcyBhbiBhY3RpdmUgRE9NIG9iamVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOiAKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24g
Y29uc3QpOiBBZGRlZC4gUmV0dXJuIGZhbHNlIHdoZW4gdGhlcmUgYXJlIHBlbmRpbmcgZXZlbnRz
CisgICAgICAgIHRvIG1hdGNoIG90aGVyIG1lZGlhIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpU
cmFja0xpc3RCYXNlOjpzdXNwZW5kKTogQWRkZWQuIEFzc2VydCB0aGF0IHRoZSBldmVudCBxdWV1
ZSBpcyBlbXB0eSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6cmVzdW1l
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzdG9wKTogQWRkZWQu
IFN0b3AgdGhlIGV2ZW50IHF1ZXVlIHRvIGF2b2lkIHRoZSBjcmFzaC4KKyAgICAgICAgKiBodG1s
L3RyYWNrL1RyYWNrTGlzdEJhc2UuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjphY3RpdmVET01PYmplY3ROYW1lIGNv
bnN0KTogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oOgorICAg
ICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOgorCiAyMDE4LTA3LTAzICBCYXN1
a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbQ3VybF0gRW1i
ZWQgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24gaW50byBSZXNvdXJjZVJlc3BvbnNlLgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCShyZXZpc2lvbiAyMzM0
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksOCArMjM5LDE5IEBA
IGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWMKICAgICByZXR1cm4gKG1f
a2V5cyAmJiBtX3Nlc3Npb24pIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRpbmdFdmVudHMo
KTsKIH0KIAordm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJLaXRN
ZWRpYUtleVNlc3Npb246OnJlc3VtZSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9wKCkKIHsKKyAgICBtX2FzeW5jRXZl
bnRRdWV1ZS5jbG9zZSgpOwogICAgIGNsb3NlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oCShyZXZpc2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVu
c2lvbikgZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBm
aW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmNwcAkocmV2aXNpb24gMjMzNDgxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5MiwxMjQgKzY5
MiwxMjcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnJlbW92ZVNvdQogICAgIC8v
IDMuIElmIHRoZSBzb3VyY2VCdWZmZXIudXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0
aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOiAuLi4KICAgICBidWZmZXIuYWJvcnRJZlVwZGF0
aW5nKCk7CiAKLSAgICAvLyA0LiBMZXQgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QgZXF1
YWwgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSBzb3VyY2VCdWZmZXIuYXVk
aW9UcmFja3MuCi0gICAgYXV0byYgYXVkaW9UcmFja3MgPSBidWZmZXIuYXVkaW9UcmFja3MoKTsK
LQotICAgIC8vIDUuIElmIHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCBpcyBub3Qg
ZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgaWYgKGF1ZGlvVHJhY2tz
Lmxlbmd0aCgpKSB7Ci0gICAgICAgIC8vIDUuMSBMZXQgSFRNTE1lZGlhRWxlbWVudCBhdWRpb1Ry
YWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQgYnkgdGhl
IGF1ZGlvVHJhY2tzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVu
dC4KLSAgICAgICAgLy8gNS4yIExldCB0aGUgcmVtb3ZlZCBlbmFibGVkIGF1ZGlvIHRyYWNrIGZs
YWcgZXF1YWwgZmFsc2UuCi0gICAgICAgIGJvb2wgcmVtb3ZlZEVuYWJsZWRBdWRpb1RyYWNrID0g
ZmFsc2U7Ci0KLSAgICAgICAgLy8gNS4zIEZvciBlYWNoIEF1ZGlvVHJhY2sgb2JqZWN0IGluIHRo
ZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
Ci0gICAgICAgIHdoaWxlIChhdWRpb1RyYWNrcy5sZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0
byYgdHJhY2sgPSAqYXVkaW9UcmFja3MubGFzdEl0ZW0oKTsKLQotICAgICAgICAgICAgLy8gNS4z
LjEgU2V0IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9iamVj
dCB0byBudWxsLgotICAgICAgICAgICAgdHJhY2suc2V0U291cmNlQnVmZmVyKG51bGxwdHIpOwot
Ci0gICAgICAgICAgICAvLyA1LjMuMiBJZiB0aGUgZW5hYmxlZCBhdHRyaWJ1dGUgb24gdGhlIEF1
ZGlvVHJhY2sgb2JqZWN0IGlzIHRydWUsIHRoZW4gc2V0IHRoZSByZW1vdmVkIGVuYWJsZWQKLSAg
ICAgICAgICAgIC8vIGF1ZGlvIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KLSAgICAgICAgICAgIGlmICh0
cmFjay5lbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgcmVtb3ZlZEVuYWJsZWRBdWRpb1RyYWNr
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gNS4zLjMgUmVtb3ZlIHRoZSBBdWRpb1RyYWNrIG9i
amVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCi0gICAgICAg
ICAgICAvLyA1LjMuNCBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQg
cmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKLSAgICAgICAgICAg
IC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBh
dCB0aGUgSFRNTE1lZGlhRWxlbWVudCBhdWRpb1RyYWNrcyBsaXN0LgotICAgICAgICAgICAgaWYg
KG1lZGlhRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVB
dWRpb1RyYWNrKHRyYWNrKTsKLQotICAgICAgICAgICAgLy8gNS4zLjUgUmVtb3ZlIHRoZSBBdWRp
b1RyYWNrIG9iamVjdCBmcm9tIHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdC4KLSAg
ICAgICAgICAgIC8vIDUuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBu
YW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAotICAgICAg
ICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZh
Y2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdC4KLSAgICAgICAgICAgIGF1
ZGlvVHJhY2tzLnJlbW92ZSh0cmFjayk7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9iamVj
dHNBcmVTdG9wcGVkKCkpIHsKKyAgICAgICAgLy8gNC4gTGV0IFNvdXJjZUJ1ZmZlciBhdWRpb1Ry
YWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQgYnkgc291
cmNlQnVmZmVyLmF1ZGlvVHJhY2tzLgorICAgICAgICBhdXRvJiBhdWRpb1RyYWNrcyA9IGJ1ZmZl
ci5hdWRpb1RyYWNrcygpOworCisgICAgICAgIC8vIDUuIElmIHRoZSBTb3VyY2VCdWZmZXIgYXVk
aW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CisgICAgICAgIGlmIChhdWRpb1RyYWNrcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgLy8gNS4x
IExldCBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QgZXF1YWwgdGhlIEF1ZGlvVHJh
Y2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgYXVkaW9UcmFja3MKKyAgICAgICAgICAgIC8v
IGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAgICAgICAgICAgIC8vIDUuMiBM
ZXQgdGhlIHJlbW92ZWQgZW5hYmxlZCBhdWRpbyB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgorICAg
ICAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSBmYWxzZTsKKworICAgICAg
ICAgICAgLy8gNS4zIEZvciBlYWNoIEF1ZGlvVHJhY2sgb2JqZWN0IGluIHRoZSBTb3VyY2VCdWZm
ZXIgYXVkaW9UcmFja3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAg
ICB3aGlsZSAoYXVkaW9UcmFja3MubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiB0
cmFjayA9ICphdWRpb1RyYWNrcy5sYXN0SXRlbSgpOworCisgICAgICAgICAgICAgICAgLy8gNS4z
LjEgU2V0IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9iamVj
dCB0byBudWxsLgorICAgICAgICAgICAgICAgIHRyYWNrLnNldFNvdXJjZUJ1ZmZlcihudWxscHRy
KTsKKworICAgICAgICAgICAgICAgIC8vIDUuMy4yIElmIHRoZSBlbmFibGVkIGF0dHJpYnV0ZSBv
biB0aGUgQXVkaW9UcmFjayBvYmplY3QgaXMgdHJ1ZSwgdGhlbiBzZXQgdGhlIHJlbW92ZWQgZW5h
YmxlZAorICAgICAgICAgICAgICAgIC8vIGF1ZGlvIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAg
ICAgICAgICAgICBpZiAodHJhY2suZW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICByZW1v
dmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gNS4zLjMg
UmVtb3ZlIHRoZSBBdWRpb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1
ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgLy8gNS4zLjQgUXVldWUgYSB0YXNrIHRv
IGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1
YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQg
dXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1
ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQorICAg
ICAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7
CisKKyAgICAgICAgICAgICAgICAvLyA1LjMuNSBSZW1vdmUgdGhlIEF1ZGlvVHJhY2sgb2JqZWN0
IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgICAg
IC8vIDUuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCByZW1v
dmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAorICAgICAgICAgICAgICAg
IC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBh
dCB0aGUgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgYXVk
aW9UcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
NS40IElmIHRoZSByZW1vdmVkIGVuYWJsZWQgYXVkaW8gdHJhY2sgZmxhZyBlcXVhbHMgdHJ1ZSwg
dGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAorICAgICAgICAgICAgLy8g
bmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCisg
ICAgICAgICAgICBpZiAocmVtb3ZlZEVuYWJsZWRBdWRpb1RyYWNrKQorICAgICAgICAgICAgICAg
IG1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIC8vIDUuNCBJZiB0aGUgcmVtb3ZlZCBlbmFibGVkIGF1ZGlvIHRy
YWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUg
ZXZlbnQKLSAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1
ZGlvVHJhY2tzIGxpc3QuCi0gICAgICAgIGlmIChyZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2spCi0g
ICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+YXVkaW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7Ci0gICAgfQotCi0gICAgLy8gNi4gTGV0IFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNrcyBs
aXN0IGVxdWFsIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQgYnkgc291cmNlQnVm
ZmVyLnZpZGVvVHJhY2tzLgotICAgIGF1dG8mIHZpZGVvVHJhY2tzID0gYnVmZmVyLnZpZGVvVHJh
Y2tzKCk7CisgICAgICAgIC8vIDYuIExldCBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdCBl
cXVhbCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHNvdXJjZUJ1ZmZlci52
aWRlb1RyYWNrcy4KKyAgICAgICAgYXV0byYgdmlkZW9UcmFja3MgPSBidWZmZXIudmlkZW9UcmFj
a3MoKTsKIAotICAgIC8vIDcuIElmIHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdCBp
cyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgaWYgKHZpZGVv
VHJhY2tzLmxlbmd0aCgpKSB7Ci0gICAgICAgIC8vIDcuMSBMZXQgSFRNTE1lZGlhRWxlbWVudCB2
aWRlb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQg
YnkgdGhlIHZpZGVvVHJhY2tzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KLSAgICAgICAgLy8gNy4yIExldCB0aGUgcmVtb3ZlZCBzZWxlY3RlZCB2aWRlbyB0
cmFjayBmbGFnIGVxdWFsIGZhbHNlLgotICAgICAgICBib29sIHJlbW92ZWRTZWxlY3RlZFZpZGVv
VHJhY2sgPSBmYWxzZTsKLQotICAgICAgICAvLyA3LjMgRm9yIGVhY2ggVmlkZW9UcmFjayBvYmpl
Y3QgaW4gdGhlIFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczoKLSAgICAgICAgd2hpbGUgKHZpZGVvVHJhY2tzLmxlbmd0aCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiB0cmFjayA9ICp2aWRlb1RyYWNrcy5sYXN0SXRlbSgpOwotCi0gICAgICAgICAg
ICAvLyA3LjMuMSBTZXQgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhlIFZpZGVvVHJh
Y2sgb2JqZWN0IHRvIG51bGwuCi0gICAgICAgICAgICB0cmFjay5zZXRTb3VyY2VCdWZmZXIobnVs
bHB0cik7Ci0KLSAgICAgICAgICAgIC8vIDcuMy4yIElmIHRoZSBzZWxlY3RlZCBhdHRyaWJ1dGUg
b24gdGhlIFZpZGVvVHJhY2sgb2JqZWN0IGlzIHRydWUsIHRoZW4gc2V0IHRoZSByZW1vdmVkIHNl
bGVjdGVkCi0gICAgICAgICAgICAvLyB2aWRlbyB0cmFjayBmbGFnIHRvIHRydWUuCi0gICAgICAg
ICAgICBpZiAodHJhY2suc2VsZWN0ZWQoKSkKLSAgICAgICAgICAgICAgICByZW1vdmVkU2VsZWN0
ZWRWaWRlb1RyYWNrID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gNy4zLjMgUmVtb3ZlIHRoZSBW
aWRlb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxp
c3QuCi0gICAgICAgICAgICAvLyA3LjMuNCBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQg
ZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QK
LSAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQg
aW50ZXJmYWNlLCBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCB2aWRlb1RyYWNrcyBsaXN0LgotICAg
ICAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVu
dCgpLT5yZW1vdmVWaWRlb1RyYWNrKHRyYWNrKTsKLQotICAgICAgICAgICAgLy8gNy4zLjUgUmVt
b3ZlIHRoZSBWaWRlb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFj
a3MgbGlzdC4KLSAgICAgICAgICAgIC8vIDcuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1
c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlz
IG5vdAotICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tF
dmVudCBpbnRlcmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdC4KLSAg
ICAgICAgICAgIHZpZGVvVHJhY2tzLnJlbW92ZSh0cmFjayk7CisgICAgICAgIC8vIDcuIElmIHRo
ZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIGlmICh2aWRlb1RyYWNrcy5sZW5ndGgoKSkgewor
ICAgICAgICAgICAgLy8gNy4xIExldCBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3Qg
ZXF1YWwgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgdmlkZW9UcmFj
a3MKKyAgICAgICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAg
ICAgICAgICAgIC8vIDcuMiBMZXQgdGhlIHJlbW92ZWQgc2VsZWN0ZWQgdmlkZW8gdHJhY2sgZmxh
ZyBlcXVhbCBmYWxzZS4KKyAgICAgICAgICAgIGJvb2wgcmVtb3ZlZFNlbGVjdGVkVmlkZW9UcmFj
ayA9IGZhbHNlOworCisgICAgICAgICAgICAvLyA3LjMgRm9yIGVhY2ggVmlkZW9UcmFjayBvYmpl
Y3QgaW4gdGhlIFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczoKKyAgICAgICAgICAgIHdoaWxlICh2aWRlb1RyYWNrcy5sZW5ndGgoKSkgeworICAg
ICAgICAgICAgICAgIGF1dG8mIHRyYWNrID0gKnZpZGVvVHJhY2tzLmxhc3RJdGVtKCk7CisKKyAg
ICAgICAgICAgICAgICAvLyA3LjMuMSBTZXQgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24g
dGhlIFZpZGVvVHJhY2sgb2JqZWN0IHRvIG51bGwuCisgICAgICAgICAgICAgICAgdHJhY2suc2V0
U291cmNlQnVmZmVyKG51bGxwdHIpOworCisgICAgICAgICAgICAgICAgLy8gNy4zLjIgSWYgdGhl
IHNlbGVjdGVkIGF0dHJpYnV0ZSBvbiB0aGUgVmlkZW9UcmFjayBvYmplY3QgaXMgdHJ1ZSwgdGhl
biBzZXQgdGhlIHJlbW92ZWQgc2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAvLyB2aWRlbyB0cmFj
ayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLnNlbGVjdGVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIHJlbW92ZWRTZWxlY3RlZFZpZGVvVHJhY2sgPSB0cnVlOworCisg
ICAgICAgICAgICAgICAgLy8gNy4zLjMgUmVtb3ZlIHRoZSBWaWRlb1RyYWNrIG9iamVjdCBmcm9t
IHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAg
Ly8gNy4zLjQgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92
ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAg
Ly8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0
IHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAg
aWYgKG1lZGlhRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+
cmVtb3ZlVmlkZW9UcmFjayh0cmFjayk7CisKKyAgICAgICAgICAgICAgICAvLyA3LjMuNSBSZW1v
dmUgdGhlIFZpZGVvVHJhY2sgb2JqZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNr
cyBsaXN0LgorICAgICAgICAgICAgICAgIC8vIDcuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
dHJ1c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5k
IGlzIG5vdAorICAgICAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhl
IFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVyIHZpZGVvVHJhY2tzIGxp
c3QuCisgICAgICAgICAgICAgICAgdmlkZW9UcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gNy40IElmIHRoZSByZW1vdmVkIHNlbGVjdGVkIHZpZGVv
IHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1w
bGUgZXZlbnQKKyAgICAgICAgICAgIC8vIG5hbWVkIGNoYW5nZSBhdCB0aGUgSFRNTE1lZGlhRWxl
bWVudCB2aWRlb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAgaWYgKHJlbW92ZWRTZWxlY3RlZFZp
ZGVvVHJhY2spCisgICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnZpZGVvVHJhY2tzKCku
c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gNy40IElmIHRo
ZSByZW1vdmVkIHNlbGVjdGVkIHZpZGVvIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQKLSAgICAgICAgLy8gbmFtZWQgY2hhbmdl
IGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCi0gICAgICAgIGlmIChy
ZW1vdmVkU2VsZWN0ZWRWaWRlb1RyYWNrKQotICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnZp
ZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwotICAgIH0KLQotICAgIC8vIDguIExl
dCBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0IGVxdWFsIHRoZSBUZXh0VHJhY2tMaXN0IG9i
amVjdCByZXR1cm5lZCBieSBzb3VyY2VCdWZmZXIudGV4dFRyYWNrcy4KLSAgICBhdXRvJiB0ZXh0
VHJhY2tzID0gYnVmZmVyLnRleHRUcmFja3MoKTsKKyAgICAgICAgLy8gOC4gTGV0IFNvdXJjZUJ1
ZmZlciB0ZXh0VHJhY2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJldHVy
bmVkIGJ5IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgorICAgICAgICBhdXRvJiB0ZXh0VHJhY2tz
ID0gYnVmZmVyLnRleHRUcmFja3MoKTsKIAotICAgIC8vIDkuIElmIHRoZSBTb3VyY2VCdWZmZXIg
dGV4dFRyYWNrcyBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVw
czoKLSAgICBpZiAodGV4dFRyYWNrcy5sZW5ndGgoKSkgewotICAgICAgICAvLyA5LjEgTGV0IEhU
TUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0IGVxdWFsIHRoZSBUZXh0VHJhY2tMaXN0IG9i
amVjdCByZXR1cm5lZCBieSB0aGUgdGV4dFRyYWNrcwotICAgICAgICAvLyBhdHRyaWJ1dGUgb24g
dGhlIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgICAgIC8vIDkuMiBMZXQgdGhlIHJlbW92ZWQgZW5h
YmxlZCB0ZXh0IHRyYWNrIGZsYWcgZXF1YWwgZmFsc2UuCi0gICAgICAgIGJvb2wgcmVtb3ZlZEVu
YWJsZWRUZXh0VHJhY2sgPSBmYWxzZTsKLQotICAgICAgICAvLyA5LjMgRm9yIGVhY2ggVGV4dFRy
YWNrIG9iamVjdCBpbiB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIHdoaWxlICh0ZXh0VHJhY2tzLmxlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvJiB0cmFjayA9ICp0ZXh0VHJhY2tzLmxhc3RJdGVtKCk7Ci0KLSAgICAg
ICAgICAgIC8vIDkuMy4xIFNldCB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGUgVGV4
dFRyYWNrIG9iamVjdCB0byBudWxsLgotICAgICAgICAgICAgdHJhY2suc2V0U291cmNlQnVmZmVy
KG51bGxwdHIpOwotCi0gICAgICAgICAgICAvLyA5LjMuMiBJZiB0aGUgbW9kZSBhdHRyaWJ1dGUg
b24gdGhlIFRleHRUcmFjayBvYmplY3QgaXMgc2V0IHRvICJzaG93aW5nIiBvciAiaGlkZGVuIiwg
dGhlbgotICAgICAgICAgICAgLy8gc2V0IHRoZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBm
bGFnIHRvIHRydWUuCi0gICAgICAgICAgICBpZiAodHJhY2subW9kZSgpID09IFRleHRUcmFjazo6
TW9kZTo6U2hvd2luZyB8fCB0cmFjay5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4p
Ci0gICAgICAgICAgICAgICAgcmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2sgPSB0cnVlOwotCi0gICAg
ICAgICAgICAvLyA5LjMuMyBSZW1vdmUgdGhlIFRleHRUcmFjayBvYmplY3QgZnJvbSB0aGUgSFRN
TE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3QuCi0gICAgICAgICAgICAvLyA5LjMuNCBRdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQg
ZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKLSAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFu
ZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgSFRNTE1lZGlhRWxl
bWVudCB0ZXh0VHJhY2tzIGxpc3QuCi0gICAgICAgICAgICBpZiAobWVkaWFFbGVtZW50KCkpCi0g
ICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnJlbW92ZVRleHRUcmFjayh0cmFjayk7Ci0K
LSAgICAgICAgICAgIC8vIDkuMy41IFJlbW92ZSB0aGUgVGV4dFRyYWNrIG9iamVjdCBmcm9tIHRo
ZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0LgotICAgICAgICAgICAgLy8gOS4zLjYgUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0
IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90Ci0gICAgICAgICAgICAvLyBjYW5jZWxhYmxlLCBh
bmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFNvdXJjZUJ1ZmZl
ciB0ZXh0VHJhY2tzIGxpc3QuCi0gICAgICAgICAgICB0ZXh0VHJhY2tzLnJlbW92ZSh0cmFjayk7
CisgICAgICAgIC8vIDkuIElmIHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0IGlzIG5v
dCBlbXB0eSwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgaWYgKHRleHRU
cmFja3MubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIC8vIDkuMSBMZXQgSFRNTE1lZGlhRWxlbWVu
dCB0ZXh0VHJhY2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJldHVybmVk
IGJ5IHRoZSB0ZXh0VHJhY2tzCisgICAgICAgICAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxN
ZWRpYUVsZW1lbnQuCisgICAgICAgICAgICAvLyA5LjIgTGV0IHRoZSByZW1vdmVkIGVuYWJsZWQg
dGV4dCB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgorICAgICAgICAgICAgYm9vbCByZW1vdmVkRW5h
YmxlZFRleHRUcmFjayA9IGZhbHNlOworCisgICAgICAgICAgICAvLyA5LjMgRm9yIGVhY2ggVGV4
dFRyYWNrIG9iamVjdCBpbiB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdCwgcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICB3aGlsZSAodGV4dFRyYWNrcy5sZW5ndGgo
KSkgeworICAgICAgICAgICAgICAgIGF1dG8mIHRyYWNrID0gKnRleHRUcmFja3MubGFzdEl0ZW0o
KTsKKworICAgICAgICAgICAgICAgIC8vIDkuMy4xIFNldCB0aGUgc291cmNlQnVmZmVyIGF0dHJp
YnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9iamVjdCB0byBudWxsLgorICAgICAgICAgICAgICAgIHRy
YWNrLnNldFNvdXJjZUJ1ZmZlcihudWxscHRyKTsKKworICAgICAgICAgICAgICAgIC8vIDkuMy4y
IElmIHRoZSBtb2RlIGF0dHJpYnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9iamVjdCBpcyBzZXQgdG8g
InNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuCisgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBy
ZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIHRvIHRydWUuCisgICAgICAgICAgICAgICAg
aWYgKHRyYWNrLm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcgfHwgdHJhY2subW9k
ZSgpID09IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKQorICAgICAgICAgICAgICAgICAgICByZW1v
dmVkRW5hYmxlZFRleHRUcmFjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyA5LjMuMyBS
ZW1vdmUgdGhlIFRleHRUcmFjayBvYmplY3QgZnJvbSB0aGUgSFRNTE1lZGlhRWxlbWVudCB0ZXh0
VHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgLy8gOS4zLjQgUXVldWUgYSB0YXNrIHRvIGZp
cmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJs
ZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNl
cyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRU
cmFja3MgbGlzdC4KKyAgICAgICAgICAgICAgICBpZiAobWVkaWFFbGVtZW50KCkpCisgICAgICAg
ICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVUZXh0VHJhY2sodHJhY2spOworCisg
ICAgICAgICAgICAgICAgLy8gOS4zLjUgUmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGZyb20g
dGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgLy8gOS4z
LjYgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNr
LCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBT
b3VyY2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0LgorICAgICAgICAgICAgICAgIHRleHRUcmFja3Mu
cmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gOS40IElmIHRo
ZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHF1ZXVl
IGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50CisgICAgICAgICAgICAvLyBuYW1lZCBjaGFu
Z2UgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgorICAgICAgICAgICAg
aWYgKHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrKQorICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVu
dCgpLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gOS40IElmIHRoZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIGVxdWFs
cyB0cnVlLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50Ci0gICAgICAg
IC8vIG5hbWVkIGNoYW5nZSBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3Qu
Ci0gICAgICAgIGlmIChyZW1vdmVkRW5hYmxlZFRleHRUcmFjaykKLSAgICAgICAgICAgIG1lZGlh
RWxlbWVudCgpLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogICAgIH0KIAog
ICAgIC8vIDEwLiBJZiBzb3VyY2VCdWZmZXIgaXMgaW4gYWN0aXZlU291cmNlQnVmZmVycywgdGhl
biByZW1vdmUgc291cmNlQnVmZmVyIGZyb20gYWN0aXZlU291cmNlQnVmZmVycyAuLi4KQEAgLTkz
Miw2ICs5MzUsMTYgQEAgYm9vbCBNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgYwog
ICAgICAgICB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2
b2lkIE1lZGlhU291cmNlOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgQVNT
RVJUKCFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCkpOworfQorCit2b2lkIE1l
ZGlhU291cmNlOjpyZXN1bWUoKQoreworICAgIEFTU0VSVCghbV9hc3luY0V2ZW50UXVldWUuaGFz
UGVuZGluZ0V2ZW50cygpKTsKK30KKwogdm9pZCBNZWRpYVNvdXJjZTo6c3RvcCgpCiB7CiAgICAg
bV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
TWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCisgICAgdm9pZCBzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAkocmV2aXNpb24gMjMzNDgxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NTgsOCArNDU4LDE5IEBAIGJvb2wgU291cmNlQnVmZmVyOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSAKICAgICByZXR1cm4gbV9zb3VyY2UgfHwgbV9hc3luY0V2ZW50UXVldWUuaGFzUGVu
ZGluZ0V2ZW50cygpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c3VzcGVuZChSZWFzb25Gb3JT
dXNwZW5zaW9uKQoreworICAgIEFTU0VSVCghaGFzUGVuZGluZ0FjdGl2aXR5KCkpOworfQorCit2
b2lkIFNvdXJjZUJ1ZmZlcjo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoIWhhc1BlbmRpbmdBY3Rp
dml0eSgpKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQogeworICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7CiAgICAg
bV9yZW1vdmVUaW1lci5zdG9wKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyBkZXJlZigpOyB9CiAKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmlu
YWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyTGlzdC5jcHAJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkg
KzQwLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNvdXJjZUJ1ZmZlckxpc3Q6OlNvdXJj
ZUJ1ZmZlckxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCkKICAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQogeworICAgIHN1c3BlbmRJZk5l
ZWRlZCgpOwogfQogCiBTb3VyY2VCdWZmZXJMaXN0Ojp+U291cmNlQnVmZmVyTGlzdCgpCkBAIC05
Nyw2ICs5OCwzMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnNjaGVkdWxlRXZlbnQoY29uCiAg
ICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAor
Ym9vbCBTb3VyY2VCdWZmZXJMaXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIW1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRpbmdFdmVudHMo
KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJMaXN0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNp
b24pCit7CisgICAgQVNTRVJUKCFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCkp
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnJlc3VtZSgpCit7CisgICAgQVNTRVJUKCFt
X2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCkpOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlckxpc3Q6OnN0b3AoKQoreworICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7Cit9CisK
K2NvbnN0IGNoYXIqIFNvdXJjZUJ1ZmZlckxpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiAiU291cmNlQnVmZmVyTGlzdCI7Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCi0jaW5j
bHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVu
dFF1ZXVlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQyLDcgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTb3VyY2VCdWZmZXI7CiAKLWNsYXNzIFNvdXJj
ZUJ1ZmZlckxpc3QgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJMaXN0Piwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CitjbGFzcyBTb3VyY2VCdWZmZXJMaXN0IGZpbmFsIDogcHVibGljIFJlZkNv
dW50ZWQ8U291cmNlQnVmZmVyTGlzdD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvdXJj
ZUJ1ZmZlckxpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAg
IHsKQEAgLTc3LDYgKzc3LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlk
ZSB7IGRlcmVmKCk7IH0KIAorICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBm
aW5hbDsKKyAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOwor
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKwogICAg
IEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwogCiAgICAgVmVjdG9yPFJlZlB0
cjxTb3VyY2VCdWZmZXI+PiBtX2xpc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5pZGwJKHJldmlzaW9uIDIz
MzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
TGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICAqLwogIAogWworICAg
IEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1NRURJQV9TT1VSQ0UsCiAgICAgR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyTGlzdCA6IEV2
ZW50VGFyZ2V0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMzM0ODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODAzLDYg
KzgwMyw4IEBAIHB1YmxpYzoKICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3VtZW50J3Mg
RE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCiAgICAgV0VCQ09SRV9FWFBPUlQg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KCkgY29uc3Q7CiAKKyAgICBib29sIGhhc0Jyb3dzaW5n
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuICEhZnJhbWUoKTsgfQorCiAgICAgRG9jdW1lbnQmIGNv
bnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IG1ha2VXZWFrUHRyKGRvY3VtZW50
KTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAJKHJl
dmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUg
Ik5vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjUsNiArNjcsOSBAQCB2
b2lkIEdlbmVyaWNFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2ZW50CiAgICAgUmVmPEV2ZW50VGFy
Z2V0PiBwcm90ZWN0KG1fb3duZXIpOwogICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBtX3BlbmRp
bmdFdmVudHMudGFrZUZpcnN0KCk7CiAgICAgRXZlbnRUYXJnZXQmIHRhcmdldCA9IGV2ZW50LT50
YXJnZXQoKSA/ICpldmVudC0+dGFyZ2V0KCkgOiBtX293bmVyOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXRhcmdldC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9iamVjdHNB
cmVTdG9wcGVkKCksCisgICAgICAgICJBbiBhdHRlbXB0IHRvIGRpc3BhdGNoIGFuIGV2ZW50IG9u
IGEgc3RvcHBlZCB0YXJnZXQgYnkgRXZlbnRUYXJnZXRJbnRlcmZhY2U9JWQgKG5vZGVOYW1lPSVz
IHRhcmdldD0lcCBvd25lcj0lcCkiLAorICAgICAgICBtX293bmVyLmV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCksIG1fb3duZXIuaXNOb2RlKCkgPyBzdGF0aWNfY2FzdDxOb2RlJj4obV9vd25lcikubm9k
ZU5hbWUoKS5hc2NpaSgpLmRhdGEoKSA6ICIiLCAmdGFyZ2V0LCAmbV9vd25lcik7CiAgICAgdGFy
Z2V0LmRpc3BhdGNoRXZlbnQoKmV2ZW50KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDYgKzEy
ODQsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKICAgICBtX2xv
YWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CiAgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IG51
bGxwdHI7CiAKKyAgICBpZiAoIWRvY3VtZW50KCkuaGFzQnJvd3NpbmdDb250ZXh0KCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGNyZWF0ZU1lZGlhUGxheWVyKCk7CiAKICAgICAvLyAyIC0gTGV0
IHBlbmRpbmcgdGFza3MgYmUgYSBsaXN0IG9mIGFsbCB0YXNrcyBmcm9tIHRoZSBtZWRpYSBlbGVt
ZW50J3MgbWVkaWEgZWxlbWVudCBldmVudCB0YXNrIHNvdXJjZSBpbiBvbmUgb2YgdGhlIHRhc2sg
cXVldWVzLgpAQCAtMTQwMSw3ICsxNDA0LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3RNZWRpYVJlc291cgogICAgIC8vIHB1dCBpbnRvIHRoZSBiYWNrZ3JvdW5kLgogICAgIG1fbWVk
aWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246
OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKIAotCiAgICAgbV9yZXNvdXJjZVNlbGVj
dGlvblRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpc10gIHsKICAgICAgICAgLy8gNS4gSWYgdGhl
IG1lZGlhIGVsZW1lbnTigJlzIGJsb2NrZWQtb24tcGFyc2VyIGZsYWcgaXMgZmFsc2UsIHRoZW4g
cG9wdWxhdGUgdGhlIGxpc3Qgb2YgcGVuZGluZyB0ZXh0IHRyYWNrcy4KICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCkBAIC0yODc3LDcgKzI4NzksNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN1
cHBvcnRzU2Nhbm5pbmcoCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVUb1BsYXkoKQog
ewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwotICAgIGlmIChtX2hhdmVQcmVwYXJlZFRv
UGxheSkKKyAgICBpZiAobV9oYXZlUHJlcGFyZWRUb1BsYXkgfHwgIWRvY3VtZW50KCkuaGFzQnJv
d3NpbmdDb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2hhdmVQcmVwYXJlZFRvUGxh
eSA9IHRydWU7CiAgICAgaWYgKG1fcGxheWVyKQpAQCAtMzQ3Miw2ICszNDc0LDExIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIGlmICghZG9jdW1lbnQoKS5oYXNCcm93c2luZ0NvbnRleHQoKSkgeworICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiICByZXR1cm5pbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBi
cm93c2luZyBjb250ZXh0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1f
bWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpKSB7CiAgICAgICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgIiAgcmV0dXJuaW5nIGJlY2F1c2Ugb2YgaW50ZXJydXB0aW9u
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTM1NjMsNiArMzU3MCwxMSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
aWYgKCFkb2N1bWVudCgpLmhhc0Jyb3dzaW5nQ29udGV4dCgpKSB7CisgICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsICIgIHJldHVybmluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJyb3dzaW5n
IGNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghbV9tZWRpYVNl
c3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkpIHsKICAgICAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAiICByZXR1cm5pbmcgYmVjYXVzZSBvZiBpbnRlcnJ1cHRpb24iKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDYyNCw2ICs0NjM2LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c291cmNlV2FzQWRkZWQoSFQKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIidz
cmMnIGlzICIsIHVybCk7CiAgICAgfQogCisgICAgaWYgKCFkb2N1bWVudCgpLmhhc0Jyb3dzaW5n
Q29udGV4dCgpKSB7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICI8c291cmNlPiBp
bnNlcnRlZCBpbnNpZGUgYSBkb2N1bWVudCB3aXRob3V0IGEgYnJvd3NpbmcgY29udGV4dCBpcyBu
b3QgbG9hZGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBXZSBzaG91bGQg
b25seSBjb25zaWRlciBhIDxzb3VyY2U+IGVsZW1lbnQgd2hlbiB0aGVyZSBpcyBub3Qgc3JjIGF0
dHJpYnV0ZSBhdCBhbGwuCiAgICAgaWYgKGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oc3JjQXR0cikpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCShyZXZpc2lvbiAyMzM0ODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODEsNCArODEsOSBAQCBFdmVudFRhcmdldEludGVyZmFjZSBBdWRpb1RyYWNrTGlzdDo6ZXZlCiAg
ICAgcmV0dXJuIEF1ZGlvVHJhY2tMaXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCitj
b25zdCBjaGFyKiBBdWRpb1RyYWNrTGlzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICJBdWRpb1RyYWNrTGlzdCI7Cit9CisKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaAkocmV2aXNpb24gMjMzNDgxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBBdWRpb1RyYWNr
TGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuaWRsCShyZXZpc2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBA
QAogICovCiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU9f
VFJBQ0ssCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCiAgICAgSlND
dXN0b21NYXJrRnVuY3Rpb24sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw0ICsyNjUsOSBA
QCBFdmVudFRhcmdldEludGVyZmFjZSBUZXh0VHJhY2tMaXN0OjpldmVuCiAgICAgcmV0dXJuIFRl
eHRUcmFja0xpc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKK2NvbnN0IGNoYXIqIFRl
eHRUcmFja0xpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
VGV4dFRyYWNrTGlzdCI7Cit9CisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmgJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3
IEBAIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0
ZXJUcmFjayhUZXh0VHJhY2smKTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+IG1fYWRkVHJh
Y2tUcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+PiBtX2VsZW1lbnRUcmFja3M7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwJKHJl
dmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiBbCisgICAgQWN0
aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCShyZXZp
c2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNCArMzQsMTUgQEAKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVHJhY2tFdmVudC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogVHJhY2tMaXN0QmFzZTo6VHJh
Y2tMaXN0QmFzZShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV9lbGVtZW50KGVsZW1lbnQp
CiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZSgqdGhpcykKIHsKLSAgICBBU1NFUlQoaXM8RG9jdW1l
bnQ+KGNvbnRleHQpKTsKKyAgICBBU1NFUlQoIWNvbnRleHQgfHwgaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKTsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogVHJhY2tMaXN0QmFzZTo6flRyYWNr
TGlzdEJhc2UoKQpAQCAtMTc0LDQgKzE3NSwyNiBAQCBib29sIFRyYWNrTGlzdEJhc2U6OmlzQW55
VHJhY2tFbmFibGVkKCkgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFRyYWNrTGlzdEJh
c2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVy
biAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOworfQorCit2b2lkIFRyYWNr
TGlzdEJhc2U6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBBU1NFUlQoIW1f
YXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRpbmdFdmVudHMoKSk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0
QmFzZTo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoIW1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRp
bmdFdmVudHMoKSk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c3RvcCgpCit7CisgICAgbV9h
c3luY0V2ZW50UXVldWUuY2xvc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCShy
ZXZpc2lvbiAyMzM0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTM5LDcgKzM5LDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBUcmFja0Jhc2U7CiAKLWNsYXNzIFRyYWNrTGlzdEJhc2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1Ymxp
YyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBUcmFja0xpc3RCYXNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5U
cmFja0xpc3RCYXNlKCk7CiAKQEAgLTc0LDYgKzc0LDExIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgdm9pZCBzY2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUsIFJlZjxUcmFja0Jhc2U+JiYpOwogCisgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRT
dXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkg
ZmluYWw7CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJl
ZigpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcAkocmV2aXNpb24gMjMzNDgxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDQgKzk0LDkgQEAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgVmlkZW9UcmFja0xpc3Q6OmV2ZQogICAgIHJldHVybiBWaWRlb1RyYWNrTGlz
dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAorY29uc3QgY2hhciogVmlkZW9UcmFja0xp
c3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiVmlkZW9UcmFj
a0xpc3QiOworfQorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmgJKHJldmlzaW9uIDIzMzQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCos
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAkocmV2aXNp
b24gMjMzNDgxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiBbCisgICAgQWN0aXZl
RE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAogICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLApJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjMzNDgxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDctMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTnVsbHB0ciBjcmFzaCBhY2Nlc3NpbmcgRG9jdW1lbnQg
aW4gR2VuZXJpY0V2ZW50UXVldWU6OmRpc3BhdGNoT25lRXZlbnQoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3Mjg0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZGVkIGEgcmVncmVzc2lvbiB0ZXN0IHdo
aWNoIHJlbGlhYmx5IGhpdHMgdGhlIG5ld2x5IGFkZGVkIGRlYnVnIGFzc2VydGlvbi4KKworICAg
ICAgICAqIG1lZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLWFkZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdmlkZW8tdHJhY2st
YWRkaXRpb24tYW5kLWZyYW1lLXJlbW92YWwuaHRtbDogQWRkZWQuCisKIDIwMTgtMDctMDMgIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMzM0NjEuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay92aWRl
by10cmFjay1hZGRpdGlvbi1hbmQtZnJhbWUtcmVtb3ZhbC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdmlkZW8tdHJhY2stYWRkaXRpb24tYW5kLWZy
YW1lLXJlbW92YWwtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLWFkZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFsLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgcmVtb3Zpbmcg
YSBmcmFtZSBpbW1lZGlhdGVseSBhZnRlciBpbnNlcnRpbmcgYSBuZXcgdHJhY2sgZWxlbWVudC4K
K1dlYktpdCBzaG91bGQgbm90IGhpdCBhbnkgYXNzZXJ0aW9ucy4KKworCkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay92aWRlby10cmFjay1hZGRpdGlvbi1hbmQtZnJhbWUtcmVtb3ZhbC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLWFk
ZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFsLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdmlkZW8tdHJhY2stYWRkaXRpb24tYW5kLWZyYW1lLXJlbW92YWwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHJlbW92aW5nIGEgZnJhbWUgaW1tZWRpYXRlbHkgYWZ0
ZXIgaW5zZXJ0aW5nIGEgbmV3IHRyYWNrIGVsZW1lbnQuPGJyPgorV2ViS2l0IHNob3VsZCBub3Qg
aGl0IGFueSBhc3NlcnRpb25zLjwvcD4KKzxzY3JpcHQgc3JjPS4uLy4uL3Jlc291cmNlcy9nYy5q
cz48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICBj
b25zdCBkb2MgPSBmcmFtZS5jb250ZW50RG9jdW1lbnQ7CisgICAgY29uc3QgdHJhY2tFbGVtZW50
ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJyk7CisgICAgZG9jLnF1ZXJ5U2VsZWN0b3IoJ3Zp
ZGVvJykuYXBwZW5kQ2hpbGQodHJhY2tFbGVtZW50KTsKKworICAgIGZyYW1lLnJlbW92ZSgpOwor
ICAgIGdjKCk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAgICAgCisg
ICAgfSwgMTAwKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSIuL3Zp
ZGVvLXRyYWNrLWFkZC1yZW1vdmUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346060</attachid>
            <date>2018-07-30 08:48:54 -0700</date>
            <delta_ts>2018-07-30 11:17:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187284-20180730084853.patch</filename>
            <type>text/plain</type>
            <size>40185</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYwZTA1MTJhYjE5N2Vi
ZTJkMDMwZTk4Zjc2ODYzYjk5ODFmNTE0Yi4uMzVmNzFlYzhmYTY4ZjNlNWE4ZjY1MWQ2YThmYTky
Y2JhNDE3OTc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE4LTA3LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTnVsbHB0ciBjcmFzaCBhY2Nl
c3NpbmcgRG9jdW1lbnQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OmRpc3BhdGNoT25lRXZlbnQoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3Mjg0CisK
KyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCByMjMzNDk2IGFuZCByMjMzNTcxIG5vdyB0aGF0IGFs
bCBrbm93biBpc3N1ZXMgaGF2ZSBiZWVuIGZpeGVkIHZpYQorICAgICAgICBkZXBlbmRlbmN5IGJ1
Z3MuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svdmlkZW8tdHJhY2stYWRkaXRpb24tYW5k
LWZyYW1lLXJlbW92YWwuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dE1lZGlhS2V5U2Vzc2lvbjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRp
YUtleVNlc3Npb246OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNl
c3Npb246OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJj
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c3VzcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6cmVzdW1lKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdXNwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c3RvcCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyTGlzdDo6U291cmNl
QnVmZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJMaXN0OjpjYW5TdXNw
ZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlckxpc3Q6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyTGlz
dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckxpc3Q6OnN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyTGlzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0Lmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNC
cm93c2luZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hPbmVFdmVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxheSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cGF1c2VJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VXYXNBZGRlZCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBj
b25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oOgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5jcHA6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjphY3RpdmVET01PYmplY3RO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpUcmFj
a0xpc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OmNhblN1c3BlbmRG
b3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0
QmFzZTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpyZXN1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6c3RvcCk6CisgICAgICAgICogaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmg6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNr
TGlzdC5jcHA6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBj
b25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOgorCiAyMDE4LTA3LTMwICBUaGliYXVsdCBT
YXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBNYWtl
IGNvZGVjcGFyc2VycyBvcHRpb25uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uY3BwCmluZGV4IDczZjJkMjYyZGQ4ZmQxMWQ1YmU2YWI4YzJmYzk2NmZkOWQxYzA1Njcu
LmYwYmYxZTBjYTJkZjE2Zjk5Yzc1YTJmNTg5MzNlYTUwM2UzYWY0OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMjM5LDggKzIzOSwxOSBAQCBib29s
IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICBy
ZXR1cm4gKG1fa2V5cyAmJiBtX3Nlc3Npb24pIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRp
bmdFdmVudHMoKTsKIH0KIAordm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnN1c3BlbmQoUmVh
c29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnJlc3VtZSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9wKCkKIHsKKyAgICBt
X2FzeW5jRXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIGNsb3NlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlh
S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggMWEyMmQzMmY1YTY3NWUyNTM1ZDU4MDZk
MTBmNjUzMDU1ZmRjYWRhNi4uMWQwZGM3YzRhYWIwYThiODhjOTU3OTI4ZWM2ZGU0N2E2NTNiZDg4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgKQEAgLTc2LDYgKzc2
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCisgICAg
dm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1l
KCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCBlODVjOTFiMjVhNjkxYjA2ZjZk
OWVlODkxMWU5NTBjOWViNzc5MTc3Li45YWVlNzVkOTgxMmM5NDhkZmRhZDUxYTBkMDM3ZDRkZDhk
MDlkY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcApAQCAtNjkyLDEyNCArNjkyLDEyNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBN
ZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciYgYnVmZmVyKQogICAg
IC8vIDMuIElmIHRoZSBzb3VyY2VCdWZmZXIudXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVl
LCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOiAuLi4KICAgICBidWZmZXIuYWJvcnRJZlVw
ZGF0aW5nKCk7CiAKLSAgICAvLyA0LiBMZXQgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3Qg
ZXF1YWwgdGhlIEF1ZGlvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSBzb3VyY2VCdWZmZXIu
YXVkaW9UcmFja3MuCi0gICAgYXV0byYgYXVkaW9UcmFja3MgPSBidWZmZXIuYXVkaW9UcmFja3Mo
KTsKLQotICAgIC8vIDUuIElmIHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCBpcyBu
b3QgZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgaWYgKGF1ZGlvVHJh
Y2tzLmxlbmd0aCgpKSB7Ci0gICAgICAgIC8vIDUuMSBMZXQgSFRNTE1lZGlhRWxlbWVudCBhdWRp
b1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQgYnkg
dGhlIGF1ZGlvVHJhY2tzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxl
bWVudC4KLSAgICAgICAgLy8gNS4yIExldCB0aGUgcmVtb3ZlZCBlbmFibGVkIGF1ZGlvIHRyYWNr
IGZsYWcgZXF1YWwgZmFsc2UuCi0gICAgICAgIGJvb2wgcmVtb3ZlZEVuYWJsZWRBdWRpb1RyYWNr
ID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gNS4zIEZvciBlYWNoIEF1ZGlvVHJhY2sgb2JqZWN0IGlu
IHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6Ci0gICAgICAgIHdoaWxlIChhdWRpb1RyYWNrcy5sZW5ndGgoKSkgewotICAgICAgICAgICAg
YXV0byYgdHJhY2sgPSAqYXVkaW9UcmFja3MubGFzdEl0ZW0oKTsKLQotICAgICAgICAgICAgLy8g
NS4zLjEgU2V0IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9i
amVjdCB0byBudWxsLgotICAgICAgICAgICAgdHJhY2suc2V0U291cmNlQnVmZmVyKG51bGxwdHIp
OwotCi0gICAgICAgICAgICAvLyA1LjMuMiBJZiB0aGUgZW5hYmxlZCBhdHRyaWJ1dGUgb24gdGhl
IEF1ZGlvVHJhY2sgb2JqZWN0IGlzIHRydWUsIHRoZW4gc2V0IHRoZSByZW1vdmVkIGVuYWJsZWQK
LSAgICAgICAgICAgIC8vIGF1ZGlvIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KLSAgICAgICAgICAgIGlm
ICh0cmFjay5lbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgcmVtb3ZlZEVuYWJsZWRBdWRpb1Ry
YWNrID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gNS4zLjMgUmVtb3ZlIHRoZSBBdWRpb1RyYWNr
IG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCi0gICAg
ICAgICAgICAvLyA1LjMuNCBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFt
ZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QKLSAgICAgICAg
ICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNl
LCBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCBhdWRpb1RyYWNrcyBsaXN0LgotICAgICAgICAgICAg
aWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5yZW1v
dmVBdWRpb1RyYWNrKHRyYWNrKTsKLQotICAgICAgICAgICAgLy8gNS4zLjUgUmVtb3ZlIHRoZSBB
dWRpb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdC4K
LSAgICAgICAgICAgIC8vIDUuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVu
dCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAotICAg
ICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRl
cmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgYXVkaW9UcmFja3MgbGlzdC4KLSAgICAgICAgICAg
IGF1ZGlvVHJhY2tzLnJlbW92ZSh0cmFjayk7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9i
amVjdHNBcmVTdG9wcGVkKCkpIHsKKyAgICAgICAgLy8gNC4gTGV0IFNvdXJjZUJ1ZmZlciBhdWRp
b1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBBdWRpb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJuZWQgYnkg
c291cmNlQnVmZmVyLmF1ZGlvVHJhY2tzLgorICAgICAgICBhdXRvJiBhdWRpb1RyYWNrcyA9IGJ1
ZmZlci5hdWRpb1RyYWNrcygpOworCisgICAgICAgIC8vIDUuIElmIHRoZSBTb3VyY2VCdWZmZXIg
YXVkaW9UcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisgICAgICAgIGlmIChhdWRpb1RyYWNrcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgLy8g
NS4xIExldCBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QgZXF1YWwgdGhlIEF1ZGlv
VHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgYXVkaW9UcmFja3MKKyAgICAgICAgICAg
IC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KKyAgICAgICAgICAgIC8vIDUu
MiBMZXQgdGhlIHJlbW92ZWQgZW5hYmxlZCBhdWRpbyB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgor
ICAgICAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSBmYWxzZTsKKworICAg
ICAgICAgICAgLy8gNS4zIEZvciBlYWNoIEF1ZGlvVHJhY2sgb2JqZWN0IGluIHRoZSBTb3VyY2VC
dWZmZXIgYXVkaW9UcmFja3MgbGlzdCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAg
ICAgICB3aGlsZSAoYXVkaW9UcmFja3MubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRv
JiB0cmFjayA9ICphdWRpb1RyYWNrcy5sYXN0SXRlbSgpOworCisgICAgICAgICAgICAgICAgLy8g
NS4zLjEgU2V0IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBBdWRpb1RyYWNrIG9i
amVjdCB0byBudWxsLgorICAgICAgICAgICAgICAgIHRyYWNrLnNldFNvdXJjZUJ1ZmZlcihudWxs
cHRyKTsKKworICAgICAgICAgICAgICAgIC8vIDUuMy4yIElmIHRoZSBlbmFibGVkIGF0dHJpYnV0
ZSBvbiB0aGUgQXVkaW9UcmFjayBvYmplY3QgaXMgdHJ1ZSwgdGhlbiBzZXQgdGhlIHJlbW92ZWQg
ZW5hYmxlZAorICAgICAgICAgICAgICAgIC8vIGF1ZGlvIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAg
ICAgICAgICAgICAgICBpZiAodHJhY2suZW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZW1vdmVkRW5hYmxlZEF1ZGlvVHJhY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gNS4z
LjMgUmVtb3ZlIHRoZSBBdWRpb1RyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50
IGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgLy8gNS4zLjQgUXVldWUgYSB0YXNr
IHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRo
YXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50
IGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlQXVkaW9UcmFjayh0cmFj
ayk7CisKKyAgICAgICAgICAgICAgICAvLyA1LjMuNSBSZW1vdmUgdGhlIEF1ZGlvVHJhY2sgb2Jq
ZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciBhdWRpb1RyYWNrcyBsaXN0LgorICAgICAgICAgICAg
ICAgIC8vIDUuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBy
ZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAorICAgICAgICAgICAg
ICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNl
LCBhdCB0aGUgU291cmNlQnVmZmVyIGF1ZGlvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAg
YXVkaW9UcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gNS40IElmIHRoZSByZW1vdmVkIGVuYWJsZWQgYXVkaW8gdHJhY2sgZmxhZyBlcXVhbHMgdHJ1
ZSwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAorICAgICAgICAgICAg
Ly8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IGF1ZGlvVHJhY2tzIGxpc3Qu
CisgICAgICAgICAgICBpZiAocmVtb3ZlZEVuYWJsZWRBdWRpb1RyYWNrKQorICAgICAgICAgICAg
ICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVBdWRpb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZl
bnQoKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIDUuNCBJZiB0aGUgcmVtb3ZlZCBlbmFibGVk
IGF1ZGlvIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUg
YSBzaW1wbGUgZXZlbnQKLSAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFF
bGVtZW50IGF1ZGlvVHJhY2tzIGxpc3QuCi0gICAgICAgIGlmIChyZW1vdmVkRW5hYmxlZEF1ZGlv
VHJhY2spCi0gICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Ci0gICAgfQotCi0gICAgLy8gNi4gTGV0IFNvdXJjZUJ1ZmZl
ciB2aWRlb1RyYWNrcyBsaXN0IGVxdWFsIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmV0dXJu
ZWQgYnkgc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLgotICAgIGF1dG8mIHZpZGVvVHJhY2tzID0g
YnVmZmVyLnZpZGVvVHJhY2tzKCk7Ci0KLSAgICAvLyA3LiBJZiB0aGUgU291cmNlQnVmZmVyIHZp
ZGVvVHJhY2tzIGxpc3QgaXMgbm90IGVtcHR5LCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgotICAgIGlmICh2aWRlb1RyYWNrcy5sZW5ndGgoKSkgewotICAgICAgICAvLyA3LjEgTGV0IEhU
TUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFja3MgbGlzdCBlcXVhbCB0aGUgVmlkZW9UcmFja0xpc3Qg
b2JqZWN0IHJldHVybmVkIGJ5IHRoZSB2aWRlb1RyYWNrcwotICAgICAgICAvLyBhdHRyaWJ1dGUg
b24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgICAgIC8vIDcuMiBMZXQgdGhlIHJlbW92ZWQg
c2VsZWN0ZWQgdmlkZW8gdHJhY2sgZmxhZyBlcXVhbCBmYWxzZS4KLSAgICAgICAgYm9vbCByZW1v
dmVkU2VsZWN0ZWRWaWRlb1RyYWNrID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gNy4zIEZvciBlYWNo
IFZpZGVvVHJhY2sgb2JqZWN0IGluIHRoZSBTb3VyY2VCdWZmZXIgdmlkZW9UcmFja3MgbGlzdCwg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIHdoaWxlICh2aWRlb1RyYWNrcy5sZW5n
dGgoKSkgewotICAgICAgICAgICAgYXV0byYgdHJhY2sgPSAqdmlkZW9UcmFja3MubGFzdEl0ZW0o
KTsKLQotICAgICAgICAgICAgLy8gNy4zLjEgU2V0IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRl
IG9uIHRoZSBWaWRlb1RyYWNrIG9iamVjdCB0byBudWxsLgotICAgICAgICAgICAgdHJhY2suc2V0
U291cmNlQnVmZmVyKG51bGxwdHIpOwotCi0gICAgICAgICAgICAvLyA3LjMuMiBJZiB0aGUgc2Vs
ZWN0ZWQgYXR0cmlidXRlIG9uIHRoZSBWaWRlb1RyYWNrIG9iamVjdCBpcyB0cnVlLCB0aGVuIHNl
dCB0aGUgcmVtb3ZlZCBzZWxlY3RlZAotICAgICAgICAgICAgLy8gdmlkZW8gdHJhY2sgZmxhZyB0
byB0cnVlLgotICAgICAgICAgICAgaWYgKHRyYWNrLnNlbGVjdGVkKCkpCi0gICAgICAgICAgICAg
ICAgcmVtb3ZlZFNlbGVjdGVkVmlkZW9UcmFjayA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIDcu
My4zIFJlbW92ZSB0aGUgVmlkZW9UcmFjayBvYmplY3QgZnJvbSB0aGUgSFRNTE1lZGlhRWxlbWVu
dCB2aWRlb1RyYWNrcyBsaXN0LgotICAgICAgICAgICAgLy8gNy4zLjQgUXVldWUgYSB0YXNrIHRv
IGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1
YmJsZSBhbmQgaXMgbm90Ci0gICAgICAgICAgICAvLyBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2Vz
IHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9U
cmFja3MgbGlzdC4KLSAgICAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgICAg
ICAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlVmlkZW9UcmFjayh0cmFjayk7Ci0KLSAgICAgICAg
ICAgIC8vIDcuMy41IFJlbW92ZSB0aGUgVmlkZW9UcmFjayBvYmplY3QgZnJvbSB0aGUgU291cmNl
QnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QuCi0gICAgICAgICAgICAvLyA3LjMuNiBRdWV1ZSBhIHRh
c2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBu
b3QgYnViYmxlIGFuZCBpcyBub3QKLSAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0
IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVyIHZpZGVv
VHJhY2tzIGxpc3QuCi0gICAgICAgICAgICB2aWRlb1RyYWNrcy5yZW1vdmUodHJhY2spOworICAg
ICAgICAvLyA2LiBMZXQgU291cmNlQnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QgZXF1YWwgdGhlIFZp
ZGVvVHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3Mu
CisgICAgICAgIGF1dG8mIHZpZGVvVHJhY2tzID0gYnVmZmVyLnZpZGVvVHJhY2tzKCk7CisKKyAg
ICAgICAgLy8gNy4gSWYgdGhlIFNvdXJjZUJ1ZmZlciB2aWRlb1RyYWNrcyBsaXN0IGlzIG5vdCBl
bXB0eSwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgaWYgKHZpZGVvVHJh
Y2tzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyA3LjEgTGV0IEhUTUxNZWRpYUVsZW1lbnQg
dmlkZW9UcmFja3MgbGlzdCBlcXVhbCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJldHVybmVk
IGJ5IHRoZSB2aWRlb1RyYWNrcworICAgICAgICAgICAgLy8gYXR0cmlidXRlIG9uIHRoZSBIVE1M
TWVkaWFFbGVtZW50LgorICAgICAgICAgICAgLy8gNy4yIExldCB0aGUgcmVtb3ZlZCBzZWxlY3Rl
ZCB2aWRlbyB0cmFjayBmbGFnIGVxdWFsIGZhbHNlLgorICAgICAgICAgICAgYm9vbCByZW1vdmVk
U2VsZWN0ZWRWaWRlb1RyYWNrID0gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIDcuMyBGb3IgZWFj
aCBWaWRlb1RyYWNrIG9iamVjdCBpbiB0aGUgU291cmNlQnVmZmVyIHZpZGVvVHJhY2tzIGxpc3Qs
IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgd2hpbGUgKHZpZGVvVHJhY2tz
Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byYgdHJhY2sgPSAqdmlkZW9UcmFja3Mu
bGFzdEl0ZW0oKTsKKworICAgICAgICAgICAgICAgIC8vIDcuMy4xIFNldCB0aGUgc291cmNlQnVm
ZmVyIGF0dHJpYnV0ZSBvbiB0aGUgVmlkZW9UcmFjayBvYmplY3QgdG8gbnVsbC4KKyAgICAgICAg
ICAgICAgICB0cmFjay5zZXRTb3VyY2VCdWZmZXIobnVsbHB0cik7CisKKyAgICAgICAgICAgICAg
ICAvLyA3LjMuMiBJZiB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIG9uIHRoZSBWaWRlb1RyYWNrIG9i
amVjdCBpcyB0cnVlLCB0aGVuIHNldCB0aGUgcmVtb3ZlZCBzZWxlY3RlZAorICAgICAgICAgICAg
ICAgIC8vIHZpZGVvIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgICAgICAgICBpZiAodHJh
Y2suc2VsZWN0ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZFNlbGVjdGVkVmlkZW9U
cmFjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyA3LjMuMyBSZW1vdmUgdGhlIFZpZGVv
VHJhY2sgb2JqZWN0IGZyb20gdGhlIEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFja3MgbGlzdC4K
KyAgICAgICAgICAgICAgICAvLyA3LjMuNCBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQg
ZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QK
KyAgICAgICAgICAgICAgICAvLyBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2
ZW50IGludGVyZmFjZSwgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFja3MgbGlzdC4K
KyAgICAgICAgICAgICAgICBpZiAobWVkaWFFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAg
IG1lZGlhRWxlbWVudCgpLT5yZW1vdmVWaWRlb1RyYWNrKHRyYWNrKTsKKworICAgICAgICAgICAg
ICAgIC8vIDcuMy41IFJlbW92ZSB0aGUgVmlkZW9UcmFjayBvYmplY3QgZnJvbSB0aGUgU291cmNl
QnVmZmVyIHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICAgICAgLy8gNy4zLjYgUXVldWUg
YSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIHJlbW92ZXRyYWNrLCB0aGF0IGRv
ZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwg
YW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZm
ZXIgdmlkZW9UcmFja3MgbGlzdC4KKyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrcy5yZW1vdmUo
dHJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyA3LjQgSWYgdGhlIHJlbW92
ZWQgc2VsZWN0ZWQgdmlkZW8gdHJhY2sgZmxhZyBlcXVhbHMgdHJ1ZSwgdGhlbiBxdWV1ZSBhIHRh
c2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAorICAgICAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0
IHRoZSBIVE1MTWVkaWFFbGVtZW50IHZpZGVvVHJhY2tzIGxpc3QuCisgICAgICAgICAgICBpZiAo
cmVtb3ZlZFNlbGVjdGVkVmlkZW9UcmFjaykKKyAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQo
KS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiAgICAgICAgIH0K
IAotICAgICAgICAvLyA3LjQgSWYgdGhlIHJlbW92ZWQgc2VsZWN0ZWQgdmlkZW8gdHJhY2sgZmxh
ZyBlcXVhbHMgdHJ1ZSwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAot
ICAgICAgICAvLyBuYW1lZCBjaGFuZ2UgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdmlkZW9UcmFj
a3MgbGlzdC4KLSAgICAgICAgaWYgKHJlbW92ZWRTZWxlY3RlZFZpZGVvVHJhY2spCi0gICAgICAg
ICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7Ci0gICAgfQotCi0gICAgLy8gOC4gTGV0IFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxp
c3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHNvdXJjZUJ1ZmZl
ci50ZXh0VHJhY2tzLgotICAgIGF1dG8mIHRleHRUcmFja3MgPSBidWZmZXIudGV4dFRyYWNrcygp
OwotCi0gICAgLy8gOS4gSWYgdGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QgaXMgbm90
IGVtcHR5LCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIGlmICh0ZXh0VHJhY2tz
Lmxlbmd0aCgpKSB7Ci0gICAgICAgIC8vIDkuMSBMZXQgSFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJh
Y2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSB0
ZXh0VHJhY2tzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4K
LSAgICAgICAgLy8gOS4yIExldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sgZmxhZyBl
cXVhbCBmYWxzZS4KLSAgICAgICAgYm9vbCByZW1vdmVkRW5hYmxlZFRleHRUcmFjayA9IGZhbHNl
OwotCi0gICAgICAgIC8vIDkuMyBGb3IgZWFjaCBUZXh0VHJhY2sgb2JqZWN0IGluIHRoZSBTb3Vy
Y2VCdWZmZXIgdGV4dFRyYWNrcyBsaXN0LCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAg
ICAgd2hpbGUgKHRleHRUcmFja3MubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHRyYWNr
ID0gKnRleHRUcmFja3MubGFzdEl0ZW0oKTsKLQotICAgICAgICAgICAgLy8gOS4zLjEgU2V0IHRo
ZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoZSBUZXh0VHJhY2sgb2JqZWN0IHRvIG51bGwu
Ci0gICAgICAgICAgICB0cmFjay5zZXRTb3VyY2VCdWZmZXIobnVsbHB0cik7Ci0KLSAgICAgICAg
ICAgIC8vIDkuMy4yIElmIHRoZSBtb2RlIGF0dHJpYnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9iamVj
dCBpcyBzZXQgdG8gInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuCi0gICAgICAgICAgICAvLyBz
ZXQgdGhlIHJlbW92ZWQgZW5hYmxlZCB0ZXh0IHRyYWNrIGZsYWcgdG8gdHJ1ZS4KLSAgICAgICAg
ICAgIGlmICh0cmFjay5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nIHx8IHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkhpZGRlbikKLSAgICAgICAgICAgICAgICByZW1v
dmVkRW5hYmxlZFRleHRUcmFjayA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIDkuMy4zIFJlbW92
ZSB0aGUgVGV4dFRyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFj
a3MgbGlzdC4KLSAgICAgICAgICAgIC8vIDkuMy40IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1
c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlz
IG5vdAotICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tF
dmVudCBpbnRlcmZhY2UsIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50IHRleHRUcmFja3MgbGlzdC4K
LSAgICAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+cmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKLQotICAgICAgICAgICAgLy8gOS4zLjUg
UmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGZyb20gdGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJh
Y2tzIGxpc3QuCi0gICAgICAgICAgICAvLyA5LjMuNiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRy
dXN0ZWQgZXZlbnQgbmFtZWQgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBp
cyBub3QKLSAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNr
RXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdC4KLSAg
ICAgICAgICAgIHRleHRUcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgLy8gOC4gTGV0IFNv
dXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QgZXF1YWwgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
IHJldHVybmVkIGJ5IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgorICAgICAgICBhdXRvJiB0ZXh0
VHJhY2tzID0gYnVmZmVyLnRleHRUcmFja3MoKTsKKworICAgICAgICAvLyA5LiBJZiB0aGUgU291
cmNlQnVmZmVyIHRleHRUcmFja3MgbGlzdCBpcyBub3QgZW1wdHksIHRoZW4gcnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHM6CisgICAgICAgIGlmICh0ZXh0VHJhY2tzLmxlbmd0aCgpKSB7CisgICAgICAg
ICAgICAvLyA5LjEgTGV0IEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0IGVxdWFsIHRo
ZSBUZXh0VHJhY2tMaXN0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgdGV4dFRyYWNrcworICAgICAg
ICAgICAgLy8gYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgorICAgICAgICAgICAg
Ly8gOS4yIExldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sgZmxhZyBlcXVhbCBmYWxz
ZS4KKyAgICAgICAgICAgIGJvb2wgcmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2sgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgLy8gOS4zIEZvciBlYWNoIFRleHRUcmFjayBvYmplY3QgaW4gdGhlIFNvdXJj
ZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAg
ICAgICAgd2hpbGUgKHRleHRUcmFja3MubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRv
JiB0cmFjayA9ICp0ZXh0VHJhY2tzLmxhc3RJdGVtKCk7CisKKyAgICAgICAgICAgICAgICAvLyA5
LjMuMSBTZXQgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhlIFRleHRUcmFjayBvYmpl
Y3QgdG8gbnVsbC4KKyAgICAgICAgICAgICAgICB0cmFjay5zZXRTb3VyY2VCdWZmZXIobnVsbHB0
cik7CisKKyAgICAgICAgICAgICAgICAvLyA5LjMuMiBJZiB0aGUgbW9kZSBhdHRyaWJ1dGUgb24g
dGhlIFRleHRUcmFjayBvYmplY3QgaXMgc2V0IHRvICJzaG93aW5nIiBvciAiaGlkZGVuIiwgdGhl
bgorICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sg
ZmxhZyB0byB0cnVlLgorICAgICAgICAgICAgICAgIGlmICh0cmFjay5tb2RlKCkgPT0gVGV4dFRy
YWNrOjpNb2RlOjpTaG93aW5nIHx8IHRyYWNrLm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6Okhp
ZGRlbikKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2sgPSB0cnVl
OworCisgICAgICAgICAgICAgICAgLy8gOS4zLjMgUmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0
IGZyb20gdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgorICAgICAgICAgICAg
ICAgIC8vIDkuMy40IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBy
ZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdAorICAgICAgICAgICAg
ICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNl
LCBhdCB0aGUgSFRNTE1lZGlhRWxlbWVudCB0ZXh0VHJhY2tzIGxpc3QuCisgICAgICAgICAgICAg
ICAgaWYgKG1lZGlhRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQo
KS0+cmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKworICAgICAgICAgICAgICAgIC8vIDkuMy41IFJl
bW92ZSB0aGUgVGV4dFRyYWNrIG9iamVjdCBmcm9tIHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRyYWNr
cyBsaXN0LgorICAgICAgICAgICAgICAgIC8vIDkuMy42IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEg
dHJ1c3RlZCBldmVudCBuYW1lZCByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5k
IGlzIG5vdAorICAgICAgICAgICAgICAgIC8vIGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhl
IFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgU291cmNlQnVmZmVyIHRleHRUcmFja3MgbGlz
dC4KKyAgICAgICAgICAgICAgICB0ZXh0VHJhY2tzLnJlbW92ZSh0cmFjayk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIDkuNCBJZiB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJh
Y2sgZmxhZyBlcXVhbHMgdHJ1ZSwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBl
dmVudAorICAgICAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVtZW50
IHRleHRUcmFja3MgbGlzdC4KKyAgICAgICAgICAgIGlmIChyZW1vdmVkRW5hYmxlZFRleHRUcmFj
aykKKyAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLnNj
aGVkdWxlQ2hhbmdlRXZlbnQoKTsKICAgICAgICAgfQotCi0gICAgICAgIC8vIDkuNCBJZiB0aGUg
cmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sgZmxhZyBlcXVhbHMgdHJ1ZSwgdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAotICAgICAgICAvLyBuYW1lZCBjaGFuZ2UgYXQg
dGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgotICAgICAgICBpZiAocmVtb3Zl
ZEVuYWJsZWRUZXh0VHJhY2spCi0gICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVGV4
dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKICAgICB9CiAKICAgICAvLyAxMC4gSWYg
c291cmNlQnVmZmVyIGlzIGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMsIHRoZW4gcmVtb3ZlIHNvdXJj
ZUJ1ZmZlciBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMgLi4uCkBAIC05MzIsNiArOTM1LDI1IEBA
IGJvb2wgTWVkaWFTb3VyY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgICAgIHx8
IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKK3ZvaWQgTWVkaWFT
b3VyY2U6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCit7CisgICAgc3dpdGNo
IChyZWFzb24pIHsKKyAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKKyAg
ICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6CisgICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6CisgICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgorICAgICAgICAvLyBEbyBub3Ro
aW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIE1lZGlhU291cmNlOjpyZXN1bWUoKQoreworICAg
IG1fYXN5bmNFdmVudFF1ZXVlLnJlc3VtZSgpOworfQorCiB2b2lkIE1lZGlhU291cmNlOjpzdG9w
KCkKIHsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDI5MzQ2NTcyZTMwOWUz
YTBmY2U2N2Y1Y2Q1Y2QwNjZkNjJjMDgyNmMuLmJkNWNkN2NmNDQ5ZTA3YTYwMWEyOGVlNWNmNzJj
MDM3NGZmYTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmgKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IE1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAorICAgIHZv
aWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZSgp
IGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRv
Y3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAxZmEzOTc0Nzk3YWUyNDE3NWEy
NzMwZjE2MWZhMTEwZWEwZjM4NjA2Li5hNTI2NmVlMjVjMWRlNjM0ZDg0NTY1ZmIxYjIxOWQ5ODU3
NmNjOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCkBAIC00NTgsOCArNDU4LDI4IEBAIGJvb2wgU291cmNlQnVmZmVyOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBtX3NvdXJjZSB8fCBtX2FzeW5j
RXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyOjpz
dXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQoreworICAgIHN3aXRjaCAocmVhc29u
KSB7CisgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlQ2FjaGU6CisgICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkOgorICAgICAgICBtX2FzeW5j
RXZlbnRRdWV1ZS5zdXNwZW5kKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVhc29uRm9y
U3VzcGVuc2lvbjo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkOgorICAgIGNhc2UgUmVhc29uRm9y
U3VzcGVuc2lvbjo6V2lsbERlZmVyTG9hZGluZzoKKyAgICAgICAgLy8gRG8gbm90aGluZywgd2Ug
ZG9uJ3QgcGF1c2UgbWVkaWEgcGxheWJhY2sgaW4gdGhlc2UgY2FzZXMuCisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OnJlc3VtZSgpCit7CisgICAgbV9hc3lu
Y0V2ZW50UXVldWUucmVzdW1lKCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyOjpzdG9wKCkKIHsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIG1fYXBwZW5kQnVmZmVyVGltZXIu
c3RvcCgpOwogICAgIG1fcmVtb3ZlVGltZXIuc3RvcCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggYzFhM2RjNWIwOGIz
Y2E5YmNmYWEzZjAzODQ5NTM5OTBiNzlmNWE4Ny4uOWEzMDc5OWU5ZWU1NjEzY2VkY2I0NDczMTFj
OWYwNTBkYmE0MGZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xMjMsNiArMTIzLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyTGlzdC5jcHAKaW5kZXggNGU4ZjUyMGQxNDAyZDFhNDcyY2QxYWE3YzlhMDBiMjhj
OTM2NTA3Yi4uZWMxNzhlZTJiMGE5ZDNhZWVjZDcxNjZiNzMzNGJiMDFiZTNlMmRkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ckxpc3QuY3BwCkBAIC00MCw5ICs0MCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTb3Vy
Y2VCdWZmZXJMaXN0OjpTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZSgqdGhpcykK
IHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogU291cmNlQnVmZmVyTGlzdDo6flNvdXJj
ZUJ1ZmZlckxpc3QoKQpAQCAtOTcsNiArOTgsMzkgQEAgdm9pZCBTb3VyY2VCdWZmZXJMaXN0Ojpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKK2Jvb2wgU291cmNl
QnVmZmVyTGlzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7Cit9CisKK3Zv
aWQgU291cmNlQnVmZmVyTGlzdDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikK
K3sKKyAgICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6
UGFnZUNhY2hlOgorICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZVdpbGxCZVN1c3Bl
bmRlZDoKKyAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuc3VzcGVuZCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNl
ZDoKKyAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OldpbGxEZWZlckxvYWRpbmc6CisgICAg
ICAgIC8vIERvIG5vdGhpbmcsIHdlIGRvbid0IHBhdXNlIG1lZGlhIHBsYXliYWNrIGluIHRoZXNl
IGNhc2VzLgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyTGlz
dDo6cmVzdW1lKCkKK3sKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKK30KKwordm9p
ZCBTb3VyY2VCdWZmZXJMaXN0OjpzdG9wKCkKK3sKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jbG9z
ZSgpOworfQorCitjb25zdCBjaGFyKiBTb3VyY2VCdWZmZXJMaXN0OjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIlNvdXJjZUJ1ZmZlckxpc3QiOworfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKaW5kZXggNDE4NmI0ZmVjYjMyM2VmZmJhNjMw
Y2RkOWEyM2M2NDgzZmI1YjNmNy4uMDczMTk4ZGM3MzI5OTA1NzU3MTkwNzg1ODMxNTRiOGQxZWFh
YTVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXJMaXN0LmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCiAKLSNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlcjsK
IAotY2xhc3MgU291cmNlQnVmZmVyTGlzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJj
ZUJ1ZmZlckxpc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIFNvdXJjZUJ1ZmZlckxpc3QgZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJMaXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8U291cmNlQnVmZmVyTGlzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgewpAQCAtNzcsNiArNzcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCisgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBz
dG9wKCkgZmluYWw7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOworCiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1ZmZlcj4+IG1fbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsCmluZGV4
IDZjMmQ1NjRmZjk1NmNkOWYyZjA4MmQ4NDg3NDY1N2U0ODZlNWU2MjIuLjk5YzE4NWFlMjk4NDZh
YTFiNzI5ZTM1ZTgyZmUwZmJlZjQ4ZmZhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbApAQCAtMjksNiArMjks
NyBAQAogICovCiAgCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPU1F
RElBX1NPVVJDRSwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiBdIGludGVyZmFjZSBT
b3VyY2VCdWZmZXJMaXN0IDogRXZlbnRUYXJnZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBh
OGQzNzIyNmJmMmM3ZjVhMDE2OWZhNDE0MTA2YWU2NmEwYTkzYzVkLi44M2IwODg5YzA5OTg0OTg0
ZmEyNjgzNTRhOGY0NzE0NWJlN2MyODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtODEzLDYg
KzgxMyw4IEBAIHB1YmxpYzoKICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3VtZW50J3Mg
RE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCiAgICAgV0VCQ09SRV9FWFBPUlQg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KCkgY29uc3Q7CiAKKyAgICBib29sIGhhc0Jyb3dzaW5n
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuICEhZnJhbWUoKTsgfQorCiAgICAgRG9jdW1lbnQmIGNv
bnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IG1ha2VXZWFrUHRyKGRvY3VtZW50
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAppbmRleCA1YTMy
NDgzMTI4Yjg3ZmM5ODQxNWVlNDEzZmNjZWQ2ZTcyMjJhNjk4Li44Y2ZhOGYwNGNiMTJmMGNlMWZm
NDY1NDJiZTYyMmE0NzQxMzBhYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2Vu
ZXJpY0V2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRR
dWV1ZS5jcHAKQEAgLTI2LDggKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjUsNiArNjcsOSBAQCB2b2lkIEdlbmVy
aWNFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2ZW50KCkKICAgICBSZWY8RXZlbnRUYXJnZXQ+IHBy
b3RlY3QobV9vd25lcik7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IG1fcGVuZGluZ0V2ZW50
cy50YWtlRmlyc3QoKTsKICAgICBFdmVudFRhcmdldCYgdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgp
ID8gKmV2ZW50LT50YXJnZXQoKSA6IG1fb3duZXI7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
dGFyZ2V0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3Bw
ZWQoKSwKKyAgICAgICAgIkFuIGF0dGVtcHQgdG8gZGlzcGF0Y2ggYW4gZXZlbnQgb24gYSBzdG9w
cGVkIHRhcmdldCBieSBFdmVudFRhcmdldEludGVyZmFjZT0lZCAobm9kZU5hbWU9JXMgdGFyZ2V0
PSVwIG93bmVyPSVwKSIsCisgICAgICAgIG1fb3duZXIuZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSwg
bV9vd25lci5pc05vZGUoKSA/IHN0YXRpY19jYXN0PE5vZGUmPihtX293bmVyKS5ub2RlTmFtZSgp
LmFzY2lpKCkuZGF0YSgpIDogIiIsICZ0YXJnZXQsICZtX293bmVyKTsKICAgICB0YXJnZXQuZGlz
cGF0Y2hFdmVudCgqZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCBlMmY5YTM3MDE4MDFhNDM3YmNiMTI3MjYwYWY5NmZmNzQwYTY0MWJkLi44
ZmJjYjgyZWIyMmE0NzNhZGIyZGFiZGRkN2NlNWE3ZWU5ZThkNmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTEyOTksNiArMTI5OSw5IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgIG1fbG9hZFN0YXRlID0gV2FpdGlu
Z0ZvclNvdXJjZTsKICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0gbnVsbHB0cjsKIAorICAgIGlm
ICghZG9jdW1lbnQoKS5oYXNCcm93c2luZ0NvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgY3JlYXRlTWVkaWFQbGF5ZXIoKTsKIAogICAgIC8vIDIgLSBMZXQgcGVuZGluZyB0YXNrcyBi
ZSBhIGxpc3Qgb2YgYWxsIHRhc2tzIGZyb20gdGhlIG1lZGlhIGVsZW1lbnQncyBtZWRpYSBlbGVt
ZW50IGV2ZW50IHRhc2sgc291cmNlIGluIG9uZSBvZiB0aGUgdGFzayBxdWV1ZXMuCkBAIC0xNDE2
LDcgKzE0MTksNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2Uo
KQogICAgIC8vIHB1dCBpbnRvIHRoZSBiYWNrZ3JvdW5kLgogICAgIG1fbWVkaWFTZXNzaW9uLT5y
ZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdl
Q29uc2VudFRvTG9hZE1lZGlhKTsKIAotCiAgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1
ZS5lbnF1ZXVlVGFzayhbdGhpc10gIHsKICAgICAgICAgLy8gNS4gSWYgdGhlIG1lZGlhIGVsZW1l
bnTigJlzIGJsb2NrZWQtb24tcGFyc2VyIGZsYWcgaXMgZmFsc2UsIHRoZW4gcG9wdWxhdGUgdGhl
IGxpc3Qgb2YgcGVuZGluZyB0ZXh0IHRyYWNrcy4KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBA
IC0yODkzLDcgKzI4OTUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN1cHBvcnRzU2Nhbm5p
bmcoKSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlVG9QbGF5KCkKIHsKICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBpZiAobV9oYXZlUHJlcGFyZWRUb1BsYXkp
CisgICAgaWYgKG1faGF2ZVByZXBhcmVkVG9QbGF5IHx8ICFkb2N1bWVudCgpLmhhc0Jyb3dzaW5n
Q29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXZlUHJlcGFyZWRUb1BsYXkgPSB0
cnVlOwogICAgIGlmIChtX3BsYXllcikKQEAgLTM0ODgsNiArMzQ5MCwxMSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoIWRvY3VtZW50KCkuaGFzQnJvd3NpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgSU5GT19M
T0coTE9HSURFTlRJRklFUiwgIiAgcmV0dXJuaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gYnJvd3Np
bmcgY29udGV4dCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFtX21lZGlh
U2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkgewogICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIpOwog
ICAgICAgICByZXR1cm47CkBAIC0zNTc5LDYgKzM1ODYsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpwYXVzZUludGVybmFsKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICgh
ZG9jdW1lbnQoKS5oYXNCcm93c2luZ0NvbnRleHQoKSkgeworICAgICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAiICByZXR1cm5pbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBicm93c2luZyBjb250
ZXh0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1fbWVkaWFTZXNzaW9u
LT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgIiAgcmV0dXJuaW5nIGJlY2F1c2Ugb2YgaW50ZXJydXB0aW9uIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTQ2NDEsNiArNDY1MywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNv
dXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50JiBzb3VyY2UpCiAgICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsICInc3JjJyBpcyAiLCB1cmwpOwogICAgIH0KIAorICAgIGlmICghZG9j
dW1lbnQoKS5oYXNCcm93c2luZ0NvbnRleHQoKSkgeworICAgICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAiPHNvdXJjZT4gaW5zZXJ0ZWQgaW5zaWRlIGEgZG9jdW1lbnQgd2l0aG91dCBhIGJy
b3dzaW5nIGNvbnRleHQgaXMgbm90IGxvYWRlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgY29uc2lkZXIgYSA8c291cmNlPiBlbGVtZW50IHdoZW4g
dGhlcmUgaXMgbm90IHNyYyBhdHRyaWJ1dGUgYXQgYWxsLgogICAgIGlmIChoYXNBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCmluZGV4IDNiMDdmMDUxZWYw
MGRjOGIyZDQ1MzEwMDFlNTBkYzE4MDc0YjcxYjYuLmY4YjVkMGFjY2YwMTgyZjUyMzIyMzIxNjI5
MmVkNTQ1NGVjNDZiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuY3BwCkBAIC04MSw0ICs4MSw5IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIEF1ZGlvVHJh
Y2tMaXN0OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIEF1ZGlvVHJh
Y2tMaXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCitjb25zdCBjaGFyKiBBdWRpb1Ry
YWNrTGlzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJBdWRp
b1RyYWNrTGlzdCI7Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5oCmluZGV4IDBjNjM3ZGRjM2RkNDE1YjQ4MzBmZmFhYzNlMmU5YmMxYzFiZDBl
MmUuLmM0OTAwMjBjMWE0ZTE0OGE1Njk3Y2E4N2MwNWVhYzI2YjYwZjViMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbAppbmRleCBjZGU3M2Y0MGE5
MTY5MmFhMmQzZGMyNDE3MjJiNzdlZGExOTc3YzVjLi43NzgxYzA5NDkxODgyMGVhNmU3NmIzYmZk
MjQ3NTc0NzQxNzQ2OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2tMaXN0LmlkbApAQCAtMjQsNiArMjQsNyBAQAogICovCiAKIFsKKyAgICBBY3RpdmVET01PYmpl
Y3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsRWxlbWVudFJvb3QsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAppbmRleCBhYTk2NGYyMzBmZjQzMzM5
NDdjMGU0ODFiMmZlYjFmYmQwM2FjYzE0Li45YjY5MWY1YjEwNTUwYTI4MGYxODAzMDAzYzdjZjVj
N2NkNjIxODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5j
cHAKQEAgLTI2NSw0ICsyNjUsOSBAQCBFdmVudFRhcmdldEludGVyZmFjZSBUZXh0VHJhY2tMaXN0
OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRUcmFja0xpc3RF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKK2NvbnN0IGNoYXIqIFRleHRUcmFja0xpc3Q6
OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiVGV4dFRyYWNrTGlz
dCI7Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aAppbmRleCBjNDJmMWUxOTQ5MjliZWY3MjNhYTM4NmNmNGMwNGJiZWM1OTBkNTAzLi41MjA0Mjkx
ODJkY2RmYTlmNmJjZmZmMjhkYmUxOGMxZGJiMTQyZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaApAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIFRl
eHRUcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
IAogICAgIHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrJik7
CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+PiBtX2FkZFRyYWNrVHJhY2tzOwogICAgIFZlY3Rv
cjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9lbGVtZW50VHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKaW5kZXggZmVkZDczYjU1YzI2ODcwYjVmMzM4NjUx
MWIwNWE3YTFhNDNkNjAxZi4uMzU4MjBhNWRhYjhkNWQyNzkxZDViMTQzYTEwZGQ0YzJjODU3NjU3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCkBAIC0y
NCw2ICsyNCw3IEBACiAgKi8KIAogWworICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRp
b25hbD1WSURFT19UUkFDSywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9v
dCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuY3BwCmluZGV4IDJlOTY5NDIxNTJhYzhkOGRlMWZkNTBiNWRiNmEyZmQ5
M2E3YTYwMmEuLjE0NzcwMGY2ODBmMzc1Mzc3Y2U1YTYzZWFmODFmOWFhMmIwYTljM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAtMzQsMTQgKzM0
LDE1IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRy
YWNrRXZlbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UoSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkK
ICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9hc3luY0V2ZW50UXVldWUoKnRoaXMp
CiB7Ci0gICAgQVNTRVJUKGlzPERvY3VtZW50Pihjb250ZXh0KSk7CisgICAgQVNTRVJUKCFjb250
ZXh0IHx8IGlzPERvY3VtZW50Pihjb250ZXh0KSk7CisgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9
CiAKIFRyYWNrTGlzdEJhc2U6On5UcmFja0xpc3RCYXNlKCkKQEAgLTE3NCw0ICsxNzUsMzUgQEAg
Ym9vbCBUcmFja0xpc3RCYXNlOjppc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitib29sIFRyYWNrTGlzdEJhc2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVu
ZGluZ0V2ZW50cygpOworfQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbiByZWFzb24pCit7CisgICAgc3dpdGNoIChyZWFzb24pIHsKKyAgICBjYXNlIFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKKyAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNp
b246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6CisgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3Bl
bmQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZh
U2NyaXB0RGVidWdnZXJQYXVzZWQ6CisgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxs
RGVmZXJMb2FkaW5nOgorICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRp
YSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2
b2lkIFRyYWNrTGlzdEJhc2U6OnJlc3VtZSgpCit7CisgICAgbV9hc3luY0V2ZW50UXVldWUucmVz
dW1lKCk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c3RvcCgpCit7CisgICAgbV9hc3luY0V2
ZW50UXVldWUuY2xvc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggZjNkNjQ0ZGJj
MmUyY2Y5ODNlMDRhYzhmOTMzZDU4ZjUyMjU0OGI1Zi4uZmRhZTNiMGRlMTg1Y2M4Y2I2NGJmOTU0
ZGJiZTEyNzA0ZjNiMzJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RC
YXNlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJHZW5lcmljRXZl
bnRRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgVHJhY2tCYXNl
OwogCi1jbGFzcyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFz
ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgVHJhY2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRyYWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhY2tMaXN0QmFzZSgp
OwogCkBAIC03NCw2ICs3NCwxMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgc2No
ZWR1bGVUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tC
YXNlPiYmKTsKIAorICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsK
KyAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCiAgICAg
Ly8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcAppbmRleCAzYzViNWYxYzZk
N2JhZGE4ODFhOWE2NjRlYmZmOGNmN2Q4YzJlODZkLi5hMTU0OWFiY2M4NWY2MTc0MTY2MzM1Mzdk
ZTVjOTU1MDM2NTk0NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmNwcApAQCAtOTQsNCArOTQsOSBAQCBFdmVudFRhcmdldEludGVyZmFjZSBWaWRlb1Ry
YWNrTGlzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAogICAgIHJldHVybiBWaWRlb1Ry
YWNrTGlzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAorY29uc3QgY2hhciogVmlkZW9U
cmFja0xpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiVmlk
ZW9UcmFja0xpc3QiOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaAppbmRleCA2YjViZTI1YjQ2YTdiMDZlNjAxYTRhNDhmNGQ0YjU1MTBlYTc1
ODdlLi5jYzI1MGZjYjMxN2Y3Mjc5YzM0MzA5MGJlNjExNzNhN2Y0ZDhmYmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBWaWRlb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50Kiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKaW5kZXggOWM0M2ZjZDE4
MWRmNTZjMDc1MmQxNzZlMTgwMDY5NDViOWFlMDM0Ny4uMThmNDBlZDIyNjYwZjJmNDg0M2IzNjJk
ZmZjZTllOTdjMWU0MWE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5pZGwKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiBbCisgICAgQWN0aXZlRE9NT2Jq
ZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbEVsZW1lbnRSb290LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBk
MGRmMzRlY2FjNThmMTEyZjEyYmRiMGQxZDNjODUzNzEwMTI3NTQuLjhhMzIyNDQ0YWQ3ZGYwMTJl
MGViM2Q2NzFhMmFhMmY3OTA5MTczMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wNy0z
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jh
c2ggYWNjZXNzaW5nIERvY3VtZW50IGluIEdlbmVyaWNFdmVudFF1ZXVlOjpkaXNwYXRjaE9uZUV2
ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NzI4NAorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwgcjIzMzQ5NiBhbmQgcjIzMzU3MSBub3cg
dGhhdCBhbGwga25vd24gaXNzdWVzIGhhdmUgYmVlbiBmaXhlZCB2aWEKKyAgICAgICAgZGVwZW5k
ZW5jeSBidWdzLgorCisgICAgICAgICogbWVkaWEvdHJhY2svdmlkZW8tdHJhY2stYWRkaXRpb24t
YW5kLWZyYW1lLXJlbW92YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90
cmFjay92aWRlby10cmFjay1hZGRpdGlvbi1hbmQtZnJhbWUtcmVtb3ZhbC5odG1sOiBBZGRlZC4K
KwogMjAxOC0wNy0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dpbl0gTGF5b3V0IHRlc3QgZmFzdC9yZXBhaW50L2NhbnZhcy1vYmplY3QtZml0Lmh0
bWwgaXMgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVv
LXRyYWNrLWFkZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLWFkZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjYyNTQ1NDljNjBkNDkyYzJkODkyYjg4MTkxMmI0YjRl
ZjU0YjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdmlkZW8t
dHJhY2stYWRkaXRpb24tYW5kLWZyYW1lLXJlbW92YWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorVGhpcyB0ZXN0cyByZW1vdmluZyBhIGZyYW1lIGltbWVkaWF0ZWx5IGFmdGVyIGluc2Vy
dGluZyBhIG5ldyB0cmFjayBlbGVtZW50LgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGFueSBhc3Nl
cnRpb25zLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVvLXRy
YWNrLWFkZGl0aW9uLWFuZC1mcmFtZS1yZW1vdmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay92aWRlby10cmFjay1hZGRpdGlvbi1hbmQtZnJhbWUtcmVtb3ZhbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmMzU1NTdkMGNiYmU4ZjhmYzdiYjAxNGM4ZTlhYjQwNTNjNWRmOWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay92aWRlby10cmFjay1hZGRpdGlvbi1hbmQt
ZnJhbWUtcmVtb3ZhbC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgcmVtb3ZpbmcgYSBmcmFtZSBpbW1lZGlhdGVseSBh
ZnRlciBpbnNlcnRpbmcgYSBuZXcgdHJhY2sgZWxlbWVudC48YnI+CitXZWJLaXQgc2hvdWxkIG5v
dCBoaXQgYW55IGFzc2VydGlvbnMuPC9wPgorPHNjcmlwdCBzcmM9Li4vLi4vcmVzb3VyY2VzL2dj
LmpzPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAg
IGNvbnN0IGRvYyA9IGZyYW1lLmNvbnRlbnREb2N1bWVudDsKKyAgICBjb25zdCB0cmFja0VsZW1l
bnQgPSBkb2MuY3JlYXRlRWxlbWVudCgndHJhY2snKTsKKyAgICBkb2MucXVlcnlTZWxlY3Rvcign
dmlkZW8nKS5hcHBlbmRDaGlsZCh0cmFja0VsZW1lbnQpOworCisgICAgZnJhbWUucmVtb3ZlKCk7
CisgICAgZ2MoKTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7ICAgICAgICAK
KyAgICB9LCAxMDApOworfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9Ii4v
dmlkZW8tdHJhY2stYWRkLXJlbW92ZS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>