<?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>172603</bug_id>
          
          <creation_ts>2017-05-25 12:36:38 -0700</creation_ts>
          <short_desc>[WK2] Add runBeforeUnloadConfirmPanel WKUIDelegate SPI; support onbeforeunload confirm panel in MiniBrowser</short_desc>
          <delta_ts>2017-05-30 14:02:17 -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>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1312797</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 12:36:38 -0700</bug_when>
    <thetext>We should support showing an onbeforeunload confirm panel in a WebKit2 MiniBrowser window just as we do when using a WebKit1 MiniBrowser window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312800</commentid>
    <comment_count>1</comment_count>
      <attachid>311266</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 12:44:25 -0700</bug_when>
    <thetext>Created attachment 311266
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312801</commentid>
    <comment_count>2</comment_count>
      <attachid>311267</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 12:53:17 -0700</bug_when>
    <thetext>Created attachment 311267
Patch and unit tests

I deprecated the existing v5 WKPageRunBeforeUnloadConfirmPanelCallback and introduced a new callback that takes a WKSecurityOriginRef. I chose to have the new callback take a WKSecurityOriginRef as opposed to removing the WKFrameRef argument and taking a WKFrameHandleRef that represents both the WKFrameRef and WKSecurityOriginRef so as to make the arguments to the new callback more closely match the arguments taken by other JavaScript dialog callbacks (e.g. WKPageRunJavaScriptAlertCallback) and I was unclear about the future of the C API now that we have the Modern WebKit2 API (Cocoa). Let me know if it is preferred to have the new callback take a WKFrameHandleRef instead of both a WKFrameRef and WKSecurityOriginRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312804</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-25 12:54:27 -0700</bug_when>
    <thetext>Attachment 311267 did not pass style-queue:


ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:336:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2063:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 7 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312805</commentid>
    <comment_count>4</comment_count>
      <attachid>311269</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 12:55:41 -0700</bug_when>
    <thetext>Created attachment 311269
Patch and unit tests

Remote inadvertent change to LayoutTests/fast/events/before-unload-adopt-subframe-to-outside.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312806</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-25 12:57:17 -0700</bug_when>
    <thetext>Attachment 311269 did not pass style-queue:


ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:336:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2063:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 7 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312827</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-25 13:20:06 -0700</bug_when>
    <thetext>The patch seems way more extensive than the bug title suggests. Do you want to break up the patch, or retitle the bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312894</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 14:56:49 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; The patch seems way more extensive than the bug title suggests. Do you want
&gt; to break up the patch, or retitle the bug?

I chose to retitle the bug as I am unclear how best to break up the patch in a meaningful way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312896</commentid>
    <comment_count>8</comment_count>
      <attachid>311298</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 14:59:37 -0700</bug_when>
    <thetext>Created attachment 311298
Patch and unit tests

Updated patch to disable unit the runBeforeUnloadConfirmPanel tests on iOS as we do not have the infrasturcture to simulate a tap/click at the moment. Also, updated ChangeLog entries in the patch to reflect the updated title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312897</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-25 15:02:12 -0700</bug_when>
    <thetext>Attachment 311298 did not pass style-queue:


ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:336:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2063:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 7 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312902</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 15:07:12 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #8)
&gt; Updated patch to disable unit the runBeforeUnloadConfirmPanel tests on iOS
&gt; as we do not have the infrasturcture to simulate a tap/click at the moment.

Filed bug #172614 to add such infrastructure for iOS. Will update the comment in the unit tests to refer to this bug before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313039</commentid>
    <comment_count>11</comment_count>
      <attachid>311334</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-25 21:26:42 -0700</bug_when>
    <thetext>Created attachment 311334
Patch and unit tests

Updated patch to fix the GTK EWS, updated comments in unit test Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ModalAlerts.mm to reference bug #172614. Removed PLATFORM(MAC)-guarded code from Tools/TestWebKitAPI/Tests/WebKit2/ModalAlertsSPI.cpp as this test does not run on iOS (since we do not enable the WebKit C SPI on iOS) and GTK does not seem to run many WebKit2 C SPI tests (why?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313040</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-25 21:29:18 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313041</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-25 21:29:32 -0700</bug_when>
    <thetext>Attachment 311334 did not pass style-queue:


ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:336:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2063:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313159</commentid>
    <comment_count>14</comment_count>
      <attachid>311334</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-05-26 10:04:10 -0700</bug_when>
    <thetext>Comment on attachment 311334
Patch and unit tests

Unless there&apos;s a particular need to update the C-API, we can skip it for now; The only important API going forward is Cocoa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313206</commentid>
    <comment_count>15</comment_count>
      <attachid>311367</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-26 12:59:02 -0700</bug_when>
    <thetext>Created attachment 311367
Patch and unit tests

Removed WebKit2 C SPI change as we do not have any clients that would make use of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313207</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-26 13:00:37 -0700</bug_when>
    <thetext>Attachment 311367 did not pass style-queue:


ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:336:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2063:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313219</commentid>
    <comment_count>17</comment_count>
      <attachid>311367</attachid>
    <who name="">mitz</who>
    <bug_when>2017-05-26 13:23:37 -0700</bug_when>
    <thetext>Comment on attachment 311367
Patch and unit tests

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:73
&gt; +- (void)webView:(WKWebView *)webView runBeforeUnloadConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler;

Private delegate methods should be underscore-prefixed.

This method declaration is missing an availability attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313236</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-26 14:12:09 -0700</bug_when>
    <thetext>(In reply to mitz from comment #17)
&gt; Comment on attachment 311367 [details]
&gt; Patch and unit tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311367&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:73
&gt; &gt; +- (void)webView:(WKWebView *)webView runBeforeUnloadConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler;
&gt; 
&gt; Private delegate methods should be underscore-prefixed.
&gt; 
&gt; This method declaration is missing an availability attribute.

You&apos;re right! Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313258</commentid>
    <comment_count>19</comment_count>
      <attachid>311377</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-26 14:43:26 -0700</bug_when>
    <thetext>Created attachment 311377
Patch and unit tests

Updated patch to prefix WKUIDelegate SPI with an underscore and add WK_API_AVAILABLE() annotation as pointed out by Dan Bernstein in comment #17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313261</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-26 14:45:14 -0700</bug_when>
    <thetext>Attachment 311377 did not pass style-queue:


ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:336:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2063:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313308</commentid>
    <comment_count>21</comment_count>
      <attachid>311396</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-26 16:46:52 -0700</bug_when>
    <thetext>Created attachment 311396
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313309</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-26 16:49:49 -0700</bug_when>
    <thetext>Attachment 311396 did not pass style-queue:


ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/MiniBrowser/mac/WK2BrowserWindowController.m:528:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:336:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIUIClient.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2063:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313351</commentid>
    <comment_count>23</comment_count>
      <attachid>311396</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-05-26 20:08:05 -0700</bug_when>
    <thetext>Comment on attachment 311396
Patch and unit tests

Ahhhhhhhh so much better than the one with C-API!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313861</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 13:59:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/32471306&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313863</commentid>
    <comment_count>25</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-30 14:02:17 -0700</bug_when>
    <thetext>Committed r217571: &lt;http://trac.webkit.org/changeset/217571&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>311266</attachid>
            <date>2017-05-25 12:44:25 -0700</date>
            <delta_ts>2017-05-25 12:44:25 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>701</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPHA+VGhpcyB0ZXN0IGNhbiBiZSB1c2VkIHRv
IHZlcmlmeSB0aGF0IGFuIDxjb2RlPm9uYmVmb3JldW5sb2FkPC9jb2RlPiBjb25maXJtIHBhbmVs
IGlzIHNob3duLiBQZXJmb3JtIHRoZSBmb2xsb3dpbmc6PC9wPgo8b2w+CiAgICA8bGk+Q2xpY2sg
dGhlIGJ1dHRvbiAmcXVvdDtNYXJrIHVzZXIgaW50ZXJhY3Rpb24mcXVvdDsgKHRoaXMgaXMgb25s
eSBuZWVkZWQgd2hlbiB0ZXN0aW5nIGluIEZpcmVmb3gpLjwvbGk+CiAgICA8bGk+Q2xpY2sgdGhl
IGJ1dHRvbiAmcXVvdDtOYXZpZ2F0ZSBpZnJhbWUmcXVvdDsuPC9saT4KPC9vbD4KPHA+VGhlbiB5
b3Ugc2hvdWxkIHNlZSBhIGNvbmZpcm0gcGFuZWwgd2hldGhlciB0byBhbGxvdyB0aGUgbmF2aWdh
dGlvbiBvZiB0aGUgPGNvZGU+aWZyYW1lPC9jb2RlPi48L3A+CjxpZnJhbWUgc3JjPSdkYXRhOnRl
eHQvaHRtbCw8YnV0dG9uPk1hcmsgdXNlciBpbnRlcmFjdGlvbjwvYnV0dG9uPjxzY3JpcHQ+d2lu
ZG93Lm9uYmVmb3JldW5sb2FkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gImhpIjsgfTwvc2NyaXB0
Pic+PC9pZnJhbWU+CjxidXR0b24gb25jbGljaz0nZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaWZy
YW1lIikuc3JjID0gImRhdGE6dGV4dC9odG1sLGhpIic+TmF2aWdhdGUgaWZyYW1lPC9idXR0b24+
CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311267</attachid>
            <date>2017-05-25 12:53:17 -0700</date>
            <delta_ts>2017-05-25 12:55:39 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-172603-20170525125316.patch</filename>
            <type>text/plain</type>
            <size>56856</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzYxNDEyZmE5ODYxMDc3
ODE4MzBiY2ExNzA1YmYwYzU2ZWI0MTBmMy4uN2U2NWE0OGZjMjUzZGYwMTNkMzU0YmVjNmUwNjMx
ODE0YWU5NzhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA1LTI1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBTdXBwb3J0IG9u
YmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgaW4gTWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjYwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgcGFnZSBsb2FkZWQgaW4gTWluaUJy
b3dzZXIgdXNpbmcgV2ViS2l0MiBjYW5ub3Qgc2hvdyBhIGJlZm9yZXVubG9hZCBjb25maXJtIHBh
bmVsIChieSByZWdpc3RlcmluZworICAgICAgICBhbiBvbmJlZm9yZXVubG9hZCBldmVudCBoYW5k
bGVyKSB3aGVuIGl0IGlzIHVubG9hZGVkLiBUaGUgc2FtZSBwYWdlIGxvYWRlZCBpbiBNaW5pQnJv
d3NlciB1c2luZworICAgICAgICBXZWJLaXQxIGNhbiBzaG93IHN1Y2ggYSBjb25maXJtIHBhbmVs
LiBXZSBuZWVkIHRvIGFkZCBXS1VJRGVsZWdhdGUgU1BJIHNvIHRoYXQgYW4gZW1iZWRkaW5nIGNs
aWVudCwKKyAgICAgICAgc3VjaCBhcyBNaW5pQnJvd3NlciwgY2FuIHJlZ2lzdGVyIHRvIHJlY2Vp
dmUgYSBjYWxsYmFjayB0byBzaG93IGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xp
ZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBNb2RpZmllZCB0byB0YWtlIGEgU2Vj
dXJpdHlPcmlnaW5EYXRhIG9iamVjdC4gVGhpcworICAgICAgICBtYWtlcyB0aGUgQVBJIGNvbnNp
c3RlbnQgd2l0aCB0aGUgZXhpc3RpbmcgSmF2YVNjcmlwdCBkaWFsb2cgY2FsbGJhY2tzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOiBBZGQgV0tQYWdlVUlDbGllbnRWMTEg
dG8gdGhlIGxpc3Qgb2YgdmVyc2lvbnMuCisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQp
OiBNb2RpZmllZCBvdmVycmlkZXMgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKCkgYW5kIEFQSTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCgpCisgICAgICAgIGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlVUlDbGllbnQuaDogRGVwcmVjYXRlIGV4aXN0aW5nIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbENhbGxiYWNrIGNhbGxiYWNrCisgICAgICAgIHRoYXQgZG9lcyBub3QgdGFrZSBh
IFdLU2VjdXJpdHlPcmlnaW5SZWYuIEFkZCBhIG5ldyBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxDYWxsYmFjayB0aGF0IHRha2VzCisgICAgICAgIGEgV0tTZWN1cml0eU9yaWdpblJl
Zi4gVGhpcyBtYWtlcyB0aGUgYXJndW1lbnRzIHRvIHRoaXMgY2FsbGJhY2sgbW9yZSBjb25zaXN0
ZW50IHdpdGggdGhlIGFyZ3VtZW50cworICAgICAgICB0YWtlbiBieSB0aGUgZXhpc3RpbmcgSmF2
YVNjcmlwdCBkaWFsb2cgY2FsbGJhY2tzIChlLmcuIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRD
YWxsYmFjaykuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmg6IEFkZCBTUEkgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRVSURlbGVnYXRlOl0pOiBTZXQgdGhlIGRlbGVnYXRlIG9mIFdlYktpdDo6VUlE
ZWxlZ2F0ZSB0byB0aGUgc3BlY2lmaWVkIFdLVUlEZWxlZ2F0ZQorICAgICAgICBiZWZvcmUgd2Ug
c2V0IHRoZSBVSSBjbGllbnQgb24gdGhlIHBhZ2Ugc28gYXMgdG8gZW5zdXJlIHRoYXQgQVBJOjpV
SUNsaWVudCBjYWxsYmFja3MgdGhhdCBkZXBlbmQKKyAgICAgICAgLXJlc3BvbmRzVG9TZWxlY3Rv
cjogY2hlY2tzIChlLmcuIEFQSTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCgpKSByZXR1cm4gdGhlIGNvcnJlY3QKKyAgICAgICAgcmVzdWx0LiBUbyBlbGFib3JhdGUg
ZnVydGhlciwgYSBBUEk6OlVJQ2xpZW50IGNsaWVudCBtdXN0IG92ZXJyaWRlIGJvdGggY2FuUnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkKKyAgICAgICAgYW5kIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCgpIHRvIHN1cHBvcnQgcnVubmluZyBhIGJlZm9yZXVubG9hZCBjb25maXJtIGRp
YWxvZy4gV2hlbiBtYXBwaW5nCisgICAgICAgIHRoZSBDb2NvYSBTUEksIFdLVUlEZWxlZ2F0ZVBy
aXZhdGUsIHRvIEFQSTo6VUlDbGllbnQgd2UgaW1wbGVtZW50IEFQSTo6VUlDbGllbnQ6OmNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpCisgICAgICAgIGluIHRlcm1zIG9mIHdoZXRoZXIg
dGhlIENvY29hIGRlbGVnYXRlIHJlc3BvbmRzIGF0IHJ1bnRpbWUgdG8gdGhlIHNlbGVjdG9yIC13
ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgIFdlIG5lZWQgdG8gZG8gc3VjaCBydW50
aW1lIGNoZWNrcyBiZWZvcmUgd2UgcGFzcyB0aGUgQVBJOjpVSUNsaWVudCB0byB0aGUgcGFnZS4g
T3RoZXJ3aXNlLCBxdWVyeWluZworICAgICAgICBBUEk6OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKSB3aWxsIHJldHVybiB0aGUgd3JvbmcgcmVzdWx0LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIEFQ
STo6VUlDbGllbnQgb3ZlcnJpZGVzOiBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQor
ICAgICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkuIEFkZCBhIGJpdCB0byBt
X2RlbGVnYXRlTWV0aG9kcyBhcyB0byB3aGV0aGVyIHRoZSBDb2NvYSBkZWxlZ2F0ZQorICAgICAg
ICByZXNwb25kcyB0byBzZWxlY3RvciAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6IFNldCB0aGUgYWJvdmUgbV9kZWxlZ2F0ZU1ldGhvZHMgYml0
IGlmIHRoZSBDb2NvYSBkZWxlZ2F0ZSByZXNwb25kcworICAgICAgICB0byBzZWxlY3RvciAtd2Vi
VmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogUmV0dXJuIHdoZXRoZXIgdGhl
IGFib3ZlIG1fZGVsZWdhdGVNZXRob2RzCisgICAgICAgIGJpdCB3YXMgc2V0LgorICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KTogVHVybiBhcm91bmQgYW5kIGNhbGwgLXdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlciAoaWYgYXBw
bGljYWJsZSkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogTW9k
aWZpZWQgdG8gdGFrZSBhIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QKKyAgICAgICAgYW5kIHBh
c3MgaXQgdG8gQVBJOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IEFkZCBTZWN1cml0eU9yaWdpbkRhdGEgYXJndW1lbnQg
dG8gbWVzc2FnZSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwuCisgICAgICAgIEFsc28gcGFz
cyB0aGUgbWVzc2FnZSBmb3IgdGhlIHBhbmVsIGFzIHRoZSBsYXN0IGFyZ3VtZW50IHNvIGFzIHRv
IG1ha2UgdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyB0byBtZXNzYWdlCisgICAgICAgIFJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCBtb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIG9yZGVyIG9mIGFyZ3Vt
ZW50cyBwYXNzZWQgdG8gb3RoZXIgSmF2YVNjcmlwdCBkaWFsb2cKKyAgICAgICAgbWVzc2FnZXMg
KGUuZy4gUnVuSmF2YVNjcmlwdEFsZXJ0KSBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IEluY2x1
ZGUgdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QgZm9yIHRoZQorICAgICAgICBmcmFtZSBp
biBtZXNzYWdlIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbC4gCisKIDIwMTctMDUtMjUgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJd
IEF2b2lkIHNldHRpbmcgY29udGVudHNTY2FsZSBhbmQgcmFzdGVyaXphdGlvblNjYWxlIG9uIENB
VHJhbnNmb3JtTGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgKaW5kZXggMGEyNzA5YWU5ZjgwNmFlZDQ1MGY2MGViMDkxYTFlMjRmN2IwM2JkYy4uYTU1Y2Y1
OWFlNDI3Y2RjMjE2MTA0YWNkYWIyMTc1YTA3YzU4ZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSopIHsgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0
aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBh
Z2VQcm94eSopIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CmluZGV4IGM1NzZlNmE1OTIyZjFhOTFkODk5MDEyYTMxOTI5NDEyOWYyMWI3MWMuLjhlNWI1YjNm
ZjAyODAxMzhmNWZhNWFjZTcyNTRjNWE4MzAxZTdiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTA+IFZlcnNpb25zOworICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1Bh
Z2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VV
SUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNs
aWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGll
bnRWMTE+IFZlcnNpb25zOwogfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMjA1
NywxNCArMjA1NywyMSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiAgICAgICAgIGJvb2wg
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2IHx8IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbDsKKyAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTAgfHwgbV9jbGllbnQucnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgfHwgbV9jbGllbnQucnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2Us
IGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1l
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpIHsKICAg
ICAgICAgICAgICAgICBSZWZQdHI8UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlz
dGVuZXI+IGxpc3RlbmVyID0gUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVu
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICAgICAg
bV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSSht
ZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShz
ZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1
cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5n
ZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEwKSB7CisgICAgICAgICAgICAg
ICAgUmVmUHRyPFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyPiBsaXN0
ZW5lciA9IFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxMCh0b0FQSShw
YWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVy
LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVVJQ2xpZW50LmgKaW5kZXggMDg4MGEwZDcxYTg1YTBlOGU4OTdhOWJlMDIzMTI4OWFh
ZDM4MGJjMi4uMmEzNmY2MmQ2MWMwZWQ2ZWZlODk3ZDkyMDY0YmQzODYwMjVhMTlmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKQEAgLTgy
LDcgKzgyLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdFJlc3Vs
dExpc3RlbmVyQ2FsbChXS1BhZ2VSdW5KYXZhU2NyaXB0UHIKIAogdHlwZWRlZiB2b2lkICgqV0tQ
YWdlVUlDbGllbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogdHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2
aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdp
bmRvd0ZlYXR1cmVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldL
UGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQYWdlUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0QWxl
cnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdlUnVu
SmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkphdmFTY3Jp
cHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZh
bHVlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2lu
LCBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMTQyLDYgKzE0Miw3IEBAIHR5cGVkZWYgdm9pZCAo
KldLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUp
KFdLUGFnZVJlCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxi
YWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY2KShXS1BhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxMCkoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUGFnZVJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIAogdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRCYXNlIHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC05MjAsNyArOTIxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQ
YWdlVUlDbGllbnRWMTAgewogICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luOwogICAgIAogICAgIC8vIFZlcnNpb24gNy4KLSAgICBXS1BhZ2VSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbDsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxMCAgIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxMDsKICAgICBXS0Z1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZTsKICAgICAKICAgICAvLyBWZXJzaW9uIDguCkBAIC05MzQs
NyArOTM1LDEwNSBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxMCB7CiAgICAgV0tI
YXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZTsKICAgICBX
S0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmRDYWxsYmFj
ayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91
bmQ7CiB9IFdLUGFnZVVJQ2xpZW50VjEwOwotICAgIAorCit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VV
SUNsaWVudFYxMSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgor
ICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1BhZ2VU
YWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9jdXND
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5m
b2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQYWdl
TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFnZURp
ZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJlVmlz
aWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VH
ZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNpYmxl
OworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0YXR1
c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAgV0tQ
YWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1lOwor
ICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOworICAg
IFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFj
ayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
KyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckhlaWdo
dDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9vdGVy
OworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFsOwor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJlckJh
bmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZhaWxh
YmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdLUGFn
ZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2VyOwor
ICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAgLy8g
VmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAgICAv
LyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRpZEJl
Z2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNl
ZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsKKwor
ICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRv
bjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdl
OworCisgICAgLy8gVmVyc2lvbiA2LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKKyAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
Q29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRDb25maXJtOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICBX
S0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbjsKKworICAgIC8vIFZl
cnNpb24gNy4KKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxMCAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYxMDsKKyAgICBXS0Z1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZTsKKworICAgIC8vIFZlcnNpb24gOC4KKyAgICBXS1JlcXVlc3RQb2ludGVyTG9ja0Nh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RQb2lu
dGVyTG9jazsKKyAgICBXS0RpZExvc2VQb2ludGVyTG9ja0NhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExvc2VQb2ludGVyTG9jazsKKworICAgIC8vIFZl
cnNpb24gOS4KKyAgICBXS0hhbmRsZUF1dG9wbGF5RXZlbnRDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUF1dG9wbGF5RXZlbnQ7CisKKyAgICAvLyBW
ZXJzaW9uIDEwLgorICAgIFdLSGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2VDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRD
aGFuZ2U7CisgICAgV0tEaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3Jl
Z3JvdW5kQ2FsbGJhY2sgICAgICAgICBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdo
aWxlSW5Gb3JlZ3JvdW5kOworCisgICAgLy8gVmVyc2lvbiAxMS4KKyAgICBXS1BhZ2VSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKK30gV0tQYWdlVUlDbGllbnRWMTE7CisKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDJjMmQ2MjY3NWYy
OGY0NTc5ZTJkNjE2NzZiN2EyNjE5YjBmZTI4ZGYuLjc0NDRjYzZlMzBhNjEwZmEwN2U0ZTkzMzUw
NWU3NWFkNDFhOWUzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC03MCw2ICs3MCw4IEBAIHN0cnVj
dCBVSUVkZ2VJbnNldHM7CiAtIChXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
OihpZClkcmFnZ2luZ0luZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNy
ZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2
aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJlczooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0Zl
YXR1cmVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcgKndlYlZpZXcpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CisKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1
ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxl
bWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKIC0gKE5TQXJyYXkgKilfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBhY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gKillbGVtZW50IGRlZmF1bHRBY3Rpb25zOihOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24g
Kj4gKilkZWZhdWx0QWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZmFiMzJkYWZiMmZiMzE2OTA3OTRmNDVmZWExZTc0Y2U1
NWNlYWQzNC4uZTBiZWRhYjljN2QyYjM2NDJjYzQzYzAxNGJlMzMyZTlhMGRlYThjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTcw
NywxMSArNzA3LDExIEBAIC0gKGlkIDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIAogLSAodm9p
ZClzZXRVSURlbGVnYXRlOihpZDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIHsKKyAgICBfdWlE
ZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoVUlEZWxlZ2F0ZSk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgX3BhZ2UtPnNldENvbnRleHRNZW51Q2xpZW50KF91aURlbGVnYXRlLT5jcmVhdGVD
b250ZXh0TWVudUNsaWVudCgpKTsKICNlbmRpZgogICAgIF9wYWdlLT5zZXRVSUNsaWVudChfdWlE
ZWxlZ2F0ZS0+Y3JlYXRlVUlDbGllbnQoKSk7Ci0gICAgX3VpRGVsZWdhdGUtPnNldERlbGVnYXRl
KFVJRGVsZWdhdGUpOwogfQogCiAtIChpZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4pX2ljb25M
b2FkaW5nRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCmluZGV4IGYzZWYzM2EwNjI3MTVmNWVkZDE0MTJiNDhhZmUyMTE2MDdmYTYzNTYuLjMwZjkw
ZjU0Nzc4YTBmZjdjZDE2MWFmNjFmY2FmMDEzMmM0MTMyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtODYsNiArODYsOCBAQCBwcml2YXRlOgog
ICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdURjo6U3RyaW5nJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwog
ICAgICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25n
IGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVk
VXNhZ2UsIEZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIEZ1bmN0aW9u
PHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEyNyw2ICsxMjksNyBAQCBwcml2YXRlOgogICAgICAg
ICBib29sIHdlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVk
QnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2
YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25I
YW5kbGVyIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsV2l0aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0
aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJ
bml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDQ0ODMwZDFlN2ZlZjkz
ZmMwOTVjMGY0NDJlNzIzZTQyYjk2MzgwNzIuLjI5ZjljMzY0NDI2ZWQ4ZDk5ZjBmNzEwNDlkOTM1
ZmE1ZWQ3NWE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQg
PFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1
bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNj
cmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5k
bGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5K
YXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0
aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsV2l0aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0Omlu
aXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVk
QnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTpp
bml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVy
c0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5p
dGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKQEAgLTMxMyw2ICszMTQsMzMgQEAg
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjoKICAgICB9KS5nZXQoKV07CiB9CiAKK2Jvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXI7Cit9CisKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBt
ZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
IChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1l
c3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBk
ZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdh
dGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNr
ZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCks
IEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3Vy
aXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQ
dHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIHJl
c3VsdCkgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3VsdCk7CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pLmdldCgpXTsKK30KKwogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1
b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVu
Y3Rpb248dm9pZCAodW5zaWduZWQgbG9uZyBsb25nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlRGF0
YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3RhQ3VycmVudE9yaWdpblVzYWdl
Q3VycmVudERhdGFiYXNlVXNhZ2VFeHBlY3RlZFVzYWdlRGVjaXNpb25IYW5kbGVyKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDEzMzk4NDVhODJkNjVh
ODY4NTg1YmMxMWZjYjNlOTJmN2Q0YTVhMGUuLjQ2YjgwZTA1MWU4MzlmMjY4MTNhOWRhN2Y5MWVm
YWVjMGM0NWFjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00MDkyLDcgKzQwOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb0FjY2Vz
c2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIEludFJlYwogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBSZWZQdHI8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5
KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDEwMCw3ICs0MTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2
NF90IGYKICAgICAvLyBTaW5jZSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjYW4gc3Bp
biBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVz
cyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7CiAK
LSAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2Fn
ZSwgZnJhbWUsIFtyZXBseV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7
CisgICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3Nh
Z2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5XShib29sIHJlc3VsdCkgeyByZXBseS0+
c2VuZChyZXN1bHQpOyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTczNjkxNDViOWY0NGNlYmQ4ZjI0ZTMx
MTE5NWU1MTg4MDBlYTk4My4uOTcxZGZmZjhhMjk2ZjIwNDJlMDFmOTQyMTZkZjM5NWU4ZjIxYTJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI5Nyw3ICsx
Mjk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQm
IHdpbmRvd1BvaW50KTsKICAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQp
OwogI2VuZGlmCi0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2
b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRl
bGF5ZWRSZXBseT4pOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgp
OwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDVjY2MzMGYyODZjZjU2YTNmYTAzZmM4MTNlNWIyNGY0MmQwZDg1ZmQuLjdiOWEw
ZTIwOTg5ZDFkNzc2MTU5ZGNkNzhjMmE3ZGFjZWQ0MGVhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzQsNyArNzQsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKFdlYkNvcmU6OkludFJlY3QgcmVjdCkgLT4gKFdlYkNvcmU6OkludFJlY3Qgc2NyZWVu
RnJhbWUpCiAjZW5kaWYKIAotICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChTdHJpbmcg
bWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIERlbGF5ZWQK
KyAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcg
bWVzc2FnZSkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIERlbGF5ZWQKICAgICBQYWdlRGlkU2Nyb2xs
KCkKICAgICBSdW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6Rmls
ZUNob29zZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQogICAgIFByaW50RnJhbWUodWludDY0X3QgZnJh
bWVJRCkgLT4gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBkZDBkNGJjMDM1MGRmZjcz
MDY1MTUyODc4ODgyM2E2YzQ0M2Y2NTM5Li4xZjVhOTRiZThhNTc5ZjZmZjFiMGNlOTM0ZTkzZGMy
MzFiZjU0MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIEZyYW1lJgogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdE
ZXRlY3Rpb25EaXNhYmxlcjsKIAotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1lc3NhZ2UsIHdlYkZyYW1lLT5mcmFtZUlEKCkp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OlJl
cGx5KHNob3VsZENsb3NlKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJ
UEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpCisg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUo
JmZyYW1lKSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbDo6UmVwbHkoc2hvdWxkQ2xvc2UpLCBtX3BhZ2UucGFnZUlEKCksIFNlY29u
ZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vz
c1dpbGxTdXNwZW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHNob3Vs
ZENsb3NlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGUxYWM2NDBmODExYTFmODU2MzFhOTc2NDBmZWRlYmVkZTAwYWEzYmMuLjIyMjk0NWQyNTlh
OTA5ZDY1NTVjMjNhOTZkYmM2ODI1NTM0YWVmMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNy0wNS0yNSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCBv
bmJlZm9yZXVubG9hZCBjb25maXJtIHBhbmVsIGluIE1pbmlCcm93c2VyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIC13ZWJWaWV3
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6IGRlbGVnYXRlCisgICAgICAgIG1ldGhvZCBpbiBNaW5pQnJvd3Nl
ciB0byBzaG93IGEgY29uZmlybSBwYW5lbCBhcyB0byB3aGV0aGVyIHRvIGFsbG93IHRoZSB1bmxv
YWRpbmcgb2YgdGhlIHBhZ2Ugd2hlbgorICAgICAgICB1bmxvYWRpbmcgaXMgaW5pdGlhdGVkIGZv
ciBhIHBhZ2UgdGhhdCByZWdpc3RlcmVkIGEgb25iZWZvcmV1bmxvYWQgaGFuZGxlci4KKworICAg
ICAgICBDb3B5IHRoZSBleGlzdGluZyB0ZXN0IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9N
b2RhbEFsZXJ0c1NQSS5jcHAgdG8gVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJlY2F0
ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcCwKKyAgICAgICAgdXBkYXRpbmcgaXQgdG8gdGVzdCB0aGUg
ZGVwcmVjYXRlZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgY2FsbGJhY2ssIHNvIGFzIHRv
IGVuc3VyZSB3ZSBoYXZlIG5vdAorICAgICAgICBicm9rZW4gdGhlIGRlcHJlY2F0ZWQgV0tQYWdl
VUlDbGllbnRWNSBjYWxsYmFja3MuIFdLUGFnZVVJQ2xpZW50VjUgaXMgc3RpbGwgdXNlZCBieSB0
aGUgTWFjIEFwcCBTdG9yZQorICAgICAgICBhcyBvZiB0aGUgdGltZSBvZiB3cml0aW5nIDooLgor
CisgICAgICAgIFJlLXJlcHVycG9zZSBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW9kYWxB
bGVydHNTUEkuY3BwIGZvciBuZXcgdW5pdHMgdGVzdHMgdGhhdCBleGVyY2lzZSB0aGUKKyAgICAg
ICAgV0tQYWdlVUlDbGllbnRWMTAgY2FsbGJhY2tzOiBydW5KYXZhU2NyaXB0e0FsZXJ0LCBDb25m
aXJtLCBQcm9tcHR9IGFuZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKS4KKworICAgICAg
ICBNb2RpZnkgVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0g
dG8gdGVzdCB0aGF0IHRoZSAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOgorICAgICAgICBpcyBj
YWxsZWQuIEFsc28gZml4IHN0eWxlIG5pdDsgcGFzcyBZRVMgaW5zdGVhZCBvZiB0cnVlIHRvIGF2
b2lkIGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBib29sIHRvIEJPT0wKKyAgICAgICAgd2hlbiBp
bnZva2luZyB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGluIC13ZWJWaWV3OnJ1bkphdmFTY3JpcHRB
bGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjou
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOl0pOiBJbXBsZW1lbnQgZGVsZWdhdGUgbWV0aG9kLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQ
SS5jcHA6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2Rh
bEFsZXJ0c1NQSS5jcHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphbmFseXplRGlhbG9nQXJn
dW1lbnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRBbGVydCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjphbmFseXplRGlhbG9nQXJndW1lbnRzKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZh
U2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRzLWluLW5ldy1h
Ym91dC1ibGFuay13aW5kb3cuaHRtbDogUmVnaXN0ZXIgb25iZWZvcmV1bmxvYWQgaGFuZGxlci4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5t
bToKKyAgICAgICAgKHNhd0RpYWxvZyk6CisgICAgICAgICgtW01vZGFsQWxlcnRzVUlEZWxlZ2F0
ZSB3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpmb3JOYXZpZ2F0aW9uQWN0
aW9uOndpbmRvd0ZlYXR1cmVzOl0pOgorICAgICAgICAoLVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUg
d2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bTW9kYWxBbGVydHNVSURlbGVn
YXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlh
dGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAxNy0wNS0yNSAgSm9hbm1hcmll
IERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0FUS10gRXhwb3NlIGRvYy1m
b290bm90ZSBBUklBIHJvbGUgd2l0aCBBVEtfUk9MRV9GT09UTk9URQpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBkMDFkMGNk
NDA0M2I5NDFjNWU5ODJkYjYwYzg1ZDlmMjczNDI3MjlhLi5iZGU3YzRjMWQ0NzY4ZDYyYWEzMzdj
ZDM2ODI1YmQ4NzA2OWQzNGY3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNTE1LDYgKzUxNSwyMiBAQCAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdL
T3BlblBhbmVsUGFyYQogICAgIH1dOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilz
ZW5kZXIgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBO
U0FsZXJ0ICphbGVydCA9IFtbTlNBbGVydCBhbGxvY10gaW5pdF07CisKKyAgICBhbGVydC5tZXNz
YWdlVGV4dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSmF2YVNjcmlwdCBiZWZvcmUg
dW5sb2FkIGRpYWxvZyBmcm9tICVALiIsIFtmcmFtZS5yZXF1ZXN0LlVSTCBhYnNvbHV0ZVN0cmlu
Z11dOworICAgIGFsZXJ0LmluZm9ybWF0aXZlVGV4dCA9IG1lc3NhZ2U7CisKKyAgICBbYWxlcnQg
YWRkQnV0dG9uV2l0aFRpdGxlOkAiTGVhdmUgUGFnZSJdOworICAgIFthbGVydCBhZGRCdXR0b25X
aXRoVGl0bGU6QCJTdGF5IE9uIFBhZ2UiXTsKKworICAgIFthbGVydCBiZWdpblNoZWV0TW9kYWxG
b3JXaW5kb3c6c2VsZi53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6XnZvaWQgKE5TTW9kYWxSZXNw
b25zZSByZXNwb25zZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZSA9PSBO
U0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm4pOworICAgICAgICBbYWxlcnQgcmVsZWFzZV07CisgICAg
fV07Cit9CisKIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkKWRy
YWdnaW5nSW5mbwogewogICAgIHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTI0ZjdmOGU2ZjNkYzc5NjVmMDExMzU1NTUyNzVlOThi
N2VmOWM3Yi4uMjg0N2I4MGI4OGE2Mjc4OGEwOTFmMjdhZjhiMjIzMzY5YTQxMjk4YSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU5OSw2ICs1OTksNyBAQAogCQlDRTM1MjRGOTFCMTQ0MUM0
MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEYxMUIxNDJCOEQwMDI4
QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwICovOyB9OwogCQlDRTM1
MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJC
QkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0bWwgKi87IH07CiAJCUNFQTZDRjI4MTlD
Q0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUE2Q0YyNzE5Q0NGNjlE
MDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgKi87IH07CisJCUNFQjIyNEVE
MUVENjRBODYwMDNEMjg2NiAvKiBEZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUIyMjRFQzFFRDY0QTg2
MDAzRDI4NjYgLyogRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovOyB9OwogCQlDRUJB
QkQ0OTFCNzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
QkFCRDQ4MUI3MTY4N0MwMDUxMjEwQSAvKiBzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0
bWwgKi87IH07CiAJCUNFQkNBMTJGMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeS5tbSAqLzsgfTsKIAkJQ0VCQ0ExMzgxRTNBODA3QTAwQzczMjkzIC8qIHBhZ2Utd2l0
aC1jc3AuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRUJDQTEzNTFFM0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRoLWNzcC5odG1sICov
OyB9OwpAQCAtMTUxMCw2ICsxNTExLDcgQEAKIAkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8q
IE9wdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUE2Q0YyMjE5Q0NGNUJE
MDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gT3BlbkFuZENsb3NlV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRUE2Q0YyNzE5Q0NGNjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Ut
d2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAib3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUIyMjRFQzFFRDY0QTg2MDAzRDI4NjYgLyogRGVw
cmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRUJBQkQ0ODFCNzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0
ZXJuYWwtc2NoZW1lcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVt
ZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQkNBMTJFMUUzQTY2MDEw
MEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUJDQTEzNDFFM0E4MDM0MDBDNzMy
OTMgLyogcGFnZS13aXRoLWNzcC1pZnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJwYWdlLXdpdGgtY3NwLWlmcmFtZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIwODUsNiArMjA4Nyw3IEBACiAJCQkJMUE1MEFBMUMxQTJBNEU3MDAwRjRDMzQ1IC8q
IENsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwICovLAogCQkJCTdDOEREQUE5MTczNURFMUQw
MEVBNUFDMCAvKiBDbG9zZVRoZW5UZXJtaW5hdGUuY3BwICovLAogCQkJCUY2RjNGMjkwMTMzNDJG
RUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLywKKwkJCQlDRUIyMjRFQzFFRDY0QTg2
MDAzRDI4NjYgLyogRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovLAogCQkJCUY2QjdC
RTkzMTc0NjkxRUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3BwICovLAog
CQkJCUY2QjdCRTkyMTc0NjkxRUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNf
QnVuZGxlLmNwcCAqLywKIAkJCQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgzQjEgLyogRGlkTm90SGFu
ZGxlS2V5RG93bi5jcHAgKi8sCkBAIC0zMTMzLDYgKzMxMzYsNyBAQAogCQkJCTk5ODRGQUNDMUNG
RkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRl
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VCMjI0RUQxRUQ2
NEE4NjAwM0QyODY2IC8qIERlcHJlY2F0ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJl
Y2F0ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3MzY3MjI3
OWE3MTFkNTUyZGE5M2E2ZmNhYmUyZmJmMDE3YWQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5j
cHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1
ZGUgPFdlYktpdC9XS0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBkb25lOworc3RhdGljIHVuc2lnbmVkIGRpYWxvZ3NT
ZWVuOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9IDQ7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZGlhbG9nc0JlZm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IGRpYWxvZ3NF
eHBlY3RlZCAtIDE7CisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XZWJWaWV3PiBv
cGVuZWRXZWJWaWV3OworCitzdGF0aWMgdm9pZCBhbmFseXplRGlhbG9nQXJndW1lbnRzKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5
T3JpZ2luID0gbnVsbHB0cikKK3sKKyAgICBFWFBFQ1RfRVEocGFnZSwgV0tGcmFtZUdldFBhZ2Uo
ZnJhbWUpKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwgPSBhZG9wdFdLKFdLRnJh
bWVDb3B5VVJMKGZyYW1lKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVybFN0cmlu
ZyA9IGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybC5nZXQoKSkpOworICAgIEVYUEVDVF9XS19T
VFJFUSgiYWJvdXQ6YmxhbmsiLCB1cmxTdHJpbmcuZ2V0KCkpOworCisgICAgaWYgKHNlY3VyaXR5
T3JpZ2luKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwcm90b2NvbCA9IGFk
b3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChzZWN1cml0eU9yaWdpbikpOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoImZpbGUiLCBwcm90b2NvbC5nZXQoKSk7CisKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3QgPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5D
b3B5SG9zdChzZWN1cml0eU9yaWdpbikpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIGhv
c3QuZ2V0KCkpOworCisgICAgICAgIEVYUEVDVF9FUShXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChz
ZWN1cml0eU9yaWdpbiksIDApOworICAgIH0KKworICAgICsrZGlhbG9nc1NlZW47CisKKyAgICAv
LyBUZXN0IGJlZm9yZXVubG9hZCBsYXN0IGFzIHdlIG5lZWQgdG8gbmF2aWdhdGUgdGhlIHdpbmRv
dyB0byB0cmlnZ2VyIGl0LgorICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dzQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKSB7CisgICAgICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24gaXMgcmVxdWly
ZWQgdG8gc2hvdyB0aGUgYmVmb3JldW5sb2FkIHByb21wdC4KKyAgICAgICAgb3BlbmVkV2ViVmll
dy0+c2ltdWxhdGVCdXR0b25DbGljayhrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbiwgNSwg
NSwgMCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBibGFua0RhdGFVUkwgPSBhZG9w
dFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhOnRleHQvaHRtbCIpKTsKKyAgICAg
ICAgV0tQYWdlTG9hZFVSTChwYWdlLCBibGFua0RhdGFVUkwuZ2V0KCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NFeHBlY3RlZCkKKyAg
ICAgICAgZG9uZSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlP
cmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFs
b2dBcmd1bWVudHMocGFnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKK30KKworc3RhdGljIGJv
b2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2
b2lkKikKK3sKKyAgICBhbmFseXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0
eU9yaWdpbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgV0tTdHJpbmdSZWYgcnVu
SmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVm
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBj
b25zdCB2b2lkKikKK3sKKyAgICBhbmFseXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBz
ZWN1cml0eU9yaWdpbik7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBib29sIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdL
RnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFsb2dBcmd1bWVu
dHMocGFnZSwgZnJhbWUpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIFdLUGFnZVJl
ZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVz
dCwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
V0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQor
eworICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CisKKyAgICBvcGVu
ZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworCisg
ICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKKyAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBz
aXplb2YodWlDbGllbnQpKTsKKworICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAg
dWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIHVp
Q2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAg
dWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAg
dWlDbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsOworCisgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG9wZW5lZFdlYlZpZXctPnBh
Z2UoKSwgJnVpQ2xpZW50LmJhc2UpOworCisgICAgV0tSZXRhaW4ob3BlbmVkV2ViVmlldy0+cGFn
ZSgpKTsKKyAgICByZXR1cm4gb3BlbmVkV2ViVmlldy0+cGFnZSgpOworfQorCitURVNUKFdlYktp
dDIsIERlcHJlY2F0ZWRWNU1vZGFsQWxlcnRzU1BJKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAgV0tQYWdlVUlDbGllbnRW
NSB1aUNsaWVudDsKKyAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsK
KworICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAgdWlDbGllbnQuY3JlYXRlTmV3
UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQod2ViVmll
dy5wYWdlKCksICZ1aUNsaWVudC5iYXNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1
cmwoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIm1vZGFsLWFsZXJ0cy1pbi1u
ZXctYWJvdXQtYmxhbmstd2luZG93IiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJW
aWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vZGFsQWxlcnRzU1BJLmNwcAppbmRleCAwMjc4ZjAw
NWI5ODUwNTg4MmViOGE0YjJhZTI4YTRlMjdlMDY1Nzk3Li44NDFjMmU4NTNmMGJkN2IyYTk2ZjMy
YmUwMTk3YTNhMzgyZDA5N2M0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTW9kYWxBbGVydHNTUEkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsMTAgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBzdGF0aWMgYm9vbCBkb25lOwogc3RhdGljIHVuc2lnbmVkIGRpYWxv
Z3NTZWVuOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9IDM7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gNDsKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZGlhbG9nc0V4cGVjdGVkIC0g
MTsKKworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVdlYlZpZXc+IG9wZW5lZFdlYlZp
ZXc7CiAKIHN0YXRpYyB2b2lkIGFuYWx5emVEaWFsb2dBcmd1bWVudHMoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7
CkBAIC01NiwyOCArNTksNDQgQEAgc3RhdGljIHZvaWQgYW5hbHl6ZURpYWxvZ0FyZ3VtZW50cyhX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU8KIAogICAgIEVYUEVD
VF9FUShXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChzZWN1cml0eU9yaWdpbiksIDApOwogCi0gICAg
aWYgKCsrZGlhbG9nc1NlZW4gPT0gZGlhbG9nc0V4cGVjdGVkKQorICAgICsrZGlhbG9nc1NlZW47
CisKKyAgICAvLyBUZXN0IGJlZm9yZXVubG9hZCBsYXN0IGFzIHdlIG5lZWQgdG8gbmF2aWdhdGUg
dGhlIHdpbmRvdyB0byB0cmlnZ2VyIGl0LgorICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dz
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7CisgICAgICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24g
aXMgcmVxdWlyZWQgdG8gc2hvdyB0aGUgYmVmb3JldW5sb2FkIHByb21wdC4KKyAgICAgICAgb3Bl
bmVkV2ViVmlldy0+c2ltdWxhdGVCdXR0b25DbGljayhrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1
dHRvbiwgNSwgNSwgMCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBibGFua0RhdGFV
UkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhOnRleHQvaHRtbCIp
KTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChwYWdlLCBibGFua0RhdGFVUkwuZ2V0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NFeHBl
Y3RlZCkKICAgICAgICAgZG9uZSA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkphdmFTY3Jp
cHRBbGVydChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
U2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQorc3RhdGljIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdlUnVu
SmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqKQog
ewogICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2lu
KTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lckNhbGwobGlzdGVu
ZXIpOwogfQogCi1zdGF0aWMgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQorc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZp
cm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybVJl
c3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKikKIHsKICAgICBhbmFseXplRGlh
bG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbik7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJDYWxsKGxp
c3RlbmVyLCBmYWxzZSk7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBydW5KYXZhU2NyaXB0UHJv
bXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQor
c3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNl
Y3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIGNvbnN0IHZvaWQqKQogewogICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFn
ZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXJDYWxsKGxpc3RlbmVyLCBudWxscHRy
KTsKIH0KIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVdlYlZpZXc+IG9wZW5lZFdl
YlZpZXc7CitzdGF0aWMgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV0tQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVm
IHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRM
aXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCopCit7CisgICAgYW5hbHl6ZURpYWxvZ0Fy
Z3VtZW50cyhwYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4pOworICAgIFdLUGFnZVJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyQ2FsbChsaXN0ZW5lciwgZmFsc2UpOwor
fQogCiBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCiB7CkBAIC04NSwxMyArMTA0LDE0IEBAIHN0YXRpYyBXS1BhZ2VS
ZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVl
c3QsIFdLRGljCiAKICAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVdlYlZpZXc+KHBhZ2UpOwogCi0gICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKKyAgICBX
S1BhZ2VVSUNsaWVudFYxMSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXpl
b2YodWlDbGllbnQpKTsKIAotICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAgdWlD
bGllbnQuYmFzZS52ZXJzaW9uID0gMTE7CiAgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0
ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OwogICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJt
ID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CiAgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21w
dCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgdWlDbGllbnQucnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsID0gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwogCiAgICAgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KG9wZW5lZFdlYlZpZXctPnBhZ2UoKSwgJnVpQ2xpZW50LmJhc2UpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRz
LWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sCmlu
ZGV4IGY3NmNiNjUwYjdhYjhjYjUxZGE3OTk1YzFlOTFiZGM0MGE0ZDgwMTEuLjE5YmYzOWQwN2Vm
OTAxNjExNWRmZTRlNGQ5ZDUyY2IzZDA0OWQxMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRv
dy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVy
dHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sCkBAIC03LDYgKzcsNyBAQCB2YXIgbmV3
V2luZG93ID0gd2luZG93Lm9wZW4oImFib3V0OmJsYW5rIik7CiBuZXdXaW5kb3cuYWxlcnQoIlRl
c3RpbmcgYWxlcnQiKTsKIG5ld1dpbmRvdy5jb25maXJtKCJUZXN0aW5nIGNvbmZpcm0iKTsKIG5l
d1dpbmRvdy5wcm9tcHQoIlRlc3RpbmcgcHJvbXB0IiwgIkRlZmF1bHQgdGV4dCIpOworbmV3V2lu
ZG93Lm9uYmVmb3JldW5sb2FkID0gKCkgPT4gIkRlZmF1bHQgdGV4dCI7CiAKIDwvc2NyaXB0Pgog
PC9oZWFkPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvTW9kYWxBbGVydHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9Nb2RhbEFsZXJ0cy5tbQppbmRleCBhYTM4NmE5ZDcyYTAwNDdkNGY2ZTFlY2ZhNTQ4YzhhMGVh
OTViMTE0Li4xYzA0NmMwNGRkOTlkNWViY2UwOWI0MmYwM2NlNWEwNGU5Y2EzNWUxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0
cy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJL
aXQvV0tQcmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTM3LDE1ICszOCwyNCBAQAogQGNs
YXNzIE1vZGFsQWxlcnRzVUlEZWxlZ2F0ZTsKIAogc3RhdGljIGJvb2wgaXNEb25lOwotc3RhdGlj
IFJldGFpblB0cjxXS1dlYlZpZXc+IG9wZW5lZFdlYlZpZXc7CitzdGF0aWMgUmV0YWluUHRyPFRl
c3RXS1dlYlZpZXc+IG9wZW5lZFdlYlZpZXc7CiBzdGF0aWMgUmV0YWluUHRyPE1vZGFsQWxlcnRz
VUlEZWxlZ2F0ZT4gc2hhcmVkVUlEZWxlZ2F0ZTsKIAogc3RhdGljIHVuc2lnbmVkIGRpYWxvZ3NT
ZWVuOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9IDM7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gNDsKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZGlhbG9nc0V4cGVjdGVkIC0gMTsK
IAogc3RhdGljIHZvaWQgc2F3RGlhbG9nKCkKIHsKLSAgICBpZiAoKytkaWFsb2dzU2VlbiA9PSBk
aWFsb2dzRXhwZWN0ZWQpCisgICAgKytkaWFsb2dzU2VlbjsKKworICAgIGlmIChkaWFsb2dzU2Vl
biA9PSBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7CisgICAgICAgIFtvcGVuZWRX
ZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Ok5TTWFrZVBvaW50KDUsIDUpIG51bWJlck9mQ2xpY2tz
OjFdOworICAgICAgICBbb3BlbmVkV2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZGF0YTp0ZXh0L2h0bWwiXV1dOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NF
eHBlY3RlZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNTYsNyArNjYsNyBAQCBA
aW1wbGVtZW50YXRpb24gTW9kYWxBbGVydHNVSURlbGVnYXRlCiAKIC0gKFdLV2ViVmlldyAqKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9u
OihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0
aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVz
OihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMKIHsKLSAgICBvcGVuZWRXZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBvcGVuZWRX
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAg
ICAgW29wZW5lZFdlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzaGFyZWRVSURlbGVnYXRlLmdldCgpXTsK
ICAgICByZXR1cm4gb3BlbmVkV2ViVmlldy5nZXQoKTsKIH0KQEAgLTc5LDcgKzg5LDcgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZTooTlNTdHIKICAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlP
cmlnaW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CiAgICAgRVhQRUNUX0VRKFtbZnJhbWUgc2Vj
dXJpdHlPcmlnaW5dIHBvcnRdLCAwKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUyk7CiAgICAgc2F3RGlhbG9nKCk7CiB9CiAKQEAgLTk0
LDYgKzEwNCwxNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2
YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIHNhd0RpYWxvZygpOwog
fQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09M
IHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfU1RSRVEoW1tbW2ZyYW1l
IHJlcXVlc3RdIFVSTF0gYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddLCAiYWJvdXQ6Ymxhbmsi
KTsKKyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlPcmlnaW5dIHByb3RvY29sXSBV
VEY4U3RyaW5nXSwgImZpbGUiKTsKKyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlP
cmlnaW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CisgICAgRVhQRUNUX0VRKFtbZnJhbWUgc2Vj
dXJpdHlPcmlnaW5dIHBvcnRdLCAwKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAg
ICBzYXdEaWFsb2coKTsKK30KKwogQGVuZAogCiBURVNUKFdlYktpdDIsIE1vZGFsQWxlcnRzKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1hZG9wdC1z
dWJmcmFtZS10by1vdXRzaWRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
dW5sb2FkLWFkb3B0LXN1YmZyYW1lLXRvLW91dHNpZGUuaHRtbAppbmRleCBmNmRmNTZmNDJlNjFl
OGExZWI0NjRhM2M2NTJmZTUwMDZiNjU5MDFhLi44YjIyMzY2MmY3Zjk3NDM3Nzk2OTEwMWQ0ZDRj
ZjQ0NGUxMDNhZGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
dW5sb2FkLWFkb3B0LXN1YmZyYW1lLXRvLW91dHNpZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLWFkb3B0LXN1YmZyYW1lLXRvLW91dHNpZGUuaHRtbApA
QCAtNjgsNyArNjgsOCBAQCBjb250YWluZXIub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
Ci1jb250YWluZXIuc3JjID0gJ3Jlc291cmNlcy9iZWZvcmUtdW5sb2FkLWluLXN1YmZyYW1lLWRl
c3RpbmF0aW9uLmh0bWwnOworCit3aW5kb3cuc2V0VGltZW91dCgiY29udGFpbmVyLnNyYyA9ICdy
ZXNvdXJjZXMvYmVmb3JlLXVubG9hZC1pbi1zdWJmcmFtZS1kZXN0aW5hdGlvbi5odG1sJyIsIDUw
MDApOwogCiA8L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311269</attachid>
            <date>2017-05-25 12:55:41 -0700</date>
            <delta_ts>2017-05-25 14:59:36 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-172603-20170525125540.patch</filename>
            <type>text/plain</type>
            <size>56144</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzYxNDEyZmE5ODYxMDc3
ODE4MzBiY2ExNzA1YmYwYzU2ZWI0MTBmMy4uN2U2NWE0OGZjMjUzZGYwMTNkMzU0YmVjNmUwNjMx
ODE0YWU5NzhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA1LTI1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBTdXBwb3J0IG9u
YmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgaW4gTWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjYwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgcGFnZSBsb2FkZWQgaW4gTWluaUJy
b3dzZXIgdXNpbmcgV2ViS2l0MiBjYW5ub3Qgc2hvdyBhIGJlZm9yZXVubG9hZCBjb25maXJtIHBh
bmVsIChieSByZWdpc3RlcmluZworICAgICAgICBhbiBvbmJlZm9yZXVubG9hZCBldmVudCBoYW5k
bGVyKSB3aGVuIGl0IGlzIHVubG9hZGVkLiBUaGUgc2FtZSBwYWdlIGxvYWRlZCBpbiBNaW5pQnJv
d3NlciB1c2luZworICAgICAgICBXZWJLaXQxIGNhbiBzaG93IHN1Y2ggYSBjb25maXJtIHBhbmVs
LiBXZSBuZWVkIHRvIGFkZCBXS1VJRGVsZWdhdGUgU1BJIHNvIHRoYXQgYW4gZW1iZWRkaW5nIGNs
aWVudCwKKyAgICAgICAgc3VjaCBhcyBNaW5pQnJvd3NlciwgY2FuIHJlZ2lzdGVyIHRvIHJlY2Vp
dmUgYSBjYWxsYmFjayB0byBzaG93IGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xp
ZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBNb2RpZmllZCB0byB0YWtlIGEgU2Vj
dXJpdHlPcmlnaW5EYXRhIG9iamVjdC4gVGhpcworICAgICAgICBtYWtlcyB0aGUgQVBJIGNvbnNp
c3RlbnQgd2l0aCB0aGUgZXhpc3RpbmcgSmF2YVNjcmlwdCBkaWFsb2cgY2FsbGJhY2tzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOiBBZGQgV0tQYWdlVUlDbGllbnRWMTEg
dG8gdGhlIGxpc3Qgb2YgdmVyc2lvbnMuCisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQp
OiBNb2RpZmllZCBvdmVycmlkZXMgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKCkgYW5kIEFQSTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCgpCisgICAgICAgIGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlVUlDbGllbnQuaDogRGVwcmVjYXRlIGV4aXN0aW5nIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbENhbGxiYWNrIGNhbGxiYWNrCisgICAgICAgIHRoYXQgZG9lcyBub3QgdGFrZSBh
IFdLU2VjdXJpdHlPcmlnaW5SZWYuIEFkZCBhIG5ldyBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxDYWxsYmFjayB0aGF0IHRha2VzCisgICAgICAgIGEgV0tTZWN1cml0eU9yaWdpblJl
Zi4gVGhpcyBtYWtlcyB0aGUgYXJndW1lbnRzIHRvIHRoaXMgY2FsbGJhY2sgbW9yZSBjb25zaXN0
ZW50IHdpdGggdGhlIGFyZ3VtZW50cworICAgICAgICB0YWtlbiBieSB0aGUgZXhpc3RpbmcgSmF2
YVNjcmlwdCBkaWFsb2cgY2FsbGJhY2tzIChlLmcuIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRD
YWxsYmFjaykuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmg6IEFkZCBTUEkgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRVSURlbGVnYXRlOl0pOiBTZXQgdGhlIGRlbGVnYXRlIG9mIFdlYktpdDo6VUlE
ZWxlZ2F0ZSB0byB0aGUgc3BlY2lmaWVkIFdLVUlEZWxlZ2F0ZQorICAgICAgICBiZWZvcmUgd2Ug
c2V0IHRoZSBVSSBjbGllbnQgb24gdGhlIHBhZ2Ugc28gYXMgdG8gZW5zdXJlIHRoYXQgQVBJOjpV
SUNsaWVudCBjYWxsYmFja3MgdGhhdCBkZXBlbmQKKyAgICAgICAgLXJlc3BvbmRzVG9TZWxlY3Rv
cjogY2hlY2tzIChlLmcuIEFQSTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCgpKSByZXR1cm4gdGhlIGNvcnJlY3QKKyAgICAgICAgcmVzdWx0LiBUbyBlbGFib3JhdGUg
ZnVydGhlciwgYSBBUEk6OlVJQ2xpZW50IGNsaWVudCBtdXN0IG92ZXJyaWRlIGJvdGggY2FuUnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkKKyAgICAgICAgYW5kIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCgpIHRvIHN1cHBvcnQgcnVubmluZyBhIGJlZm9yZXVubG9hZCBjb25maXJtIGRp
YWxvZy4gV2hlbiBtYXBwaW5nCisgICAgICAgIHRoZSBDb2NvYSBTUEksIFdLVUlEZWxlZ2F0ZVBy
aXZhdGUsIHRvIEFQSTo6VUlDbGllbnQgd2UgaW1wbGVtZW50IEFQSTo6VUlDbGllbnQ6OmNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpCisgICAgICAgIGluIHRlcm1zIG9mIHdoZXRoZXIg
dGhlIENvY29hIGRlbGVnYXRlIHJlc3BvbmRzIGF0IHJ1bnRpbWUgdG8gdGhlIHNlbGVjdG9yIC13
ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgIFdlIG5lZWQgdG8gZG8gc3VjaCBydW50
aW1lIGNoZWNrcyBiZWZvcmUgd2UgcGFzcyB0aGUgQVBJOjpVSUNsaWVudCB0byB0aGUgcGFnZS4g
T3RoZXJ3aXNlLCBxdWVyeWluZworICAgICAgICBBUEk6OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKSB3aWxsIHJldHVybiB0aGUgd3JvbmcgcmVzdWx0LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIEFQ
STo6VUlDbGllbnQgb3ZlcnJpZGVzOiBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQor
ICAgICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkuIEFkZCBhIGJpdCB0byBt
X2RlbGVnYXRlTWV0aG9kcyBhcyB0byB3aGV0aGVyIHRoZSBDb2NvYSBkZWxlZ2F0ZQorICAgICAg
ICByZXNwb25kcyB0byBzZWxlY3RvciAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6IFNldCB0aGUgYWJvdmUgbV9kZWxlZ2F0ZU1ldGhvZHMgYml0
IGlmIHRoZSBDb2NvYSBkZWxlZ2F0ZSByZXNwb25kcworICAgICAgICB0byBzZWxlY3RvciAtd2Vi
VmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogUmV0dXJuIHdoZXRoZXIgdGhl
IGFib3ZlIG1fZGVsZWdhdGVNZXRob2RzCisgICAgICAgIGJpdCB3YXMgc2V0LgorICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KTogVHVybiBhcm91bmQgYW5kIGNhbGwgLXdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlciAoaWYgYXBw
bGljYWJsZSkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogTW9k
aWZpZWQgdG8gdGFrZSBhIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QKKyAgICAgICAgYW5kIHBh
c3MgaXQgdG8gQVBJOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IEFkZCBTZWN1cml0eU9yaWdpbkRhdGEgYXJndW1lbnQg
dG8gbWVzc2FnZSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwuCisgICAgICAgIEFsc28gcGFz
cyB0aGUgbWVzc2FnZSBmb3IgdGhlIHBhbmVsIGFzIHRoZSBsYXN0IGFyZ3VtZW50IHNvIGFzIHRv
IG1ha2UgdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyB0byBtZXNzYWdlCisgICAgICAgIFJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCBtb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIG9yZGVyIG9mIGFyZ3Vt
ZW50cyBwYXNzZWQgdG8gb3RoZXIgSmF2YVNjcmlwdCBkaWFsb2cKKyAgICAgICAgbWVzc2FnZXMg
KGUuZy4gUnVuSmF2YVNjcmlwdEFsZXJ0KSBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IEluY2x1
ZGUgdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QgZm9yIHRoZQorICAgICAgICBmcmFtZSBp
biBtZXNzYWdlIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbC4gCisKIDIwMTctMDUtMjUgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJd
IEF2b2lkIHNldHRpbmcgY29udGVudHNTY2FsZSBhbmQgcmFzdGVyaXphdGlvblNjYWxlIG9uIENB
VHJhbnNmb3JtTGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgKaW5kZXggMGEyNzA5YWU5ZjgwNmFlZDQ1MGY2MGViMDkxYTFlMjRmN2IwM2JkYy4uYTU1Y2Y1
OWFlNDI3Y2RjMjE2MTA0YWNkYWIyMTc1YTA3YzU4ZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSopIHsgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0
aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChXZWJLaXQ6OldlYlBh
Z2VQcm94eSopIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CmluZGV4IGM1NzZlNmE1OTIyZjFhOTFkODk5MDEyYTMxOTI5NDEyOWYyMWI3MWMuLjhlNWI1YjNm
ZjAyODAxMzhmNWZhNWFjZTcyNTRjNWE4MzAxZTdiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTA+IFZlcnNpb25zOworICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1Bh
Z2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VV
SUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNs
aWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGll
bnRWMTE+IFZlcnNpb25zOwogfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMjA1
NywxNCArMjA1NywyMSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiAgICAgICAgIGJvb2wg
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2IHx8IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbDsKKyAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTAgfHwgbV9jbGllbnQucnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgfHwgbV9jbGllbnQucnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2Us
IGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1l
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpIHsKICAg
ICAgICAgICAgICAgICBSZWZQdHI8UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlz
dGVuZXI+IGxpc3RlbmVyID0gUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVu
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICAgICAg
bV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSSht
ZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShz
ZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1
cml0eU9yaWdpbkRhdGEucG9ydCk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5n
ZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEwKSB7CisgICAgICAgICAgICAg
ICAgUmVmUHRyPFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyPiBsaXN0
ZW5lciA9IFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxMCh0b0FQSShw
YWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVy
LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVVJQ2xpZW50LmgKaW5kZXggMDg4MGEwZDcxYTg1YTBlOGU4OTdhOWJlMDIzMTI4OWFh
ZDM4MGJjMi4uMmEzNmY2MmQ2MWMwZWQ2ZWZlODk3ZDkyMDY0YmQzODYwMjVhMTlmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKQEAgLTgy
LDcgKzgyLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdFJlc3Vs
dExpc3RlbmVyQ2FsbChXS1BhZ2VSdW5KYXZhU2NyaXB0UHIKIAogdHlwZWRlZiB2b2lkICgqV0tQ
YWdlVUlDbGllbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogdHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2
aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdp
bmRvd0ZlYXR1cmVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldL
UGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQYWdlUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0QWxl
cnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdlUnVu
SmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkphdmFTY3Jp
cHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZh
bHVlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2lu
LCBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMTQyLDYgKzE0Miw3IEBAIHR5cGVkZWYgdm9pZCAo
KldLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUp
KFdLUGFnZVJlCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxi
YWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSkoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY2KShXS1BhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxMCkoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUGFnZVJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIAogdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRCYXNlIHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC05MjAsNyArOTIxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQ
YWdlVUlDbGllbnRWMTAgewogICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luOwogICAgIAogICAgIC8vIFZlcnNpb24gNy4KLSAgICBXS1BhZ2VSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbDsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxMCAgIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxMDsKICAgICBXS0Z1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZTsKICAgICAKICAgICAvLyBWZXJzaW9uIDguCkBAIC05MzQs
NyArOTM1LDEwNSBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxMCB7CiAgICAgV0tI
YXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZTsKICAgICBX
S0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmRDYWxsYmFj
ayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91
bmQ7CiB9IFdLUGFnZVVJQ2xpZW50VjEwOwotICAgIAorCit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VV
SUNsaWVudFYxMSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgor
ICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1BhZ2VU
YWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9jdXND
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5m
b2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQYWdl
TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFnZURp
ZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJlVmlz
aWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VH
ZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNpYmxl
OworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0YXR1
c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAgV0tQ
YWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1lOwor
ICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOworICAg
IFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFj
ayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
KyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckhlaWdo
dDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9vdGVy
OworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFsOwor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJlckJh
bmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZhaWxh
YmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdLUGFn
ZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2VyOwor
ICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAgLy8g
VmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAgICAv
LyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRpZEJl
Z2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNl
ZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsKKwor
ICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRv
bjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdl
OworCisgICAgLy8gVmVyc2lvbiA2LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKKyAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
Q29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRDb25maXJtOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICBX
S0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbjsKKworICAgIC8vIFZl
cnNpb24gNy4KKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxMCAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYxMDsKKyAgICBXS0Z1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZTsKKworICAgIC8vIFZlcnNpb24gOC4KKyAgICBXS1JlcXVlc3RQb2ludGVyTG9ja0Nh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RQb2lu
dGVyTG9jazsKKyAgICBXS0RpZExvc2VQb2ludGVyTG9ja0NhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExvc2VQb2ludGVyTG9jazsKKworICAgIC8vIFZl
cnNpb24gOS4KKyAgICBXS0hhbmRsZUF1dG9wbGF5RXZlbnRDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUF1dG9wbGF5RXZlbnQ7CisKKyAgICAvLyBW
ZXJzaW9uIDEwLgorICAgIFdLSGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2VDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRD
aGFuZ2U7CisgICAgV0tEaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3Jl
Z3JvdW5kQ2FsbGJhY2sgICAgICAgICBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdo
aWxlSW5Gb3JlZ3JvdW5kOworCisgICAgLy8gVmVyc2lvbiAxMS4KKyAgICBXS1BhZ2VSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKK30gV0tQYWdlVUlDbGllbnRWMTE7CisKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDJjMmQ2MjY3NWYy
OGY0NTc5ZTJkNjE2NzZiN2EyNjE5YjBmZTI4ZGYuLjc0NDRjYzZlMzBhNjEwZmEwN2U0ZTkzMzUw
NWU3NWFkNDFhOWUzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC03MCw2ICs3MCw4IEBAIHN0cnVj
dCBVSUVkZ2VJbnNldHM7CiAtIChXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
OihpZClkcmFnZ2luZ0luZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNy
ZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2
aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJlczooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0Zl
YXR1cmVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcgKndlYlZpZXcpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CisKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1
ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxl
bWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKIC0gKE5TQXJyYXkgKilfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBhY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gKillbGVtZW50IGRlZmF1bHRBY3Rpb25zOihOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24g
Kj4gKilkZWZhdWx0QWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZmFiMzJkYWZiMmZiMzE2OTA3OTRmNDVmZWExZTc0Y2U1
NWNlYWQzNC4uZTBiZWRhYjljN2QyYjM2NDJjYzQzYzAxNGJlMzMyZTlhMGRlYThjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTcw
NywxMSArNzA3LDExIEBAIC0gKGlkIDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIAogLSAodm9p
ZClzZXRVSURlbGVnYXRlOihpZDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIHsKKyAgICBfdWlE
ZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoVUlEZWxlZ2F0ZSk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgX3BhZ2UtPnNldENvbnRleHRNZW51Q2xpZW50KF91aURlbGVnYXRlLT5jcmVhdGVD
b250ZXh0TWVudUNsaWVudCgpKTsKICNlbmRpZgogICAgIF9wYWdlLT5zZXRVSUNsaWVudChfdWlE
ZWxlZ2F0ZS0+Y3JlYXRlVUlDbGllbnQoKSk7Ci0gICAgX3VpRGVsZWdhdGUtPnNldERlbGVnYXRl
KFVJRGVsZWdhdGUpOwogfQogCiAtIChpZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4pX2ljb25M
b2FkaW5nRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCmluZGV4IGYzZWYzM2EwNjI3MTVmNWVkZDE0MTJiNDhhZmUyMTE2MDdmYTYzNTYuLjMwZjkw
ZjU0Nzc4YTBmZjdjZDE2MWFmNjFmY2FmMDEzMmM0MTMyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtODYsNiArODYsOCBAQCBwcml2YXRlOgog
ICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdURjo6U3RyaW5nJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwog
ICAgICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25n
IGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVk
VXNhZ2UsIEZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIEZ1bmN0aW9u
PHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEyNyw2ICsxMjksNyBAQCBwcml2YXRlOgogICAgICAg
ICBib29sIHdlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVk
QnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2
YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25I
YW5kbGVyIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsV2l0aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0
aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJ
bml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDQ0ODMwZDFlN2ZlZjkz
ZmMwOTVjMGY0NDJlNzIzZTQyYjk2MzgwNzIuLjI5ZjljMzY0NDI2ZWQ4ZDk5ZjBmNzEwNDlkOTM1
ZmE1ZWQ3NWE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQg
PFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1
bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNj
cmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5k
bGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5K
YXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0
aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsV2l0aFByb21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0Omlu
aXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVk
QnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTpp
bml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVy
c0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5p
dGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKQEAgLTMxMyw2ICszMTQsMzMgQEAg
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjoKICAgICB9KS5nZXQoKV07CiB9CiAKK2Jvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXI7Cit9CisKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBt
ZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lk
IChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1l
c3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBk
ZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdh
dGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNr
ZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCks
IEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3Vy
aXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQ
dHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIHJl
c3VsdCkgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3VsdCk7CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pLmdldCgpXTsKK30KKwogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1
b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVu
Y3Rpb248dm9pZCAodW5zaWduZWQgbG9uZyBsb25nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlRGF0
YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3RhQ3VycmVudE9yaWdpblVzYWdl
Q3VycmVudERhdGFiYXNlVXNhZ2VFeHBlY3RlZFVzYWdlRGVjaXNpb25IYW5kbGVyKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDEzMzk4NDVhODJkNjVh
ODY4NTg1YmMxMWZjYjNlOTJmN2Q0YTVhMGUuLjQ2YjgwZTA1MWU4MzlmMjY4MTNhOWRhN2Y5MWVm
YWVjMGM0NWFjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00MDkyLDcgKzQwOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb0FjY2Vz
c2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIEludFJlYwogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBSZWZQdHI8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5
KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDEwMCw3ICs0MTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2
NF90IGYKICAgICAvLyBTaW5jZSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjYW4gc3Bp
biBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVz
cyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7CiAK
LSAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2Fn
ZSwgZnJhbWUsIFtyZXBseV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7
CisgICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3Nh
Z2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5XShib29sIHJlc3VsdCkgeyByZXBseS0+
c2VuZChyZXN1bHQpOyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTczNjkxNDViOWY0NGNlYmQ4ZjI0ZTMx
MTE5NWU1MTg4MDBlYTk4My4uOTcxZGZmZjhhMjk2ZjIwNDJlMDFmOTQyMTZkZjM5NWU4ZjIxYTJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI5Nyw3ICsx
Mjk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQm
IHdpbmRvd1BvaW50KTsKICAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQp
OwogI2VuZGlmCi0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2
b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRl
bGF5ZWRSZXBseT4pOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgp
OwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDVjY2MzMGYyODZjZjU2YTNmYTAzZmM4MTNlNWIyNGY0MmQwZDg1ZmQuLjdiOWEw
ZTIwOTg5ZDFkNzc2MTU5ZGNkNzhjMmE3ZGFjZWQ0MGVhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzQsNyArNzQsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKFdlYkNvcmU6OkludFJlY3QgcmVjdCkgLT4gKFdlYkNvcmU6OkludFJlY3Qgc2NyZWVu
RnJhbWUpCiAjZW5kaWYKIAotICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChTdHJpbmcg
bWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIERlbGF5ZWQK
KyAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcg
bWVzc2FnZSkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIERlbGF5ZWQKICAgICBQYWdlRGlkU2Nyb2xs
KCkKICAgICBSdW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6Rmls
ZUNob29zZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQogICAgIFByaW50RnJhbWUodWludDY0X3QgZnJh
bWVJRCkgLT4gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBkZDBkNGJjMDM1MGRmZjcz
MDY1MTUyODc4ODgyM2E2YzQ0M2Y2NTM5Li4xZjVhOTRiZThhNTc5ZjZmZjFiMGNlOTM0ZTkzZGMy
MzFiZjU0MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIEZyYW1lJgogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdE
ZXRlY3Rpb25EaXNhYmxlcjsKIAotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1lc3NhZ2UsIHdlYkZyYW1lLT5mcmFtZUlEKCkp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OlJl
cGx5KHNob3VsZENsb3NlKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJ
UEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpCisg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUo
JmZyYW1lKSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbDo6UmVwbHkoc2hvdWxkQ2xvc2UpLCBtX3BhZ2UucGFnZUlEKCksIFNlY29u
ZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vz
c1dpbGxTdXNwZW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHNob3Vs
ZENsb3NlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGUxYWM2NDBmODExYTFmODU2MzFhOTc2NDBmZWRlYmVkZTAwYWEzYmMuLjIyMjk0NWQyNTlh
OTA5ZDY1NTVjMjNhOTZkYmM2ODI1NTM0YWVmMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNy0wNS0yNSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCBv
bmJlZm9yZXVubG9hZCBjb25maXJtIHBhbmVsIGluIE1pbmlCcm93c2VyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIC13ZWJWaWV3
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6IGRlbGVnYXRlCisgICAgICAgIG1ldGhvZCBpbiBNaW5pQnJvd3Nl
ciB0byBzaG93IGEgY29uZmlybSBwYW5lbCBhcyB0byB3aGV0aGVyIHRvIGFsbG93IHRoZSB1bmxv
YWRpbmcgb2YgdGhlIHBhZ2Ugd2hlbgorICAgICAgICB1bmxvYWRpbmcgaXMgaW5pdGlhdGVkIGZv
ciBhIHBhZ2UgdGhhdCByZWdpc3RlcmVkIGEgb25iZWZvcmV1bmxvYWQgaGFuZGxlci4KKworICAg
ICAgICBDb3B5IHRoZSBleGlzdGluZyB0ZXN0IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9N
b2RhbEFsZXJ0c1NQSS5jcHAgdG8gVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJlY2F0
ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcCwKKyAgICAgICAgdXBkYXRpbmcgaXQgdG8gdGVzdCB0aGUg
ZGVwcmVjYXRlZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgY2FsbGJhY2ssIHNvIGFzIHRv
IGVuc3VyZSB3ZSBoYXZlIG5vdAorICAgICAgICBicm9rZW4gdGhlIGRlcHJlY2F0ZWQgV0tQYWdl
VUlDbGllbnRWNSBjYWxsYmFja3MuIFdLUGFnZVVJQ2xpZW50VjUgaXMgc3RpbGwgdXNlZCBieSB0
aGUgTWFjIEFwcCBTdG9yZQorICAgICAgICBhcyBvZiB0aGUgdGltZSBvZiB3cml0aW5nIDooLgor
CisgICAgICAgIFJlLXJlcHVycG9zZSBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW9kYWxB
bGVydHNTUEkuY3BwIGZvciBuZXcgdW5pdHMgdGVzdHMgdGhhdCBleGVyY2lzZSB0aGUKKyAgICAg
ICAgV0tQYWdlVUlDbGllbnRWMTAgY2FsbGJhY2tzOiBydW5KYXZhU2NyaXB0e0FsZXJ0LCBDb25m
aXJtLCBQcm9tcHR9IGFuZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKS4KKworICAgICAg
ICBNb2RpZnkgVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0g
dG8gdGVzdCB0aGF0IHRoZSAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOgorICAgICAgICBpcyBj
YWxsZWQuIEFsc28gZml4IHN0eWxlIG5pdDsgcGFzcyBZRVMgaW5zdGVhZCBvZiB0cnVlIHRvIGF2
b2lkIGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBib29sIHRvIEJPT0wKKyAgICAgICAgd2hlbiBp
bnZva2luZyB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGluIC13ZWJWaWV3OnJ1bkphdmFTY3JpcHRB
bGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjou
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOl0pOiBJbXBsZW1lbnQgZGVsZWdhdGUgbWV0aG9kLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQ
SS5jcHA6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2Rh
bEFsZXJ0c1NQSS5jcHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphbmFseXplRGlhbG9nQXJn
dW1lbnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRBbGVydCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjphbmFseXplRGlhbG9nQXJndW1lbnRzKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZh
U2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRzLWluLW5ldy1h
Ym91dC1ibGFuay13aW5kb3cuaHRtbDogUmVnaXN0ZXIgb25iZWZvcmV1bmxvYWQgaGFuZGxlci4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5t
bToKKyAgICAgICAgKHNhd0RpYWxvZyk6CisgICAgICAgICgtW01vZGFsQWxlcnRzVUlEZWxlZ2F0
ZSB3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpmb3JOYXZpZ2F0aW9uQWN0
aW9uOndpbmRvd0ZlYXR1cmVzOl0pOgorICAgICAgICAoLVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUg
d2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bTW9kYWxBbGVydHNVSURlbGVn
YXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlh
dGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAxNy0wNS0yNSAgSm9hbm1hcmll
IERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0FUS10gRXhwb3NlIGRvYy1m
b290bm90ZSBBUklBIHJvbGUgd2l0aCBBVEtfUk9MRV9GT09UTk9URQpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBkMDFkMGNk
NDA0M2I5NDFjNWU5ODJkYjYwYzg1ZDlmMjczNDI3MjlhLi5iZGU3YzRjMWQ0NzY4ZDYyYWEzMzdj
ZDM2ODI1YmQ4NzA2OWQzNGY3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNTE1LDYgKzUxNSwyMiBAQCAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdL
T3BlblBhbmVsUGFyYQogICAgIH1dOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilz
ZW5kZXIgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBO
U0FsZXJ0ICphbGVydCA9IFtbTlNBbGVydCBhbGxvY10gaW5pdF07CisKKyAgICBhbGVydC5tZXNz
YWdlVGV4dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSmF2YVNjcmlwdCBiZWZvcmUg
dW5sb2FkIGRpYWxvZyBmcm9tICVALiIsIFtmcmFtZS5yZXF1ZXN0LlVSTCBhYnNvbHV0ZVN0cmlu
Z11dOworICAgIGFsZXJ0LmluZm9ybWF0aXZlVGV4dCA9IG1lc3NhZ2U7CisKKyAgICBbYWxlcnQg
YWRkQnV0dG9uV2l0aFRpdGxlOkAiTGVhdmUgUGFnZSJdOworICAgIFthbGVydCBhZGRCdXR0b25X
aXRoVGl0bGU6QCJTdGF5IE9uIFBhZ2UiXTsKKworICAgIFthbGVydCBiZWdpblNoZWV0TW9kYWxG
b3JXaW5kb3c6c2VsZi53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6XnZvaWQgKE5TTW9kYWxSZXNw
b25zZSByZXNwb25zZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZSA9PSBO
U0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm4pOworICAgICAgICBbYWxlcnQgcmVsZWFzZV07CisgICAg
fV07Cit9CisKIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkKWRy
YWdnaW5nSW5mbwogewogICAgIHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTI0ZjdmOGU2ZjNkYzc5NjVmMDExMzU1NTUyNzVlOThi
N2VmOWM3Yi4uMjg0N2I4MGI4OGE2Mjc4OGEwOTFmMjdhZjhiMjIzMzY5YTQxMjk4YSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU5OSw2ICs1OTksNyBAQAogCQlDRTM1MjRGOTFCMTQ0MUM0
MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEYxMUIxNDJCOEQwMDI4
QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwICovOyB9OwogCQlDRTM1
MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJC
QkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0bWwgKi87IH07CiAJCUNFQTZDRjI4MTlD
Q0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUE2Q0YyNzE5Q0NGNjlE
MDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgKi87IH07CisJCUNFQjIyNEVE
MUVENjRBODYwMDNEMjg2NiAvKiBEZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUIyMjRFQzFFRDY0QTg2
MDAzRDI4NjYgLyogRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovOyB9OwogCQlDRUJB
QkQ0OTFCNzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
QkFCRDQ4MUI3MTY4N0MwMDUxMjEwQSAvKiBzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0
bWwgKi87IH07CiAJCUNFQkNBMTJGMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeS5tbSAqLzsgfTsKIAkJQ0VCQ0ExMzgxRTNBODA3QTAwQzczMjkzIC8qIHBhZ2Utd2l0
aC1jc3AuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRUJDQTEzNTFFM0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRoLWNzcC5odG1sICov
OyB9OwpAQCAtMTUxMCw2ICsxNTExLDcgQEAKIAkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8q
IE9wdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUE2Q0YyMjE5Q0NGNUJE
MDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gT3BlbkFuZENsb3NlV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRUE2Q0YyNzE5Q0NGNjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Ut
d2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAib3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUIyMjRFQzFFRDY0QTg2MDAzRDI4NjYgLyogRGVw
cmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRUJBQkQ0ODFCNzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0
ZXJuYWwtc2NoZW1lcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVt
ZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQkNBMTJFMUUzQTY2MDEw
MEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUJDQTEzNDFFM0E4MDM0MDBDNzMy
OTMgLyogcGFnZS13aXRoLWNzcC1pZnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJwYWdlLXdpdGgtY3NwLWlmcmFtZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIwODUsNiArMjA4Nyw3IEBACiAJCQkJMUE1MEFBMUMxQTJBNEU3MDAwRjRDMzQ1IC8q
IENsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwICovLAogCQkJCTdDOEREQUE5MTczNURFMUQw
MEVBNUFDMCAvKiBDbG9zZVRoZW5UZXJtaW5hdGUuY3BwICovLAogCQkJCUY2RjNGMjkwMTMzNDJG
RUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLywKKwkJCQlDRUIyMjRFQzFFRDY0QTg2
MDAzRDI4NjYgLyogRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovLAogCQkJCUY2QjdC
RTkzMTc0NjkxRUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3BwICovLAog
CQkJCUY2QjdCRTkyMTc0NjkxRUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNf
QnVuZGxlLmNwcCAqLywKIAkJCQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgzQjEgLyogRGlkTm90SGFu
ZGxlS2V5RG93bi5jcHAgKi8sCkBAIC0zMTMzLDYgKzMxMzYsNyBAQAogCQkJCTk5ODRGQUNDMUNG
RkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRl
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VCMjI0RUQxRUQ2
NEE4NjAwM0QyODY2IC8qIERlcHJlY2F0ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJl
Y2F0ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3MzY3MjI3
OWE3MTFkNTUyZGE5M2E2ZmNhYmUyZmJmMDE3YWQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5j
cHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1
ZGUgPFdlYktpdC9XS0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBkb25lOworc3RhdGljIHVuc2lnbmVkIGRpYWxvZ3NT
ZWVuOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9IDQ7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZGlhbG9nc0JlZm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IGRpYWxvZ3NF
eHBlY3RlZCAtIDE7CisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XZWJWaWV3PiBv
cGVuZWRXZWJWaWV3OworCitzdGF0aWMgdm9pZCBhbmFseXplRGlhbG9nQXJndW1lbnRzKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5
T3JpZ2luID0gbnVsbHB0cikKK3sKKyAgICBFWFBFQ1RfRVEocGFnZSwgV0tGcmFtZUdldFBhZ2Uo
ZnJhbWUpKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwgPSBhZG9wdFdLKFdLRnJh
bWVDb3B5VVJMKGZyYW1lKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVybFN0cmlu
ZyA9IGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybC5nZXQoKSkpOworICAgIEVYUEVDVF9XS19T
VFJFUSgiYWJvdXQ6YmxhbmsiLCB1cmxTdHJpbmcuZ2V0KCkpOworCisgICAgaWYgKHNlY3VyaXR5
T3JpZ2luKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwcm90b2NvbCA9IGFk
b3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChzZWN1cml0eU9yaWdpbikpOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoImZpbGUiLCBwcm90b2NvbC5nZXQoKSk7CisKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3QgPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5D
b3B5SG9zdChzZWN1cml0eU9yaWdpbikpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIGhv
c3QuZ2V0KCkpOworCisgICAgICAgIEVYUEVDVF9FUShXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChz
ZWN1cml0eU9yaWdpbiksIDApOworICAgIH0KKworICAgICsrZGlhbG9nc1NlZW47CisKKyAgICAv
LyBUZXN0IGJlZm9yZXVubG9hZCBsYXN0IGFzIHdlIG5lZWQgdG8gbmF2aWdhdGUgdGhlIHdpbmRv
dyB0byB0cmlnZ2VyIGl0LgorICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dzQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKSB7CisgICAgICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24gaXMgcmVxdWly
ZWQgdG8gc2hvdyB0aGUgYmVmb3JldW5sb2FkIHByb21wdC4KKyAgICAgICAgb3BlbmVkV2ViVmll
dy0+c2ltdWxhdGVCdXR0b25DbGljayhrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbiwgNSwg
NSwgMCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBibGFua0RhdGFVUkwgPSBhZG9w
dFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhOnRleHQvaHRtbCIpKTsKKyAgICAg
ICAgV0tQYWdlTG9hZFVSTChwYWdlLCBibGFua0RhdGFVUkwuZ2V0KCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NFeHBlY3RlZCkKKyAg
ICAgICAgZG9uZSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlP
cmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFs
b2dBcmd1bWVudHMocGFnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKK30KKworc3RhdGljIGJv
b2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2
b2lkKikKK3sKKyAgICBhbmFseXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0
eU9yaWdpbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgV0tTdHJpbmdSZWYgcnVu
SmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVm
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBj
b25zdCB2b2lkKikKK3sKKyAgICBhbmFseXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBz
ZWN1cml0eU9yaWdpbik7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBib29sIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdL
RnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFsb2dBcmd1bWVu
dHMocGFnZSwgZnJhbWUpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIFdLUGFnZVJl
ZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVz
dCwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
V0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQor
eworICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CisKKyAgICBvcGVu
ZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworCisg
ICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKKyAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBz
aXplb2YodWlDbGllbnQpKTsKKworICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAg
dWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIHVp
Q2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAg
dWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAg
dWlDbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsOworCisgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG9wZW5lZFdlYlZpZXctPnBh
Z2UoKSwgJnVpQ2xpZW50LmJhc2UpOworCisgICAgV0tSZXRhaW4ob3BlbmVkV2ViVmlldy0+cGFn
ZSgpKTsKKyAgICByZXR1cm4gb3BlbmVkV2ViVmlldy0+cGFnZSgpOworfQorCitURVNUKFdlYktp
dDIsIERlcHJlY2F0ZWRWNU1vZGFsQWxlcnRzU1BJKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAgV0tQYWdlVUlDbGllbnRW
NSB1aUNsaWVudDsKKyAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsK
KworICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAgdWlDbGllbnQuY3JlYXRlTmV3
UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQod2ViVmll
dy5wYWdlKCksICZ1aUNsaWVudC5iYXNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1
cmwoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIm1vZGFsLWFsZXJ0cy1pbi1u
ZXctYWJvdXQtYmxhbmstd2luZG93IiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJW
aWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vZGFsQWxlcnRzU1BJLmNwcAppbmRleCAwMjc4ZjAw
NWI5ODUwNTg4MmViOGE0YjJhZTI4YTRlMjdlMDY1Nzk3Li44NDFjMmU4NTNmMGJkN2IyYTk2ZjMy
YmUwMTk3YTNhMzgyZDA5N2M0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTW9kYWxBbGVydHNTUEkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsMTAgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBzdGF0aWMgYm9vbCBkb25lOwogc3RhdGljIHVuc2lnbmVkIGRpYWxv
Z3NTZWVuOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9IDM7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gNDsKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZGlhbG9nc0V4cGVjdGVkIC0g
MTsKKworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVdlYlZpZXc+IG9wZW5lZFdlYlZp
ZXc7CiAKIHN0YXRpYyB2b2lkIGFuYWx5emVEaWFsb2dBcmd1bWVudHMoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7
CkBAIC01NiwyOCArNTksNDQgQEAgc3RhdGljIHZvaWQgYW5hbHl6ZURpYWxvZ0FyZ3VtZW50cyhX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU8KIAogICAgIEVYUEVD
VF9FUShXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChzZWN1cml0eU9yaWdpbiksIDApOwogCi0gICAg
aWYgKCsrZGlhbG9nc1NlZW4gPT0gZGlhbG9nc0V4cGVjdGVkKQorICAgICsrZGlhbG9nc1NlZW47
CisKKyAgICAvLyBUZXN0IGJlZm9yZXVubG9hZCBsYXN0IGFzIHdlIG5lZWQgdG8gbmF2aWdhdGUg
dGhlIHdpbmRvdyB0byB0cmlnZ2VyIGl0LgorICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dz
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7CisgICAgICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24g
aXMgcmVxdWlyZWQgdG8gc2hvdyB0aGUgYmVmb3JldW5sb2FkIHByb21wdC4KKyAgICAgICAgb3Bl
bmVkV2ViVmlldy0+c2ltdWxhdGVCdXR0b25DbGljayhrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1
dHRvbiwgNSwgNSwgMCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBibGFua0RhdGFV
UkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhOnRleHQvaHRtbCIp
KTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChwYWdlLCBibGFua0RhdGFVUkwuZ2V0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NFeHBl
Y3RlZCkKICAgICAgICAgZG9uZSA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkphdmFTY3Jp
cHRBbGVydChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
U2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQorc3RhdGljIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdlUnVu
SmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqKQog
ewogICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2lu
KTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lckNhbGwobGlzdGVu
ZXIpOwogfQogCi1zdGF0aWMgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQorc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZp
cm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybVJl
c3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKikKIHsKICAgICBhbmFseXplRGlh
bG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbik7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJDYWxsKGxp
c3RlbmVyLCBmYWxzZSk7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBydW5KYXZhU2NyaXB0UHJv
bXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQor
c3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNl
Y3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIGNvbnN0IHZvaWQqKQogewogICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFn
ZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXJDYWxsKGxpc3RlbmVyLCBudWxscHRy
KTsKIH0KIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVdlYlZpZXc+IG9wZW5lZFdl
YlZpZXc7CitzdGF0aWMgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV0tQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVm
IHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRM
aXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCopCit7CisgICAgYW5hbHl6ZURpYWxvZ0Fy
Z3VtZW50cyhwYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4pOworICAgIFdLUGFnZVJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyQ2FsbChsaXN0ZW5lciwgZmFsc2UpOwor
fQogCiBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCiB7CkBAIC04NSwxMyArMTA0LDE0IEBAIHN0YXRpYyBXS1BhZ2VS
ZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVl
c3QsIFdLRGljCiAKICAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVdlYlZpZXc+KHBhZ2UpOwogCi0gICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKKyAgICBX
S1BhZ2VVSUNsaWVudFYxMSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXpl
b2YodWlDbGllbnQpKTsKIAotICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAgdWlD
bGllbnQuYmFzZS52ZXJzaW9uID0gMTE7CiAgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0
ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OwogICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJt
ID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CiAgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21w
dCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgdWlDbGllbnQucnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsID0gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwogCiAgICAgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KG9wZW5lZFdlYlZpZXctPnBhZ2UoKSwgJnVpQ2xpZW50LmJhc2UpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRz
LWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sCmlu
ZGV4IGY3NmNiNjUwYjdhYjhjYjUxZGE3OTk1YzFlOTFiZGM0MGE0ZDgwMTEuLjE5YmYzOWQwN2Vm
OTAxNjExNWRmZTRlNGQ5ZDUyY2IzZDA0OWQxMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRv
dy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVy
dHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sCkBAIC03LDYgKzcsNyBAQCB2YXIgbmV3
V2luZG93ID0gd2luZG93Lm9wZW4oImFib3V0OmJsYW5rIik7CiBuZXdXaW5kb3cuYWxlcnQoIlRl
c3RpbmcgYWxlcnQiKTsKIG5ld1dpbmRvdy5jb25maXJtKCJUZXN0aW5nIGNvbmZpcm0iKTsKIG5l
d1dpbmRvdy5wcm9tcHQoIlRlc3RpbmcgcHJvbXB0IiwgIkRlZmF1bHQgdGV4dCIpOworbmV3V2lu
ZG93Lm9uYmVmb3JldW5sb2FkID0gKCkgPT4gIkRlZmF1bHQgdGV4dCI7CiAKIDwvc2NyaXB0Pgog
PC9oZWFkPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvTW9kYWxBbGVydHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9Nb2RhbEFsZXJ0cy5tbQppbmRleCBhYTM4NmE5ZDcyYTAwNDdkNGY2ZTFlY2ZhNTQ4YzhhMGVh
OTViMTE0Li4xYzA0NmMwNGRkOTlkNWViY2UwOWI0MmYwM2NlNWEwNGU5Y2EzNWUxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0
cy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJL
aXQvV0tQcmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTM3LDE1ICszOCwyNCBAQAogQGNs
YXNzIE1vZGFsQWxlcnRzVUlEZWxlZ2F0ZTsKIAogc3RhdGljIGJvb2wgaXNEb25lOwotc3RhdGlj
IFJldGFpblB0cjxXS1dlYlZpZXc+IG9wZW5lZFdlYlZpZXc7CitzdGF0aWMgUmV0YWluUHRyPFRl
c3RXS1dlYlZpZXc+IG9wZW5lZFdlYlZpZXc7CiBzdGF0aWMgUmV0YWluUHRyPE1vZGFsQWxlcnRz
VUlEZWxlZ2F0ZT4gc2hhcmVkVUlEZWxlZ2F0ZTsKIAogc3RhdGljIHVuc2lnbmVkIGRpYWxvZ3NT
ZWVuOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9IDM7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gNDsKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZGlhbG9nc0V4cGVjdGVkIC0gMTsK
IAogc3RhdGljIHZvaWQgc2F3RGlhbG9nKCkKIHsKLSAgICBpZiAoKytkaWFsb2dzU2VlbiA9PSBk
aWFsb2dzRXhwZWN0ZWQpCisgICAgKytkaWFsb2dzU2VlbjsKKworICAgIGlmIChkaWFsb2dzU2Vl
biA9PSBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7CisgICAgICAgIFtvcGVuZWRX
ZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Ok5TTWFrZVBvaW50KDUsIDUpIG51bWJlck9mQ2xpY2tz
OjFdOworICAgICAgICBbb3BlbmVkV2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZGF0YTp0ZXh0L2h0bWwiXV1dOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NF
eHBlY3RlZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNTYsNyArNjYsNyBAQCBA
aW1wbGVtZW50YXRpb24gTW9kYWxBbGVydHNVSURlbGVnYXRlCiAKIC0gKFdLV2ViVmlldyAqKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9u
OihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0
aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVz
OihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMKIHsKLSAgICBvcGVuZWRXZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBvcGVuZWRX
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAg
ICAgW29wZW5lZFdlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzaGFyZWRVSURlbGVnYXRlLmdldCgpXTsK
ICAgICByZXR1cm4gb3BlbmVkV2ViVmlldy5nZXQoKTsKIH0KQEAgLTc5LDcgKzg5LDcgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZTooTlNTdHIKICAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlP
cmlnaW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CiAgICAgRVhQRUNUX0VRKFtbZnJhbWUgc2Vj
dXJpdHlPcmlnaW5dIHBvcnRdLCAwKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUyk7CiAgICAgc2F3RGlhbG9nKCk7CiB9CiAKQEAgLTk0
LDYgKzEwNCwxNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2
YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIHNhd0RpYWxvZygpOwog
fQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09M
IHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfU1RSRVEoW1tbW2ZyYW1l
IHJlcXVlc3RdIFVSTF0gYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddLCAiYWJvdXQ6Ymxhbmsi
KTsKKyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlPcmlnaW5dIHByb3RvY29sXSBV
VEY4U3RyaW5nXSwgImZpbGUiKTsKKyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlP
cmlnaW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CisgICAgRVhQRUNUX0VRKFtbZnJhbWUgc2Vj
dXJpdHlPcmlnaW5dIHBvcnRdLCAwKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAg
ICBzYXdEaWFsb2coKTsKK30KKwogQGVuZAogCiBURVNUKFdlYktpdDIsIE1vZGFsQWxlcnRzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311298</attachid>
            <date>2017-05-25 14:59:37 -0700</date>
            <delta_ts>2017-05-25 21:26:40 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-172603-20170525145937.patch</filename>
            <type>text/plain</type>
            <size>57779</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzYxNDEyZmE5ODYxMDc3
ODE4MzBiY2ExNzA1YmYwYzU2ZWI0MTBmMy4uZmNiZTg2MmZjNTlmYzE4MDk4MzExNTJlYzhlZWY0
ZGFmNGM5YTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA1LTI1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsIFdLVUlEZWxlZ2F0ZSBTUEk7IHN1cHBvcnQgb25iZWZvcmV1
bmxvYWQgY29uZmlybSBwYW5lbCBpbiBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBwYWdlIGxvYWRlZCBpbiBNaW5pQnJvd3NlciB1
c2luZyBXZWJLaXQyIGNhbm5vdCBzaG93IGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgKGJ5
IHJlZ2lzdGVyaW5nCisgICAgICAgIGFuIG9uYmVmb3JldW5sb2FkIGV2ZW50IGhhbmRsZXIpIHdo
ZW4gaXQgaXMgdW5sb2FkZWQuIFRoZSBzYW1lIHBhZ2UgbG9hZGVkIGluIE1pbmlCcm93c2VyIHVz
aW5nCisgICAgICAgIFdlYktpdDEgY2FuIHNob3cgc3VjaCBhIGNvbmZpcm0gcGFuZWwuIFdlIG5l
ZWQgdG8gYWRkIFdLVUlEZWxlZ2F0ZSBTUEkgc28gdGhhdCBhbiBlbWJlZGRpbmcgY2xpZW50LAor
ICAgICAgICBzdWNoIGFzIE1pbmlCcm93c2VyLCBjYW4gcmVnaXN0ZXIgdG8gcmVjZWl2ZSBhIGNh
bGxiYWNrIHRvIHNob3cgYSBiZWZvcmV1bmxvYWQgY29uZmlybSBwYW5lbC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IE1vZGlmaWVkIHRvIHRha2UgYSBTZWN1cml0eU9y
aWdpbkRhdGEgb2JqZWN0LiBUaGlzCisgICAgICAgIG1ha2VzIHRoZSBBUEkgY29uc2lzdGVudCB3
aXRoIHRoZSBleGlzdGluZyBKYXZhU2NyaXB0IGRpYWxvZyBjYWxsYmFja3MuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6IEFkZCBXS1BhZ2VVSUNsaWVudFYxMSB0byB0aGUg
bGlzdCBvZiB2ZXJzaW9ucy4KKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6IE1vZGlm
aWVkIG92ZXJyaWRlcyBBUEk6OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoKSBhbmQgQVBJOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkKKyAg
ICAgICAgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oOiBEZXByZWNhdGUgZXhpc3RpbmcgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsQ2FsbGJhY2sgY2FsbGJhY2sKKyAgICAgICAgdGhhdCBkb2VzIG5vdCB0YWtlIGEgV0tTZWN1
cml0eU9yaWdpblJlZi4gQWRkIGEgbmV3IFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bENhbGxiYWNrIHRoYXQgdGFrZXMKKyAgICAgICAgYSBXS1NlY3VyaXR5T3JpZ2luUmVmLiBUaGlz
IG1ha2VzIHRoZSBhcmd1bWVudHMgdG8gdGhpcyBjYWxsYmFjayBtb3JlIGNvbnNpc3RlbnQgd2l0
aCB0aGUgYXJndW1lbnRzCisgICAgICAgIHRha2VuIGJ5IHRoZSBleGlzdGluZyBKYXZhU2NyaXB0
IGRpYWxvZyBjYWxsYmFja3MgKGUuZy4gV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNr
KS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDog
QWRkIFNQSSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IHNldFVJRGVsZWdhdGU6XSk6IFNldCB0aGUgZGVsZWdhdGUgb2YgV2ViS2l0OjpVSURlbGVnYXRl
IHRvIHRoZSBzcGVjaWZpZWQgV0tVSURlbGVnYXRlCisgICAgICAgIGJlZm9yZSB3ZSBzZXQgdGhl
IFVJIGNsaWVudCBvbiB0aGUgcGFnZSBzbyBhcyB0byBlbnN1cmUgdGhhdCBBUEk6OlVJQ2xpZW50
IGNhbGxiYWNrcyB0aGF0IGRlcGVuZAorICAgICAgICAtcmVzcG9uZHNUb1NlbGVjdG9yOiBjaGVj
a3MgKGUuZy4gQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkp
IHJldHVybiB0aGUgY29ycmVjdAorICAgICAgICByZXN1bHQuIFRvIGVsYWJvcmF0ZSBmdXJ0aGVy
LCBhIEFQSTo6VUlDbGllbnQgY2xpZW50IG11c3Qgb3ZlcnJpZGUgYm90aCBjYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKQorICAgICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkgdG8gc3VwcG9ydCBydW5uaW5nIGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gZGlhbG9nLiBX
aGVuIG1hcHBpbmcKKyAgICAgICAgdGhlIENvY29hIFNQSSwgV0tVSURlbGVnYXRlUHJpdmF0ZSwg
dG8gQVBJOjpVSUNsaWVudCB3ZSBpbXBsZW1lbnQgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKCkKKyAgICAgICAgaW4gdGVybXMgb2Ygd2hldGhlciB0aGUgQ29j
b2EgZGVsZWdhdGUgcmVzcG9uZHMgYXQgcnVudGltZSB0byB0aGUgc2VsZWN0b3IgLXdlYlZpZXc6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpj
b21wbGV0aW9uSGFuZGxlci4KKyAgICAgICAgV2UgbmVlZCB0byBkbyBzdWNoIHJ1bnRpbWUgY2hl
Y2tzIGJlZm9yZSB3ZSBwYXNzIHRoZSBBUEk6OlVJQ2xpZW50IHRvIHRoZSBwYWdlLiBPdGhlcndp
c2UsIHF1ZXJ5aW5nCisgICAgICAgIEFQSTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCgpIHdpbGwgcmV0dXJuIHRoZSB3cm9uZyByZXN1bHQuCisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDogQWRkIGRlY2xhcmF0aW9ucyBmb3IgQVBJOjpVSUNs
aWVudCBvdmVycmlkZXM6IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpCisgICAgICAg
IGFuZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKS4gQWRkIGEgYml0IHRvIG1fZGVsZWdh
dGVNZXRob2RzIGFzIHRvIHdoZXRoZXIgdGhlIENvY29hIGRlbGVnYXRlCisgICAgICAgIHJlc3Bv
bmRzIHRvIHNlbGVjdG9yIC13ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhN
ZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6
OnNldERlbGVnYXRlKTogU2V0IHRoZSBhYm92ZSBtX2RlbGVnYXRlTWV0aG9kcyBiaXQgaWYgdGhl
IENvY29hIGRlbGVnYXRlIHJlc3BvbmRzCisgICAgICAgIHRvIHNlbGVjdG9yIC13ZWJWaWV3OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpj
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBSZXR1cm4gd2hldGhlciB0aGUgYWJvdmUg
bV9kZWxlZ2F0ZU1ldGhvZHMKKyAgICAgICAgYml0IHdhcyBzZXQuCisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBUdXJu
IGFyb3VuZCBhbmQgY2FsbCAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyIChpZiBhcHBsaWNhYmxl
KS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBNb2RpZmllZCB0
byB0YWtlIGEgU2VjdXJpdHlPcmlnaW5EYXRhIG9iamVjdAorICAgICAgICBhbmQgcGFzcyBpdCB0
byBBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjogQWRkIFNlY3VyaXR5T3JpZ2luRGF0YSBhcmd1bWVudCB0byBtZXNz
YWdlIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbC4KKyAgICAgICAgQWxzbyBwYXNzIHRoZSBt
ZXNzYWdlIGZvciB0aGUgcGFuZWwgYXMgdGhlIGxhc3QgYXJndW1lbnQgc28gYXMgdG8gbWFrZSB0
aGUgb3JkZXIgb2YgYXJndW1lbnRzIHRvIG1lc3NhZ2UKKyAgICAgICAgUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsIG1vcmUgY2xvc2VseSBtYXRjaCB0aGUgb3JkZXIgb2YgYXJndW1lbnRzIHBh
c3NlZCB0byBvdGhlciBKYXZhU2NyaXB0IGRpYWxvZworICAgICAgICBtZXNzYWdlcyAoZS5nLiBS
dW5KYXZhU2NyaXB0QWxlcnQpIGZvciBjb25zaXN0ZW5jeS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogSW5jbHVkZSB0aGUg
U2VjdXJpdHlPcmlnaW5EYXRhIG9iamVjdCBmb3IgdGhlCisgICAgICAgIGZyYW1lIGluIG1lc3Nh
Z2UgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLgorCiAyMDE3LTA1LTI1ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0syXSBBdm9pZCBz
ZXR0aW5nIGNvbnRlbnRzU2NhbGUgYW5kIHJhc3Rlcml6YXRpb25TY2FsZSBvbiBDQVRyYW5zZm9y
bUxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4
IDBhMjcwOWFlOWY4MDZhZWQ0NTBmNjBlYjA5MWExZTI0ZjdiMDNiZGMuLmE1NWNmNTlhZTQyN2Nk
YzIxNjEwNGFjZGFiMjE3NWEwN2M1OGUyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7
IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgRnVuY3Rp
b248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lk
IChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRTY3JvbGwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBj
NTc2ZTZhNTkyMmYxYTkxZDg5OTAxMmEzMTkyOTQxMjlmMjFiNzFjLi44ZTViNWIzZmYwMjgwMTM4
ZjVmYTVhY2U3MjU0YzVhODMwMWU3YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVu
dFRyYWl0czxXS1BhZ2VQb2xpY3lDbGllbnRCYXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBDbGllbnRUcmFpdHM8V0tQYWdlVUlDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIs
IFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdL
UGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFn
ZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50VjEwPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGll
bnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRW
NSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwg
V0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExPiBW
ZXJzaW9uczsKIH07CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTIwNTcsMTQgKzIw
NTcsMjEgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKIAogICAgICAgICBib29sIGNhblJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNiB8fCBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7
CisgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEwIHx8IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2IHx8IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBX
VEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyPiBs
aXN0ZW5lciA9IFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyOjpjcmVh
dGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50
LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5p
bXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlP
cmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmln
aW5EYXRhLnBvcnQpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdldCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxMCkgeworICAgICAgICAgICAgICAgIFJlZlB0
cjxSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBS
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTAodG9BUEkocGFnZSksIHRv
QVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VV
SUNsaWVudC5oCmluZGV4IDA4ODBhMGQ3MWE4NWEwZThlODk3YTliZTAyMzEyODlhYWQzODBiYzIu
LjJhMzZmNjJkNjFjMGVkNmVmZTg5N2Q5MjA2NGJkMzg2MDI1YTE5ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCkBAIC04Miw3ICs4Miw3
IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5l
ckNhbGwoV0tQYWdlUnVuSmF2YVNjcmlwdFByCiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVVJQ2xp
ZW50Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5
cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25B
Y3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0
dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdlUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJh
Y2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkphdmFTY3Jp
cHRBbGVydFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmly
bVJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdl
UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKQEAgLTE0Miw2ICsxNDIsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VS
dW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1KShXS1BhZ2VS
ZQogdHlwZWRlZiBib29sICgqV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1KShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUpKFdLUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgqV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNikoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTApKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiAKIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50QmFzZSB7CiAgICAgaW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJzaW9uOwpAQCAtOTIwLDcgKzkyMSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xp
ZW50VjEwIHsKICAgICBXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdp
bjsKICAgICAKICAgICAvLyBWZXJzaW9uIDcuCi0gICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWw7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTA7CiAgICAgV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9J
bmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmU7CiAgICAgCiAgICAgLy8gVmVyc2lvbiA4LgpAQCAtOTM0LDcgKzkzNSwx
MDUgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTAgewogICAgIFdLSGFzVmlkZW9J
blBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2U7CiAgICAgV0tEaWRFeGNl
ZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kQ2FsbGJhY2sgICAgICAg
ICBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOwogfSBX
S1BhZ2VVSUNsaWVudFYxMDsKLSAgICAKKwordHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRW
MTEgeworICAgIFdLUGFnZVVJQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1Bh
Z2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAg
ICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VV
SUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNob3dQYWdlOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U7CisgICAgV0tQYWdlVGFrZUZvY3Vz
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtl
Rm9jdXM7CisgICAgV0tQYWdlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb2N1czsKKyAgICBXS1BhZ2VVbmZvY3VzQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZm9jdXM7Cisg
ICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MCAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsK
KyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjA7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjA7CisgICAgV0tQYWdlU2V0U3RhdHVzVGV4dENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNUZXh0OworICAgIFdLUGFnZU1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VN
aXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAg
ICAgIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7Cisg
ICAgV0tQYWdlRGlkTm90SGFuZGxlS2V5RXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWROb3RIYW5kbGVLZXlFdmVudDsKKyAgICBXS1BhZ2VEaWROb3RIYW5k
bGVXaGVlbEV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5v
dEhhbmRsZVdoZWVsRXZlbnQ7CisgICAgV0tQYWdlR2V0VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyc0FyZVZpc2libGU7Cisg
ICAgV0tQYWdlU2V0VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRUb29sYmFyc0FyZVZpc2libGU7CisgICAgV0tQYWdlR2V0TWVudUJh
cklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51
QmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudUJhcklzVmlzaWJsZTsKKyAgICBX
S1BhZ2VHZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRTdGF0dXNCYXJJc1Zp
c2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c0Jh
cklzVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRJc1Jlc2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVzaXphYmxlOworICAgIFdLUGFnZVNldElz
UmVzaXphYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0SXNSZXNpemFibGU7CisgICAgV0tQYWdlR2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRXaW5kb3dGcmFtZTsKKyAgICBXS1Bh
Z2VTZXRXaW5kb3dGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFdpbmRvd0ZyYW1lOworICAgIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgICAgcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjY7CisgICAgV0tQYWdlVUlDbGllbnRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWREcmF3
OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFnZURpZFNjcm9sbDsKKyAgICBXS1BhZ2VFeGNlZWRlZERhdGFi
YXNlUXVvdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZGVk
RGF0YWJhc2VRdW90YTsKKyAgICBXS1BhZ2VSdW5PcGVuUGFuZWxDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk9wZW5QYW5lbDsKKyAgICBXS1BhZ2VE
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAg
ICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQ
YWdlSGVhZGVySGVpZ2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWFkZXJIZWlnaHQ7CisgICAgV0tQYWdlRm9vdGVySGVpZ2h0Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJIZWlnaHQ7CisgICAg
V0tQYWdlRHJhd0hlYWRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkcmF3SGVhZGVyOworICAgIFdLUGFnZURyYXdGb290ZXJDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0Zvb3RlcjsKKyAgICBX
S1BhZ2VQcmludEZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50RnJhbWU7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5Nb2RhbDsKKyAgICB2b2lk
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVudXNlZDE7IC8vIFVzZWQgdG8gYmUgZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFp
bkZyYW1lCisgICAgV0tQYWdlU2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyOwor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdF91bmF2YWlsYWJsZTsKKwor
ICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMSAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMTsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Owor
ICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2Fs
bGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3Q7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMTsKKworICAgIC8vIFZlcnNpb24gMi4KKyAgICBXS1BhZ2VTaG93Q29s
b3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3dDb2xvclBpY2tlcjsKKyAgICBXS1BhZ2VIaWRlQ29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVDb2xvclBpY2tlcjsKKyAgICBXS1Bh
Z2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZDsKKworICAgIC8vIFZlcnNpb24g
My4KKyAgICBXS1BhZ2VQaW5uZWRTdGF0ZURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBpbm5lZFN0YXRlRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lv
biA0LgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW51c2VkMjsgLy8gVXNlZCB0byBiZSBkaWRCZWdpblRyYWNr
aW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQzOyAvLyBV
c2VkIHRvIGJlIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51
c2VkNDsgLy8gVXNlZCB0byBiZSBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVBy
ZXNzLgorICAgIFdLUGFnZUlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2U7CisKKyAgICAvLyBW
ZXJzaW9uIDUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjayAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VEaWRDbGlja0F1dG9GaWxsQnV0dG9uQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENsaWNrQXV0b0ZpbGxCdXR0b247CisgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7
CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjU7CisgICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKworICAg
IC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1D
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29u
ZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tDaGVja1Vz
ZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAgICAvLyBWZXJzaW9uIDcu
CisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMTAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMTA7CisgICAgV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7
CisKKyAgICAvLyBWZXJzaW9uIDguCisgICAgV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7
CisgICAgV0tEaWRMb3NlUG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDku
CisgICAgV0tIYW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVBdXRvcGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAx
MC4KKyAgICBXS0hhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOwor
ICAgIFdLRGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENh
bGxiYWNrICAgICAgICAgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9y
ZWdyb3VuZDsKKworICAgIC8vIFZlcnNpb24gMTEuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWw7Cit9IFdLUGFnZVVJQ2xpZW50VjExOworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCAyYzJkNjI2NzVmMjhmNDU3OWUy
ZDYxNjc2YjdhMjYxOWIwZmUyOGRmLi43NDQ0Y2M2ZTMwYTYxMGZhMDdlNGU5MzM1MDVlNzVhZDQx
YTllMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtNzAsNiArNzAsOCBAQCBzdHJ1Y3QgVUlFZGdl
SW5zZXRzOwogLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQpZHJh
Z2dpbmdJbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVXZWJW
aWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25B
Y3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVyZXMgKil3aW5kb3dGZWF0dXJlcyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tXZWJWaWV3ICp3ZWJWaWV3KSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVk
QnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
Qk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQog
LSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlu
a0FjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tf
QVBJX0FWQUlMQUJMRShpb3MoOS4wKSk7CiAtIChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgYWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICop
ZWxlbWVudCBkZWZhdWx0QWN0aW9uczooTlNBcnJheTxfV0tFbGVtZW50QWN0aW9uICo+ICopZGVm
YXVsdEFjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IGZhYjMyZGFmYjJmYjMxNjkwNzk0ZjQ1ZmVhMWU3NGNlNTVjZWFkMzQu
LmUwYmVkYWI5YzdkMmIzNjQyY2M0M2MwMTRiZTMzMmU5YTBkZWE4Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03MDcsMTEgKzcw
NywxMSBAQCAtIChpZCA8V0tVSURlbGVnYXRlPilVSURlbGVnYXRlCiAKIC0gKHZvaWQpc2V0VUlE
ZWxlZ2F0ZTooaWQ8V0tVSURlbGVnYXRlPilVSURlbGVnYXRlCiB7CisgICAgX3VpRGVsZWdhdGUt
PnNldERlbGVnYXRlKFVJRGVsZWdhdGUpOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAg
IF9wYWdlLT5zZXRDb250ZXh0TWVudUNsaWVudChfdWlEZWxlZ2F0ZS0+Y3JlYXRlQ29udGV4dE1l
bnVDbGllbnQoKSk7CiAjZW5kaWYKICAgICBfcGFnZS0+c2V0VUlDbGllbnQoX3VpRGVsZWdhdGUt
PmNyZWF0ZVVJQ2xpZW50KCkpOwotICAgIF91aURlbGVnYXRlLT5zZXREZWxlZ2F0ZShVSURlbGVn
YXRlKTsKIH0KIAogLSAoaWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+KV9pY29uTG9hZGluZ0Rl
bGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRl
eCBmM2VmMzNhMDYyNzE1ZjVlZGQxNDEyYjQ4YWZlMjExNjA3ZmE2MzU2Li4zMGY5MGY1NDc3OGEw
ZmY3Y2QxNjFhZjYxZmNhZjAxMzJjNDEzMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKFdlYktpdDo6V2ViUGFnZVBy
b3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21w
dChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAg
dm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50
UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBG
dW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBGdW5jdGlvbjx2b2lkICh1
bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICNpZiBQ
TEFURk9STShNQUMpCkBAIC0xMjcsNiArMTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3
ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVD
b21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bkphdmFTY3JpcHRD
b25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQ
cm9tcHREZWZhdWx0VGV4dEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7Cisg
ICAgICAgIGJvb2wgd2ViVmlld1J1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVk
QnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCA0NDgzMGQxZTdmZWY5M2ZjMDk1YzBm
NDQyZTcyM2U0MmI5NjM4MDcyLi4yOWY5YzM2NDQyNmVkOGQ5OWYwZjcxMDQ5ZDkzNWZhNWVkNzVh
NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpA
QCAtOTYsNiArOTYsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVs
ZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZh
U2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhh
bmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRDb25m
aXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlw
dENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRUZXh0SW5w
dXRQYW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4dEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVu
SmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRC
eUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVD
b21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVk
QnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0
ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CkBAIC0zMTMsNiArMzE0LDMzIEBAIHZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBjb25zdCBXVEY6CiAgICAgfSkuZ2V0KCldOwogfQogCitib29sIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
OworfQorCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgRnVuY3Rpb248dm9pZCAoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5p
dGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVsZWdhdGUg
PSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0
b3Iod2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+KWRlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3Jh
cHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkpIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQg
KEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCByZXN1bHQpIHsK
KyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwor
ICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KS5nZXQo
KV07Cit9CisKIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIEZ1bmN0aW9uPHZv
aWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZURhdGFiYXNlUXVv
dGFGb3JTZWN1cml0eU9yaWdpbkN1cnJlbnRRdW90YUN1cnJlbnRPcmlnaW5Vc2FnZUN1cnJlbnRE
YXRhYmFzZVVzYWdlRXhwZWN0ZWRVc2FnZURlY2lzaW9uSGFuZGxlcikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxMzM5ODQ1YTgyZDY1YTg2ODU4NWJj
MTFmY2IzZTkyZjdkNGE1YTBlLi40NmI4MGUwNTFlODM5ZjI2ODEzYTlkYTdmOTFlZmFlYzBjNDVh
Y2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA5
Miw3ICs0MDkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBJbnRSZWMKIH0KICNlbmRpZgogCi12b2lk
IFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNL
KGZyYW1lKTsKQEAgLTQxMDAsNyArNDEwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmCiAg
ICAgLy8gU2luY2UgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY2FuIHNwaW4gYSBuZXN0
ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIu
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RvcCgpOwogCi0gICAgbV91
aUNsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1l
LCBbcmVwbHldKGJvb2wgcmVzdWx0KSB7IHJlcGx5LT5zZW5kKHJlc3VsdCk7IH0pOworICAgIG1f
dWlDbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFt
ZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBseV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVz
dWx0KTsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3Bl
cnRpZXMoY29uc3QgVmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE3MzY5MTQ1YjlmNDRjZWJkOGYyNGUzMTExOTVlNTE4
ODAwZWE5ODMuLjk3MWRmZmY4YTI5NmYyMDQyZTAxZjk0MjE2ZGYzOTVlOGYyMWEyYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyOTcsNyArMTI5Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQ
b2ludCk7CiAgICAgdm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVzdWx0KTsKICNlbmRp
ZgotICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdWludDY0X3QgZnJhbWVJRCwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9pZCBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVw
bHk+KTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3Jl
OjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKICAgICB2
b2lkIHJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA1Y2NjMzBmMjg2Y2Y1NmEzZmEwM2ZjODEzZTViMjRmNDJkMGQ4NWZkLi43YjlhMGUyMDk4OWQx
ZDc3NjE1OWRjZDc4YzJhN2RhY2VkNDBlYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTc0LDcgKzc0LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBSb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQog
I2VuZGlmCiAKLSAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoU3RyaW5nIG1lc3NhZ2Us
IHVpbnQ2NF90IGZyYW1lSUQpIC0+IChib29sIHNob3VsZENsb3NlKSBEZWxheWVkCisgICAgUnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2Up
IC0+IChib29sIHNob3VsZENsb3NlKSBEZWxheWVkCiAgICAgUGFnZURpZFNjcm9sbCgpCiAgICAg
UnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdlYkNvcmU6OkZpbGVDaG9vc2Vy
U2V0dGluZ3MgcGFyYW1ldGVycykKICAgICBQcmludEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIC0+
ICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZGQwZDRiYzAzNTBkZmY3MzA2NTE1Mjg3
ODg4MjNhNmM0NDNmNjUzOS4uMWY1YTk0YmU4YTU3OWY2ZmYxYjBjZTkzNGU5M2RjMjMxYmY1NDBi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBGcmFtZSYKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9u
RGlzYWJsZXI7CiAKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChtZXNzYWdlLCB3ZWJGcmFtZS0+ZnJhbWVJRCgpKSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpSZXBseShzaG91
bGRDbG9zZSksIG1fcGFnZS5wYWdlSUQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5k
U3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpKQorICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHdl
YkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKCZmcmFtZSks
IG1lc3NhZ2UpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWw6OlJlcGx5KHNob3VsZENsb3NlKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZp
bml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3Vz
cGVuZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzaG91bGRDbG9zZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMWFj
NjQwZjgxMWExZjg1NjMxYTk3NjQwZmVkZWJlZGUwMGFhM2JjLi44OWVlOTFmODZiMjQwMzIxODQ3
MTI2MGNlZmVmZGEwNzc0NjYwOTAwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTctMDUtMjUgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwgV0tVSURlbGVnYXRlIFNQSTsgc3VwcG9ydCBvbmJlZm9yZXVubG9hZCBj
b25maXJtIHBhbmVsIGluIE1pbmlCcm93c2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIC13ZWJWaWV3OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6IGRlbGVnYXRlCisgICAgICAgIG1ldGhvZCBpbiBNaW5pQnJvd3NlciB0byBzaG93IGEgY29u
ZmlybSBwYW5lbCBhcyB0byB3aGV0aGVyIHRvIGFsbG93IHRoZSB1bmxvYWRpbmcgb2YgdGhlIHBh
Z2Ugd2hlbgorICAgICAgICB1bmxvYWRpbmcgaXMgaW5pdGlhdGVkIGZvciBhIHBhZ2UgdGhhdCBy
ZWdpc3RlcmVkIGEgb25iZWZvcmV1bmxvYWQgaGFuZGxlci4KKworICAgICAgICBDb3B5IHRoZSBl
eGlzdGluZyB0ZXN0IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5j
cHAgdG8gVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJlY2F0ZWRWNU1vZGFsQWxlcnRz
U1BJLmNwcCwKKyAgICAgICAgdXBkYXRpbmcgaXQgdG8gdGVzdCB0aGUgZGVwcmVjYXRlZCBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgY2FsbGJhY2ssIHNvIGFzIHRvIGVuc3VyZSB3ZSBoYXZl
IG5vdAorICAgICAgICBicm9rZW4gdGhlIGRlcHJlY2F0ZWQgV0tQYWdlVUlDbGllbnRWNSBjYWxs
YmFja3MuIFdLUGFnZVVJQ2xpZW50VjUgaXMgc3RpbGwgdXNlZCBieSB0aGUgTWFjIEFwcCBTdG9y
ZQorICAgICAgICBhcyBvZiB0aGUgdGltZSBvZiB3cml0aW5nIDooLgorCisgICAgICAgIFJlLXJl
cHVycG9zZSBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW9kYWxBbGVydHNTUEkuY3BwIGZv
ciBuZXcgdW5pdHMgdGVzdHMgdGhhdCBleGVyY2lzZSB0aGUKKyAgICAgICAgV0tQYWdlVUlDbGll
bnRWMTAgY2FsbGJhY2tzOiBydW5KYXZhU2NyaXB0e0FsZXJ0LCBDb25maXJtLCBQcm9tcHR9IGFu
ZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKS4KKworICAgICAgICBNb2RpZnkgVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0gdG8gdGVzdCB0aGF0IHRo
ZSAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOgorICAgICAgICBpcyBjYWxsZWQuIEFsc28gZml4
IHN0eWxlIG5pdDsgcGFzcyBZRVMgaW5zdGVhZCBvZiB0cnVlIHRvIGF2b2lkIGltcGxpY2l0IGNv
bnZlcnNpb24gZnJvbSBib29sIHRvIEJPT0wKKyAgICAgICAgd2hlbiBpbnZva2luZyB0aGUgY29t
cGxldGlvbiBoYW5kbGVyIGluIC13ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjouCisKKyAgICAgICAgRm9y
IG5vdyB0aGUgYWRkZWQgdW5pdCB0ZXN0cyBmb3IgdGhlIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCBjYWxsYmFja3MgYXJlIG9ubHkgcnVuIG9uIE1hYyBhcworICAgICAgICB3ZSBkbyBub3Qg
aGF2ZSB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gc2ltdWxhdGUgYSBjbGljay90YXAgb24gaU9TIGFu
ZCBhIGNsaWNrL3RhcCBvbiB0aGUgcGFnZSB0aGF0CisgICAgICAgIHJlZ2lzdGVyZWQgYW4gb25i
ZWZvcmV1bmxvYWQgaGFuZGxlciBpcyByZXF1aXJlZCB0byBzaG93IGEgY29uZmlybSBwYW5lbCB3
aGVuIHRoZSBwYWdlIHdpbGwgYmUKKyAgICAgICAgdW5sb2FkZWQuCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBJbXBs
ZW1lbnQgZGVsZWdhdGUgbWV0aG9kLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHA6IENvcGllZCBmcm9t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHAuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjphbmFseXplRGlhbG9nQXJndW1lbnRzKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5K
YXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjphbmFseXplRGlhbG9nQXJndW1lbnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkph
dmFTY3JpcHRBbGVydCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0Q29u
ZmlybSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cu
aHRtbDogUmVnaXN0ZXIgb25iZWZvcmV1bmxvYWQgaGFuZGxlci4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbToKKyAgICAgICAgKHNhd0Rp
YWxvZyk6CisgICAgICAgICgtW01vZGFsQWxlcnRzVUlEZWxlZ2F0ZSB3ZWJWaWV3OmNyZWF0ZVdl
YlZpZXdXaXRoQ29uZmlndXJhdGlvbjpmb3JOYXZpZ2F0aW9uQWN0aW9uOndpbmRvd0ZlYXR1cmVz
Ol0pOgorICAgICAgICAoLVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2Ny
aXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bTW9kYWxBbGVydHNVSURlbGVnYXRlIHdlYlZpZXc6cnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKwogMjAxNy0wNS0yNSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0FUS10gRXhwb3NlIGRvYy1mb290bm90ZSBBUklBIHJvbGUg
d2l0aCBBVEtfUk9MRV9GT09UTk9URQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBkMDFkMGNkNDA0M2I5NDFjNWU5ODJkYjYw
Yzg1ZDlmMjczNDI3MjlhLi5iZGU3YzRjMWQ0NzY4ZDYyYWEzMzdjZDM2ODI1YmQ4NzA2OWQzNGY3
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubQpAQCAtNTE1LDYgKzUxNSwyMiBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogICAg
IH1dOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRC
eUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShC
T09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBOU0FsZXJ0ICphbGVydCA9IFtb
TlNBbGVydCBhbGxvY10gaW5pdF07CisKKyAgICBhbGVydC5tZXNzYWdlVGV4dCA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiSmF2YVNjcmlwdCBiZWZvcmUgdW5sb2FkIGRpYWxvZyBmcm9t
ICVALiIsIFtmcmFtZS5yZXF1ZXN0LlVSTCBhYnNvbHV0ZVN0cmluZ11dOworICAgIGFsZXJ0Lmlu
Zm9ybWF0aXZlVGV4dCA9IG1lc3NhZ2U7CisKKyAgICBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxl
OkAiTGVhdmUgUGFnZSJdOworICAgIFthbGVydCBhZGRCdXR0b25XaXRoVGl0bGU6QCJTdGF5IE9u
IFBhZ2UiXTsKKworICAgIFthbGVydCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6c2VsZi53aW5k
b3cgY29tcGxldGlvbkhhbmRsZXI6XnZvaWQgKE5TTW9kYWxSZXNwb25zZSByZXNwb25zZSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZSA9PSBOU0FsZXJ0Rmlyc3RCdXR0b25S
ZXR1cm4pOworICAgICAgICBbYWxlcnQgcmVsZWFzZV07CisgICAgfV07Cit9CisKIC0gKFdLRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkKWRyYWdnaW5nSW5mbwogewogICAg
IHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOTI0ZjdmOGU2ZjNkYzc5NjVmMDExMzU1NTUyNzVlOThiN2VmOWM3Yi4uMjg0N2I4MGI4
OGE2Mjc4OGEwOTFmMjdhZjhiMjIzMzY5YTQxMjk4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU5OSw2ICs1OTksNyBAQAogCQlDRTM1MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZp
ZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEYxMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0RmllbGRE
aWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwICovOyB9OwogCQlDRTM1MjRGQTFCMTQ0Mzg5MDAyOEE3
QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJCQkIwMDI4QTdDNSAvKiBpbnB1
dC1mb2N1cy1ibHVyLmh0bWwgKi87IH07CiAJCUNFQTZDRjI4MTlDQ0Y2OUQwMDY0RjVBNyAvKiBv
cGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUE2Q0YyNzE5Q0NGNjlEMDA2NEY1QTcgLyogb3Blbi1h
bmQtY2xvc2Utd2luZG93Lmh0bWwgKi87IH07CisJCUNFQjIyNEVEMUVENjRBODYwMDNEMjg2NiAv
KiBEZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUIyMjRFQzFFRDY0QTg2MDAzRDI4NjYgLyogRGVwcmVj
YXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovOyB9OwogCQlDRUJBQkQ0OTFCNzE2ODdDMDA1MTIx
MEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkFCRDQ4MUI3MTY4N0MwMDUx
MjEwQSAvKiBzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgKi87IH07CiAJCUNFQkNB
MTJGMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTJFMUUz
QTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLzsgfTsK
IAkJQ0VCQ0ExMzgxRTNBODA3QTAwQzczMjkzIC8qIHBhZ2Utd2l0aC1jc3AuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUJDQTEzNTFF
M0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRoLWNzcC5odG1sICovOyB9OwpAQCAtMTUxMCw2ICsx
NTExLDcgQEAKIAkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRpb25TZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFu
ZENsb3NlV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
T3BlbkFuZENsb3NlV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUE2
Q0YyNzE5Q0NGNjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAib3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRUIyMjRFQzFFRDY0QTg2MDAzRDI4NjYgLyogRGVwcmVjYXRlZFY1TW9kYWxBbGVy
dHNTUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVwcmVjYXRl
ZFY1TW9kYWxBbGVydHNTUEkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUJB
QkQ0ODFCNzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gInNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRUJDQTEzNDFFM0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRoLWNz
cC1pZnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYWdlLXdpdGgtY3Nw
LWlmcmFtZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODUsNiArMjA4
Nyw3IEBACiAJCQkJMUE1MEFBMUMxQTJBNEU3MDAwRjRDMzQ1IC8qIENsb3NlRnJvbVdpdGhpbkNy
ZWF0ZVBhZ2UuY3BwICovLAogCQkJCTdDOEREQUE5MTczNURFMUQwMEVBNUFDMCAvKiBDbG9zZVRo
ZW5UZXJtaW5hdGUuY3BwICovLAogCQkJCUY2RjNGMjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29r
aWVNYW5hZ2VyLmNwcCAqLywKKwkJCQlDRUIyMjRFQzFFRDY0QTg2MDAzRDI4NjYgLyogRGVwcmVj
YXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwICovLAogCQkJCUY2QjdCRTkzMTc0NjkxRUYwMDhBMzQ0
NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3BwICovLAogCQkJCUY2QjdCRTkyMTc0Njkx
RUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNfQnVuZGxlLmNwcCAqLywKIAkJ
CQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgzQjEgLyogRGlkTm90SGFuZGxlS2V5RG93bi5jcHAgKi8s
CkBAIC0zMTMzLDYgKzMxMzYsNyBAQAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBX
S1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NjQzMjJENzFCNjFDQ0Mz
MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VCMjI0RUQxRUQ2NEE4NjAwM0QyODY2IC8qIERl
cHJlY2F0ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJlY2F0ZWRWNU1vZGFsQWxlcnRz
U1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9EZXByZWNhdGVkVjVN
b2RhbEFsZXJ0c1NQSS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3MzY3MjI3OWE3MTFkNTUyZGE5M2E2ZmNh
YmUyZmJmMDE3YWQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9EZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTAsMCArMSwxNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVf
Q19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1l
Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
U2VjdXJpdHlPcmlnaW5SZWYuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0
aWMgYm9vbCBkb25lOworc3RhdGljIHVuc2lnbmVkIGRpYWxvZ3NTZWVuOworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9IDQ7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgZGlh
bG9nc0JlZm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IGRpYWxvZ3NFeHBlY3RlZCAtIDE7CisKK3N0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XZWJWaWV3PiBvcGVuZWRXZWJWaWV3OworCitz
dGF0aWMgdm9pZCBhbmFseXplRGlhbG9nQXJndW1lbnRzKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luID0gbnVsbHB0cikK
K3sKKyAgICBFWFBFQ1RfRVEocGFnZSwgV0tGcmFtZUdldFBhZ2UoZnJhbWUpKTsKKworICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB1cmwgPSBhZG9wdFdLKFdLRnJhbWVDb3B5VVJMKGZyYW1lKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVybFN0cmluZyA9IGFkb3B0V0soV0tVUkxD
b3B5U3RyaW5nKHVybC5nZXQoKSkpOworICAgIEVYUEVDVF9XS19TVFJFUSgiYWJvdXQ6Ymxhbmsi
LCB1cmxTdHJpbmcuZ2V0KCkpOworCisgICAgaWYgKHNlY3VyaXR5T3JpZ2luKSB7CisgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwcm90b2NvbCA9IGFkb3B0V0soV0tTZWN1cml0eU9y
aWdpbkNvcHlQcm90b2NvbChzZWN1cml0eU9yaWdpbikpOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoImZpbGUiLCBwcm90b2NvbC5nZXQoKSk7CisKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGhvc3QgPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChzZWN1cml0eU9y
aWdpbikpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIGhvc3QuZ2V0KCkpOworCisgICAg
ICAgIEVYUEVDVF9FUShXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChzZWN1cml0eU9yaWdpbiksIDAp
OworICAgIH0KKworICAgICsrZGlhbG9nc1NlZW47CisKKyAgICAvLyBUZXN0IGJlZm9yZXVubG9h
ZCBsYXN0IGFzIHdlIG5lZWQgdG8gbmF2aWdhdGUgdGhlIHdpbmRvdyB0byB0cmlnZ2VyIGl0Lgor
ICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7
CisgICAgICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24gaXMgcmVxdWlyZWQgdG8gc2hvdyB0aGUgYmVm
b3JldW5sb2FkIHByb21wdC4KKyAgICAgICAgb3BlbmVkV2ViVmlldy0+c2ltdWxhdGVCdXR0b25D
bGljayhrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbiwgNSwgNSwgMCk7CisgICAgICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiBibGFua0RhdGFVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJkYXRhOnRleHQvaHRtbCIpKTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChw
YWdlLCBibGFua0RhdGFVUkwuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NFeHBlY3RlZCkKKyAgICAgICAgZG9uZSA9IHRydWU7
Cit9CisKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXS1BhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFnZSwg
ZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKK30KKworc3RhdGljIGJvb2wgcnVuSmF2YVNjcmlwdENv
bmZpcm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkKikKK3sKKyAgICBhbmFs
eXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbik7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgV0tTdHJpbmdSZWYgcnVuSmF2YVNjcmlwdFByb21wdChX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkKikKK3sKKyAg
ICBhbmFseXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbik7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFnZSwgZnJhbWUpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWN0aW9uYXJ5UmVm
IGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9u
IG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIEVYUEVDVF9UUlVF
KG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CisKKyAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworCisgICAgV0tQYWdlVUlDbGllbnRW
NSB1aUNsaWVudDsKKyAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsK
KworICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAgdWlDbGllbnQucnVuSmF2YVNj
cmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3Jp
cHRDb25maXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgdWlDbGllbnQucnVuSmF2YVNj
cmlwdFByb21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgdWlDbGllbnQucnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsID0gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOworCisgICAg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KG9wZW5lZFdlYlZpZXctPnBhZ2UoKSwgJnVpQ2xpZW50LmJh
c2UpOworCisgICAgV0tSZXRhaW4ob3BlbmVkV2ViVmlldy0+cGFnZSgpKTsKKyAgICByZXR1cm4g
b3BlbmVkV2ViVmlldy0+cGFnZSgpOworfQorCitURVNUKFdlYktpdDIsIERlcHJlY2F0ZWRWNU1v
ZGFsQWxlcnRzU1BJKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9
IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3
KGNvbnRleHQuZ2V0KCkpOworCisgICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKKyAgICBt
ZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKKworICAgIHVpQ2xpZW50LmJh
c2UudmVyc2lvbiA9IDU7CisgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1Bh
Z2U7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQod2ViVmlldy5wYWdlKCksICZ1aUNsaWVu
dC5iYXNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgVXRpbDo6
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIm1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2lu
ZG93IiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdl
dCgpKTsKKworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL01vZGFsQWxlcnRzU1BJLmNwcAppbmRleCAwMjc4ZjAwNWI5ODUwNTg4MmViOGE0YjJh
ZTI4YTRlMjdlMDY1Nzk3Li5hYzc2OGNhYjUzOGRkMGI0NzIyYzQzNDY1MmUzMWU0ZjdiNmVkMWRm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW9kYWxBbGVy
dHNTUEkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFs
ZXJ0c1NQSS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNyArMzgsMTYgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBz
dGF0aWMgYm9vbCBkb25lOwogc3RhdGljIHVuc2lnbmVkIGRpYWxvZ3NTZWVuOworCisvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgZ3VhcmQgb25jZSB3ZSBpbXBsZW1lbnQgLVtUZXN0V0tXZWJWaWV3IHNl
bmRDbGlja3NBdFBvaW50Om51bWJlck9mQ2xpY2tzOl0gKG9yIGFuIGFuYWxhZ291cyBmdW5jdGlv
bikgZm9yIGlPUy4KKyNpZiBQTEFURk9STShNQUMpCitzdGF0aWMgY29uc3QgdW5zaWduZWQgZGlh
bG9nc0V4cGVjdGVkID0gNDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBkaWFsb2dzQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsID0gZGlhbG9nc0V4cGVjdGVkIC0gMTsKKyNlbHNlCiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gMzsKKyNlbmRpZgorCitzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtV2ViVmlldz4gb3BlbmVkV2ViVmlldzsKIAogc3RhdGljIHZvaWQg
YW5hbHl6ZURpYWxvZ0FyZ3VtZW50cyhXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKQEAgLTU2LDI4ICs2NSw1MCBA
QCBzdGF0aWMgdm9pZCBhbmFseXplRGlhbG9nQXJndW1lbnRzKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5TwogCiAgICAgRVhQRUNUX0VRKFdLU2VjdXJpdHlPcmln
aW5HZXRQb3J0KHNlY3VyaXR5T3JpZ2luKSwgMCk7CiAKLSAgICBpZiAoKytkaWFsb2dzU2VlbiA9
PSBkaWFsb2dzRXhwZWN0ZWQpCisgICAgKytkaWFsb2dzU2VlbjsKKworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBndWFyZCBvbmNlIHdlIGltcGxlbWVudCAtW1Rlc3RXS1dlYlZpZXcgc2VuZENs
aWNrc0F0UG9pbnQ6bnVtYmVyT2ZDbGlja3M6XSAob3IgYW4gYW5hbGFnb3VzIGZ1bmN0aW9uKSBm
b3IgaU9TLgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBUZXN0IGJlZm9yZXVubG9hZCBsYXN0
IGFzIHdlIG5lZWQgdG8gbmF2aWdhdGUgdGhlIHdpbmRvdyB0byB0cmlnZ2VyIGl0LgorICAgIGlm
IChkaWFsb2dzU2VlbiA9PSBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7CisgICAg
ICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24gaXMgcmVxdWlyZWQgdG8gc2hvdyB0aGUgYmVmb3JldW5s
b2FkIHByb21wdC4KKyAgICAgICAgb3BlbmVkV2ViVmlldy0+c2ltdWxhdGVCdXR0b25DbGljayhr
V0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbiwgNSwgNSwgMCk7CisgICAgICAgIFdLUmV0YWlu
UHRyPFdLVVJMUmVmPiBibGFua0RhdGFVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJkYXRhOnRleHQvaHRtbCIpKTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChwYWdlLCBi
bGFua0RhdGFVUkwuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAg
ICBpZiAoZGlhbG9nc1NlZW4gPT0gZGlhbG9nc0V4cGVjdGVkKQogICAgICAgICBkb25lID0gdHJ1
ZTsKIH0KIAotc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0
eU9yaWdpbiwgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3Jp
Z2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0
ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCopCiB7CiAgICAgYW5hbHl6ZURpYWxvZ0FyZ3Vt
ZW50cyhwYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4pOworICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRBbGVydFJlc3VsdExpc3RlbmVyQ2FsbChsaXN0ZW5lcik7CiB9CiAKLXN0YXRpYyBib29sIHJ1
bkphdmFTY3JpcHRDb25maXJtKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCop
CitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmln
aW4sIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIs
IGNvbnN0IHZvaWQqKQogewogICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFnZSwgZnJhbWUs
IHNlY3VyaXR5T3JpZ2luKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lckNhbGwobGlzdGVuZXIsIGZhbHNlKTsKIH0KIAotc3Rh
dGljIFdLU3RyaW5nUmVmIHJ1bkphdmFTY3JpcHRQcm9tcHQoV0tQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmLCBXS1N0cmluZ1JlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJl
ZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0
UHJvbXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkph
dmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCopCiB7
CiAgICAgYW5hbHl6ZURpYWxvZ0FyZ3VtZW50cyhwYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4p
OwotICAgIHJldHVybiBudWxscHRyOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1
bHRMaXN0ZW5lckNhbGwobGlzdGVuZXIsIG51bGxwdHIpOwogfQogCi1zdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtV2ViVmlldz4gb3BlbmVkV2ViVmlldzsKKy8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBndWFyZCBvbmNlIHdlIGltcGxlbWVudCAtW1Rlc3RXS1dlYlZpZXcgc2VuZENsaWNrc0F0
UG9pbnQ6bnVtYmVyT2ZDbGlja3M6XSAob3IgYW4gYW5hbGFnb3VzIGZ1bmN0aW9uKSBmb3IgaU9T
LgorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKikKK3sKKyAgICBh
bmFseXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbik7CisgICAg
V0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXJDYWxsKGxpc3Rl
bmVyLCBmYWxzZSk7Cit9CisjZW5kaWYKIAogc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdl
KFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWN0aW9uYXJ5
UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0
dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewpAQCAtODUsMTQgKzEx
NiwxOSBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdL
VVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogCiAgICAgb3BlbmVkV2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKIAotICAgIFdLUGFnZVVJQ2xp
ZW50VjUgdWlDbGllbnQ7CisgICAgV0tQYWdlVUlDbGllbnRWMTEgdWlDbGllbnQ7CiAgICAgbWVt
c2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7CiAKLSAgICB1aUNsaWVudC5iYXNl
LnZlcnNpb24gPSA1OworICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDExOwogICAgIHVpQ2xp
ZW50LnJ1bkphdmFTY3JpcHRBbGVydCA9IHJ1bkphdmFTY3JpcHRBbGVydDsKICAgICB1aUNsaWVu
dC5ydW5KYXZhU2NyaXB0Q29uZmlybSA9IHJ1bkphdmFTY3JpcHRDb25maXJtOwogICAgIHVpQ2xp
ZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQgPSBydW5KYXZhU2NyaXB0UHJvbXB0OwogCisgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIGd1YXJkIG9uY2Ugd2UgaW1wbGVtZW50IC1bVGVzdFdLV2ViVmll
dyBzZW5kQ2xpY2tzQXRQb2ludDpudW1iZXJPZkNsaWNrczpdIChvciBhbiBhbmFsYWdvdXMgZnVu
Y3Rpb24pIGZvciBpT1MuCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVpQ2xpZW50LnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCA9IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKKyNlbmRp
ZgorCiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG9wZW5lZFdlYlZpZXctPnBhZ2UoKSwgJnVp
Q2xpZW50LmJhc2UpOwogCiAgICAgV0tSZXRhaW4ob3BlbmVkV2ViVmlldy0+cGFnZSgpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMt
aW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL21vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwKaW5k
ZXggZjc2Y2I2NTBiN2FiOGNiNTFkYTc5OTVjMWU5MWJkYzQwYTRkODAxMS4uMTliZjM5ZDA3ZWY5
MDE2MTE1ZGZlNGU0ZDlkNTJjYjNkMDQ5ZDEwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93
Lmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0
cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwKQEAgLTcsNiArNyw3IEBAIHZhciBuZXdX
aW5kb3cgPSB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKTsKIG5ld1dpbmRvdy5hbGVydCgiVGVz
dGluZyBhbGVydCIpOwogbmV3V2luZG93LmNvbmZpcm0oIlRlc3RpbmcgY29uZmlybSIpOwogbmV3
V2luZG93LnByb21wdCgiVGVzdGluZyBwcm9tcHQiLCAiRGVmYXVsdCB0ZXh0Iik7CituZXdXaW5k
b3cub25iZWZvcmV1bmxvYWQgPSAoKSA9PiAiRGVmYXVsdCB0ZXh0IjsKIAogPC9zY3JpcHQ+CiA8
L2hlYWQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9Nb2RhbEFsZXJ0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L01vZGFsQWxlcnRzLm1tCmluZGV4IGFhMzg2YTlkNzJhMDA0N2Q0ZjZlMWVjZmE1NDhjOGEwZWE5
NWIxMTQuLjc2N2E4ODFlZjJmOTFiZDkzZjI2ZGRhNjYwYjkxNTU1ZGUyYzg4YTggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRz
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktp
dC9XS1ByZWZlcmVuY2VzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgpAQCAtMzcsMTUgKzM4LDMzIEBACiBAY2xh
c3MgTW9kYWxBbGVydHNVSURlbGVnYXRlOwogCiBzdGF0aWMgYm9vbCBpc0RvbmU7Ci1zdGF0aWMg
UmV0YWluUHRyPFdLV2ViVmlldz4gb3BlbmVkV2ViVmlldzsKK3N0YXRpYyBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gb3BlbmVkV2ViVmlldzsKIHN0YXRpYyBSZXRhaW5QdHI8TW9kYWxBbGVydHNV
SURlbGVnYXRlPiBzaGFyZWRVSURlbGVnYXRlOwogCiBzdGF0aWMgdW5zaWduZWQgZGlhbG9nc1Nl
ZW47CisKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBndWFyZCBvbmNlIHdlIGltcGxlbWVudCAtW1Rl
c3RXS1dlYlZpZXcgc2VuZENsaWNrc0F0UG9pbnQ6bnVtYmVyT2ZDbGlja3M6XSAob3IgYW4gYW5h
bGFnb3VzIGZ1bmN0aW9uKSBmb3IgaU9TLgorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCBkaWFsb2dzRXhwZWN0ZWQgPSA0Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRp
YWxvZ3NCZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBkaWFsb2dzRXhwZWN0ZWQgLSAxOworI2Vs
c2UKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkaWFsb2dzRXhwZWN0ZWQgPSAzOworI2VuZGlmCiAK
IHN0YXRpYyB2b2lkIHNhd0RpYWxvZygpCiB7Ci0gICAgaWYgKCsrZGlhbG9nc1NlZW4gPT0gZGlh
bG9nc0V4cGVjdGVkKQorICAgICsrZGlhbG9nc1NlZW47CisKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgZ3VhcmQgb25jZSB3ZSBpbXBsZW1lbnQgLVtUZXN0V0tXZWJWaWV3IHNlbmRDbGlja3NB
dFBvaW50Om51bWJlck9mQ2xpY2tzOl0gKG9yIGFuIGFuYWxhZ291cyBmdW5jdGlvbikgZm9yIGlP
Uy4KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxvZ3NCZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwpIHsKKyAgICAgICAgW29wZW5lZFdlYlZpZXcgc2VuZENsaWNr
c0F0UG9pbnQ6TlNNYWtlUG9pbnQoNSwgNSkgbnVtYmVyT2ZDbGlja3M6MV07CisgICAgICAgIFtv
cGVuZWRXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJkYXRhOnRleHQvaHRtbCJdXV07CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKworICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dzRXhwZWN0ZWQp
CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTU2LDcgKzc1LDcgQEAgQGltcGxlbWVu
dGF0aW9uIE1vZGFsQWxlcnRzVUlEZWxlZ2F0ZQogCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFjdGlvbjooV0tO
YXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJlczooV0tXaW5k
b3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzCiB7Ci0gICAgb3BlbmVkV2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgb3BlbmVkV2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFtvcGVu
ZWRXZWJWaWV3IHNldFVJRGVsZWdhdGU6c2hhcmVkVUlEZWxlZ2F0ZS5nZXQoKV07CiAgICAgcmV0
dXJuIG9wZW5lZFdlYlZpZXcuZ2V0KCk7CiB9CkBAIC03OSw3ICs5OCw3IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1l
c3NhZ2U6KE5TU3RyCiAgICAgRVhQRUNUX1NUUkVRKFtbW2ZyYW1lIHNlY3VyaXR5T3JpZ2luXSBo
b3N0XSBVVEY4U3RyaW5nXSwgIiIpOwogICAgIEVYUEVDVF9FUShbW2ZyYW1lIHNlY3VyaXR5T3Jp
Z2luXSBwb3J0XSwgMCk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihZRVMpOwogICAgIHNhd0RpYWxvZygpOwogfQogCkBAIC05NCw2ICsxMTMs
MjAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRU
ZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3QKICAgICBzYXdEaWFsb2coKTsKIH0KIAorLy8g
RklYTUU6IFJlbW92ZSB0aGlzIGd1YXJkIG9uY2Ugd2UgaW1wbGVtZW50IC1bVGVzdFdLV2ViVmll
dyBzZW5kQ2xpY2tzQXRQb2ludDpudW1iZXJPZkNsaWNrczpdIChvciBhbiBhbmFsYWdvdXMgZnVu
Y3Rpb24pIGZvciBpT1MuCisjaWYgUExBVEZPUk0oTUFDKQorLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihO
U1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgRVhQRUNUX1NUUkVRKFtbW1tmcmFtZSByZXF1ZXN0XSBVUkxdIGFic29sdXRlU3Ry
aW5nXSBVVEY4U3RyaW5nXSwgImFib3V0OmJsYW5rIik7CisgICAgRVhQRUNUX1NUUkVRKFtbW2Zy
YW1lIHNlY3VyaXR5T3JpZ2luXSBwcm90b2NvbF0gVVRGOFN0cmluZ10sICJmaWxlIik7CisgICAg
RVhQRUNUX1NUUkVRKFtbW2ZyYW1lIHNlY3VyaXR5T3JpZ2luXSBob3N0XSBVVEY4U3RyaW5nXSwg
IiIpOworICAgIEVYUEVDVF9FUShbW2ZyYW1lIHNlY3VyaXR5T3JpZ2luXSBwb3J0XSwgMCk7CisK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgc2F3RGlhbG9nKCk7Cit9CisjZW5kaWYK
KwogQGVuZAogCiBURVNUKFdlYktpdDIsIE1vZGFsQWxlcnRzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311334</attachid>
            <date>2017-05-25 21:26:42 -0700</date>
            <delta_ts>2017-05-26 12:59:02 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-172603-20170525212642.patch</filename>
            <type>text/plain</type>
            <size>58050</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjY3OGVhZjA4NDRiZTk4
MDFkMWQzNjFhNTY1NWIwYjM1OWNmMWIyNC4uZDM5YTFhZTUzY2UwZmY1MWZiNWJlOWY0MDVkMzlk
NDlkNmMxMDU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE3LTA1LTI1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsIFdLVUlEZWxlZ2F0ZSBTUEk7IHN1cHBvcnQgb25iZWZvcmV1
bmxvYWQgY29uZmlybSBwYW5lbCBpbiBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBwYWdlIGxvYWRlZCBpbiBNaW5pQnJvd3NlciB1
c2luZyBXZWJLaXQyIGNhbm5vdCBzaG93IGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgKGJ5
IHJlZ2lzdGVyaW5nCisgICAgICAgIGFuIG9uYmVmb3JldW5sb2FkIGV2ZW50IGhhbmRsZXIpIHdo
ZW4gaXQgaXMgdW5sb2FkZWQuIFRoZSBzYW1lIHBhZ2UgbG9hZGVkIGluIE1pbmlCcm93c2VyIHVz
aW5nCisgICAgICAgIFdlYktpdDEgY2FuIHNob3cgc3VjaCBhIGNvbmZpcm0gcGFuZWwuIFdlIG5l
ZWQgdG8gYWRkIFdLVUlEZWxlZ2F0ZSBTUEkgc28gdGhhdCBhbiBlbWJlZGRpbmcgY2xpZW50LAor
ICAgICAgICBzdWNoIGFzIE1pbmlCcm93c2VyLCBjYW4gcmVnaXN0ZXIgdG8gcmVjZWl2ZSBhIGNh
bGxiYWNrIHRvIHNob3cgYSBiZWZvcmV1bmxvYWQgY29uZmlybSBwYW5lbC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IE1vZGlmaWVkIHRvIHRha2UgYSBTZWN1cml0eU9y
aWdpbkRhdGEgb2JqZWN0LiBUaGlzCisgICAgICAgIG1ha2VzIHRoZSBBUEkgY29uc2lzdGVudCB3
aXRoIHRoZSBleGlzdGluZyBKYXZhU2NyaXB0IGRpYWxvZyBjYWxsYmFja3MuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6IEFkZCBXS1BhZ2VVSUNsaWVudFYxMSB0byB0aGUg
bGlzdCBvZiB2ZXJzaW9ucy4KKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6IE1vZGlm
aWVkIG92ZXJyaWRlcyBBUEk6OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoKSBhbmQgQVBJOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkKKyAg
ICAgICAgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oOiBEZXByZWNhdGUgZXhpc3RpbmcgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsQ2FsbGJhY2sgY2FsbGJhY2sKKyAgICAgICAgdGhhdCBkb2VzIG5vdCB0YWtlIGEgV0tTZWN1
cml0eU9yaWdpblJlZi4gQWRkIGEgbmV3IFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bENhbGxiYWNrIHRoYXQgdGFrZXMKKyAgICAgICAgYSBXS1NlY3VyaXR5T3JpZ2luUmVmLiBUaGlz
IG1ha2VzIHRoZSBhcmd1bWVudHMgdG8gdGhpcyBjYWxsYmFjayBtb3JlIGNvbnNpc3RlbnQgd2l0
aCB0aGUgYXJndW1lbnRzCisgICAgICAgIHRha2VuIGJ5IHRoZSBleGlzdGluZyBKYXZhU2NyaXB0
IGRpYWxvZyBjYWxsYmFja3MgKGUuZy4gV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNr
KS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDog
QWRkIFNQSSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IHNldFVJRGVsZWdhdGU6XSk6IFNldCB0aGUgZGVsZWdhdGUgb2YgV2ViS2l0OjpVSURlbGVnYXRl
IHRvIHRoZSBzcGVjaWZpZWQgV0tVSURlbGVnYXRlCisgICAgICAgIGJlZm9yZSB3ZSBzZXQgdGhl
IFVJIGNsaWVudCBvbiB0aGUgcGFnZSBzbyBhcyB0byBlbnN1cmUgdGhhdCBBUEk6OlVJQ2xpZW50
IGNhbGxiYWNrcyB0aGF0IGRlcGVuZAorICAgICAgICAtcmVzcG9uZHNUb1NlbGVjdG9yOiBjaGVj
a3MgKGUuZy4gQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkp
IHJldHVybiB0aGUgY29ycmVjdAorICAgICAgICByZXN1bHQuIFRvIGVsYWJvcmF0ZSBmdXJ0aGVy
LCBhIEFQSTo6VUlDbGllbnQgY2xpZW50IG11c3Qgb3ZlcnJpZGUgYm90aCBjYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKQorICAgICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkgdG8gc3VwcG9ydCBydW5uaW5nIGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gZGlhbG9nLiBX
aGVuIG1hcHBpbmcKKyAgICAgICAgdGhlIENvY29hIFNQSSwgV0tVSURlbGVnYXRlUHJpdmF0ZSwg
dG8gQVBJOjpVSUNsaWVudCB3ZSBpbXBsZW1lbnQgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKCkKKyAgICAgICAgaW4gdGVybXMgb2Ygd2hldGhlciB0aGUgQ29j
b2EgZGVsZWdhdGUgcmVzcG9uZHMgYXQgcnVudGltZSB0byB0aGUgc2VsZWN0b3IgLXdlYlZpZXc6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpj
b21wbGV0aW9uSGFuZGxlci4KKyAgICAgICAgV2UgbmVlZCB0byBkbyBzdWNoIHJ1bnRpbWUgY2hl
Y2tzIGJlZm9yZSB3ZSBwYXNzIHRoZSBBUEk6OlVJQ2xpZW50IHRvIHRoZSBwYWdlLiBPdGhlcndp
c2UsIHF1ZXJ5aW5nCisgICAgICAgIEFQSTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCgpIHdpbGwgcmV0dXJuIHRoZSB3cm9uZyByZXN1bHQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwOiBNb2RpZmllZCBydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKSB0byB0YWtlIGEgU2VjdXJpdHlPcmlnaW5EYXRhIG9iamVjdC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOiBBZGQgZGVjbGFyYXRpb25zIGZv
ciBBUEk6OlVJQ2xpZW50IG92ZXJyaWRlczogY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KCkKKyAgICAgICAgYW5kIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpLiBBZGQgYSBiaXQg
dG8gbV9kZWxlZ2F0ZU1ldGhvZHMgYXMgdG8gd2hldGhlciB0aGUgQ29jb2EgZGVsZWdhdGUKKyAg
ICAgICAgcmVzcG9uZHMgdG8gc2VsZWN0b3IgLXdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlci4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOiBTZXQgdGhlIGFib3ZlIG1fZGVsZWdhdGVNZXRob2Rz
IGJpdCBpZiB0aGUgQ29jb2EgZGVsZWdhdGUgcmVzcG9uZHMKKyAgICAgICAgdG8gc2VsZWN0b3Ig
LXdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVk
QnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlci4KKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IFJldHVybiB3aGV0aGVy
IHRoZSBhYm92ZSBtX2RlbGVnYXRlTWV0aG9kcworICAgICAgICBiaXQgd2FzIHNldC4KKyAgICAg
ICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCk6IFR1cm4gYXJvdW5kIGFuZCBjYWxsIC13ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXIgKGlm
IGFwcGxpY2FibGUpLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6
IE1vZGlmaWVkIHRvIHRha2UgYSBTZWN1cml0eU9yaWdpbkRhdGEgb2JqZWN0CisgICAgICAgIGFu
ZCBwYXNzIGl0IHRvIEFQSTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgp
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgU2VjdXJpdHlPcmlnaW5EYXRhIGFyZ3Vt
ZW50IHRvIG1lc3NhZ2UgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLgorICAgICAgICBBbHNv
IHBhc3MgdGhlIG1lc3NhZ2UgZm9yIHRoZSBwYW5lbCBhcyB0aGUgbGFzdCBhcmd1bWVudCBzbyBh
cyB0byBtYWtlIHRoZSBvcmRlciBvZiBhcmd1bWVudHMgdG8gbWVzc2FnZQorICAgICAgICBSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBvcmRlciBvZiBh
cmd1bWVudHMgcGFzc2VkIHRvIG90aGVyIEphdmFTY3JpcHQgZGlhbG9nCisgICAgICAgIG1lc3Nh
Z2VzIChlLmcuIFJ1bkphdmFTY3JpcHRBbGVydCkgZm9yIGNvbnNpc3RlbmN5LgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBJ
bmNsdWRlIHRoZSBTZWN1cml0eU9yaWdpbkRhdGEgb2JqZWN0IGZvciB0aGUKKyAgICAgICAgZnJh
bWUgaW4gbWVzc2FnZSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwuCisKIDIwMTctMDUtMjUg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlQobV93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gbV9zZXNzaW9u
SUQpIGluIFBhZ2VDb25maWd1cmF0aW9uOjpzZXNzaW9uSUQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IDBhMjcwOWFlOWY4MDZhZWQ0NTBmNjBlYjA5
MWExZTI0ZjdiMDNiZGMuLmE1NWNmNTlhZTQyN2NkYzIxNjEwNGFjZGFiMjE3NWEwN2M1OGUyNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTExNSw3
ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93
RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3Qo
KTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VE
aWRTY3JvbGwoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBjNTc2ZTZhNTkyMmYxYTkxZDg5OTAxMmEzMTky
OTQxMjlmMjFiNzFjLi44ZTViNWIzZmYwMjgwMTM4ZjVmYTVhY2U3MjU0YzVhODMwMWU3YmNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTEwLDcgKzEx
MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQb2xpY3lDbGllbnRC
YXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlVUlDbGll
bnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFn
ZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJ
Q2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xp
ZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50
VjEwPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwg
V0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQ
YWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdl
VUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlD
bGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExPiBWZXJzaW9uczsKIH07CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKQEAgLTIwNTcsMTQgKzIwNTcsMjEgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tD
bGllbnQKIAogICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNv
bnN0IG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5ydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiB8fCBtX2NsaWVu
dC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgICAgICAgICByZXR1cm4gbV9jbGll
bnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEwIHx8
IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY2IHx8IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFn
ZVByb3h5KiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlCisgICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktp
dDo6V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0
eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOworICAgICAgICAgICAg
ICAgIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0b0FQSShwYWdlKSwgdG9B
UEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmdl
dCgpKSwgdG9BUEkobGlzdGVuZXIuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0
aFYxMCkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxS
ZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgICAgICBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMTAodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEko
ZnJhbWUpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCmluZGV4IDA4ODBhMGQ3MWE4
NWEwZThlODk3YTliZTAyMzEyODlhYWQzODBiYzIuLjJhMzZmNjJkNjFjMGVkNmVmZTg5N2Q5MjA2
NGJkMzg2MDI1YTE5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VVSUNsaWVudC5oCkBAIC04Miw3ICs4Miw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lckNhbGwoV0tQYWdlUnVuSmF2YVNjcmlwdFBy
CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVVJQ2xpZW50Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3Jl
YXRlTmV3UGFnZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwg
V0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxp
c3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZVJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1
cml0eU9yaWdpbiwgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVu
ZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgq
V0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2Vj
dXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyUmVmIGxp
c3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1
bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3Jp
Z2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bkphdmFT
Y3JpcHRQcm9tcHRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2Us
IFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9y
aWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExp
c3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTE0Miw2ICsx
NDIsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1KShXS1BhZ2VSZQogdHlwZWRlZiBib29sICgqV0tQYWdlUnVu
SmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1KShXS1BhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0
eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIFdLU3RyaW5nUmVmICgqV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjUpKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBX
S1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmln
aW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBi
b29sICgqV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNikoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQ
YWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMTApKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBs
aXN0ZW5lciwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgc3RydWN0IFdLUGFn
ZVVJQ2xpZW50QmFzZSB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtOTIwLDcgKzkyMSw3
IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjEwIHsKICAgICBXS0NoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbjsKICAgICAKICAgICAvLyBWZXJzaW9uIDcu
Ci0gICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgV0tQYWdl
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MTAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTA7
CiAgICAgV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CiAgICAgCiAgICAg
Ly8gVmVyc2lvbiA4LgpAQCAtOTM0LDcgKzkzNSwxMDUgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdl
VUlDbGllbnRWMTAgewogICAgIFdLSGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2VD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmlkZW9JblBpY3R1cmVJblBp
Y3R1cmVEaWRDaGFuZ2U7CiAgICAgV0tEaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdo
aWxlSW5Gb3JlZ3JvdW5kQ2FsbGJhY2sgICAgICAgICBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3Vy
Y2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOwogfSBXS1BhZ2VVSUNsaWVudFYxMDsKLSAgICAKKwor
dHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTEgeworICAgIFdLUGFnZVVJQ2xpZW50QmFz
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsK
KworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQYWdlOworICAgIFdLUGFnZVVJ
Q2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xvc2U7CisgICAgV0tQYWdlVGFrZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlRm9jdXM7CisgICAgV0tQYWdlRm9jdXNDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1
czsKKyAgICBXS1BhZ2VVbmZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuZm9jdXM7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICBydW5KYXZhU2NyaXB0
QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29u
ZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICBydW5KYXZh
U2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlU2V0U3RhdHVz
VGV4dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dGF0dXNUZXh0OworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VNaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZENh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlj
a2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlS2V5RXZl
bnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVL
ZXlFdmVudDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVXaGVlbEV2ZW50Q2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ7CisgICAgV0tQ
YWdlR2V0VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b29sYmFyc0FyZVZpc2libGU7CisgICAgV0tQYWdlU2V0VG9vbGJhcnNBcmVWaXNp
YmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb29sYmFyc0Fy
ZVZpc2libGU7CisgICAgV0tQYWdlR2V0TWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51QmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNl
dE1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TWVudUJhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRTdGF0dXNCYXJJc1Zpc2libGVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0JhcklzVmlzaWJs
ZTsKKyAgICBXS1BhZ2VTZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRJ
c1Jlc2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzUmVzaXphYmxlOworICAgIFdLUGFnZVNldElzUmVzaXphYmxlQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNSZXNpemFibGU7CisgICAgV0tQYWdl
R2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VTZXRXaW5kb3dGcmFtZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFdpbmRvd0ZyYW1lOworICAg
IFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjYgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjY7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWREcmF3OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURpZFNj
cm9sbDsKKyAgICBXS1BhZ2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKKyAgICBXS1BhZ2VS
dW5PcGVuUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ1bk9wZW5QYW5lbDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlSGVhZGVySGVpZ2h0Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJIZWlnaHQ7CisgICAg
V0tQYWdlRm9vdGVySGVpZ2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb290ZXJIZWlnaHQ7CisgICAgV0tQYWdlRHJhd0hlYWRlckNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3SGVhZGVyOworICAg
IFdLUGFnZURyYXdGb290ZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHJhd0Zvb3RlcjsKKyAgICBXS1BhZ2VQcmludEZyYW1lQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50RnJhbWU7CisgICAg
V0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5Nb2RhbDsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDE7IC8vIFVzZWQgdG8g
YmUgZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCisgICAgV0tQYWdlU2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzYXZl
RGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW50ZXJy
dXB0SmF2YVNjcmlwdF91bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS1Bh
Z2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSAgICAgICAgICAg
ICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKyAgICBXS1BhZ2VN
b3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5
Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWls
YWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKworICAgIC8v
IFZlcnNpb24gMi4KKyAgICBXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDb2xvclBpY2tlcjsKKyAgICBXS1BhZ2VI
aWRlQ29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhpZGVDb2xvclBpY2tlcjsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNs
aWNrZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZDsKKworICAgIC8vIFZlcnNpb24gMy4KKyAgICBXS1BhZ2VQaW5uZWRTdGF0ZURp
ZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFN0
YXRlRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA0LgorICAgIHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2Vk
MjsgLy8gVXNlZCB0byBiZSBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3Mu
CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnVzZWQzOyAvLyBVc2VkIHRvIGJlIGRpZFJlY29nbml6ZUxvbmdN
b3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNDsgLy8gVXNlZCB0byBiZSBkaWRDYW5j
ZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzLgorICAgIFdLUGFnZUlzUGxheWluZ0F1
ZGlvRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQbGF5
aW5nQXVkaW9EaWRDaGFuZ2U7CisKKyAgICAvLyBWZXJzaW9uIDUuCisgICAgV0tQYWdlRGVjaWRl
UG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VEaWRD
bGlja0F1dG9GaWxsQnV0dG9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZENsaWNrQXV0b0ZpbGxCdXR0b247CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxl
cnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmly
bUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRD
b25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFBy
b21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlTWVkaWFTZXNzaW9u
TWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNl
c3Npb25NZXRhZGF0YURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VD
cmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7Cisg
ICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0UHJvbXB0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRQcm9tcHQ7CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25G
b3JPcmlnaW47CisKKyAgICAvLyBWZXJzaW9uIDcuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTAgICBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTA7CisgICAgV0tGdWxsc2Ny
ZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAvLyBWZXJzaW9uIDguCisgICAg
V0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tEaWRMb3NlUG9pbnRlckxvY2tD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMb3NlUG9p
bnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tIYW5kbGVBdXRvcGxheUV2ZW50
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVBdXRv
cGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBXS0hhc1ZpZGVvSW5QaWN0dXJl
SW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZpZGVv
SW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlkRXhjZWVkQmFja2dyb3VuZFJl
c291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAgICAgICAgZGlkRXhjZWVkQmFj
a2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsKKworICAgIC8vIFZlcnNpb24g
MTEuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7Cit9IFdLUGFn
ZVVJQ2xpZW50VjExOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaAppbmRleCAyYzJkNjI2NzVmMjhmNDU3OWUyZDYxNjc2YjdhMjYxOWIwZmUyOGRmLi43NDQ0
Y2M2ZTMwYTYxMGZhMDdlNGU5MzM1MDVlNzVhZDQxYTllMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApA
QCAtNzAsNiArNzAsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAoV0tEcmFnRGVzdGluYXRp
b25BY3Rpb24pX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQpZHJhZ2dpbmdJbmZvIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2lu
ZG93RmVhdHVyZXMgKil3aW5kb3dGZWF0dXJlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
V0tXZWJWaWV3ICp3ZWJWaWV3KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFt
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50OihfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShpb3MoOS4wKSk7CiAt
IChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWN0aW9uc0ZvckVsZW1l
bnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9uczooTlNB
cnJheTxfV0tFbGVtZW50QWN0aW9uICo+ICopZGVmYXVsdEFjdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGZhYjMyZGFmYjJm
YjMxNjkwNzk0ZjQ1ZmVhMWU3NGNlNTVjZWFkMzQuLmUwYmVkYWI5YzdkMmIzNjQyY2M0M2MwMTRi
ZTMzMmU5YTBkZWE4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC03MDcsMTEgKzcwNywxMSBAQCBzdGF0aWMgdWludDMyX3QgY29u
dmVydFN5c3RlbUxheW91dERpcmVjdGlvbihOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
ZGlyZQogCiAtICh2b2lkKXNldFVJRGVsZWdhdGU6KGlkPFdLVUlEZWxlZ2F0ZT4pVUlEZWxlZ2F0
ZQogeworICAgIF91aURlbGVnYXRlLT5zZXREZWxlZ2F0ZShVSURlbGVnYXRlKTsKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKICAgICBfcGFnZS0+c2V0Q29udGV4dE1lbnVDbGllbnQoX3VpRGVs
ZWdhdGUtPmNyZWF0ZUNvbnRleHRNZW51Q2xpZW50KCkpOwogI2VuZGlmCiAgICAgX3BhZ2UtPnNl
dFVJQ2xpZW50KF91aURlbGVnYXRlLT5jcmVhdGVVSUNsaWVudCgpKTsKLSAgICBfdWlEZWxlZ2F0
ZS0+c2V0RGVsZWdhdGUoVUlEZWxlZ2F0ZSk7CiB9CiAKIC0gKGlkIDxfV0tJY29uTG9hZGluZ0Rl
bGVnYXRlPilfaWNvbkxvYWRpbmdEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IGVjNzFkNDVmM2EwYzliM2Vi
NWJkYTdiMTdkYjIzZTQ3MjliMTY5YjkuLjVmNDJjNWNjODFlYTQ3NzIzM2JmZmRlNDYyYjNhYjg0
ZDIyYjdmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVSUNsaWVudC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVBy
b3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9p
ZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgdm9pZCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEJlZm9y
ZVVubG9hZENvbmZpcm0obV93ZWJWaWV3LCBtZXNzYWdlLnV0ZjgoKSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IGYzZWYzM2EwNjI3
MTVmNWVkZDE0MTJiNDhhZmUyMTE2MDdmYTYzNTYuLjMwZjkwZjU0Nzc4YTBmZjdjZDE2MWFmNjFm
Y2FmMDEzMmM0MTMyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaApAQCAtODYsNiArODYsOCBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRBbGVydChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwg
RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBX
VEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlOworICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNv
bnN0IGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248dm9pZCAo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGV4Y2VlZGVk
RGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJl
bnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIEZ1bmN0aW9uPHZvaWQg
KHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZVByb3h5
KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1aW50NjRfdCBjdXJyZW50UXVvdGEs
IHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIEZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcg
bG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTEyNyw2ICsxMjksNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdSdW5KYXZh
U2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5k
bGVyIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdp
dGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdERlZmF1bHRU
ZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCB3
ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZy
YW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgYm9v
bCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxl
dGlvbkhhbmRsZXIgOiAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCmluZGV4IDQ0ODMwZDFlN2ZlZjkzZmMwOTVjMGY0NDJlNzIzZTQyYjk2
MzgwNzIuLjI5ZjljMzY0NDI2ZWQ4ZDk5ZjBmNzEwNDlkOTM1ZmE1ZWQ3NWE0M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC05Niw2ICs5Niw3
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlEZWxlZ2F0ZT4gZGVsZWdh
dGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRBbGVydFBhbmVs
V2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhN
ZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVs
V2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFBy
b21wdERlZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0VGV4
dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxl
dGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5k
bGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOildOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21w
bGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdl
YlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0
aW9uSGFuZGxlcjopXTsKQEAgLTMxMyw2ICszMTQsMzMgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdU
RjoKICAgICB9KS5nZXQoKV07CiB9CiAKK2Jvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
V2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXI7Cit9CisKK3ZvaWQg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1l
Q29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRy
PENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0
eU9yaWdpbigpKSkgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9t
Q2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIHJlc3VsdCkgeworICAgICAgICBpZiAo
Y2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CisgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pLmdldCgpXTsKK30KKwogdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94
eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxv
bmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1
bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVuY3Rpb248dm9pZCAodW5zaWduZWQg
bG9uZyBsb25nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5
T3JpZ2luQ3VycmVudFF1b3RhQ3VycmVudE9yaWdpblVzYWdlQ3VycmVudERhdGFiYXNlVXNhZ2VF
eHBlY3RlZFVzYWdlRGVjaXNpb25IYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDEzMzk4NDVhODJkNjVhODY4NTg1YmMxMWZjYjNlOTJmN2Q0
YTVhMGUuLjQ2YjgwZTA1MWU4MzlmMjY4MTNhOWRhN2Y5MWVmYWVjMGM0NWFjZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MDkyLDcgKzQwOTIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3Qg
SW50UmVjdCYgdmlld1JlY3QsIEludFJlYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50
NjRfdCBmcmFtZUlELCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJl
ZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6
OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAt
NDEwMCw3ICs0MTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGYKICAgICAvLyBTaW5jZSBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3
ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7CiAKLSAgICBtX3VpQ2xpZW50LT5ydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJhbWUsIFtyZXBseV0oYm9v
bCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVudC0+cnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9y
aWdpbiwgW3JlcGx5XShib29sIHJlc3VsdCkgeyByZXBseS0+c2VuZChyZXN1bHQpOyB9KTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBW
aWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYTczNjkxNDViOWY0NGNlYmQ4ZjI0ZTMxMTE5NWU1MTg4MDBlYTk4My4uOTcx
ZGZmZjhhMjk2ZjIwNDJlMDFmOTQyMTZkZjM5NWU4ZjIxYTJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICB2
b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQpOwogI2VuZGlmCi0gICAgdm9pZCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRf
dCBmcmFtZUlELCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4pOwogICAgIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVuT3BlblBh
bmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDVjY2MzMGYyODZj
ZjU2YTNmYTAzZmM4MTNlNWIyNGY0MmQwZDg1ZmQuLjdiOWEwZTIwOTg5ZDFkNzc2MTU5ZGNkNzhj
MmE3ZGFjZWQ0MGVhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzQsNyArNzQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKFdlYkNvcmU6OkludFJl
Y3QgcmVjdCkgLT4gKFdlYkNvcmU6OkludFJlY3Qgc2NyZWVuRnJhbWUpCiAjZW5kaWYKIAotICAg
IFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChTdHJpbmcgbWVzc2FnZSwgdWludDY0X3QgZnJh
bWVJRCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIERlbGF5ZWQKKyAgICBSdW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkgLT4gKGJvb2wgc2hv
dWxkQ2xvc2UpIERlbGF5ZWQKICAgICBQYWdlRGlkU2Nyb2xsKCkKICAgICBSdW5PcGVuUGFuZWwo
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyBwYXJh
bWV0ZXJzKQogICAgIFByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCkgLT4gKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCBkZDBkNGJjMDM1MGRmZjczMDY1MTUyODc4ODgyM2E2YzQ0M2Y2
NTM5Li4xZjVhOTRiZThhNTc5ZjZmZjFiMGNlOTM0ZTkzZGMyMzFiZjU0MGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1l
JgogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKG1lc3NhZ2UsIHdlYkZyYW1lLT5mcmFtZUlEKCkpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OlJlcGx5KHNob3VsZENsb3NlKSwgbV9w
YWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJ
bmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwod2ViRnJhbWUtPmZyYW1l
SUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoJmZyYW1lKSwgbWVzc2FnZSksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6UmVwbHko
c2hvdWxkQ2xvc2UpLCBtX3BhZ2UucGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6
U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHNob3VsZENsb3NlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAwOTAyMWNhMjFhMWUzNjBm
ZGViZjlhMzUwZjFmMzZlODI5YjFlZjguLjIzOTNjMGUxYzk2MTAxYmY4MjYzOTcwNGNmYjNlZWU5
OGU4YjE2ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NiBAQAorMjAxNy0wNS0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCBXS1VJRGVsZWdhdGUgU1BJOyBzdXBwb3J0IG9uYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwg
aW4gTWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjYwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCB0aGUgLXdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
V2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjogZGVsZWdhdGUK
KyAgICAgICAgbWV0aG9kIGluIE1pbmlCcm93c2VyIHRvIHNob3cgYSBjb25maXJtIHBhbmVsIGFz
IHRvIHdoZXRoZXIgdG8gYWxsb3cgdGhlIHVubG9hZGluZyBvZiB0aGUgcGFnZSB3aGVuCisgICAg
ICAgIHVubG9hZGluZyBpcyBpbml0aWF0ZWQgZm9yIGEgcGFnZSB0aGF0IHJlZ2lzdGVyZWQgYSBv
bmJlZm9yZXVubG9hZCBoYW5kbGVyLgorCisgICAgICAgIENvcHkgdGhlIGV4aXN0aW5nIHRlc3Qg
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vZGFsQWxlcnRzU1BJLmNwcCB0byBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwLAorICAg
ICAgICB1cGRhdGluZyBpdCB0byB0ZXN0IHRoZSBkZXByZWNhdGVkIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCBjYWxsYmFjaywgc28gYXMgdG8gZW5zdXJlIHdlIGhhdmUgbm90CisgICAgICAg
IGJyb2tlbiB0aGUgZGVwcmVjYXRlZCBXS1BhZ2VVSUNsaWVudFY1IGNhbGxiYWNrcy4gV0tQYWdl
VUlDbGllbnRWNSBpcyBzdGlsbCB1c2VkIGJ5IHRoZSBNYWMgQXBwIFN0b3JlCisgICAgICAgIGFz
IG9mIHRoZSB0aW1lIG9mIHdyaXRpbmcgOiguCisKKyAgICAgICAgUmUtcmVwdXJwb3NlIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHAgZm9yIG5ldyB1bml0cyB0
ZXN0cyB0aGF0IGV4ZXJjaXNlIHRoZQorICAgICAgICBXS1BhZ2VVSUNsaWVudFYxMCBjYWxsYmFj
a3M6IHJ1bkphdmFTY3JpcHR7QWxlcnQsIENvbmZpcm0sIFByb21wdH0gYW5kIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCgpLgorCisgICAgICAgIE1vZGlmeSBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbSB0byB0ZXN0IHRoYXQgdGhlIC13ZWJWaWV3OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6CisgICAgICAgIGlzIGNhbGxlZC4gQWxzbyBmaXggc3R5bGUgbml0OyBw
YXNzIFlFUyBpbnN0ZWFkIG9mIHRydWUgdG8gYXZvaWQgaW1wbGljaXQgY29udmVyc2lvbiBmcm9t
IGJvb2wgdG8gQk9PTAorICAgICAgICB3aGVuIGludm9raW5nIHRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIgaW4gLXdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOi4KKworICAgICAgICBVbnRpbCB3ZSBmaXggPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MTQ+IHRoZSB1bml0IHRl
c3QgaW4gVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0KKyAg
ICAgICAgZm9yIC13ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjogaXMgb25seSBydW4gb24gTWFjCisgICAg
ICAgIGFzIHdlIGRvIG5vdCBoYXZlIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzaW11bGF0ZSBhIGNs
aWNrL3RhcCBvbiBpT1MgYW5kIGEgY2xpY2svdGFwIG9uIHRoZSBwYWdlIHRoYXQKKyAgICAgICAg
cmVnaXN0ZXJlZCBhbiBvbmJlZm9yZXVubG9hZCBoYW5kbGVyIGlzIHJlcXVpcmVkIHRvIHNob3cg
YSBjb25maXJtIHBhbmVsIHdoZW4gdGhlIHBhZ2Ugd2lsbCBiZSB1bmxvYWRlZC4KKworICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAg
ICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IEltcGxlbWVudCBkZWxlZ2F0ZSBtZXRob2QuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJlY2F0ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcDogQ29w
aWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vZGFsQWxlcnRzU1BJ
LmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFuYWx5emVEaWFsb2dBcmd1bWVudHMpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5l
d1BhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL01vZGFsQWxlcnRzU1BJLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmFuYWx5emVEaWFsb2dBcmd1bWVudHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5r
LXdpbmRvdy5odG1sOiBSZWdpc3RlciBvbmJlZm9yZXVubG9hZCBoYW5kbGVyLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1tOgorICAgICAg
ICAoc2F3RGlhbG9nKToKKyAgICAgICAgKC1bTW9kYWxBbGVydHNVSURlbGVnYXRlIHdlYlZpZXc6
Y3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246d2luZG93
RmVhdHVyZXM6XSk6CisgICAgICAgICgtW01vZGFsQWxlcnRzVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJ1
bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUgd2ViVmll
dzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1l
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDE3LTA1LTI1ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMV0gaWZyYW1lcyBpbiBsYXllci1i
YWNrZWQgTlNWaWV3cyBhcmUgbm90IGNsZWFyZWQgYmV0d2VlbiBzdWNjZXNzaXZlIGRyYXdzCmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5t
CmluZGV4IGQwMWQwY2Q0MDQzYjk0MWM1ZTk4MmRiNjBjODVkOWYyNzM0MjcyOWEuLmJkZTdjNGMx
ZDQ3NjhkNjJhYTMzN2NkMzY4MjViZDg3MDY5ZDM0ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC01MTUsNiArNTE1LDIy
IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRo
UGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAgICAgfV07CiB9CiAKKy0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJh
bWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIE5TQWxlcnQgKmFsZXJ0ID0gW1tOU0FsZXJ0IGFsbG9jXSBpbml0XTsKKwor
ICAgIGFsZXJ0Lm1lc3NhZ2VUZXh0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJKYXZh
U2NyaXB0IGJlZm9yZSB1bmxvYWQgZGlhbG9nIGZyb20gJUAuIiwgW2ZyYW1lLnJlcXVlc3QuVVJM
IGFic29sdXRlU3RyaW5nXV07CisgICAgYWxlcnQuaW5mb3JtYXRpdmVUZXh0ID0gbWVzc2FnZTsK
KworICAgIFthbGVydCBhZGRCdXR0b25XaXRoVGl0bGU6QCJMZWF2ZSBQYWdlIl07CisgICAgW2Fs
ZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIlN0YXkgT24gUGFnZSJdOworCisgICAgW2FsZXJ0IGJl
Z2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpedm9p
ZCAoTlNNb2RhbFJlc3BvbnNlIHJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJlc3BvbnNlID09IE5TQWxlcnRGaXJzdEJ1dHRvblJldHVybik7CisgICAgICAgIFthbGVydCBy
ZWxlYXNlXTsKKyAgICB9XTsKK30KKwogLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdn
aW5nSW5mbzooaWQpZHJhZ2dpbmdJbmZvCiB7CiAgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uQW55OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNDZhNDhjMzMyN2ZkYjk0MDM3
MzBmNDMzNmQzOTU5ZGU3NjM4ODU1Li5mMjhmNmUyMjk4YjgxZDNmNDVmNjZkNWRhMzIwNTE5YzFm
YTIzYzBjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjAyLDYgKzYwMiw3IEBACiAJCUNF
MzUyNEY5MUIxNDQxQzQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UzNTI0
RjExQjE0MkI4RDAwMjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAg
Ki87IH07CiAJCUNFMzUyNEZBMUIxNDQzODkwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UzNTI0RjUxQjE0MkJCQjAwMjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRtbCAqLzsgfTsK
IAkJQ0VBNkNGMjgxOUNDRjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
QTZDRjI3MTlDQ0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCAqLzsg
fTsKKwkJQ0VCMjI0RUQxRUQ2NEE4NjAwM0QyODY2IC8qIERlcHJlY2F0ZWRWNU1vZGFsQWxlcnRz
U1BJLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
QjIyNEVDMUVENjRBODYwMDNEMjg2NiAvKiBEZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAg
Ki87IH07CiAJCUNFQkFCRDQ5MUI3MTY4N0MwMDUxMjEwQSAvKiBzaG91bGQtb3Blbi1leHRlcm5h
bC1zY2hlbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VCQUJENDgxQjcxNjg3QzAwNTEyMTBBIC8qIHNob3VsZC1vcGVuLWV4dGVy
bmFsLXNjaGVtZXMuaHRtbCAqLzsgfTsKIAkJQ0VCQ0ExMkYxRTNBNjYwMTAwQzczMjkzIC8qIE92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VCQ0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5Lm1tICovOyB9OwogCQlDRUJDQTEzODFFM0E4MDdBMDBDNzMy
OTMgLyogcGFnZS13aXRoLWNzcC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTM1MUUzQTgwMzQwMEM3MzI5MyAvKiBwYWdlLXdp
dGgtY3NwLmh0bWwgKi87IH07CkBAIC0xNTE1LDYgKzE1MTYsNyBAQAogCQlDRTUwRDhDODFDODY2
NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE9wdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPcGVuQW5kQ2xvc2VXaW5kb3cubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTZDRjI3MTlDQ0Y2OUQwMDY0RjVBNyAvKiBv
cGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLWFuZC1jbG9zZS13aW5k
b3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFQjIyNEVDMUVENjRBODYw
MDNEMjg2NiAvKiBEZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQkFCRDQ4MUI3MTY4N0MwMDUxMjEwQSAvKiBz
aG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2hvdWxkLW9wZW4t
ZXh0ZXJuYWwtc2NoZW1lcy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VC
Q0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQkNBMTM0
MUUzQTgwMzQwMEM3MzI5MyAvKiBwYWdlLXdpdGgtY3NwLWlmcmFtZS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gInBhZ2Utd2l0aC1jc3AtaWZyYW1lLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjA5Miw2ICsyMDk0LDcgQEAKIAkJCQkxQTUwQUExQzFBMkE0
RTcwMDBGNEMzNDUgLyogQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAgKi8sCiAJCQkJN0M4
RERBQTkxNzM1REUxRDAwRUE1QUMwIC8qIENsb3NlVGhlblRlcm1pbmF0ZS5jcHAgKi8sCiAJCQkJ
RjZGM0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovLAorCQkJCUNF
QjIyNEVDMUVENjRBODYwMDNEMjg2NiAvKiBEZXByZWNhdGVkVjVNb2RhbEFsZXJ0c1NQSS5jcHAg
Ki8sCiAJCQkJRjZCN0JFOTMxNzQ2OTFFRjAwOEEzNDQ1IC8qIERpZEFzc29jaWF0ZUZvcm1Db250
cm9scy5jcHAgKi8sCiAJCQkJRjZCN0JFOTIxNzQ2OTFFRjAwOEEzNDQ1IC8qIERpZEFzc29jaWF0
ZUZvcm1Db250cm9sc19CdW5kbGUuY3BwICovLAogCQkJCTkzMzE0MDdCMTdCNDQxOTAwMEYwODNC
MSAvKiBEaWROb3RIYW5kbGVLZXlEb3duLmNwcCAqLywKQEAgLTMxNDMsNiArMzE0Niw3IEBACiAJ
CQkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTc2NDMyMkQ3MUI2MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlU
eXBpbmdBdHRyaWJ1dGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUM2NERDMzIxRDc2MTk4QTAw
NEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDRUIyMjRFRDFFRDY0QTg2MDAzRDI4NjYgLyogRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJlY2F0ZWRWNU1vZGFsQWxlcnRzU1BJLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNTczNjcyMjc5YTcxMWQ1NTJkYTkzYTZmY2FiZTJmYmYwMTdhZDhmCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RlcHJlY2F0ZWRWNU1v
ZGFsQWxlcnRzU1BJLmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW5jbHVkZSAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJU
ZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tS
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpblJlZi5oPgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgdW5z
aWduZWQgZGlhbG9nc1NlZW47CitzdGF0aWMgY29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVk
ID0gNDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsID0gZGlhbG9nc0V4cGVjdGVkIC0gMTsKKworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVdlYlZpZXc+IG9wZW5lZFdlYlZpZXc7CisKK3N0YXRpYyB2b2lkIGFuYWx5emVEaWFsb2dB
cmd1bWVudHMoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmln
aW5SZWYgc2VjdXJpdHlPcmlnaW4gPSBudWxscHRyKQoreworICAgIEVYUEVDVF9FUShwYWdlLCBX
S0ZyYW1lR2V0UGFnZShmcmFtZSkpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9
IGFkb3B0V0soV0tGcmFtZUNvcHlVUkwoZnJhbWUpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gdXJsU3RyaW5nID0gYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsLmdldCgpKSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJhYm91dDpibGFuayIsIHVybFN0cmluZy5nZXQoKSk7CisKKyAg
ICBpZiAoc2VjdXJpdHlPcmlnaW4pIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHByb3RvY29sID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKHNlY3VyaXR5
T3JpZ2luKSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiZmlsZSIsIHByb3RvY29sLmdldCgp
KTsKKworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdCA9IGFkb3B0V0soV0tT
ZWN1cml0eU9yaWdpbkNvcHlIb3N0KHNlY3VyaXR5T3JpZ2luKSk7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiIiwgaG9zdC5nZXQoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKFdLU2VjdXJpdHlP
cmlnaW5HZXRQb3J0KHNlY3VyaXR5T3JpZ2luKSwgMCk7CisgICAgfQorCisgICAgKytkaWFsb2dz
U2VlbjsKKworICAgIC8vIFRlc3QgYmVmb3JldW5sb2FkIGxhc3QgYXMgd2UgbmVlZCB0byBuYXZp
Z2F0ZSB0aGUgd2luZG93IHRvIHRyaWdnZXIgaXQuCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRp
YWxvZ3NCZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpIHsKKyAgICAgICAgLy8gVXNlciBpbnRlcmFj
dGlvbiBpcyByZXF1aXJlZCB0byBzaG93IHRoZSBiZWZvcmV1bmxvYWQgcHJvbXB0LgorICAgICAg
ICBvcGVuZWRXZWJWaWV3LT5zaW11bGF0ZUJ1dHRvbkNsaWNrKGtXS0V2ZW50TW91c2VCdXR0b25M
ZWZ0QnV0dG9uLCA1LCA1LCAwKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGJsYW5r
RGF0YVVSTCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRhdGE6dGV4dC9o
dG1sIikpOworICAgICAgICBXS1BhZ2VMb2FkVVJMKHBhZ2UsIGJsYW5rRGF0YVVSTC5nZXQoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGlhbG9nc1NlZW4gPT0gZGlhbG9n
c0V4cGVjdGVkKQorICAgICAgICBkb25lID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCopCit7Cisg
ICAgYW5hbHl6ZURpYWxvZ0FyZ3VtZW50cyhwYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4pOwor
fQorCitzdGF0aWMgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFnZSwg
ZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBX
S1N0cmluZ1JlZiBydW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQqKQoreworICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMo
cGFnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
c3RhdGljIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdLUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCopCit7CisgICAgYW5hbHl6
ZURpYWxvZ0FyZ3VtZW50cyhwYWdlLCBmcmFtZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitz
dGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVz
dFJlZiB1cmxSZXF1ZXN0LCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pCit7CisgICAgRVhQRUNUX1RSVUUob3BlbmVkV2ViVmlldyA9PSBudWxscHRy
KTsKKworICAgIG9wZW5lZFdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmll
dz4ocGFnZSk7CisKKyAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OworICAgIG1lbXNldCgm
dWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOworCisgICAgdWlDbGllbnQuYmFzZS52ZXJz
aW9uID0gNTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0
QWxlcnQ7CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0gPSBydW5KYXZhU2NyaXB0
Q29uZmlybTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0ID0gcnVuSmF2YVNjcmlw
dFByb21wdDsKKyAgICB1aUNsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQob3Bl
bmVkV2ViVmlldy0+cGFnZSgpLCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICBXS1JldGFpbihvcGVu
ZWRXZWJWaWV3LT5wYWdlKCkpOworICAgIHJldHVybiBvcGVuZWRXZWJWaWV3LT5wYWdlKCk7Cit9
CisKK1RFU1QoV2ViS2l0MiwgRGVwcmVjYXRlZFY1TW9kYWxBbGVydHNTUEkpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGUo
KSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisKKyAgICBX
S1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OworICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVv
Zih1aUNsaWVudCkpOworCisgICAgdWlDbGllbnQuYmFzZS52ZXJzaW9uID0gNTsKKyAgICB1aUNs
aWVudC5jcmVhdGVOZXdQYWdlID0gY3JlYXRlTmV3UGFnZTsKKworICAgIFdLUGFnZVNldFBhZ2VV
SUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJnVpQ2xpZW50LmJhc2UpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgibW9k
YWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3ciLCAiaHRtbCIpKTsKKyAgICBXS1Bh
Z2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZk
b25lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW9kYWxBbGVydHNTUEkuY3Bw
CmluZGV4IDAyNzhmMDA1Yjk4NTA1ODgyZWI4YTRiMmFlMjhhNGUyN2UwNjU3OTcuLjg0MWMyZTg1
M2YwYmQ3YjJhOTZmMzJiZTAxOTdhM2EzODJkMDk3YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb2RhbEFsZXJ0c1NQSS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vZGFsQWxlcnRzU1BJLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCwxMCBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyBib29sIGRvbmU7CiBzdGF0aWMg
dW5zaWduZWQgZGlhbG9nc1NlZW47Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVj
dGVkID0gMzsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBkaWFsb2dzRXhwZWN0ZWQgPSA0Oworc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NCZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBkaWFs
b2dzRXhwZWN0ZWQgLSAxOworCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtV2ViVmll
dz4gb3BlbmVkV2ViVmlldzsKIAogc3RhdGljIHZvaWQgYW5hbHl6ZURpYWxvZ0FyZ3VtZW50cyhX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1
cml0eU9yaWdpbikKIHsKQEAgLTU2LDI4ICs1OSw0NCBAQCBzdGF0aWMgdm9pZCBhbmFseXplRGlh
bG9nQXJndW1lbnRzKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5
TwogCiAgICAgRVhQRUNUX0VRKFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KHNlY3VyaXR5T3JpZ2lu
KSwgMCk7CiAKLSAgICBpZiAoKytkaWFsb2dzU2VlbiA9PSBkaWFsb2dzRXhwZWN0ZWQpCisgICAg
KytkaWFsb2dzU2VlbjsKKworICAgIC8vIFRlc3QgYmVmb3JldW5sb2FkIGxhc3QgYXMgd2UgbmVl
ZCB0byBuYXZpZ2F0ZSB0aGUgd2luZG93IHRvIHRyaWdnZXIgaXQuCisgICAgaWYgKGRpYWxvZ3NT
ZWVuID09IGRpYWxvZ3NCZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpIHsKKyAgICAgICAgLy8gVXNl
ciBpbnRlcmFjdGlvbiBpcyByZXF1aXJlZCB0byBzaG93IHRoZSBiZWZvcmV1bmxvYWQgcHJvbXB0
LgorICAgICAgICBvcGVuZWRXZWJWaWV3LT5zaW11bGF0ZUJ1dHRvbkNsaWNrKGtXS0V2ZW50TW91
c2VCdXR0b25MZWZ0QnV0dG9uLCA1LCA1LCAwKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IGJsYW5rRGF0YVVSTCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRh
dGE6dGV4dC9odG1sIikpOworICAgICAgICBXS1BhZ2VMb2FkVVJMKHBhZ2UsIGJsYW5rRGF0YVVS
TC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGlhbG9nc1NlZW4g
PT0gZGlhbG9nc0V4cGVjdGVkKQogICAgICAgICBkb25lID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9p
ZCopCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3Jp
Z2luLCBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwg
Y29uc3Qgdm9pZCopCiB7CiAgICAgYW5hbHl6ZURpYWxvZ0FyZ3VtZW50cyhwYWdlLCBmcmFtZSwg
c2VjdXJpdHlPcmlnaW4pOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3Rl
bmVyQ2FsbChsaXN0ZW5lcik7CiB9CiAKLXN0YXRpYyBib29sIHJ1bkphdmFTY3JpcHRDb25maXJt
KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0
eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBydW5K
YXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkphdmFT
Y3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqKQogewog
ICAgIGFuYWx5emVEaWFsb2dBcmd1bWVudHMocGFnZSwgZnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRM
aXN0ZW5lckNhbGwobGlzdGVuZXIsIGZhbHNlKTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIHJ1
bkphdmFTY3JpcHRQcm9tcHQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmLCBXS1N0cmluZ1Jl
ZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwg
Y29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJp
dHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1
bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCopCiB7CiAgICAgYW5hbHl6ZURpYWxv
Z0FyZ3VtZW50cyhwYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4pOwotICAgIHJldHVybiBudWxs
cHRyOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lckNhbGwobGlz
dGVuZXIsIG51bGxwdHIpOwogfQogCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtV2Vi
Vmlldz4gb3BlbmVkV2ViVmlldzsKK3N0YXRpYyB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKikKK3sKKyAgICBh
bmFseXplRGlhbG9nQXJndW1lbnRzKHBhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbik7CisgICAg
V0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXJDYWxsKGxpc3Rl
bmVyLCBmYWxzZSk7Cit9CiAKIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3QsIFdLRGljdGlvbmFyeVJlZiBmZWF0
dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3Vz
ZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKQEAgLTg1LDEzICsxMDQsMTQgQEAg
c3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVl
c3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIAogICAgIG9wZW5lZFdlYlZpZXcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKLSAgICBXS1BhZ2VVSUNsaWVudFY1IHVp
Q2xpZW50OworICAgIFdLUGFnZVVJQ2xpZW50VjExIHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlD
bGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwogCi0gICAgdWlDbGllbnQuYmFzZS52ZXJzaW9u
ID0gNTsKKyAgICB1aUNsaWVudC5iYXNlLnZlcnNpb24gPSAxMTsKICAgICB1aUNsaWVudC5ydW5K
YXZhU2NyaXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7CiAgICAgdWlDbGllbnQucnVuSmF2
YVNjcmlwdENvbmZpcm0gPSBydW5KYXZhU2NyaXB0Q29uZmlybTsKICAgICB1aUNsaWVudC5ydW5K
YXZhU2NyaXB0UHJvbXB0ID0gcnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICB1aUNsaWVudC5ydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAK
ICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQob3BlbmVkV2ViVmlldy0+cGFnZSgpLCAmdWlDbGll
bnQuYmFzZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmst
d2luZG93Lmh0bWwKaW5kZXggZjc2Y2I2NTBiN2FiOGNiNTFkYTc5OTVjMWU5MWJkYzQwYTRkODAx
MS4uMTliZjM5ZDA3ZWY5MDE2MTE1ZGZlNGU0ZDlkNTJjYjNkMDQ5ZDEwMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0cy1pbi1uZXctYWJv
dXQtYmxhbmstd2luZG93Lmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL21vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwKQEAgLTcsNiAr
Nyw3IEBAIHZhciBuZXdXaW5kb3cgPSB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKTsKIG5ld1dp
bmRvdy5hbGVydCgiVGVzdGluZyBhbGVydCIpOwogbmV3V2luZG93LmNvbmZpcm0oIlRlc3Rpbmcg
Y29uZmlybSIpOwogbmV3V2luZG93LnByb21wdCgiVGVzdGluZyBwcm9tcHQiLCAiRGVmYXVsdCB0
ZXh0Iik7CituZXdXaW5kb3cub25iZWZvcmV1bmxvYWQgPSAoKSA9PiAiRGVmYXVsdCB0ZXh0IjsK
IAogPC9zY3JpcHQ+CiA8L2hlYWQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1tCmluZGV4IGFhMzg2YTlkNzJhMDA0N2Q0ZjZl
MWVjZmE1NDhjOGEwZWE5NWIxMTQuLjllNTg1ZTI1MDM2MGM1NTY4YjZkYzA1YzA4Y2RkYTQ0YTU2
Yzg5OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L01vZGFsQWxlcnRzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL01vZGFsQWxlcnRzLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
ICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURl
bGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgpAQCAtMzcsMTUg
KzM4LDMzIEBACiBAY2xhc3MgTW9kYWxBbGVydHNVSURlbGVnYXRlOwogCiBzdGF0aWMgYm9vbCBp
c0RvbmU7Ci1zdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gb3BlbmVkV2ViVmlldzsKK3N0YXRp
YyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gb3BlbmVkV2ViVmlldzsKIHN0YXRpYyBSZXRhaW5Q
dHI8TW9kYWxBbGVydHNVSURlbGVnYXRlPiBzaGFyZWRVSURlbGVnYXRlOwogCiBzdGF0aWMgdW5z
aWduZWQgZGlhbG9nc1NlZW47CisKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBndWFyZCBvbmNlIHdl
IGZpeCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjYxND4uCisj
aWYgUExBVEZPUk0oTUFDKQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxvZ3NFeHBlY3RlZCA9
IDQ7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgZGlhbG9nc0JlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCA9IGRpYWxvZ3NFeHBlY3RlZCAtIDE7CisjZWxzZQogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRp
YWxvZ3NFeHBlY3RlZCA9IDM7CisjZW5kaWYKIAogc3RhdGljIHZvaWQgc2F3RGlhbG9nKCkKIHsK
LSAgICBpZiAoKytkaWFsb2dzU2VlbiA9PSBkaWFsb2dzRXhwZWN0ZWQpCisgICAgKytkaWFsb2dz
U2VlbjsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBndWFyZCBvbmNlIHdlIGZpeCA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjYxND4uCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dzQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKSB7CisgICAgICAgIFtvcGVuZWRXZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Ok5TTWFr
ZVBvaW50KDUsIDUpIG51bWJlck9mQ2xpY2tzOjFdOworICAgICAgICBbb3BlbmVkV2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiZGF0YTp0ZXh0L2h0bWwiXV1dOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisKKyAgICBpZiAoZGlhbG9nc1NlZW4gPT0gZGlhbG9nc0V4cGVjdGVkKQogICAgICAgICBpc0Rv
bmUgPSB0cnVlOwogfQogCkBAIC01Niw3ICs3NSw3IEBAIHN0YXRpYyB2b2lkIHNhd0RpYWxvZygp
CiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2Vi
Vmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9u
QWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMK
IHsKLSAgICBvcGVuZWRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CiAgICAgW29wZW5lZFdlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzaGFy
ZWRVSURlbGVnYXRlLmdldCgpXTsKICAgICByZXR1cm4gb3BlbmVkV2ViVmlldy5nZXQoKTsKIH0K
QEAgLTc5LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgc2F3RGlhbG9nKCkKICAgICBFWFBFQ1RfU1RS
RVEoW1tbZnJhbWUgc2VjdXJpdHlPcmlnaW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CiAgICAg
RVhQRUNUX0VRKFtbZnJhbWUgc2VjdXJpdHlPcmlnaW5dIHBvcnRdLCAwKTsKIAotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRydWUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUyk7CiAgICAgc2F3
RGlhbG9nKCk7CiB9CiAKQEAgLTk0LDYgKzExMywyMCBAQCBzdGF0aWMgdm9pZCBzYXdEaWFsb2co
KQogICAgIHNhd0RpYWxvZygpOwogfQogCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZ3VhcmQgb25j
ZSB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MTQ+
LgorI2lmIFBMQVRGT1JNKE1BQykKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNz
YWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEVYUEVD
VF9TVFJFUShbW1tbZnJhbWUgcmVxdWVzdF0gVVJMXSBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmlu
Z10sICJhYm91dDpibGFuayIpOworICAgIEVYUEVDVF9TVFJFUShbW1tmcmFtZSBzZWN1cml0eU9y
aWdpbl0gcHJvdG9jb2xdIFVURjhTdHJpbmddLCAiZmlsZSIpOworICAgIEVYUEVDVF9TVFJFUShb
W1tmcmFtZSBzZWN1cml0eU9yaWdpbl0gaG9zdF0gVVRGOFN0cmluZ10sICIiKTsKKyAgICBFWFBF
Q1RfRVEoW1tmcmFtZSBzZWN1cml0eU9yaWdpbl0gcG9ydF0sIDApOworCisgICAgY29tcGxldGlv
bkhhbmRsZXIoTk8pOworICAgIHNhd0RpYWxvZygpOworfQorI2VuZGlmCisKIEBlbmQKIAogVEVT
VChXZWJLaXQyLCBNb2RhbEFsZXJ0cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311367</attachid>
            <date>2017-05-26 12:59:02 -0700</date>
            <delta_ts>2017-05-26 14:43:24 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>Bug172603_052617.patch</filename>
            <type>text/plain</type>
            <size>34288</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA0MDdjYzgxOWJjMjllZDUzNjdhOTk2MjZmNThkZGY5OThmNjM4Y2FjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDI2IE1heSAyMDE3IDEyOjU2OjUzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW1dLMl0g
QWRkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCBXS1VJRGVsZWdhdGUgU1BJOwogc3VwcG9y
dCBvbmJlZm9yZXVubG9hZCBjb25maXJtIHBhbmVsIGluIE1pbmlCcm93c2VyCiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjAzCgpSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KClNvdXJjZS9XZWJLaXQyOgoKQSBwYWdlIGxvYWRlZCBpbiBNaW5pQnJvd3NlciB1
c2luZyBXZWJLaXQyIGNhbm5vdCBzaG93IGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgKGJ5
IHJlZ2lzdGVyaW5nCmFuIG9uYmVmb3JldW5sb2FkIGV2ZW50IGhhbmRsZXIpIHdoZW4gaXQgaXMg
dW5sb2FkZWQuIFRoZSBzYW1lIHBhZ2UgbG9hZGVkIGluIE1pbmlCcm93c2VyIHVzaW5nCldlYktp
dDEgY2FuIHNob3cgc3VjaCBhIGNvbmZpcm0gcGFuZWwuIFdlIG5lZWQgdG8gYWRkIFdLVUlEZWxl
Z2F0ZSBTUEkgc28gdGhhdCBhbiBlbWJlZGRpbmcgY2xpZW50LApzdWNoIGFzIE1pbmlCcm93c2Vy
LCBjYW4gcmVnaXN0ZXIgdG8gcmVjZWl2ZSBhIGNhbGxiYWNrIHRvIHNob3cgYSBiZWZvcmV1bmxv
YWQgY29uZmlybSBwYW5lbC4KCiogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgooQVBJOjpV
SUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogTW9kaWZpZWQgdG8gdGFrZSBh
IFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QuIFRoaXMKbWFrZXMgdGhlIEFQSSBjb25zaXN0ZW50
IHdpdGggdGhlIGV4aXN0aW5nIEphdmFTY3JpcHQgZGlhbG9nIGNhbGxiYWNrcy4KKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CiogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6IEFkZCBTUEkgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UuCiogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CigtW1dLV2ViVmlldyBzZXRVSURlbGVnYXRlOl0pOiBTZXQgdGhlIGRlbGVnYXRlIG9mIFdl
YktpdDo6VUlEZWxlZ2F0ZSB0byB0aGUgc3BlY2lmaWVkIFdLVUlEZWxlZ2F0ZQpiZWZvcmUgd2Ug
c2V0IHRoZSBVSSBjbGllbnQgb24gdGhlIHBhZ2Ugc28gYXMgdG8gZW5zdXJlIHRoYXQgQVBJOjpV
SUNsaWVudCBjYWxsYmFja3MgdGhhdCBkZXBlbmQKLXJlc3BvbmRzVG9TZWxlY3RvcjogY2hlY2tz
IChlLmcuIEFQSTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSBy
ZXR1cm4gdGhlIGNvcnJlY3QKcmVzdWx0LiBUbyBlbGFib3JhdGUgZnVydGhlciwgYSBBUEk6OlVJ
Q2xpZW50IGNsaWVudCBtdXN0IG92ZXJyaWRlIGJvdGggY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKCkKYW5kIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIHRvIHN1cHBvcnQgcnVu
bmluZyBhIGJlZm9yZXVubG9hZCBjb25maXJtIGRpYWxvZy4gV2hlbiBtYXBwaW5nCnRoZSBDb2Nv
YSBTUEksIFdLVUlEZWxlZ2F0ZVByaXZhdGUsIHRvIEFQSTo6VUlDbGllbnQgd2UgaW1wbGVtZW50
IEFQSTo6VUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpCmluIHRlcm1z
IG9mIHdoZXRoZXIgdGhlIENvY29hIGRlbGVnYXRlIHJlc3BvbmRzIGF0IHJ1bnRpbWUgdG8gdGhl
IHNlbGVjdG9yIC13ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXIuCldlIG5lZWQgdG8gZG8gc3VjaCBy
dW50aW1lIGNoZWNrcyBiZWZvcmUgd2UgcGFzcyB0aGUgQVBJOjpVSUNsaWVudCB0byB0aGUgcGFn
ZS4gT3RoZXJ3aXNlLCBxdWVyeWluZwpBUEk6OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoKSB3aWxsIHJldHVybiB0aGUgd3JvbmcgcmVzdWx0LgoqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogTW9kaWZpZWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKCkgdG8gdGFrZSBhIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QuCiogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDogQWRkIGRlY2xhcmF0aW9ucyBmb3IgQVBJOjpVSUNsaWVudCBv
dmVycmlkZXM6IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpCmFuZCBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKS4gQWRkIGEgYml0IHRvIG1fZGVsZWdhdGVNZXRob2RzIGFzIHRv
IHdoZXRoZXIgdGhlIENvY29hIGRlbGVnYXRlCnJlc3BvbmRzIHRvIHNlbGVjdG9yIC13ZWJWaWV3
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXIuCiogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CihXZWJL
aXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKTogU2V0IHRoZSBhYm92ZSBtX2RlbGVnYXRlTWV0
aG9kcyBiaXQgaWYgdGhlIENvY29hIGRlbGVnYXRlIHJlc3BvbmRzCnRvIHNlbGVjdG9yIC13ZWJW
aWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJh
bWU6Y29tcGxldGlvbkhhbmRsZXIuCihXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5S
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBSZXR1cm4gd2hldGhlciB0aGUgYWJvdmUgbV9k
ZWxlZ2F0ZU1ldGhvZHMKYml0IHdhcyBzZXQuCihXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOiBUdXJuIGFyb3VuZCBhbmQgY2FsbCAtd2Vi
VmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyIChpZiBhcHBsaWNhYmxlKS4KKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwpOiBNb2RpZmllZCB0byB0YWtlIGEgU2VjdXJpdHlPcmlnaW5EYXRhIG9iamVjdAphbmQg
cGFzcyBpdCB0byBBUEk6OlVJQ2xpZW50OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKS4K
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjogQWRkIFNlY3VyaXR5T3JpZ2luRGF0YSBhcmd1bWVudCB0byBtZXNzYWdlIFJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbC4KQWxzbyBwYXNzIHRoZSBtZXNzYWdlIGZvciB0aGUgcGFu
ZWwgYXMgdGhlIGxhc3QgYXJndW1lbnQgc28gYXMgdG8gbWFrZSB0aGUgb3JkZXIgb2YgYXJndW1l
bnRzIHRvIG1lc3NhZ2UKUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsIG1vcmUgY2xvc2VseSBt
YXRjaCB0aGUgb3JkZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byBvdGhlciBKYXZhU2NyaXB0IGRp
YWxvZwptZXNzYWdlcyAoZS5nLiBSdW5KYXZhU2NyaXB0QWxlcnQpIGZvciBjb25zaXN0ZW5jeS4K
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CihXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogSW5jbHVkZSB0
aGUgU2VjdXJpdHlPcmlnaW5EYXRhIG9iamVjdCBmb3IgdGhlCmZyYW1lIGluIG1lc3NhZ2UgUnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLgoKVG9vbHM6CgpJbXBsZW1lbnQgdGhlIC13ZWJWaWV3
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6IGRlbGVnYXRlCm1ldGhvZCBpbiBNaW5pQnJvd3NlciB0byBzaG93
IGEgY29uZmlybSBwYW5lbCBhcyB0byB3aGV0aGVyIHRvIGFsbG93IHRoZSB1bmxvYWRpbmcgb2Yg
dGhlIHBhZ2Ugd2hlbgp1bmxvYWRpbmcgaXMgaW5pdGlhdGVkIGZvciBhIHBhZ2UgdGhhdCByZWdp
c3RlcmVkIGEgb25iZWZvcmV1bmxvYWQgaGFuZGxlci4KCk1vZGlmeSBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbSB0byB0ZXN0IHRoYXQgdGhlIC13ZWJWaWV3
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6CmlzIGNhbGxlZC4gQWxzbyBmaXggc3R5bGUgbml0OyBwYXNzIFlF
UyBpbnN0ZWFkIG9mIHRydWUgdG8gYXZvaWQgaW1wbGljaXQgY29udmVyc2lvbiBmcm9tIGJvb2wg
dG8gQk9PTAp3aGVuIGludm9raW5nIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgaW4gLXdlYlZpZXc6
cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOi4KClVudGlsIHdlIGZpeCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjYxND4gdGhlIHVuaXQgdGVzdCBpbiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbQpmb3IgLXdlYlZpZXc6cnVuSmF2YVNjcmlwdEFs
ZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOiBp
cyBvbmx5IHJ1biBvbiBNYWMKYXMgd2UgZG8gbm90IGhhdmUgdGhlIGluZnJhc3RydWN0dXJlIHRv
IHNpbXVsYXRlIGEgY2xpY2svdGFwIG9uIGlPUyBhbmQgYSBjbGljay90YXAgb24gdGhlIHBhZ2Ug
dGhhdApyZWdpc3RlcmVkIGFuIG9uYmVmb3JldW5sb2FkIGhhbmRsZXIgaXMgcmVxdWlyZWQgdG8g
c2hvdyBhIGNvbmZpcm0gcGFuZWwgd2hlbiB0aGUgcGFnZSB3aWxsIGJlIHVubG9hZGVkLgoKKiBN
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKC1bV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgoqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRv
dy5odG1sOgoqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1t
Ogooc2F3RGlhbG9nKToKKC1bTW9kYWxBbGVydHNVSURlbGVnYXRlIHdlYlZpZXc6Y3JlYXRlV2Vi
Vmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246d2luZG93RmVhdHVyZXM6
XSk6CigtW01vZGFsQWxlcnRzVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgoo
LVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUgd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgotLS0K
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTAg
KysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAgICAgICAgICAgfCAgMiArLQogLi4uL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oICAgICAgfCAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSAgICB8ICAyICstCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgICB8ICAyICstCiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oICAgICAgICB8ICAzICsrCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSAgICAgICB8IDI4ICsrKysrKysrKysrKwogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAgICAgICAgfCAgNCArLQog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICAgICAgfCAgMiAr
LQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiAgfCAg
MiArLQogLi4uL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCAg
fCAgMiArLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAyOSArKysrKysrKysrKysrCiBUb29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubSB8IDE2ICsrKysrKysKIC4uLi9tb2RhbC1hbGVydHMtaW4tbmV3LWFi
b3V0LWJsYW5rLXdpbmRvdy5odG1sICAgIHwgIDEgKwogLi4uL1Rlc3RzL1dlYktpdDJDb2NvYS9N
b2RhbEFsZXJ0cy5tbSAgICAgICAgICAgICAgfCA0MyArKysrKysrKysrKysrKysrLS0tCiAxNiBm
aWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGYxMzRiYmY4MTVmLi5kNjc3NTA1ZDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUz
IEBACisyMDE3LTA1LTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsIFdLVUlEZWxlZ2F0ZSBT
UEk7IHN1cHBvcnQgb25iZWZvcmV1bmxvYWQgY29uZmlybSBwYW5lbCBpbiBNaW5pQnJvd3Nlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBwYWdlIGxv
YWRlZCBpbiBNaW5pQnJvd3NlciB1c2luZyBXZWJLaXQyIGNhbm5vdCBzaG93IGEgYmVmb3JldW5s
b2FkIGNvbmZpcm0gcGFuZWwgKGJ5IHJlZ2lzdGVyaW5nCisgICAgICAgIGFuIG9uYmVmb3JldW5s
b2FkIGV2ZW50IGhhbmRsZXIpIHdoZW4gaXQgaXMgdW5sb2FkZWQuIFRoZSBzYW1lIHBhZ2UgbG9h
ZGVkIGluIE1pbmlCcm93c2VyIHVzaW5nCisgICAgICAgIFdlYktpdDEgY2FuIHNob3cgc3VjaCBh
IGNvbmZpcm0gcGFuZWwuIFdlIG5lZWQgdG8gYWRkIFdLVUlEZWxlZ2F0ZSBTUEkgc28gdGhhdCBh
biBlbWJlZGRpbmcgY2xpZW50LAorICAgICAgICBzdWNoIGFzIE1pbmlCcm93c2VyLCBjYW4gcmVn
aXN0ZXIgdG8gcmVjZWl2ZSBhIGNhbGxiYWNrIHRvIHNob3cgYSBiZWZvcmV1bmxvYWQgY29uZmly
bSBwYW5lbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IE1vZGlmaWVk
IHRvIHRha2UgYSBTZWN1cml0eU9yaWdpbkRhdGEgb2JqZWN0LiBUaGlzCisgICAgICAgIG1ha2Vz
IHRoZSBBUEkgY29uc2lzdGVudCB3aXRoIHRoZSBleGlzdGluZyBKYXZhU2NyaXB0IGRpYWxvZyBj
YWxsYmFja3MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oOiBBZGQgU1BJIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bFdpdGhNZXNzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpdKTogU2V0IHRoZSBkZWxlZ2F0
ZSBvZiBXZWJLaXQ6OlVJRGVsZWdhdGUgdG8gdGhlIHNwZWNpZmllZCBXS1VJRGVsZWdhdGUKKyAg
ICAgICAgYmVmb3JlIHdlIHNldCB0aGUgVUkgY2xpZW50IG9uIHRoZSBwYWdlIHNvIGFzIHRvIGVu
c3VyZSB0aGF0IEFQSTo6VUlDbGllbnQgY2FsbGJhY2tzIHRoYXQgZGVwZW5kCisgICAgICAgIC1y
ZXNwb25kc1RvU2VsZWN0b3I6IGNoZWNrcyAoZS5nLiBBUEk6OlVJQ2xpZW50OjpjYW5SdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoKSkgcmV0dXJuIHRoZSBjb3JyZWN0CisgICAgICAgIHJlc3Vs
dC4gVG8gZWxhYm9yYXRlIGZ1cnRoZXIsIGEgQVBJOjpVSUNsaWVudCBjbGllbnQgbXVzdCBvdmVy
cmlkZSBib3RoIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpCisgICAgICAgIGFuZCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSB0byBzdXBwb3J0IHJ1bm5pbmcgYSBiZWZvcmV1
bmxvYWQgY29uZmlybSBkaWFsb2cuIFdoZW4gbWFwcGluZworICAgICAgICB0aGUgQ29jb2EgU1BJ
LCBXS1VJRGVsZWdhdGVQcml2YXRlLCB0byBBUEk6OlVJQ2xpZW50IHdlIGltcGxlbWVudCBBUEk6
OlVJQ2xpZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQorICAgICAgICBpbiB0
ZXJtcyBvZiB3aGV0aGVyIHRoZSBDb2NvYSBkZWxlZ2F0ZSByZXNwb25kcyBhdCBydW50aW1lIHRv
IHRoZSBzZWxlY3RvciAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVz
c2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICBXZSBuZWVk
IHRvIGRvIHN1Y2ggcnVudGltZSBjaGVja3MgYmVmb3JlIHdlIHBhc3MgdGhlIEFQSTo6VUlDbGll
bnQgdG8gdGhlIHBhZ2UuIE90aGVyd2lzZSwgcXVlcnlpbmcKKyAgICAgICAgQVBJOjpVSUNsaWVu
dDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgd2lsbCByZXR1cm4gdGhlIHdyb25n
IHJlc3VsdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6
IE1vZGlmaWVkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIHRvIHRha2UgYSBTZWN1cml0
eU9yaWdpbkRhdGEgb2JqZWN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIEFQSTo6VUlDbGllbnQgb3ZlcnJpZGVzOiBjYW5SdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQorICAgICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKCkuIEFkZCBhIGJpdCB0byBtX2RlbGVnYXRlTWV0aG9kcyBhcyB0byB3aGV0aGVy
IHRoZSBDb2NvYSBkZWxlZ2F0ZQorICAgICAgICByZXNwb25kcyB0byBzZWxlY3RvciAtd2ViVmll
dzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1l
OmNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6IFNldCB0aGUg
YWJvdmUgbV9kZWxlZ2F0ZU1ldGhvZHMgYml0IGlmIHRoZSBDb2NvYSBkZWxlZ2F0ZSByZXNwb25k
cworICAgICAgICB0byBzZWxlY3RvciAtd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyLgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKTogUmV0dXJuIHdoZXRoZXIgdGhlIGFib3ZlIG1fZGVsZWdhdGVNZXRob2RzCisgICAg
ICAgIGJpdCB3YXMgc2V0LgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTogVHVybiBhcm91bmQgYW5kIGNhbGwgLXdlYlZp
ZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFt
ZTpjb21wbGV0aW9uSGFuZGxlciAoaWYgYXBwbGljYWJsZSkuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKTogTW9kaWZpZWQgdG8gdGFrZSBhIFNlY3VyaXR5T3JpZ2lu
RGF0YSBvYmplY3QKKyAgICAgICAgYW5kIHBhc3MgaXQgdG8gQVBJOjpVSUNsaWVudDo6cnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKCkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IEFkZCBT
ZWN1cml0eU9yaWdpbkRhdGEgYXJndW1lbnQgdG8gbWVzc2FnZSBSdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwuCisgICAgICAgIEFsc28gcGFzcyB0aGUgbWVzc2FnZSBmb3IgdGhlIHBhbmVsIGFz
IHRoZSBsYXN0IGFyZ3VtZW50IHNvIGFzIHRvIG1ha2UgdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyB0
byBtZXNzYWdlCisgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCBtb3JlIGNsb3Nl
bHkgbWF0Y2ggdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gb3RoZXIgSmF2YVNjcmlw
dCBkaWFsb2cKKyAgICAgICAgbWVzc2FnZXMgKGUuZy4gUnVuSmF2YVNjcmlwdEFsZXJ0KSBmb3Ig
Y29uc2lzdGVuY3kuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCk6IEluY2x1ZGUgdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmpl
Y3QgZm9yIHRoZQorICAgICAgICBmcmFtZSBpbiBtZXNzYWdlIFJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbC4KKwogMjAxNy0wNS0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNzQ3OS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCAwYTI3MDlhZTlmOC4u
YTU1Y2Y1OWFlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3Qgd2luZG93RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IHJldHVybiBXZWJDb3Jl
OjpGbG9hdFJlY3QoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGNhblJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVBy
b3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHBhZ2VEaWRTY3JvbGwoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBjNTc2ZTZhNTkyMi4uMzMz
MmYyMzczZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBA
IC0yMDYwLDcgKzIwNjAsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAg
cmV0dXJuIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9y
VXNlV2l0aFY2IHx8IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwg
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVz
dWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oCmluZGV4IDJjMmQ2MjY3NWYyLi43NDQ0Y2M2ZTMwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgK
QEAgLTcwLDYgKzcwLDggQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkKWRyYWdnaW5nSW5mbyBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dl
YlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihX
S05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dp
bmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KFdLV2ViVmlldyAqd2ViVmlldykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJh
bWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFu
ZGxlcjsKKwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0
aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwog
LSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFjdGlvbnNGb3JFbGVt
ZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6KE5T
QXJyYXk8X1dLRWxlbWVudEFjdGlvbiAqPiAqKWRlZmF1bHRBY3Rpb25zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmYWIzMmRhZmIy
Zi4uZTBiZWRhYjljN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC03MDcsMTEgKzcwNywxMSBAQCAtIChpZCA8V0tVSURlbGVnYXRl
PilVSURlbGVnYXRlCiAKIC0gKHZvaWQpc2V0VUlEZWxlZ2F0ZTooaWQ8V0tVSURlbGVnYXRlPilV
SURlbGVnYXRlCiB7CisgICAgX3VpRGVsZWdhdGUtPnNldERlbGVnYXRlKFVJRGVsZWdhdGUpOwog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIF9wYWdlLT5zZXRDb250ZXh0TWVudUNsaWVu
dChfdWlEZWxlZ2F0ZS0+Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQoKSk7CiAjZW5kaWYKICAgICBf
cGFnZS0+c2V0VUlDbGllbnQoX3VpRGVsZWdhdGUtPmNyZWF0ZVVJQ2xpZW50KCkpOwotICAgIF91
aURlbGVnYXRlLT5zZXREZWxlZ2F0ZShVSURlbGVnYXRlKTsKIH0KIAogLSAoaWQgPF9XS0ljb25M
b2FkaW5nRGVsZWdhdGU+KV9pY29uTG9hZGluZ0RlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggZWM3MWQ0NWYz
YTAuLjVmNDJjNWNjODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSosIEZ1bmN0
aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQg
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2Via2l0V2ViVmlld1J1bkphdmFTY3Jp
cHRCZWZvcmVVbmxvYWRDb25maXJtKG1fd2ViVmlldywgbWVzc2FnZS51dGY4KCkpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBmM2Vm
MzNhMDYyNy4uMzBmOTBmNTQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUuaApAQCAtODYsNiArODYsOCBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIHJ1
bkphdmFTY3JpcHRBbGVydChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOworICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCgpIGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGV4
Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIEZ1bmN0aW9u
PHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFn
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1aW50NjRfdCBjdXJyZW50
UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIEZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVk
IGxvbmcgbG9uZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTEyNyw2ICsxMjksNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdS
dW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRp
b25IYW5kbGVyIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdERl
ZmF1bHRUZXh0SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAg
Ym9vbCB3ZWJWaWV3UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0
ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAg
ICAgYm9vbCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1l
Q29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDQ0ODMwZDFlN2ZlLi4yOWY5YzM2NDQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTk2LDYg
Kzk2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBk
ZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFs
ZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOild
OwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybVBhbmVs
V2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOwog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxX
aXRoUHJvbXB0RGVmYXVsdFRleHRJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3Jp
cHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6ZGVmYXVsdFRleHQ6aW5pdGlhdGVkQnlGcmFtZTpj
b21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2VJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6KV07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFt
ZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOildOwpAQCAtMzEzLDYgKzMxNCwzMyBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOgogICAgIH0pLmdldCgpXTsKIH0KIAorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91
aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcjsKK30KKwor
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5
RnJhbWVDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURl
bGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBS
ZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZp
ZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSwgc2VjdXJpdHlPcmlnaW5EYXRhLnNl
Y3VyaXR5T3JpZ2luKCkpKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChCT09MKT46
OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKEJPT0wgcmVzdWx0KSB7CisgICAgICAg
IGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAg
Y2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSkuZ2V0KCldOworfQor
CiB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFn
ZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxv
bmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNh
Z2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBGdW5jdGlvbjx2b2lkICh1bnNp
Z25lZCBsb25nIGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVEYXRhYmFzZVF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW5DdXJyZW50UXVvdGFDdXJyZW50T3JpZ2luVXNhZ2VDdXJyZW50RGF0YWJhc2VV
c2FnZUV4cGVjdGVkVXNhZ2VEZWNpc2lvbkhhbmRsZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTMzOTg0NWE4MmQuLjQ2YjgwZTA1MWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA5Miw3ICs0MDky
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNv
bnN0IEludFJlY3QmIHZpZXdSZWN0LCBJbnRSZWMKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dWludDY0X3QgZnJhbWVJRCwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbDo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
bV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsK
QEAgLTQxMDAsNyArNDEwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmCiAgICAgLy8gU2lu
Y2UgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxv
b3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9w
cm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RvcCgpOwogCi0gICAgbV91aUNsaWVudC0+
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBbcmVwbHld
KGJvb2wgcmVzdWx0KSB7IHJlcGx5LT5zZW5kKHJlc3VsdCk7IH0pOworICAgIG1fdWlDbGllbnQt
PnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJp
dHlPcmlnaW4sIFtyZXBseV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29u
c3QgVmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGE3MzY5MTQ1YjlmLi45NzFkZmZmOGEyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBzY3JlZW5Qb2ludCwgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAg
ICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQpOwogI2VuZGlmCi0gICAgdm9p
ZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50
NjRfdCBmcmFtZUlELCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4pOwogICAg
IHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVuT3Bl
blBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDVjY2MzMGYy
ODZjLi43YjlhMGUyMDk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC03NCw3ICs3NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgUm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oV2ViQ29yZTo6SW50
UmVjdCByZWN0KSAtPiAoV2ViQ29yZTo6SW50UmVjdCBzY3JlZW5GcmFtZSkKICNlbmRpZgogCi0g
ICAgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCBm
cmFtZUlEKSAtPiAoYm9vbCBzaG91bGRDbG9zZSkgRGVsYXllZAorICAgIFJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoYm9vbCBz
aG91bGRDbG9zZSkgRGVsYXllZAogICAgIFBhZ2VEaWRTY3JvbGwoKQogICAgIFJ1bk9wZW5QYW5l
bCh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzIHBh
cmFtZXRlcnMpCiAgICAgUHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSAtPiAoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IGRkMGQ0YmMwMzUwLi4xZjVhOTRiZThhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50
OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFt
ZSYKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbChtZXNzYWdlLCB3ZWJGcmFtZS0+ZnJhbWVJRCgpKSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpSZXBseShzaG91bGRDbG9zZSksIG1f
cGFnZS5wYWdlSUQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6
SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpKQorICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHdlYkZyYW1lLT5mcmFt
ZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKCZmcmFtZSksIG1lc3NhZ2UpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OlJlcGx5
KHNob3VsZENsb3NlKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6
OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzaG91bGRDbG9zZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZDk4OTQ5ZmE2MC4uNWI2
MGRiNWY0ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wNS0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCBXS1VJRGVsZWdhdGUgU1BJOyBzdXBwb3J0IG9uYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwg
aW4gTWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjYwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCB0aGUgLXdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
V2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjogZGVsZWdhdGUK
KyAgICAgICAgbWV0aG9kIGluIE1pbmlCcm93c2VyIHRvIHNob3cgYSBjb25maXJtIHBhbmVsIGFz
IHRvIHdoZXRoZXIgdG8gYWxsb3cgdGhlIHVubG9hZGluZyBvZiB0aGUgcGFnZSB3aGVuCisgICAg
ICAgIHVubG9hZGluZyBpcyBpbml0aWF0ZWQgZm9yIGEgcGFnZSB0aGF0IHJlZ2lzdGVyZWQgYSBv
bmJlZm9yZXVubG9hZCBoYW5kbGVyLgorCisgICAgICAgIE1vZGlmeSBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbSB0byB0ZXN0IHRoYXQgdGhlIC13ZWJWaWV3
OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6CisgICAgICAgIGlzIGNhbGxlZC4gQWxzbyBmaXggc3R5bGUgbml0
OyBwYXNzIFlFUyBpbnN0ZWFkIG9mIHRydWUgdG8gYXZvaWQgaW1wbGljaXQgY29udmVyc2lvbiBm
cm9tIGJvb2wgdG8gQk9PTAorICAgICAgICB3aGVuIGludm9raW5nIHRoZSBjb21wbGV0aW9uIGhh
bmRsZXIgaW4gLXdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0
aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOi4KKworICAgICAgICBVbnRpbCB3ZSBmaXgg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MTQ+IHRoZSB1bml0
IHRlc3QgaW4gVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0K
KyAgICAgICAgZm9yIC13ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6
aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjogaXMgb25seSBydW4gb24gTWFjCisg
ICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzaW11bGF0ZSBh
IGNsaWNrL3RhcCBvbiBpT1MgYW5kIGEgY2xpY2svdGFwIG9uIHRoZSBwYWdlIHRoYXQKKyAgICAg
ICAgcmVnaXN0ZXJlZCBhbiBvbmJlZm9yZXVubG9hZCBoYW5kbGVyIGlzIHJlcXVpcmVkIHRvIHNo
b3cgYSBjb25maXJtIHBhbmVsIHdoZW4gdGhlIHBhZ2Ugd2lsbCBiZSB1bmxvYWRlZC4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0
cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW06CisgICAgICAgIChzYXdEaWFsb2cp
OgorICAgICAgICAoLVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUgd2ViVmlldzpjcmVhdGVXZWJWaWV3
V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0dXJlczpdKToK
KyAgICAgICAgKC1bTW9kYWxBbGVydHNVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdENv
bmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW01vZGFsQWxlcnRzVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisKIDIwMTctMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHRlc3QgcmVzb3VyY2VzIGJhY2sgaW50byBUZXN0V2ViS2l0
QVBJIENvcHkgUmVzb3VyY2VzIHBoYXNlCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9X
SzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IGQwMWQwY2Q0MDQzLi5iZGU3YzRjMWQ0
NyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KQEAgLTUxNSw2ICs1MTUsMjIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmEKICAg
ICB9XTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVk
QnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
Qk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgTlNBbGVydCAqYWxlcnQgPSBb
W05TQWxlcnQgYWxsb2NdIGluaXRdOworCisgICAgYWxlcnQubWVzc2FnZVRleHQgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkphdmFTY3JpcHQgYmVmb3JlIHVubG9hZCBkaWFsb2cgZnJv
bSAlQC4iLCBbZnJhbWUucmVxdWVzdC5VUkwgYWJzb2x1dGVTdHJpbmddXTsKKyAgICBhbGVydC5p
bmZvcm1hdGl2ZVRleHQgPSBtZXNzYWdlOworCisgICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRs
ZTpAIkxlYXZlIFBhZ2UiXTsKKyAgICBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOkAiU3RheSBP
biBQYWdlIl07CisKKyAgICBbYWxlcnQgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OnNlbGYud2lu
ZG93IGNvbXBsZXRpb25IYW5kbGVyOl52b2lkIChOU01vZGFsUmVzcG9uc2UgcmVzcG9uc2UpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2UgPT0gTlNBbGVydEZpcnN0QnV0dG9u
UmV0dXJuKTsKKyAgICAgICAgW2FsZXJ0IHJlbGVhc2VdOworICAgIH1dOworfQorCiAtIChXS0Ry
YWdEZXN0aW5hdGlvbkFjdGlvbilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihpZClkcmFnZ2luZ0luZm8KIHsKICAg
ICByZXR1cm4gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFu
ay13aW5kb3cuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1h
bGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sCmluZGV4IGY3NmNiNjUwYjdhLi4x
OWJmMzlkMDdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L21vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxh
bmstd2luZG93Lmh0bWwKQEAgLTcsNiArNyw3IEBAIHZhciBuZXdXaW5kb3cgPSB3aW5kb3cub3Bl
bigiYWJvdXQ6YmxhbmsiKTsKIG5ld1dpbmRvdy5hbGVydCgiVGVzdGluZyBhbGVydCIpOwogbmV3
V2luZG93LmNvbmZpcm0oIlRlc3RpbmcgY29uZmlybSIpOwogbmV3V2luZG93LnByb21wdCgiVGVz
dGluZyBwcm9tcHQiLCAiRGVmYXVsdCB0ZXh0Iik7CituZXdXaW5kb3cub25iZWZvcmV1bmxvYWQg
PSAoKSA9PiAiRGVmYXVsdCB0ZXh0IjsKIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1tCmlu
ZGV4IGFhMzg2YTlkNzJhLi45ZTU4NWUyNTAzNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXMuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Lmg+CkBAIC0zNywxNSArMzgsMzMgQEAKIEBjbGFzcyBNb2RhbEFsZXJ0c1VJRGVs
ZWdhdGU7CiAKIHN0YXRpYyBib29sIGlzRG9uZTsKLXN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3
PiBvcGVuZWRXZWJWaWV3Oworc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBvcGVuZWRX
ZWJWaWV3Owogc3RhdGljIFJldGFpblB0cjxNb2RhbEFsZXJ0c1VJRGVsZWdhdGU+IHNoYXJlZFVJ
RGVsZWdhdGU7CiAKIHN0YXRpYyB1bnNpZ25lZCBkaWFsb2dzU2VlbjsKKworLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGd1YXJkIG9uY2Ugd2UgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcyNjE0Pi4KKyNpZiBQTEFURk9STShNQUMpCitzdGF0aWMgY29uc3QgdW5z
aWduZWQgZGlhbG9nc0V4cGVjdGVkID0gNDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBkaWFsb2dz
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZGlhbG9nc0V4cGVjdGVkIC0gMTsKKyNlbHNlCiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gMzsKKyNlbmRpZgogCiBzdGF0
aWMgdm9pZCBzYXdEaWFsb2coKQogewotICAgIGlmICgrK2RpYWxvZ3NTZWVuID09IGRpYWxvZ3NF
eHBlY3RlZCkKKyAgICArK2RpYWxvZ3NTZWVuOworCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGd1YXJkIG9uY2Ugd2UgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcyNjE0Pi4KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRp
YWxvZ3NCZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpIHsKKyAgICAgICAgW29wZW5lZFdlYlZpZXcg
c2VuZENsaWNrc0F0UG9pbnQ6TlNNYWtlUG9pbnQoNSwgNSkgbnVtYmVyT2ZDbGlja3M6MV07Cisg
ICAgICAgIFtvcGVuZWRXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJkYXRhOnRleHQvaHRtbCJdXV07CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFsb2dz
RXhwZWN0ZWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTU2LDcgKzc1LDcgQEAg
QGltcGxlbWVudGF0aW9uIE1vZGFsQWxlcnRzVUlEZWxlZ2F0ZQogCiAtIChXS1dlYlZpZXcgKil3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFj
dGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJl
czooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzCiB7Ci0gICAgb3BlbmVkV2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgb3BlbmVk
V2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwog
ICAgIFtvcGVuZWRXZWJWaWV3IHNldFVJRGVsZWdhdGU6c2hhcmVkVUlEZWxlZ2F0ZS5nZXQoKV07
CiAgICAgcmV0dXJuIG9wZW5lZFdlYlZpZXcuZ2V0KCk7CiB9CkBAIC03OSw3ICs5OCw3IEBAIC0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6KE5TU3RyCiAgICAgRVhQRUNUX1NUUkVRKFtbW2ZyYW1lIHNlY3VyaXR5
T3JpZ2luXSBob3N0XSBVVEY4U3RyaW5nXSwgIiIpOwogICAgIEVYUEVDVF9FUShbW2ZyYW1lIHNl
Y3VyaXR5T3JpZ2luXSBwb3J0XSwgMCk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMpOwogICAgIHNhd0RpYWxvZygpOwogfQogCkBAIC05
NCw2ICsxMTMsMjAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkph
dmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3QKICAgICBzYXdEaWFsb2coKTsK
IH0KIAorLy8gRklYTUU6IFJlbW92ZSB0aGlzIGd1YXJkIG9uY2Ugd2UgZml4IDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjE0Pi4KKyNpZiBQTEFURk9STShNQUMp
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIHJl
c3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfU1RSRVEoW1tbW2ZyYW1lIHJl
cXVlc3RdIFVSTF0gYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddLCAiYWJvdXQ6YmxhbmsiKTsK
KyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlPcmlnaW5dIHByb3RvY29sXSBVVEY4
U3RyaW5nXSwgImZpbGUiKTsKKyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlPcmln
aW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CisgICAgRVhQRUNUX0VRKFtbZnJhbWUgc2VjdXJp
dHlPcmlnaW5dIHBvcnRdLCAwKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAgICBz
YXdEaWFsb2coKTsKK30KKyNlbmRpZgorCiBAZW5kCiAKIFRFU1QoV2ViS2l0MiwgTW9kYWxBbGVy
dHMpCi0tIAoyLjEyLjIgKEFwcGxlIEdpdC04NikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311377</attachid>
            <date>2017-05-26 14:43:26 -0700</date>
            <delta_ts>2017-05-26 16:46:50 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-172603-20170526144326.patch</filename>
            <type>text/plain</type>
            <size>28678</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjEzNGJiZjgxNWZlNTdj
ZDkxMGEyYTYxNzFiMDM4MzU5ODBmODNkYy4uZDFmNmZhZWViMTM3ODZiMmI1NWIzNWVkMzIzNWRl
MGE4NzkwY2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTA1LTI2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsIFdLVUlEZWxlZ2F0ZSBTUEk7IHN1cHBvcnQgb25iZWZvcmV1
bmxvYWQgY29uZmlybSBwYW5lbCBpbiBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBwYWdlIGxvYWRlZCBpbiBNaW5pQnJvd3NlciB1
c2luZyBXZWJLaXQyIGNhbm5vdCBzaG93IGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgKGJ5
IHJlZ2lzdGVyaW5nCisgICAgICAgIGFuIG9uYmVmb3JldW5sb2FkIGV2ZW50IGhhbmRsZXIpIHdo
ZW4gaXQgaXMgdW5sb2FkZWQuIFRoZSBzYW1lIHBhZ2UgbG9hZGVkIGluIE1pbmlCcm93c2VyIHVz
aW5nCisgICAgICAgIFdlYktpdDEgY2FuIHNob3cgc3VjaCBhIGNvbmZpcm0gcGFuZWwuIFdlIG5l
ZWQgdG8gYWRkIFdLVUlEZWxlZ2F0ZSBTUEkgc28gdGhhdCBhbiBlbWJlZGRpbmcgY2xpZW50LAor
ICAgICAgICBzdWNoIGFzIE1pbmlCcm93c2VyLCBjYW4gcmVnaXN0ZXIgdG8gcmVjZWl2ZSBhIGNh
bGxiYWNrIHRvIHNob3cgYSBiZWZvcmV1bmxvYWQgY29uZmlybSBwYW5lbC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IE1vZGlmaWVkIHRvIHRha2UgYSBTZWN1cml0eU9y
aWdpbkRhdGEgb2JqZWN0LiBUaGlzCisgICAgICAgIG1ha2VzIHRoZSBBUEkgY29uc2lzdGVudCB3
aXRoIHRoZSBleGlzdGluZyBKYXZhU2NyaXB0IGRpYWxvZyBjYWxsYmFja3MuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
OiBBZGQgU1BJIC1fd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVJRGVs
ZWdhdGU6XSk6IFNldCB0aGUgZGVsZWdhdGUgb2YgV2ViS2l0OjpVSURlbGVnYXRlIHRvIHRoZSBz
cGVjaWZpZWQgV0tVSURlbGVnYXRlCisgICAgICAgIGJlZm9yZSB3ZSBzZXQgdGhlIFVJIGNsaWVu
dCBvbiB0aGUgcGFnZSBzbyBhcyB0byBlbnN1cmUgdGhhdCBBUEk6OlVJQ2xpZW50IGNhbGxiYWNr
cyB0aGF0IGRlcGVuZAorICAgICAgICAtcmVzcG9uZHNUb1NlbGVjdG9yOiBjaGVja3MgKGUuZy4g
QVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpIHJldHVybiB0
aGUgY29ycmVjdAorICAgICAgICByZXN1bHQuIFRvIGVsYWJvcmF0ZSBmdXJ0aGVyLCBhIEFQSTo6
VUlDbGllbnQgY2xpZW50IG11c3Qgb3ZlcnJpZGUgYm90aCBjYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoKQorICAgICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgdG8g
c3VwcG9ydCBydW5uaW5nIGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gZGlhbG9nLiBXaGVuIG1hcHBp
bmcKKyAgICAgICAgdGhlIENvY29hIFNQSSwgV0tVSURlbGVnYXRlUHJpdmF0ZSwgdG8gQVBJOjpV
SUNsaWVudCB3ZSBpbXBsZW1lbnQgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKCkKKyAgICAgICAgaW4gdGVybXMgb2Ygd2hldGhlciB0aGUgQ29jb2EgZGVsZWdh
dGUgcmVzcG9uZHMgYXQgcnVudGltZSB0byB0aGUgc2VsZWN0b3IgLV93ZWJWaWV3OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlv
bkhhbmRsZXI6LgorICAgICAgICBXZSBuZWVkIHRvIGRvIHN1Y2ggcnVudGltZSBjaGVja3MgYmVm
b3JlIHdlIHBhc3MgdGhlIEFQSTo6VUlDbGllbnQgdG8gdGhlIHBhZ2UuIE90aGVyd2lzZSwgcXVl
cnlpbmcKKyAgICAgICAgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkgd2lsbCByZXR1cm4gdGhlIHdyb25nIHJlc3VsdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6IE1vZGlmaWVkIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgpIHRvIHRha2UgYSBTZWN1cml0eU9yaWdpbkRhdGEgb2JqZWN0LgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIEFQSTo6
VUlDbGllbnQgb3ZlcnJpZGVzOiBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQorICAg
ICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkuIEFkZCBhIGJpdCB0byBtX2Rl
bGVnYXRlTWV0aG9kcyBhcyB0byB3aGV0aGVyIHRoZSBDb2NvYSBkZWxlZ2F0ZQorICAgICAgICBy
ZXNwb25kcyB0byBzZWxlY3RvciAtX3dlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
V2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjouCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKTogU2V0IHRoZSBhYm92ZSBtX2RlbGVnYXRlTWV0aG9kcyBiaXQg
aWYgdGhlIENvY29hIGRlbGVnYXRlIHJlc3BvbmRzCisgICAgICAgIHRvIHNlbGVjdG9yIC1fd2Vi
VmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyOi4KKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IFJldHVybiB3aGV0aGVyIHRo
ZSBhYm92ZSBtX2RlbGVnYXRlTWV0aG9kcworICAgICAgICBiaXQgd2FzIHNldC4KKyAgICAgICAg
KFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCk6IFR1cm4gYXJvdW5kIGFuZCBjYWxsIC1fd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOiAoaWYg
YXBwbGljYWJsZSkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTog
TW9kaWZpZWQgdG8gdGFrZSBhIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QKKyAgICAgICAgYW5k
IHBhc3MgaXQgdG8gQVBJOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCku
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IEFkZCBTZWN1cml0eU9yaWdpbkRhdGEgYXJndW1l
bnQgdG8gbWVzc2FnZSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwuCisgICAgICAgIEFsc28g
cGFzcyB0aGUgbWVzc2FnZSBmb3IgdGhlIHBhbmVsIGFzIHRoZSBsYXN0IGFyZ3VtZW50IHNvIGFz
IHRvIG1ha2UgdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyB0byBtZXNzYWdlCisgICAgICAgIFJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCBtb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIG9yZGVyIG9mIGFy
Z3VtZW50cyBwYXNzZWQgdG8gb3RoZXIgSmF2YVNjcmlwdCBkaWFsb2cKKyAgICAgICAgbWVzc2Fn
ZXMgKGUuZy4gUnVuSmF2YVNjcmlwdEFsZXJ0KSBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IElu
Y2x1ZGUgdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QgZm9yIHRoZQorICAgICAgICBmcmFt
ZSBpbiBtZXNzYWdlIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbC4KKwogMjAxNy0wNS0yNiAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIxNzQ3OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaAppbmRleCAwYTI3MDlhZTlmODA2YWVkNDUwZjYwZWIwOTFhMWUyNGY3YjAz
YmRjLi5hNTVjZjU5YWU0MjdjZGMyMTYxMDRhY2RhYjIxNzVhMDdjNThlMjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0xMTUsNyArMTE1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKFdlYktp
dDo6V2ViUGFnZVByb3h5KikgeyByZXR1cm4gV2ViQ29yZTo6RmxvYXRSZWN0KCk7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKFdl
YktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKaW5kZXggYzU3NmU2YTU5MjJmMWE5MWQ4OTkwMTJhMzE5Mjk0MTI5ZjIxYjcx
Yy4uMzMzMmYyMzczZjgwMTdkZTFkNTk5ODdmNmVmZjU1N2IyMWQ5OTE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTIwNjAsNyArMjA2MCw3IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VV
SUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQucnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgfHwgbV9jbGllbnQu
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1lLCBG
dW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkgewogICAgICAgICAgICAgICAg
IFJlZlB0cjxSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbGlzdGVu
ZXIgPSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggMmMyZDYyNjc1
ZjI4ZjQ1NzllMmQ2MTY3NmI3YTI2MTliMGZlMjhkZi4uMWIyZTczYjNkYjQ1YjYyMGFkZGY0OWQ0
MzM2Y2U3OTU0OGE0ZDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTcwLDYgKzcwLDggQEAgc3Ry
dWN0IFVJRWRnZUluc2V0czsKIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0lu
Zm86KGlkKWRyYWdnaW5nSW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
Y3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICop
Y29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKilu
YXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93
RmVhdHVyZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLV2ViVmlldyAqd2ViVmlldykp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1
ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxl
bWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKIC0gKE5TQXJyYXkgKilfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBhY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gKillbGVtZW50IGRlZmF1bHRBY3Rpb25zOihOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24g
Kj4gKilkZWZhdWx0QWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZmFiMzJkYWZiMmZiMzE2OTA3OTRmNDVmZWExZTc0Y2U1
NWNlYWQzNC4uZTBiZWRhYjljN2QyYjM2NDJjYzQzYzAxNGJlMzMyZTlhMGRlYThjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTcw
NywxMSArNzA3LDExIEBAIC0gKGlkIDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIAogLSAodm9p
ZClzZXRVSURlbGVnYXRlOihpZDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIHsKKyAgICBfdWlE
ZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoVUlEZWxlZ2F0ZSk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgX3BhZ2UtPnNldENvbnRleHRNZW51Q2xpZW50KF91aURlbGVnYXRlLT5jcmVhdGVD
b250ZXh0TWVudUNsaWVudCgpKTsKICNlbmRpZgogICAgIF9wYWdlLT5zZXRVSUNsaWVudChfdWlE
ZWxlZ2F0ZS0+Y3JlYXRlVUlDbGllbnQoKSk7Ci0gICAgX3VpRGVsZWdhdGUtPnNldERlbGVnYXRl
KFVJRGVsZWdhdGUpOwogfQogCiAtIChpZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4pX2ljb25M
b2FkaW5nRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCBlYzcxZDQ1ZjNhMGM5YjNlYjViZGE3YjE3ZGIyM2U0
NzI5YjE2OWI5Li41ZjQyYzVjYzgxZWE0NzcyMzNiZmZkZTQ2MmIzYWI4NGQyMmI3ZmViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQu
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRCZWZvcmVVbmxvYWRDb25maXJt
KG1fd2ViVmlldywgbWVzc2FnZS51dGY4KCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBmM2VmMzNhMDYyNzE1ZjVlZGQxNDEyYjQ4
YWZlMjExNjA3ZmE2MzU2Li4zMGY5MGY1NDc3OGEwZmY3Y2QxNjFhZjYxZmNhZjAxMzJjNDEzMmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTg2
LDYgKzg2LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChj
b25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICAg
ICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdCBmaW5hbDsKKyAg
ICAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBj
dXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBGdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25n
IGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzTmVlZGVkLCBGdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMjcsNiArMTI5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0UGFu
ZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRp
YXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1
bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4dEluaXRpYXRlZEJ5
RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld1J1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25I
YW5kbGVyIDogMTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9w
ZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDog
MTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQppbmRleCA0NDgzMGQxZTdmZWY5M2ZjMDk1YzBmNDQyZTcyM2U0MmI5NjM4MDcyLi44MzQxYjcy
ODczZTFiZDBiMGFjM2E1NTY4YzRmY2JjNjUwNjE2MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtOTYsNiArOTYsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5p
dGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRl
ZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmlu
aXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4
dEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0
aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOild
OworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
KV07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVu
UGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOild
OwpAQCAtMzEzLDYgKzMxNCwzMyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOgogICAgIH0pLmdl
dCgpXTsKIH0KIAorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUlu
aXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcjsKK30KKwordm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5
KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogd2Vi
RnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUu
Z2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopKTsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzpt
X3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKndlYkZyYW1lUHJveHksIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSkg
Y29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXShCT09MIHJlc3VsdCkgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29t
cGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxD
b21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pLmdldCgpXTsKK30KKwogdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgV1RGOjpT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9y
aWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSwgRnVuY3Rpb248dm9pZCAodW5zaWduZWQgbG9uZyBsb25nKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVu
dFF1b3RhQ3VycmVudE9yaWdpblVzYWdlQ3VycmVudERhdGFiYXNlVXNhZ2VFeHBlY3RlZFVzYWdl
RGVjaXNpb25IYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDEzMzk4NDVhODJkNjVhODY4NTg1YmMxMWZjYjNlOTJmN2Q0YTVhMGUuLjQ2Yjgw
ZTA1MWU4MzlmMjY4MTNhOWRhN2Y5MWVmYWVjMGM0NWFjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MDkyLDcgKzQwOTIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgdmll
d1JlY3QsIEludFJlYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlE
LCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBs
eT4gcmVwbHkpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwpAQCAtNDEwMCw3ICs0MTAw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGYKICAgICAvLyBTaW5jZSBydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1
cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdG9wKCk7CiAKLSAgICBtX3VpQ2xpZW50LT5ydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJhbWUsIFtyZXBseV0oYm9vbCByZXN1bHQpIHsg
cmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CisgICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBzZWN1cml0eU9yaWdpbiwgW3JlcGx5
XShib29sIHJlc3VsdCkgeyByZXBseS0+c2VuZChyZXN1bHQpOyB9KTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJp
YnV0ZXMmIGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
YTczNjkxNDViOWY0NGNlYmQ4ZjI0ZTMxMTE5NWU1MTg4MDBlYTk4My4uOTcxZGZmZjhhMjk2ZjIw
NDJlMDFmOTQyMTZkZjM5NWU4ZjIxYTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFjY2Vz
c2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Q
b2ludCwgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICB2b2lkIHJvb3RWaWV3
VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBX
ZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQpOwogI2VuZGlmCi0gICAgdm9pZCBydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBS
ZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
OjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgZGlkQ2hhbmdl
Vmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwog
ICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNv
cmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDVjY2MzMGYyODZjZjU2YTNmYTAzZmM4
MTNlNWIyNGY0MmQwZDg1ZmQuLjdiOWEwZTIwOTg5ZDFkNzc2MTU5ZGNkNzhjMmE3ZGFjZWQ0MGVh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNzQsNyArNzQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IFJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKFdlYkNvcmU6OkludFJlY3QgcmVjdCkgLT4g
KFdlYkNvcmU6OkludFJlY3Qgc2NyZWVuRnJhbWUpCiAjZW5kaWYKIAotICAgIFJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChTdHJpbmcgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCkgLT4gKGJv
b2wgc2hvdWxkQ2xvc2UpIERlbGF5ZWQKKyAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIERl
bGF5ZWQKICAgICBQYWdlRGlkU2Nyb2xsKCkKICAgICBSdW5PcGVuUGFuZWwodWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQogICAg
IFByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCkgLT4gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAppbmRleCBkZDBkNGJjMDM1MGRmZjczMDY1MTUyODc4ODgyM2E2YzQ0M2Y2NTM5Li4xZjVhOTRi
ZThhNTc5ZjZmZjFiMGNlOTM0ZTkzZGMyMzFiZjU0MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lJgogCiAgICAgSGFu
Z0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAotICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1lc3Nh
Z2UsIHdlYkZyYW1lLT5mcmFtZUlEKCkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWw6OlJlcGx5KHNob3VsZENsb3NlKSwgbV9wYWdlLnBhZ2VJRCgp
LCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9y
bVByb2Nlc3NXaWxsU3VzcGVuZCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoJmZyYW1lKSwgbWVzc2FnZSksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6UmVwbHkoc2hvdWxkQ2xvc2Up
LCBtX3BhZ2UucGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRp
b246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIHNob3VsZENsb3NlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVkOTg5NDlmYTYwNmE0OTA3OTc5N2VmM2VkYzgz
MTMyMmNjNzhkZjQuLjIxZDY4MWJiMTM5MTk4NWQwZjYxODA3NDlmMzcxNDlmYjUxMTEyYjAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMiBAQAorMjAxNy0wNS0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gQWRkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCBXS1VJRGVsZWdh
dGUgU1BJOyBzdXBwb3J0IG9uYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgaW4gTWluaUJyb3dz
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjYw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgLV93ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6IGRlbGVnYXRlCisgICAgICAgIG1l
dGhvZCBpbiBNaW5pQnJvd3NlciB0byBzaG93IGEgY29uZmlybSBwYW5lbCBhcyB0byB3aGV0aGVy
IHRvIGFsbG93IHRoZSB1bmxvYWRpbmcgb2YgdGhlIHBhZ2Ugd2hlbgorICAgICAgICB1bmxvYWRp
bmcgaXMgaW5pdGlhdGVkIGZvciBhIHBhZ2UgdGhhdCByZWdpc3RlcmVkIGEgb25iZWZvcmV1bmxv
YWQgaGFuZGxlci4KKworICAgICAgICBNb2RpZnkgVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvTW9kYWxBbGVydHMubW0gdG8gdGVzdCB0aGF0IHRoZSAtX3dlYlZpZXc6cnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9u
SGFuZGxlcjoKKyAgICAgICAgaXMgY2FsbGVkLiBBbHNvIGZpeCBzdHlsZSBuaXQ7IHBhc3MgWUVT
IGluc3RlYWQgb2YgdHJ1ZSB0byBhdm9pZCBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gYm9vbCB0
byBCT09MCisgICAgICAgIHdoZW4gaW52b2tpbmcgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBpbiAt
X3dlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyOi4KKworICAgICAgICBVbnRpbCB3ZSBmaXggPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MTQ+IHRoZSB1bml0IHRlc3QgaW4g
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0KKyAgICAgICAg
Zm9yIC1fd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0
aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOiBpcyBvbmx5IHJ1biBvbiBNYWMKKyAgICAg
ICAgYXMgd2UgZG8gbm90IGhhdmUgdGhlIGluZnJhc3RydWN0dXJlIHRvIHNpbXVsYXRlIGEgY2xp
Y2svdGFwIG9uIGlPUyBhbmQgYSBjbGljay90YXAgb24gdGhlIHBhZ2UgdGhhdAorICAgICAgICBy
ZWdpc3RlcmVkIGFuIG9uYmVmb3JldW5sb2FkIGhhbmRsZXIgaXMgcmVxdWlyZWQgdG8gc2hvdyBh
IGNvbmZpcm0gcGFuZWwgd2hlbiB0aGUgcGFnZSB3aWxsIGJlIHVubG9hZGVkLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAg
ICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIF93ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0cy1p
bi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW06CisgICAgICAgIChzYXdEaWFsb2cpOgor
ICAgICAgICAoLVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUgd2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0
aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0dXJlczpdKToKKyAg
ICAgICAgKC1bTW9kYWxBbGVydHNVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdENvbmZp
cm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW01vZGFsQWxlcnRzVUlEZWxlZ2F0ZSBfd2ViVmlldzpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorCiAyMDE3LTA1LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCB0ZXN0IHJlc291cmNlcyBiYWNrIGludG8gVGVzdFdlYktpdEFQ
SSBDb3B5IFJlc291cmNlcyBwaGFzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBkMDFkMGNkNDA0M2I5NDFjNWU5ODJkYjYw
Yzg1ZDlmMjczNDI3MjlhLi5kMDkyMWVmZDEzN2NjZDFmYmU2ZTYzMTBiMTBmM2NjYTdiM2UyNDhi
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubQpAQCAtNTE1LDYgKzUxNSwyMiBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogICAg
IH1dOwogfQogCistICh2b2lkKV93ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVk
QnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
Qk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgTlNBbGVydCAqYWxlcnQgPSBb
W05TQWxlcnQgYWxsb2NdIGluaXRdOworCisgICAgYWxlcnQubWVzc2FnZVRleHQgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkphdmFTY3JpcHQgYmVmb3JlIHVubG9hZCBkaWFsb2cgZnJv
bSAlQC4iLCBbZnJhbWUucmVxdWVzdC5VUkwgYWJzb2x1dGVTdHJpbmddXTsKKyAgICBhbGVydC5p
bmZvcm1hdGl2ZVRleHQgPSBtZXNzYWdlOworCisgICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRs
ZTpAIkxlYXZlIFBhZ2UiXTsKKyAgICBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOkAiU3RheSBP
biBQYWdlIl07CisKKyAgICBbYWxlcnQgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OnNlbGYud2lu
ZG93IGNvbXBsZXRpb25IYW5kbGVyOl52b2lkIChOU01vZGFsUmVzcG9uc2UgcmVzcG9uc2UpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2UgPT0gTlNBbGVydEZpcnN0QnV0dG9u
UmV0dXJuKTsKKyAgICAgICAgW2FsZXJ0IHJlbGVhc2VdOworICAgIH1dOworfQorCiAtIChXS0Ry
YWdEZXN0aW5hdGlvbkFjdGlvbilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihpZClkcmFnZ2luZ0luZm8KIHsKICAg
ICByZXR1cm4gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFu
ay13aW5kb3cuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1h
bGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sCmluZGV4IGY3NmNiNjUwYjdhYjhj
YjUxZGE3OTk1YzFlOTFiZGM0MGE0ZDgwMTEuLjE5YmYzOWQwN2VmOTAxNjExNWRmZTRlNGQ5ZDUy
Y2IzZDA0OWQxMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJs
YW5rLXdpbmRvdy5odG1sCkBAIC03LDYgKzcsNyBAQCB2YXIgbmV3V2luZG93ID0gd2luZG93Lm9w
ZW4oImFib3V0OmJsYW5rIik7CiBuZXdXaW5kb3cuYWxlcnQoIlRlc3RpbmcgYWxlcnQiKTsKIG5l
d1dpbmRvdy5jb25maXJtKCJUZXN0aW5nIGNvbmZpcm0iKTsKIG5ld1dpbmRvdy5wcm9tcHQoIlRl
c3RpbmcgcHJvbXB0IiwgIkRlZmF1bHQgdGV4dCIpOworbmV3V2luZG93Lm9uYmVmb3JldW5sb2Fk
ID0gKCkgPT4gIkRlZmF1bHQgdGV4dCI7CiAKIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbQpp
bmRleCBhYTM4NmE5ZDcyYTAwNDdkNGY2ZTFlY2ZhNTQ4YzhhMGVhOTViMTE0Li5hNDQ2ZWU3YWIw
Y2IyOWViYzMzMTY4N2ZmZDdiNGMxYjY4YjUzYzU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Nb2RhbEFsZXJ0cy5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlcy5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXcuaD4KQEAgLTM3LDE1ICszOCwzMyBAQAogQGNsYXNzIE1vZGFsQWxlcnRzVUlE
ZWxlZ2F0ZTsKIAogc3RhdGljIGJvb2wgaXNEb25lOwotc3RhdGljIFJldGFpblB0cjxXS1dlYlZp
ZXc+IG9wZW5lZFdlYlZpZXc7CitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IG9wZW5l
ZFdlYlZpZXc7CiBzdGF0aWMgUmV0YWluUHRyPE1vZGFsQWxlcnRzVUlEZWxlZ2F0ZT4gc2hhcmVk
VUlEZWxlZ2F0ZTsKIAogc3RhdGljIHVuc2lnbmVkIGRpYWxvZ3NTZWVuOworCisvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgZ3VhcmQgb25jZSB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzI2MTQ+LgorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBkaWFsb2dzRXhwZWN0ZWQgPSA0Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRpYWxv
Z3NCZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBkaWFsb2dzRXhwZWN0ZWQgLSAxOworI2Vsc2UK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkaWFsb2dzRXhwZWN0ZWQgPSAzOworI2VuZGlmCiAKIHN0
YXRpYyB2b2lkIHNhd0RpYWxvZygpCiB7Ci0gICAgaWYgKCsrZGlhbG9nc1NlZW4gPT0gZGlhbG9n
c0V4cGVjdGVkKQorICAgICsrZGlhbG9nc1NlZW47CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgZ3VhcmQgb25jZSB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzI2MTQ+LgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoZGlhbG9nc1NlZW4gPT0g
ZGlhbG9nc0JlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkgeworICAgICAgICBbb3BlbmVkV2ViVmll
dyBzZW5kQ2xpY2tzQXRQb2ludDpOU01ha2VQb2ludCg1LCA1KSBudW1iZXJPZkNsaWNrczoxXTsK
KyAgICAgICAgW29wZW5lZFdlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImRhdGE6dGV4dC9odG1sIl1dXTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKGRpYWxvZ3NTZWVuID09IGRpYWxv
Z3NFeHBlY3RlZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNTYsNyArNzUsNyBA
QCBAaW1wbGVtZW50YXRpb24gTW9kYWxBbGVydHNVSURlbGVnYXRlCiAKIC0gKFdLV2ViVmlldyAq
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0
aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9u
QWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1
cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMKIHsKLSAgICBvcGVuZWRXZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBvcGVu
ZWRXZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CiAgICAgW29wZW5lZFdlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzaGFyZWRVSURlbGVnYXRlLmdldCgp
XTsKICAgICByZXR1cm4gb3BlbmVkV2ViVmlldy5nZXQoKTsKIH0KQEAgLTc5LDcgKzk4LDcgQEAg
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZTooTlNTdHIKICAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJp
dHlPcmlnaW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CiAgICAgRVhQRUNUX0VRKFtbZnJhbWUg
c2VjdXJpdHlPcmlnaW5dIHBvcnRdLCAwKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUyk7CiAgICAgc2F3RGlhbG9nKCk7CiB9CiAKQEAg
LTk0LDYgKzExMywyMCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVu
SmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIHNhd0RpYWxvZygp
OwogfQogCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZ3VhcmQgb25jZSB3ZSBmaXggPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MTQ+LgorI2lmIFBMQVRGT1JNKE1B
QykKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09M
IHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfU1RSRVEoW1tbW2ZyYW1l
IHJlcXVlc3RdIFVSTF0gYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddLCAiYWJvdXQ6Ymxhbmsi
KTsKKyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlPcmlnaW5dIHByb3RvY29sXSBV
VEY4U3RyaW5nXSwgImZpbGUiKTsKKyAgICBFWFBFQ1RfU1RSRVEoW1tbZnJhbWUgc2VjdXJpdHlP
cmlnaW5dIGhvc3RdIFVURjhTdHJpbmddLCAiIik7CisgICAgRVhQRUNUX0VRKFtbZnJhbWUgc2Vj
dXJpdHlPcmlnaW5dIHBvcnRdLCAwKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAg
ICBzYXdEaWFsb2coKTsKK30KKyNlbmRpZgorCiBAZW5kCiAKIFRFU1QoV2ViS2l0MiwgTW9kYWxB
bGVydHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311396</attachid>
            <date>2017-05-26 16:46:52 -0700</date>
            <delta_ts>2017-05-26 20:08:05 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-172603-20170526164651.patch</filename>
            <type>text/plain</type>
            <size>28679</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjEzNGJiZjgxNWZlNTdj
ZDkxMGEyYTYxNzFiMDM4MzU5ODBmODNkYy4uZDFmNmZhZWViMTM3ODZiMmI1NWIzNWVkMzIzNWRl
MGE4NzkwY2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTA1LTI2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsIFdLVUlEZWxlZ2F0ZSBTUEk7IHN1cHBvcnQgb25iZWZvcmV1
bmxvYWQgY29uZmlybSBwYW5lbCBpbiBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBwYWdlIGxvYWRlZCBpbiBNaW5pQnJvd3NlciB1
c2luZyBXZWJLaXQyIGNhbm5vdCBzaG93IGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gcGFuZWwgKGJ5
IHJlZ2lzdGVyaW5nCisgICAgICAgIGFuIG9uYmVmb3JldW5sb2FkIGV2ZW50IGhhbmRsZXIpIHdo
ZW4gaXQgaXMgdW5sb2FkZWQuIFRoZSBzYW1lIHBhZ2UgbG9hZGVkIGluIE1pbmlCcm93c2VyIHVz
aW5nCisgICAgICAgIFdlYktpdDEgY2FuIHNob3cgc3VjaCBhIGNvbmZpcm0gcGFuZWwuIFdlIG5l
ZWQgdG8gYWRkIFdLVUlEZWxlZ2F0ZSBTUEkgc28gdGhhdCBhbiBlbWJlZGRpbmcgY2xpZW50LAor
ICAgICAgICBzdWNoIGFzIE1pbmlCcm93c2VyLCBjYW4gcmVnaXN0ZXIgdG8gcmVjZWl2ZSBhIGNh
bGxiYWNrIHRvIHNob3cgYSBiZWZvcmV1bmxvYWQgY29uZmlybSBwYW5lbC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IE1vZGlmaWVkIHRvIHRha2UgYSBTZWN1cml0eU9y
aWdpbkRhdGEgb2JqZWN0LiBUaGlzCisgICAgICAgIG1ha2VzIHRoZSBBUEkgY29uc2lzdGVudCB3
aXRoIHRoZSBleGlzdGluZyBKYXZhU2NyaXB0IGRpYWxvZyBjYWxsYmFja3MuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
OiBBZGQgU1BJIC1fd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVJRGVs
ZWdhdGU6XSk6IFNldCB0aGUgZGVsZWdhdGUgb2YgV2ViS2l0OjpVSURlbGVnYXRlIHRvIHRoZSBz
cGVjaWZpZWQgV0tVSURlbGVnYXRlCisgICAgICAgIGJlZm9yZSB3ZSBzZXQgdGhlIFVJIGNsaWVu
dCBvbiB0aGUgcGFnZSBzbyBhcyB0byBlbnN1cmUgdGhhdCBBUEk6OlVJQ2xpZW50IGNhbGxiYWNr
cyB0aGF0IGRlcGVuZAorICAgICAgICAtcmVzcG9uZHNUb1NlbGVjdG9yOiBjaGVja3MgKGUuZy4g
QVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpIHJldHVybiB0
aGUgY29ycmVjdAorICAgICAgICByZXN1bHQuIFRvIGVsYWJvcmF0ZSBmdXJ0aGVyLCBhIEFQSTo6
VUlDbGllbnQgY2xpZW50IG11c3Qgb3ZlcnJpZGUgYm90aCBjYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoKQorICAgICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgdG8g
c3VwcG9ydCBydW5uaW5nIGEgYmVmb3JldW5sb2FkIGNvbmZpcm0gZGlhbG9nLiBXaGVuIG1hcHBp
bmcKKyAgICAgICAgdGhlIENvY29hIFNQSSwgV0tVSURlbGVnYXRlUHJpdmF0ZSwgdG8gQVBJOjpV
SUNsaWVudCB3ZSBpbXBsZW1lbnQgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKCkKKyAgICAgICAgaW4gdGVybXMgb2Ygd2hldGhlciB0aGUgQ29jb2EgZGVsZWdh
dGUgcmVzcG9uZHMgYXQgcnVudGltZSB0byB0aGUgc2VsZWN0b3IgLV93ZWJWaWV3OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlv
bkhhbmRsZXI6LgorICAgICAgICBXZSBuZWVkIHRvIGRvIHN1Y2ggcnVudGltZSBjaGVja3MgYmVm
b3JlIHdlIHBhc3MgdGhlIEFQSTo6VUlDbGllbnQgdG8gdGhlIHBhZ2UuIE90aGVyd2lzZSwgcXVl
cnlpbmcKKyAgICAgICAgQVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkgd2lsbCByZXR1cm4gdGhlIHdyb25nIHJlc3VsdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6IE1vZGlmaWVkIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCgpIHRvIHRha2UgYSBTZWN1cml0eU9yaWdpbkRhdGEgb2JqZWN0LgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIEFQSTo6
VUlDbGllbnQgb3ZlcnJpZGVzOiBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQorICAg
ICAgICBhbmQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkuIEFkZCBhIGJpdCB0byBtX2Rl
bGVnYXRlTWV0aG9kcyBhcyB0byB3aGV0aGVyIHRoZSBDb2NvYSBkZWxlZ2F0ZQorICAgICAgICBy
ZXNwb25kcyB0byBzZWxlY3RvciAtX3dlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
V2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjouCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKTogU2V0IHRoZSBhYm92ZSBtX2RlbGVnYXRlTWV0aG9kcyBiaXQg
aWYgdGhlIENvY29hIGRlbGVnYXRlIHJlc3BvbmRzCisgICAgICAgIHRvIHNlbGVjdG9yIC1fd2Vi
VmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyOi4KKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IFJldHVybiB3aGV0aGVyIHRo
ZSBhYm92ZSBtX2RlbGVnYXRlTWV0aG9kcworICAgICAgICBiaXQgd2FzIHNldC4KKyAgICAgICAg
KFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCk6IFR1cm4gYXJvdW5kIGFuZCBjYWxsIC1fd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOiAoaWYg
YXBwbGljYWJsZSkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKTog
TW9kaWZpZWQgdG8gdGFrZSBhIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QKKyAgICAgICAgYW5k
IHBhc3MgaXQgdG8gQVBJOjpVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCku
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IEFkZCBTZWN1cml0eU9yaWdpbkRhdGEgYXJndW1l
bnQgdG8gbWVzc2FnZSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwuCisgICAgICAgIEFsc28g
cGFzcyB0aGUgbWVzc2FnZSBmb3IgdGhlIHBhbmVsIGFzIHRoZSBsYXN0IGFyZ3VtZW50IHNvIGFz
IHRvIG1ha2UgdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyB0byBtZXNzYWdlCisgICAgICAgIFJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCBtb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIG9yZGVyIG9mIGFy
Z3VtZW50cyBwYXNzZWQgdG8gb3RoZXIgSmF2YVNjcmlwdCBkaWFsb2cKKyAgICAgICAgbWVzc2Fn
ZXMgKGUuZy4gUnVuSmF2YVNjcmlwdEFsZXJ0KSBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6IElu
Y2x1ZGUgdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBvYmplY3QgZm9yIHRoZQorICAgICAgICBmcmFt
ZSBpbiBtZXNzYWdlIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbC4KKwogMjAxNy0wNS0yNiAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIxNzQ3OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaAppbmRleCAwYTI3MDlhZTlmODA2YWVkNDUwZjYwZWIwOTFhMWUyNGY3YjAz
YmRjLi5hNTVjZjU5YWU0MjdjZGMyMTYxMDRhY2RhYjIxNzVhMDdjNThlMjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0xMTUsNyArMTE1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKFdlYktp
dDo6V2ViUGFnZVByb3h5KikgeyByZXR1cm4gV2ViQ29yZTo6RmxvYXRSZWN0KCk7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgRnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKFdl
YktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKaW5kZXggYzU3NmU2YTU5MjJmMWE5MWQ4OTkwMTJhMzE5Mjk0MTI5ZjIxYjcx
Yy4uMzMzMmYyMzczZjgwMTdkZTFkNTk5ODdmNmVmZjU1N2IyMWQ5OTE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTIwNjAsNyArMjA2MCw3IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VV
SUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQucnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgfHwgbV9jbGllbnQu
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIGZyYW1lLCBG
dW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkgewogICAgICAgICAgICAgICAg
IFJlZlB0cjxSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbGlzdGVu
ZXIgPSBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggMmMyZDYyNjc1
ZjI4ZjQ1NzllMmQ2MTY3NmI3YTI2MTliMGZlMjhkZi4uMWIyZTczYjNkYjQ1YjYyMGFkZGY0OWQ0
MzM2Y2U3OTU0OGE0ZDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTcwLDYgKzcwLDggQEAgc3Ry
dWN0IFVJRWRnZUluc2V0czsKIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0lu
Zm86KGlkKWRyYWdnaW5nSW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
Y3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICop
Y29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKilu
YXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93
RmVhdHVyZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLV2ViVmlldyAqd2ViVmlldykp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1
ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxl
bWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKIC0gKE5TQXJyYXkgKilfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBhY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gKillbGVtZW50IGRlZmF1bHRBY3Rpb25zOihOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24g
Kj4gKilkZWZhdWx0QWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZmFiMzJkYWZiMmZiMzE2OTA3OTRmNDVmZWExZTc0Y2U1
NWNlYWQzNC4uZTBiZWRhYjljN2QyYjM2NDJjYzQzYzAxNGJlMzMyZTlhMGRlYThjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTcw
NywxMSArNzA3LDExIEBAIC0gKGlkIDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIAogLSAodm9p
ZClzZXRVSURlbGVnYXRlOihpZDxXS1VJRGVsZWdhdGU+KVVJRGVsZWdhdGUKIHsKKyAgICBfdWlE
ZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoVUlEZWxlZ2F0ZSk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgX3BhZ2UtPnNldENvbnRleHRNZW51Q2xpZW50KF91aURlbGVnYXRlLT5jcmVhdGVD
b250ZXh0TWVudUNsaWVudCgpKTsKICNlbmRpZgogICAgIF9wYWdlLT5zZXRVSUNsaWVudChfdWlE
ZWxlZ2F0ZS0+Y3JlYXRlVUlDbGllbnQoKSk7Ci0gICAgX3VpRGVsZWdhdGUtPnNldERlbGVnYXRl
KFVJRGVsZWdhdGUpOwogfQogCiAtIChpZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4pX2ljb25M
b2FkaW5nRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCBlYzcxZDQ1ZjNhMGM5YjNlYjViZGE3YjE3ZGIyM2U0
NzI5YjE2OWI5Li41ZjQyYzVjYzgxZWE0NzcyMzNiZmZkZTQ2MmIzYWI4NGQyMmI3ZmViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQu
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRCZWZvcmVVbmxvYWRDb25maXJt
KG1fd2ViVmlldywgbWVzc2FnZS51dGY4KCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBmM2VmMzNhMDYyNzE1ZjVlZGQxNDEyYjQ4
YWZlMjExNjA3ZmE2MzU2Li4zMGY5MGY1NDc3OGEwZmY3Y2QxNjFhZjYxZmNhZjAxMzJjNDEzMmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTg2
LDYgKzg2LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBGdW5jdGlvbjx2b2lkIChj
b25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICAg
ICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdCBmaW5hbDsKKyAg
ICAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBj
dXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBGdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25n
IGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzTmVlZGVkLCBGdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMjcsNiArMTI5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0UGFu
ZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRp
YXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1
bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4dEluaXRpYXRlZEJ5
RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld1J1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25I
YW5kbGVyIDogMTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9w
ZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDog
MTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQppbmRleCA0NDgzMGQxZTdmZWY5M2ZjMDk1YzBmNDQyZTcyM2U0MmI5NjM4MDcyLi5jOGVjYWI1
MTYyMDQ2YmQ5ZGUzNTc4OGNkZWFmZGNiZjcyYjYxNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtOTYsNiArOTYsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlSW5p
dGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRl
ZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmlu
aXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHREZWZhdWx0VGV4
dEluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0
aFByb21wdDpkZWZhdWx0VGV4dDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOild
OworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
KV07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVu
UGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOild
OwpAQCAtMzEzLDYgKzMxNCwzMyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZh
U2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOgogICAgIH0pLmdl
dCgpXTsKIH0KIAorYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUlu
aXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlcjsKK30KKwordm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5
KiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSogd2Vi
RnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbkRhdGEsIEZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZUluaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUu
Z2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6
bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVz
c2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCp3ZWJGcmFtZVByb3h5LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkp
IGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQgKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0oQk9PTCByZXN1bHQpIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNv
bXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KS5nZXQoKV07Cit9CisKIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdURjo6
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGV4cGVjdGVkVXNhZ2UsIEZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbkN1cnJl
bnRRdW90YUN1cnJlbnRPcmlnaW5Vc2FnZUN1cnJlbnREYXRhYmFzZVVzYWdlRXhwZWN0ZWRVc2Fn
ZURlY2lzaW9uSGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCAxMzM5ODQ1YTgyZDY1YTg2ODU4NWJjMTFmY2IzZTkyZjdkNGE1YTBlLi40NmI4
MGUwNTFlODM5ZjI2ODEzYTlkYTdmOTFlZmFlYzBjNDVhY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA5Miw3ICs0MDkyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHZp
ZXdSZWN0LCBJbnRSZWMKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJ
RCwgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbDo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVw
bHk+IHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKQEAgLTQxMDAsNyArNDEw
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmCiAgICAgLy8gU2luY2UgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0
dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RvcCgpOwogCi0gICAgbV91aUNsaWVudC0+cnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKHRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBbcmVwbHldKGJvb2wgcmVzdWx0KSB7
IHJlcGx5LT5zZW5kKHJlc3VsdCk7IH0pOworICAgIG1fdWlDbGllbnQtPnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSwgc2VjdXJpdHlPcmlnaW4sIFtyZXBs
eV0oYm9vbCByZXN1bHQpIHsgcmVwbHktPnNlbmQocmVzdWx0KTsgfSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgVmlld3BvcnRBdHRy
aWJ1dGVzJiBhdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGE3MzY5MTQ1YjlmNDRjZWJkOGYyNGUzMTExOTVlNTE4ODAwZWE5ODMuLjk3MWRmZmY4YTI5NmYy
MDQyZTAxZjk0MjE2ZGYzOTVlOGYyMWEyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVu
UG9pbnQsIFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgdm9pZCByb290Vmll
d1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwg
V2ViQ29yZTo6SW50UmVjdCYgcmVzdWx0KTsKICNlbmRpZgotICAgIHZvaWQgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bDo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIGRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsK
ICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKICAgICB2b2lkIHJ1bk9wZW5QYW5lbCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJD
b3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1Y2NjMzBmMjg2Y2Y1NmEzZmEwM2Zj
ODEzZTViMjRmNDJkMGQ4NWZkLi43YjlhMGUyMDk4OWQxZDc3NjE1OWRjZDc4YzJhN2RhY2VkNDBl
YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTc0LDcgKzc0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBSb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihXZWJDb3JlOjpJbnRSZWN0IHJlY3QpIC0+
IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQogI2VuZGlmCiAKLSAgICBSdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoU3RyaW5nIG1lc3NhZ2UsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChi
b29sIHNob3VsZENsb3NlKSBEZWxheWVkCisgICAgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJh
bWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+IChib29sIHNob3VsZENsb3NlKSBE
ZWxheWVkCiAgICAgUGFnZURpZFNjcm9sbCgpCiAgICAgUnVuT3BlblBhbmVsKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgc3RydWN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MgcGFyYW1ldGVycykKICAg
ICBQcmludEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIC0+ICgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggZGQwZDRiYzAzNTBkZmY3MzA2NTE1Mjg3ODg4MjNhNmM0NDNmNjUzOS4uMWY1YTk0
YmU4YTU3OWY2ZmYxYjBjZTkzNGU5M2RjMjMxYmY1NDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSYKIAogICAgIEhh
bmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtZXNz
YWdlLCB3ZWJGcmFtZS0+ZnJhbWVJRCgpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOjpSZXBseShzaG91bGRDbG9zZSksIG1fcGFnZS5wYWdlSUQo
KSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZv
cm1Qcm9jZXNzV2lsbFN1c3BlbmQpKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKCZmcmFtZSksIG1lc3NhZ2UpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OlJlcGx5KHNob3VsZENsb3Nl
KSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0
aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJldHVybiBzaG91bGRDbG9zZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZDk4OTQ5ZmE2MDZhNDkwNzk3OTdlZjNlZGM4
MzEzMjJjYzc4ZGY0Li4yMWQ2ODFiYjEzOTE5ODVkMGY2MTgwNzQ5ZjM3MTQ5ZmI1MTExMmIwIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMTctMDUtMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIFtXSzJdIEFkZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgV0tVSURlbGVn
YXRlIFNQSTsgc3VwcG9ydCBvbmJlZm9yZXVubG9hZCBjb25maXJtIHBhbmVsIGluIE1pbmlCcm93
c2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2
MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgdGhlIC1fd2ViVmlldzpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOiBkZWxlZ2F0ZQorICAgICAgICBt
ZXRob2QgaW4gTWluaUJyb3dzZXIgdG8gc2hvdyBhIGNvbmZpcm0gcGFuZWwgYXMgdG8gd2hldGhl
ciB0byBhbGxvdyB0aGUgdW5sb2FkaW5nIG9mIHRoZSBwYWdlIHdoZW4KKyAgICAgICAgdW5sb2Fk
aW5nIGlzIGluaXRpYXRlZCBmb3IgYSBwYWdlIHRoYXQgcmVnaXN0ZXJlZCBhIG9uYmVmb3JldW5s
b2FkIGhhbmRsZXIuCisKKyAgICAgICAgTW9kaWZ5IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL01vZGFsQWxlcnRzLm1tIHRvIHRlc3QgdGhhdCB0aGUgLV93ZWJWaWV3OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlv
bkhhbmRsZXI6CisgICAgICAgIGlzIGNhbGxlZC4gQWxzbyBmaXggc3R5bGUgbml0OyBwYXNzIFlF
UyBpbnN0ZWFkIG9mIHRydWUgdG8gYXZvaWQgaW1wbGljaXQgY29udmVyc2lvbiBmcm9tIGJvb2wg
dG8gQk9PTAorICAgICAgICB3aGVuIGludm9raW5nIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgaW4g
LV93ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjouCisKKyAgICAgICAgVW50aWwgd2UgZml4IDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjE0PiB0aGUgdW5pdCB0ZXN0IGlu
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1tCisgICAgICAg
IGZvciAtX3dlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjogaXMgb25seSBydW4gb24gTWFjCisgICAg
ICAgIGFzIHdlIGRvIG5vdCBoYXZlIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzaW11bGF0ZSBhIGNs
aWNrL3RhcCBvbiBpT1MgYW5kIGEgY2xpY2svdGFwIG9uIHRoZSBwYWdlIHRoYXQKKyAgICAgICAg
cmVnaXN0ZXJlZCBhbiBvbmJlZm9yZXVubG9hZCBoYW5kbGVyIGlzIHJlcXVpcmVkIHRvIHNob3cg
YSBjb25maXJtIHBhbmVsIHdoZW4gdGhlIHBhZ2Ugd2lsbCBiZSB1bmxvYWRlZC4KKworICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAg
ICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBfd2ViVmlldzpydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tb2RhbC1hbGVydHMt
aW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1tOgorICAgICAgICAoc2F3RGlhbG9nKToK
KyAgICAgICAgKC1bTW9kYWxBbGVydHNVSURlbGVnYXRlIHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dp
dGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246d2luZG93RmVhdHVyZXM6XSk6Cisg
ICAgICAgICgtW01vZGFsQWxlcnRzVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRDb25m
aXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtNb2RhbEFsZXJ0c1VJRGVsZWdhdGUgX3dlYlZpZXc6cnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKwogMjAxNy0wNS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgdGVzdCByZXNvdXJjZXMgYmFjayBpbnRvIFRlc3RXZWJLaXRB
UEkgQ29weSBSZXNvdXJjZXMgcGhhc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dL
MkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggZDAxZDBjZDQwNDNiOTQxYzVlOTgyZGI2
MGM4NWQ5ZjI3MzQyNzI5YS4uZDA5MjFlZmQxMzdjY2QxZmJlNmU2MzEwYjEwZjNjY2E3YjNlMjQ4
YiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KQEAgLTUxNSw2ICs1MTUsMjIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmEKICAg
ICB9XTsKIH0KIAorLSAodm9pZClfd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRl
ZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIE5TQWxlcnQgKmFsZXJ0ID0g
W1tOU0FsZXJ0IGFsbG9jXSBpbml0XTsKKworICAgIGFsZXJ0Lm1lc3NhZ2VUZXh0ID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJKYXZhU2NyaXB0IGJlZm9yZSB1bmxvYWQgZGlhbG9nIGZy
b20gJUAuIiwgW2ZyYW1lLnJlcXVlc3QuVVJMIGFic29sdXRlU3RyaW5nXV07CisgICAgYWxlcnQu
aW5mb3JtYXRpdmVUZXh0ID0gbWVzc2FnZTsKKworICAgIFthbGVydCBhZGRCdXR0b25XaXRoVGl0
bGU6QCJMZWF2ZSBQYWdlIl07CisgICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIlN0YXkg
T24gUGFnZSJdOworCisgICAgW2FsZXJ0IGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndp
bmRvdyBjb21wbGV0aW9uSGFuZGxlcjpedm9pZCAoTlNNb2RhbFJlc3BvbnNlIHJlc3BvbnNlKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlID09IE5TQWxlcnRGaXJzdEJ1dHRv
blJldHVybik7CisgICAgICAgIFthbGVydCByZWxlYXNlXTsKKyAgICB9XTsKK30KKwogLSAoV0tE
cmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQpZHJhZ2dpbmdJbmZvCiB7CiAg
ICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxh
bmstd2luZG93Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwt
YWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbAppbmRleCBmNzZjYjY1MGI3YWI4
Y2I1MWRhNzk5NWMxZTkxYmRjNDBhNGQ4MDExLi4xOWJmMzlkMDdlZjkwMTYxMTVkZmU0ZTRkOWQ1
MmNiM2QwNDlkMTAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1i
bGFuay13aW5kb3cuaHRtbApAQCAtNyw2ICs3LDcgQEAgdmFyIG5ld1dpbmRvdyA9IHdpbmRvdy5v
cGVuKCJhYm91dDpibGFuayIpOwogbmV3V2luZG93LmFsZXJ0KCJUZXN0aW5nIGFsZXJ0Iik7CiBu
ZXdXaW5kb3cuY29uZmlybSgiVGVzdGluZyBjb25maXJtIik7CiBuZXdXaW5kb3cucHJvbXB0KCJU
ZXN0aW5nIHByb21wdCIsICJEZWZhdWx0IHRleHQiKTsKK25ld1dpbmRvdy5vbmJlZm9yZXVubG9h
ZCA9ICgpID0+ICJEZWZhdWx0IHRleHQiOwogCiA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL01vZGFsQWxlcnRzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0K
aW5kZXggYWEzODZhOWQ3MmEwMDQ3ZDRmNmUxZWNmYTU0OGM4YTBlYTk1YjExNC4uYTQ0NmVlN2Fi
MGNiMjllYmMzMzE2ODdmZmQ3YjRjMWI2OGI1M2M1NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTW9kYWxBbGVydHMubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXMu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3Lmg+CkBAIC0zNywxNSArMzgsMzMgQEAKIEBjbGFzcyBNb2RhbEFsZXJ0c1VJ
RGVsZWdhdGU7CiAKIHN0YXRpYyBib29sIGlzRG9uZTsKLXN0YXRpYyBSZXRhaW5QdHI8V0tXZWJW
aWV3PiBvcGVuZWRXZWJWaWV3Oworc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBvcGVu
ZWRXZWJWaWV3Owogc3RhdGljIFJldGFpblB0cjxNb2RhbEFsZXJ0c1VJRGVsZWdhdGU+IHNoYXJl
ZFVJRGVsZWdhdGU7CiAKIHN0YXRpYyB1bnNpZ25lZCBkaWFsb2dzU2VlbjsKKworLy8gRklYTUU6
IFJlbW92ZSB0aGlzIGd1YXJkIG9uY2Ugd2UgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyNjE0Pi4KKyNpZiBQTEFURk9STShNQUMpCitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gNDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBkaWFs
b2dzQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZGlhbG9nc0V4cGVjdGVkIC0gMTsKKyNlbHNl
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGlhbG9nc0V4cGVjdGVkID0gMzsKKyNlbmRpZgogCiBz
dGF0aWMgdm9pZCBzYXdEaWFsb2coKQogewotICAgIGlmICgrK2RpYWxvZ3NTZWVuID09IGRpYWxv
Z3NFeHBlY3RlZCkKKyAgICArK2RpYWxvZ3NTZWVuOworCisgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGlzIGd1YXJkIG9uY2Ugd2UgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcyNjE0Pi4KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRpYWxvZ3NTZWVuID09
IGRpYWxvZ3NCZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpIHsKKyAgICAgICAgW29wZW5lZFdlYlZp
ZXcgc2VuZENsaWNrc0F0UG9pbnQ6TlNNYWtlUG9pbnQoNSwgNSkgbnVtYmVyT2ZDbGlja3M6MV07
CisgICAgICAgIFtvcGVuZWRXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJkYXRhOnRleHQvaHRtbCJdXV07CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChkaWFsb2dzU2VlbiA9PSBkaWFs
b2dzRXhwZWN0ZWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTU2LDcgKzc1LDcg
QEAgQGltcGxlbWVudGF0aW9uIE1vZGFsQWxlcnRzVUlEZWxlZ2F0ZQogCiAtIChXS1dlYlZpZXcg
Kil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJh
dGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlv
bkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0
dXJlczooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzCiB7Ci0gICAgb3BlbmVkV2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgb3Bl
bmVkV2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OwogICAgIFtvcGVuZWRXZWJWaWV3IHNldFVJRGVsZWdhdGU6c2hhcmVkVUlEZWxlZ2F0ZS5nZXQo
KV07CiAgICAgcmV0dXJuIG9wZW5lZFdlYlZpZXcuZ2V0KCk7CiB9CkBAIC03OSw3ICs5OCw3IEBA
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyCiAgICAgRVhQRUNUX1NUUkVRKFtbW2ZyYW1lIHNlY3Vy
aXR5T3JpZ2luXSBob3N0XSBVVEY4U3RyaW5nXSwgIiIpOwogICAgIEVYUEVDVF9FUShbW2ZyYW1l
IHNlY3VyaXR5T3JpZ2luXSBwb3J0XSwgMCk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMpOwogICAgIHNhd0RpYWxvZygpOwogfQogCkBA
IC05NCw2ICsxMTMsMjAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1
bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3QKICAgICBzYXdEaWFsb2co
KTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSB0aGlzIGd1YXJkIG9uY2Ugd2UgZml4IDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjE0Pi4KKyNpZiBQTEFURk9STShN
QUMpCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgRVhQRUNUX1NUUkVRKFtbW1tmcmFt
ZSByZXF1ZXN0XSBVUkxdIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgImFib3V0OmJsYW5r
Iik7CisgICAgRVhQRUNUX1NUUkVRKFtbW2ZyYW1lIHNlY3VyaXR5T3JpZ2luXSBwcm90b2NvbF0g
VVRGOFN0cmluZ10sICJmaWxlIik7CisgICAgRVhQRUNUX1NUUkVRKFtbW2ZyYW1lIHNlY3VyaXR5
T3JpZ2luXSBob3N0XSBVVEY4U3RyaW5nXSwgIiIpOworICAgIEVYUEVDVF9FUShbW2ZyYW1lIHNl
Y3VyaXR5T3JpZ2luXSBwb3J0XSwgMCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7Cisg
ICAgc2F3RGlhbG9nKCk7Cit9CisjZW5kaWYKKwogQGVuZAogCiBURVNUKFdlYktpdDIsIE1vZGFs
QWxlcnRzKQo=
</data>
<flag name="review"
          id="332399"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>