<?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>168183</bug_id>
          
          <creation_ts>2017-02-12 00:08:04 -0800</creation_ts>
          <short_desc>[Cocoa] Some -respondsToSelector: checks are unnecessary</short_desc>
          <delta_ts>2017-02-12 14:03:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1275929</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-12 00:08:04 -0800</bug_when>
    <thetext>If a method or property is declared in a class interface or class extension, there’s no need to check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275930</commentid>
    <comment_count>1</comment_count>
      <attachid>301293</attachid>
    <who name="">mitz</who>
    <bug_when>2017-02-12 00:08:52 -0800</bug_when>
    <thetext>Created attachment 301293
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275931</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-12 00:11:36 -0800</bug_when>
    <thetext>Attachment 301293 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/Platform/spi/ios/UIKitSPI.h:311:  Should have space between @property and attributes.  [whitespace/property] [4]
ERROR: Source/WebKit2/Platform/spi/ios/UIKitSPI.h:311:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
Total errors found: 20 in 15 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>1275981</commentid>
    <comment_count>3</comment_count>
      <attachid>301305</attachid>
    <who name="">mitz</who>
    <bug_when>2017-02-12 09:01:38 -0800</bug_when>
    <thetext>Created attachment 301305
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275982</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-12 09:02:52 -0800</bug_when>
    <thetext>Attachment 301305 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
Total errors found: 18 in 15 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>1275985</commentid>
    <comment_count>5</comment_count>
      <attachid>301306</attachid>
    <who name="">mitz</who>
    <bug_when>2017-02-12 09:36:06 -0800</bug_when>
    <thetext>Created attachment 301306
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275986</commentid>
    <comment_count>6</comment_count>
      <attachid>301307</attachid>
    <who name="">mitz</who>
    <bug_when>2017-02-12 09:37:20 -0800</bug_when>
    <thetext>Created attachment 301307
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275987</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-12 09:40:22 -0800</bug_when>
    <thetext>Attachment 301307 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:441:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 19 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>1275996</commentid>
    <comment_count>8</comment_count>
      <attachid>301310</attachid>
    <who name="">mitz</who>
    <bug_when>2017-02-12 10:36:05 -0800</bug_when>
    <thetext>Created attachment 301310
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275997</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-12 10:36:41 -0800</bug_when>
    <thetext>One of the checks was masking a change to NEFilterSource SPI!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275998</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-12 10:38:16 -0800</bug_when>
    <thetext>Attachment 301310 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:441:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 19 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276014</commentid>
    <comment_count>11</comment_count>
      <attachid>301313</attachid>
    <who name="">mitz</who>
    <bug_when>2017-02-12 12:06:07 -0800</bug_when>
    <thetext>Created attachment 301313
Remove unnecessary checking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276015</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-12 12:08:03 -0800</bug_when>
    <thetext>Attachment 301313 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4166:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4167:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:4172:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:489:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:490:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:495:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:497:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:441:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 19 in 35 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>1276020</commentid>
    <comment_count>13</comment_count>
      <attachid>301313</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-02-12 13:05:22 -0800</bug_when>
    <thetext>Comment on attachment 301313
Remove unnecessary checking

Woo!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276034</commentid>
    <comment_count>14</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-12 14:03:13 -0800</bug_when>
    <thetext>Committed &lt;https://trac.webkit.org/r212211&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301293</attachid>
            <date>2017-02-12 00:08:52 -0800</date>
            <delta_ts>2017-02-12 09:01:38 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>file_168183.txt</filename>
            <type>text/plain</type>
            <size>33760</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncwkocmV2aXNpb24gMjEyMTc1KQ0KKysrIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQ0KQEAgLTEyNyw5ICsxMjcsNiBA
QA0KIC8qIE9wdGlvbiBpbiBzZWdtZW50ZWQgY29udHJvbCBmb3IgaW5zZXJ0aW5nIGEgYnVsbGV0
ZWQgbGlzdCBpbiB0ZXh0IGVkaXRpbmcgKi8NCiAiQnVsbGV0ZWQgbGlzdCIgPSAiQnVsbGV0ZWQg
bGlzdCI7DQogDQotLyogbWVudSBpdGVtIHRpdGxlIGZvciBwaG9uZSBudW1iZXIgKi8NCi0iQ2Fs
bCBVc2luZyBpUGhvbmU6IiA9ICJDYWxsIFVzaW5nIGlQaG9uZToiOw0KLQ0KIC8qIFRpdGxlIGZv
ciBDYW5jZWwgYnV0dG9uIGxhYmVsIGluIGJ1dHRvbiBiYXIgKi8NCiAiQ2FuY2VsIGJ1dHRvbiBs
YWJlbCBpbiBidXR0b24gYmFyIiA9ICJDYW5jZWwiOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCShyZXZpc2lvbiAy
MTIxNzUpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDYgKzMzLDcgQEANCiANCiAjaWZkZWYgX19PQkpD
X18NCiANCisjaW1wb3J0IDxRdWFydHpDb3JlL0NBQ29udGV4dC5oPg0KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0FMYXllckhvc3QuaD4NCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJQcml2YXRl
Lmg+DQogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlUHJpdmF0ZS5oPg0KQEAgLTQxLDEy
ICs0Miw2IEBADQogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXkuaD4NCiAjZW5kaWYNCiAN
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTIwMA0KLUBpbnRlcmZhY2UgQ0FDb250ZXh0ICgpDQotLSAodm9pZClzZXRDb21taXRQcmlv
cml0eToodWludDMyX3QpY29tbWl0UHJpb3JpdHk7DQotQGVuZA0KLSNlbmRpZg0KLQ0KICNlbmRp
ZiAvLyBfX09CSkNfXw0KIA0KICNlbHNlDQpAQCAtNjIsNiArNTcsNyBAQA0KIC0gKHVpbnQzMl90
KWNyZWF0ZUltYWdlU2xvdDooQ0dTaXplKXNpemUgaGFzQWxwaGE6KEJPT0wpZmxhZzsNCiAtICh2
b2lkKWRlbGV0ZVNsb3Q6KHVpbnQzMl90KW5hbWU7DQogLSAodm9pZClpbnZhbGlkYXRlOw0KKy0g
KHZvaWQpaW52YWxpZGF0ZUZlbmNlczsNCiAtIChtYWNoX3BvcnRfdCljcmVhdGVGZW5jZVBvcnQ7
DQogLSAodm9pZClzZXRGZW5jZVBvcnQ6KG1hY2hfcG9ydF90KXBvcnQ7DQogLSAodm9pZClzZXRG
ZW5jZVBvcnQ6KG1hY2hfcG9ydF90KXBvcnQgY29tbWl0SGFuZGxlcjoodm9pZCheKSh2b2lkKSli
bG9jazsNCkBAIC0xOTgsMTMgKzE5NCw2IEBAIENGVHlwZUlEIENBTWFjaFBvcnRHZXRUeXBlSUQo
dm9pZCk7DQogDQogV1RGX0VYVEVSTl9DX0VORA0KIA0KLS8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50
byB0aGUgQVBQTEVfSU5URVJOQUxfU0RLIGJsb2NrIG9uY2UgaXQncyBpbiBhbiBTREsuDQotQGlu
dGVyZmFjZSBDQUNvbnRleHQgKEFkZGl0aW9uYWxEZXRhaWxzKQ0KLSNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMTAwKQ0KLS0gKHZvaWQpaW52YWxpZGF0ZUZlbmNlczsNCi0jZW5kaWYNCi1AZW5kDQotDQog
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVGlsZWRMYXllclJlbW92ZUltbWVkaWF0ZWx5Ow0K
IA0KIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckNvbG9ySW52ZXJ0Ow0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVjdG9yc1VJU1BJLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL0RhdGFEZXRlY3Rv
cnNVSVNQSS5oCShyZXZpc2lvbiAyMTIxNzUpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM1LDYgKzM1
LDggQEANCiANCiAjZWxzZQ0KIA0KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9yc0NvcmVT
UEkuaD4NCisNCiBAaW50ZXJmYWNlIEREQWN0aW9uIDogTlNPYmplY3QNCiBAZW5kDQogDQpAQCAt
NTQsMTUgKzU2LDEyIEBADQogKyAoREREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJv
bGxlcjsNCiArIChOU0FycmF5ICopdGFwQW5kSG9sZFNjaGVtZXM7DQogLSAodm9pZClwZXJmb3Jt
QWN0aW9uOihEREFjdGlvbiAqKWFjdGlvbiBmcm9tQWxlcnRDb250cm9sbGVyOihVSUFsZXJ0Q29u
dHJvbGxlciAqKWFsZXJ0Q29udHJvbGxlciBpbnRlcmFjdGlvbkRlbGVnYXRlOihpZCA8REREZXRl
Y3Rpb25Db250cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0ZT4paW50ZXJhY3Rpb25EZWxlZ2F0ZTsN
CistIChOU0FycmF5ICopYWN0aW9uc0ZvclVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNT
dHJpbmcgKilpZGVudGlmaWVyIHNlbGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQg
cmVzdWx0czooTlNBcnJheSAqKXJlc3VsdHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4
dDsNCistIChERFJlc3VsdFJlZilyZXN1bHRGb3JVUkw6KE5TVVJMICopdXJsIGlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRU
ZXh0IHJlc3VsdHM6KE5TQXJyYXkgKilyZXN1bHRzIGNvbnRleHQ6KE5TRGljdGlvbmFyeSAqKWNv
bnRleHQgZXh0ZW5kZWRDb250ZXh0OihOU0RpY3Rpb25hcnkgKiopZXh0ZW5kZWRDb250ZXh0Ow0K
IEBlbmQNCiANCiAjZW5kaWYNCiANCi1AaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAo
RGV0YWlsc1RvQmVSZW1vdmVkKQ0KLS8vIEZJWE1FOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBhcyBz
b29uIGFzIDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4gaXMgZml4ZWQuDQotLSAoTlNBcnJheSAq
KWFjdGlvbnNGb3JBbmNob3I6KGlkKWFuY2hvciB1cmw6KE5TVVJMICopdGFyZ2V0VVJMIGZvckZy
YW1lOihpZClmcmFtZTsNCi1AZW5kDQotDQogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKERh
dGFEZXRlY3RvcnNVSSkNCiBTT0ZUX0xJTktfQ0xBU1MoRGF0YURldGVjdG9yc1VJLCBERERldGVj
dGlvbkNvbnRyb2xsZXIpDQogU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0Rh
dGFEZXRlY3RvcnNMZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcgKikNCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL05TTWVudVNQSS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU01lbnVTUEkuaAkocmV2aXNpb24gMjEyMTc1
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvTlNNZW51U1BJLmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yNywyNSArMjcsMjggQEANCiANCiAjaWYgUExBVEZPUk0oTUFDKQ0KIA0K
LS8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBpbmNsdWRlIHRoZSBhcHByb3ByaWF0ZSBpbnRlcm5h
bCBoZWFkZXJzLg0KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQ0KKw0KKyNpbXBvcnQgPEFw
cEtpdC9OU01lbnVfUHJpdmF0ZS5oPg0KKw0KKyNlbHNlDQogDQogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgTlNNZW51VHlwZSkgew0KICAgICBOU01lbnVUeXBlTm9uZSA9IDAsDQogICAgIE5T
TWVudVR5cGVDb250ZXh0TWVudSwNCiB9Ow0KIA0KLUBpbnRlcmZhY2UgTlNNZW51IChQcml2YXRl
KQ0KK0BpbnRlcmZhY2UgTlNNZW51ICgpDQogKyAoTlNNZW51VHlwZSltZW51VHlwZUZvckV2ZW50
OihOU0V2ZW50ICopZXZlbnQ7DQogQGVuZA0KIA0KIEBjbGFzcyBRTFByZXZpZXdNZW51SXRlbTsN
CiANCi1AaW50ZXJmYWNlIE5TTWVudUl0ZW0gKFByaXZhdGUpDQorQGludGVyZmFjZSBOU01lbnVJ
dGVtICgpIDxOU1VzZXJJbnRlcmZhY2VJdGVtSWRlbnRpZmljYXRpb24+DQogKyAoUUxQcmV2aWV3
TWVudUl0ZW0gKilzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtOw0KICsgKE5TTWVudUl0ZW0gKilz
dGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KE5TQXJyYXkgKilpdGVtczsNCiBAZW5kDQog
DQotQGludGVyZmFjZSBOU01lbnVJdGVtICgpIDxOU1VzZXJJbnRlcmZhY2VJdGVtSWRlbnRpZmlj
YXRpb24+DQotQGVuZA0KKyNlbmRpZg0KIA0KICNlbmRpZg0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9tYWMvVFVDYWxsU1BJLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcGkvbWFjL1RVQ2FsbFNQSS5oCShyZXZpc2lvbiAyMTIxNzUpDQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9UVUNhbGxTUEkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTI2LDYgKzI2LDEyIEBADQogI2ltcG9ydCAiU29mdExpbmtpbmcuaCINCiAjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4NCiANCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykNCisNCisj
aW1wb3J0IDxUZWxlcGhvbnlVdGlsaXRpZXMvVFVDYWxsX1N0cmluZ3MuaD4NCisNCisjZWxzZQ0K
Kw0KIEBpbnRlcmZhY2UgVFVDYWxsIDogTlNPYmplY3QNCiBAZW5kDQogDQpAQCAtMzMsNSArMzks
NyBAQCBAaW50ZXJmYWNlIFRVQ2FsbCAoU3RyaW5ncykNCiArIChOU1N0cmluZyAqKXN1cHBsZW1l
bnRhbERpYWxUZWxlcGhvbnlDYWxsU3RyaW5nOw0KIEBlbmQNCiANCisjZW5kaWYNCisNCiBTT0ZU
X0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoVGVsZXBob255VXRpbGl0aWVzKQ0KIFNP
RlRfTElOS19DTEFTUyhUZWxlcGhvbnlVdGlsaXRpZXMsIFRVQ2FsbCkNCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQ0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCShy
ZXZpc2lvbiAyMTIxNzUpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkNCkBAIC0xMDUsMTUgKzEwNSwxMiBAQCBDR0Nv
bG9yU3BhY2VSZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sDQogI2lmIFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDANCiB2b2lkIExheWVy
SG9zdGluZ0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1h
dGNoVW50YWdnZWRDb250ZW50KQ0KIHsNCi0gICAgaWYgKFttX2NvbnRleHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OildKQ0KLSAgICAg
ICAgW21fY29udGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRh
Z2dlZENvbnRlbnRdOw0KKyAgICBbbV9jb250ZXh0IHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnQ6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07DQogfQ0KIA0KIGJvb2wgTGF5ZXJIb3N0aW5n
Q29udGV4dDo6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCgpIGNvbnN0DQogew0KLSAgICBpZiAo
W21fY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnQpXSkNCi0gICAgICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnRdOw0KLSAgICByZXR1cm4gZmFsc2U7DQorICAgIHJldHVybiBbbV9jb250ZXh0IGNv
bG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOw0KIH0NCiAjZW5kaWYNCiANCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5tbQ0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCShyZXZpc2lvbiAyMTIx
NzUpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW0JKHdv
cmtpbmcgY29weSkNCkBAIC00Myw5ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgew0KIA0KIE5T
U3RyaW5nICptZW51SXRlbVRpdGxlRm9yVGVsZXBob25lTnVtYmVyR3JvdXAoKQ0KIHsNCi0gICAg
aWYgKFtnZXRUVUNhbGxDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcGxl
bWVudGFsRGlhbFRlbGVwaG9ueUNhbGxTdHJpbmcpXSkNCi0gICAgICAgIHJldHVybiBbZ2V0VFVD
YWxsQ2xhc3MoKSBzdXBwbGVtZW50YWxEaWFsVGVsZXBob255Q2FsbFN0cmluZ107DQotICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJDYWxsIFVzaW5nIGlQaG9uZToiLCAibWVudSBpdGVtIHRpdGxl
IGZvciBwaG9uZSBudW1iZXIiKTsNCisgICAgcmV0dXJuIFtnZXRUVUNhbGxDbGFzcygpIHN1cHBs
ZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxsU3RyaW5nXTsNCiB9DQogDQogTlNNZW51SXRlbSAqbWVu
dUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1iZXIpDQpJ
bmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZp
c2lvbiAyMTIxNzUpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzA4LDYgKzMwOCw3IEBAIHR5cGVkZWYgZW51bSB7DQog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzQW5pbWF0aW5nU2Nyb2xs
KSBCT09MIGlzQW5pbWF0aW5nU2Nyb2xsOw0KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0
IGhvcml6b250YWxTY3JvbGxEZWNlbGVyYXRpb25GYWN0b3I7DQogQHByb3BlcnR5IChub25hdG9t
aWMpIENHRmxvYXQgdmVydGljYWxTY3JvbGxEZWNlbGVyYXRpb25GYWN0b3I7DQorQHByb3BlcnR5
KG5vbmF0b21pYyxyZWFkb25seSkgQk9PTCBfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb247DQog
QGVuZA0KIA0KIEBpbnRlcmZhY2UgTlNTdHJpbmcgKFVJS2l0RGV0YWlscykNCkBAIC01MjEsNiAr
NTIyLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlXS0dlc3R1cmVUeQ0KIC0gKHZv
aWQpc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rp
b25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoOw0KIC0gKHZvaWQpc2hvd0RpY3Rpb25h
cnlGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0
aW9uUmVjdDsNCiAtICh2b2lkKXNob3dTaGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVk
VGVybSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7DQorLSAodm9pZClzaG93VGV4
dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJl
c2VudGF0aW9uUmVjdDsNCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJTG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIgKnNlbGVjdGlvbkxvbmdQcmVzc1JlY29nbml6ZXI7DQogQGVu
ZA0KIA0KQEAgLTU1OCwxMiArNTYwLDE1IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJ
V0tIYW5kbGVQb3MNCiBAaW50ZXJmYWNlIFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgOiBV
SVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudCA8VUlSZXNwb25kZXJTdGFuZGFyZEVkaXRBY3Rpb25z
Pg0KIEBlbmQNCiANCi1AaW50ZXJmYWNlIFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKFVJ
V0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnREZXRhaWxzKQ0KK0BpbnRlcmZhY2UgVUlXS1RleHRJ
bnRlcmFjdGlvbkFzc2lzdGFudCAoKQ0KIC0gKHZvaWQpc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0
dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJl
VHlwZSB3aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlnZXN0dXJlU3RhdGUgd2l0
aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7DQogLSAodm9pZClzaG93RGljdGlvbmFy
eUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRp
b25SZWN0Ow0KIC0gKHZvaWQpc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBv
aW50IHdpdGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoOw0KIC0gKHZv
aWQpc2hvd1RleHRTdHlsZU9wdGlvbnM7DQogLSAodm9pZCloaWRlVGV4dFN0eWxlT3B0aW9uczsN
CistICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQgd2l0aFJhbmdlOihO
U1JhbmdlKXJhbmdlIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCistICh2b2lk
KXNob3dTaGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dS
ZWN0KXByZXNlbnRhdGlvblJlY3Q7DQorLSAodm9pZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3Ry
aW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCiAN
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGFzc2lnbikgVUlMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplciAqbG91cGVHZXN0dXJlOw0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgYXNzaWduKSBVSVRhcEdlc3R1cmVSZWNvZ25pemVyICpzaW5nbGVUYXBHZXN0dXJlOw0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0J
KHJldmlzaW9uIDIxMjE3NSkNCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJv
Y2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTE4MCwxMCArMTgwLDYgQEAgdm9pZCBDaGls
ZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbg0KICNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTEwMA0KIHZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRTaGFyZWRIVFRQ
Q29va2llU3RvcmFnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlkZW50aWZpZXIpDQogew0KLSAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBydW50aW1lIGNoZWNrIHdoZW4gaXQncyBub3QgbmVlZGVk
IChzb29uKS4NCi0gICAgaWYgKCFbTlNIVFRQQ29va2llU3RvcmFnZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9zZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTopXSkNCi0gICAgICAgIHJl
dHVybjsNCi0NCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY29va2llU3RvcmFnZURhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZGVudGlmaWVyLmRhdGEo
KSwgaWRlbnRpZmllci5zaXplKCkpKTsNCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3Jh
Z2VDcmVhdGVGcm9tSWRlbnRpZnlpbmdEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvb2tpZVN0
b3JhZ2VEYXRhLmdldCgpKSk7DQogICAgIFtOU0hUVFBDb29raWVTdG9yYWdlIF9zZXRTaGFyZWRI
VFRQQ29va2llU3RvcmFnZTphZG9wdE5TKFtbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2lu
aXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTp1aVByb2Nlc3NDb29raWVTdG9yYWdlLmdldCgpXSku
Z2V0KCldOw0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5
Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZh
Y3RvcnkubW0JKHJldmlzaW9uIDIxMjE3NSkNCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1dlYkV2ZW50RmFjdG9yeS5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTMyOCwxNiArMzI4LDcgQEAg
c3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaQ0KIA0KIHN0YXRpYyBpbnQg
dHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQ0KIHsNCi0gICAgaWYgKFtOU01lbnUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildKQ0KLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7DQot
ICAgIA0KLSAgICBpZiAobW91c2VCdXR0b25Gb3JFdmVudChldmVudCkgPT0gV2ViTW91c2VFdmVu
dDo6UmlnaHRCdXR0b24pDQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVU
eXBlQ29udGV4dE1lbnUpOw0KLSAgICANCi0gICAgaWYgKG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZl
bnQpID09IFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b24gJiYgKG1vZGlmaWVyc0ZvckV2ZW50KGV2
ZW50KSAmIFdlYkV2ZW50OjpDb250cm9sS2V5KSkNCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KE5TTWVudVR5cGVDb250ZXh0TWVudSk7DQotICAgIA0KLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihOU01lbnVUeXBlTm9uZSk7DQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOw0KIH0NCiANCiBib29sIFdlYkV2ZW50
RmFjdG9yeTo6c2hvdWxkQmVIYW5kbGVkQXNDb250ZXh0Q2xpY2soY29uc3QgV2ViQ29yZTo6UGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tCShyZXZpc2lv
biAyMTIxNzUpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmll
d0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkNCkBAIC05Nyw4ICs5Nyw3IEBAIC0gKE5TQXJy
YXkgPFVJVmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW8NCiAgICAgTlNNdXRhYmxlQXJyYXk8VUlW
aWV3Q29udHJvbGxlclByZXZpZXdBY3Rpb24gKj4gKnByZXZpZXdBY3Rpb25zID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5XTsNCiAgICAgZm9yIChfV0tFbGVtZW50QWN0aW9uICppbWFnZUFjdGlvbiBp
biBfaW1hZ2VBY3Rpb25zLmdldCgpKSB7DQogICAgICAgICBVSVZpZXdDb250cm9sbGVyUHJldmll
d0FjdGlvbiAqcHJldmlld0FjdGlvbiA9IFtVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlvbiBh
Y3Rpb25XaXRoVGl0bGU6aW1hZ2VBY3Rpb24udGl0bGUgaGFuZGxlcjpeKFVJVmlld0NvbnRyb2xs
ZXJQcmV2aWV3QWN0aW9uICphY3Rpb24sIFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaWV3Q29u
dHJvbGxlcikgew0KLSAgICAgICAgICAgIGlmIChbaW1hZ2VBY3Rpb24gcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihydW5BY3Rpb25XaXRoRWxlbWVudEluZm86KV0pDQotICAgICAgICAgICAg
ICAgIFtpbWFnZUFjdGlvbiBydW5BY3Rpb25XaXRoRWxlbWVudEluZm86X2FjdGl2YXRlZEVsZW1l
bnRJbmZvLmdldCgpXTsNCisgICAgICAgICAgICBbaW1hZ2VBY3Rpb24gcnVuQWN0aW9uV2l0aEVs
ZW1lbnRJbmZvOl9hY3RpdmF0ZWRFbGVtZW50SW5mby5nZXQoKV07DQogICAgICAgICB9XTsNCiAN
CiAgICAgICAgIFtwcmV2aWV3QWN0aW9ucyBhZGRPYmplY3Q6cHJldmlld0FjdGlvbl07DQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0NCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQkocmV2aXNpb24gMjEyMTc1KQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMTQyLDcgKzE0Miw2IEBAIENGU3Ry
aW5nUmVmIGtBWFNBbGxvd0ZvcmNlV2ViU2NhbGluZ0VuYWINCiBAaW50ZXJmYWNlIFVJU2Nyb2xs
VmlldyAoVUlTY3JvbGxWaWV3SW50ZXJuYWwpDQogLSAodm9pZClfYWRqdXN0Rm9yQXV0b21hdGlj
S2V5Ym9hcmRJbmZvOihOU0RpY3Rpb25hcnkqKWluZm8gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQg
bGFzdEFkanVzdG1lbnQ6KENHRmxvYXQqKWxhc3RBZGp1c3RtZW50Ow0KIC0gKEJPT0wpX2lzU2Ny
b2xsaW5nVG9Ub3A7DQotLSAoQk9PTClfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb247DQogLSAo
Q0dQb2ludClfYW5pbWF0ZWRUYXJnZXRPZmZzZXQ7DQogQGVuZA0KIA0KQEAgLTIxNzQsOCArMjE3
Myw4IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdEFmdGVyU2MNCiAgICAgICAg
IGlzU3RhYmxlU3RhdGUgPSAhW3NlbGYgX3Njcm9sbFZpZXdJc1J1YmJlckJhbmRpbmddOw0KIA0K
ICAgICAvLyBGSVhNRTogdGhpcyBjYW4gYmUgbWFkZSBzdGF0aWMgYWZ0ZXIgd2Ugc3RvcCBzdXBw
b3J0aW5nIGlPUyA4LnguDQotICAgIGlmIChpc1N0YWJsZVN0YXRlICYmIFtzY3JvbGxWaWV3IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uKV0p
DQotICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtzY3JvbGxWaWV3IHBlcmZvcm1TZWxlY3RvcjpA
c2VsZWN0b3IoX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uKV07DQorICAgIGlmIChpc1N0YWJs
ZVN0YXRlKQ0KKyAgICAgICAgaXNTdGFibGVTdGF0ZSA9ICFzY3JvbGxWaWV3Ll9pc0ludGVycnVw
dGluZ0RlY2VsZXJhdGlvbjsNCiANCiAgICAgaWYgKE5TTnVtYmVyICpzdGFibGVPdmVycmlkZSA9
IHNlbGYuX3N0YWJsZVN0YXRlT3ZlcnJpZGUpDQogICAgICAgICBpc1N0YWJsZVN0YXRlID0gc3Rh
YmxlT3ZlcnJpZGUuYm9vbFZhbHVlOw0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHJldmlzaW9uIDIxMjE3NSkNCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTIyNywxMyArMjI3LDYgQEAgdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcg0KIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikNCiB7DQogICAgIGF1dG8gcGFzc0xpYnJhcnkgPSBh
ZG9wdE5TKFthbGxvY1BLUGFzc0xpYnJhcnlJbnN0YW5jZSgpIGluaXRdKTsNCi0gICAgaWYgKCFb
cGFzc0xpYnJhcnkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvcGVuUGF5bWVudFNldHVw
Rm9yTWVyY2hhbnRJZGVudGlmaWVyOmRvbWFpbjpjb21wbGV0aW9uOildKSB7DQotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyXSB7DQotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOw0KLSAgICAgICAgfSk7DQotICAgICAgICByZXR1
cm47DQotICAgIH0NCi0NCiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJj
aGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBs
ZXRpb246W2NvbXBsZXRpb25IYW5kbGVyXShCT09MIHJlc3VsdCkgew0KICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciwgcmVzdWx0XSB7DQogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDIxMjE3NSkNCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcg
Y29weSkNCkBAIC0zMTEyLDExICszMTEyLDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlzbWlzc0Nv
bnRlbnRSZWxhdGl2ZQ0KICAgICBpZiAobV92aWV3LndpbmRvdy5pc0tleVdpbmRvdyB8fCBoYXNB
Y3RpdmVJbW1lZGlhdGVBY3Rpb24pIHsNCiAgICAgICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlMb29r
dXA6OmhpZGVQb3B1cCgpOw0KIA0KLSAgICAgICAgaWYgKERhdGFEZXRlY3RvcnNMaWJyYXJ5KCkp
IHsNCi0gICAgICAgICAgICBEREFjdGlvbnNNYW5hZ2VyICphY3Rpb25zTWFuYWdlciA9IFtnZXRE
REFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXTsNCi0gICAgICAgICAgICBpZiAo
W2FjdGlvbnNNYW5hZ2VyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVxdWVzdEJ1YmJs
ZUNsb3N1cmVVbmFuY2hvck9uRmFpbHVyZTopXSkNCi0gICAgICAgICAgICAgICAgW2FjdGlvbnNN
YW5hZ2VyIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6WUVTXTsNCi0gICAg
ICAgIH0NCisgICAgICAgIGlmIChEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQ0KKyAgICAgICAgICAg
IFtbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gcmVxdWVzdEJ1YmJs
ZUNsb3N1cmVVbmFuY2hvck9uRmFpbHVyZTpZRVNdOw0KICAgICB9DQogDQogICAgIGNsZWFyVGV4
dEluZGljYXRvcldpdGhBbmltYXRpb24oV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0Rpc21p
c3NhbEFuaW1hdGlvbjo6RmFkZU91dCk7DQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCShyZXZpc2lvbiAy
MTIxNzUpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNz
aXN0YW50Lm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtNTksMTAgKzU5LDYgQEAgU09GVF9MSU5LX1BS
SVZBVEVfRlJBTUVXT1JLKFRDQykNCiBTT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHQs
IFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIENGRGljdGlv
bmFyeVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIG9wdGlvbnMpKQ0KIFNPRlRfTElOS19DT05TVEFO
VChUQ0MsIGtUQ0NTZXJ2aWNlUGhvdG9zLCBDRlN0cmluZ1JlZikNCiANCi1AaW50ZXJmYWNlIERE
RGV0ZWN0aW9uQ29udHJvbGxlciAoU3RhZ2luZ1RvUmVtb3ZlKQ0KLS0gKE5TQXJyYXkgKilhY3Rp
b25zRm9yVVJMOihOU1VSTCAqKXVybCBpZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIg
c2VsZWN0ZWRUZXh0OihOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCByZXN1bHRzOihOU0FycmF5ICop
cmVzdWx0cyBjb250ZXh0OihOU0RpY3Rpb25hcnkgKiljb250ZXh0Ow0KLUBlbmQNCi0NCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0Ow0KIA0KICNpZiBIQVZFKEFQUF9MSU5LUykNCkBAIC00ODAsMjkg
KzQ3NiwyNSBAQCAtICh2b2lkKXNob3dEYXRhRGV0ZWN0b3JzU2hlZXQNCiAgICAgICAgIHJldHVy
bjsNCiANCiAgICAgREREZXRlY3Rpb25Db250cm9sbGVyICpjb250cm9sbGVyID0gW2dldERERGV0
ZWN0aW9uQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQ29udHJvbGxlcl07DQotICAgIE5TQXJyYXkg
KmRhdGFEZXRlY3RvcnNBY3Rpb25zID0gbmlsOw0KLSAgICBpZiAoW2NvbnRyb2xsZXIgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY3Rpb25zRm9yVVJMOmlkZW50aWZpZXI6c2VsZWN0ZWRU
ZXh0OnJlc3VsdHM6Y29udGV4dDopXSkgew0KLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZXh0
ID0gbmlsOw0KLSAgICAgICAgTlNTdHJpbmcgKnRleHRBdFNlbGVjdGlvbiA9IG5pbDsNCi0gICAg
ICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBleHRlbmRlZENvbnRleHQ7DQotDQot
ICAgICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YURl
dGVjdGlvbkNvbnRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDopXSkNCi0gICAgICAgICAgICBj
b250ZXh0ID0gW2RlbGVnYXRlIGRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yQWN0aW9uU2hlZXRBc3Np
c3RhbnQ6c2VsZl07DQotICAgICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KV0pDQotICAgICAg
ICAgICAgdGV4dEF0U2VsZWN0aW9uID0gW2RlbGVnYXRlIHNlbGVjdGVkVGV4dEZvckFjdGlvblNo
ZWV0QXNzaXN0YW50OnNlbGZdOw0KLSAgICAgICAgaWYgKCFwb3NpdGlvbkluZm9ybWF0aW9uLnRl
eHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRBZnRlci5pc0Vt
cHR5KCkpIHsNCi0gICAgICAgICAgICBleHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAew0KLSAg
ICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0KCkgOiBwb3NpdGlvbklu
Zm9ybWF0aW9uLnRleHRCZWZvcmUsDQotICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3Jz
VHJhaWxpbmdUZXh0KCkgOiBwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRBZnRlciwNCi0gICAgICAg
ICAgICB9IG11dGFibGVDb3B5XSk7DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgaWYgKGNv
bnRleHQpDQotICAgICAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQgYWRkRW50cmllc0Zyb21E
aWN0aW9uYXJ5OmNvbnRleHRdOw0KLSAgICAgICAgICAgIGNvbnRleHQgPSBleHRlbmRlZENvbnRl
eHQuZ2V0KCk7DQotICAgICAgICB9DQotICAgICAgICBkYXRhRGV0ZWN0b3JzQWN0aW9ucyA9IFtj
b250cm9sbGVyIGFjdGlvbnNGb3JVUkw6dGFyZ2V0VVJMIGlkZW50aWZpZXI6cG9zaXRpb25JbmZv
cm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDp0ZXh0QXRTZWxlY3Rp
b24gcmVzdWx0czpwb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkg
Y29udGV4dDpjb250ZXh0XTsNCi0gICAgfSBlbHNlDQotICAgICAgICBkYXRhRGV0ZWN0b3JzQWN0
aW9ucyA9IFtjb250cm9sbGVyIGFjdGlvbnNGb3JBbmNob3I6bmlsIHVybDp0YXJnZXRVUkwgZm9y
RnJhbWU6bmlsXTsNCisgICAgTlNEaWN0aW9uYXJ5ICpjb250ZXh0ID0gbmlsOw0KKyAgICBOU1N0
cmluZyAqdGV4dEF0U2VsZWN0aW9uID0gbmlsOw0KKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4gZXh0ZW5kZWRDb250ZXh0Ow0KKw0KKyAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YURldGVjdGlvbkNvbnRleHRGb3JBY3Rpb25TaGVldEFz
c2lzdGFudDopXSkNCisgICAgICAgIGNvbnRleHQgPSBbZGVsZWdhdGUgZGF0YURldGVjdGlvbkNv
bnRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsNCisgICAgaWYgKFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNlbGVjdGVkVGV4dEZvckFjdGlvblNoZWV0QXNz
aXN0YW50OildKQ0KKyAgICAgICAgdGV4dEF0U2VsZWN0aW9uID0gW2RlbGVnYXRlIHNlbGVjdGVk
VGV4dEZvckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOw0KKyAgICBpZiAoIXBvc2l0aW9uSW5m
b3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIXBvc2l0aW9uSW5mb3JtYXRpb24udGV4
dEFmdGVyLmlzRW1wdHkoKSkgew0KKyAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0gYWRvcHROUyhb
QHsNCisgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0KCkgOiBwb3NpdGlv
bkluZm9ybWF0aW9uLnRleHRCZWZvcmUsDQorICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNU
cmFpbGluZ1RleHQoKSA6IHBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLA0KKyAgICAgICAg
fSBtdXRhYmxlQ29weV0pOw0KKyAgICAgICAgDQorICAgICAgICBpZiAoY29udGV4dCkNCisgICAg
ICAgICAgICBbZXh0ZW5kZWRDb250ZXh0IGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpjb250ZXh0
XTsNCisgICAgICAgIGNvbnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7DQorICAgIH0NCisg
ICAgTlNBcnJheSAqZGF0YURldGVjdG9yc0FjdGlvbnMgPSBbY29udHJvbGxlciBhY3Rpb25zRm9y
VVJMOnRhcmdldFVSTCBpZGVudGlmaWVyOnBvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9y
SWRlbnRpZmllciBzZWxlY3RlZFRleHQ6dGV4dEF0U2VsZWN0aW9uIHJlc3VsdHM6cG9zaXRpb25J
bmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGNvbnRleHQ6Y29udGV4dF07DQog
ICAgIGlmIChbZGF0YURldGVjdG9yc0FjdGlvbnMgY291bnRdID09IDApDQogICAgICAgICByZXR1
cm47DQogDQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjEyMTc1KQ0KKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjM5LDI4ICsyMzksNiBAQCAtICh2b2lkKXNlbGVjdFdvcmQ7DQog
LSAodm9pZClzY2hlZHVsZVJlYW5hbHlzaXM7DQogQGVuZA0KIA0KLUBpbnRlcmZhY2UgVUlUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKFN0YWdpbmdUb1JlbW92ZSkNCi0tICh2b2lkKXNjaGVkdWxl
UmVwbGFjZW1lbnRzRm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0Ow0KLS0gKHZvaWQpc2hvd1RleHRT
ZXJ2aWNlRm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXByZXNl
bnRhdGlvblJlY3Q7DQotLSAodm9pZClzY2hlZHVsZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JU
ZXh0OihOU1N0cmluZyAqKXRleHQ7DQotLSAodm9pZClzaG93U2hhcmVTaGVldEZvcjooTlNTdHJp
bmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLS0g
KHZvaWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCBmcm9tUmVjdDooQ0dSZWN0
KXByZXNlbnRhdGlvblJlY3Q7DQotLSAodm9pZClsb29rdXA6KE5TU3RyaW5nICopdGV4dFdpdGhD
b250ZXh0IHdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRh
dGlvblJlY3Q7DQotQGVuZA0KLQ0KLUBpbnRlcmZhY2UgVUlXS1NlbGVjdGlvbkFzc2lzdGFudCAo
U3RhZ2luZ1RvUmVtb3ZlKQ0KLS0gKHZvaWQpc2hvd1RleHRTZXJ2aWNlRm9yOihOU1N0cmluZyAq
KXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7DQotLSAodm9p
ZClsb29rdXA6KE5TU3RyaW5nICopdGV4dFdpdGhDb250ZXh0IGZyb21SZWN0OihDR1JlY3QpcHJl
c2VudGF0aW9uUmVjdDsNCi0tICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRl
eHQgd2l0aFJhbmdlOihOU1JhbmdlKXJhbmdlIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9u
UmVjdDsNCi1AZW5kDQotDQotQGludGVyZmFjZSBVSUtleWJvYXJkSW1wbCAoU3RhZ2luZ1RvUmVt
b3ZlKQ0KLS0gKHZvaWQpZGlkSGFuZGxlV2ViS2V5RXZlbnQ7DQotLSAodm9pZClkaWRIYW5kbGVX
ZWJLZXlFdmVudDooV2ViSU9TRXZlbnQgKilldmVudDsNCi0tICh2b2lkKWRlbGV0ZUZyb21JbnB1
dFdpdGhGbGFnczooTlNVSW50ZWdlcilmbGFnczsNCi0tICh2b2lkKWFkZElucHV0U3RyaW5nOihO
U1N0cmluZyAqKXN0cmluZyB3aXRoRmxhZ3M6KE5TVUludGVnZXIpZmxhZ3Mgd2l0aElucHV0TWFu
YWdlckhpbnQ6KE5TU3RyaW5nICopaGludDsNCi1AZW5kDQotDQogQGludGVyZmFjZSBVSVZpZXcg
KFVJVmlld0ludGVybmFsSGFjaykNCiArIChCT09MKV9hZGRDb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb247DQogQGVuZA0KQEAgLTI3MiwxMCArMjUwLDYgQEAgQGludGVyZmFjZSBV
SVByZXZpZXdJdGVtQ29udHJvbGxlciAoU3RhZw0KIEBlbmQNCiAjZW5kaWYNCiANCi1AaW50ZXJm
YWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoU3RhZ2luZ1RvUmVtb3ZlKQ0KLS0gKEREUmVzdWx0
UmVmKXJlc3VsdEZvclVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVu
dGlmaWVyIHNlbGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQgcmVzdWx0czooTlNB
cnJheSAqKXJlc3VsdHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4dCBleHRlbmRlZENv
bnRleHQ6KE5TRGljdGlvbmFyeSAqKilleHRlbmRlZENvbnRleHQ7DQotQGVuZA0KLQ0KIEBpbnRl
cmZhY2UgV0tGb2N1c2VkRWxlbWVudEluZm8gOiBOU09iamVjdCA8X1dLRm9jdXNlZEVsZW1lbnRJ
bmZvPg0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOihj
b25zdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gaXNVc2VySW5pdGlhdGVk
OihCT09MKWlzVXNlckluaXRpYXRlZDsNCiBAZW5kDQpAQCAtMTg3OSwxNSArMTg1Myw5IEBAIC0g
KHZvaWQpX2xvb2t1cDooaWQpc2VuZGVyDQogICAgICAgICANCiAgICAgICAgIFN0cmluZyBzZWxl
Y3Rpb25Db250ZXh0ID0gdGV4dEJlZm9yZSArIHNlbGVjdGVkVGV4dCArIHRleHRBZnRlcjsNCiAg
ICAgICAgIGlmICh2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkgew0KLSAgICAgICAgICAg
IGlmIChbdmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihsb29rdXA6d2l0aFJhbmdlOmZyb21SZWN0OildKQ0KLSAgICAgICAgICAgICAgICBb
dmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgbG9va3VwOnNlbGVjdGlvbkNvbnRleHQgd2l0
aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRCZWZvcmUubGVuZ3RoKCksIHNlbGVjdGVkVGV4dC5sZW5n
dGgoKSkgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQotICAgICAgICAgICAgZWxzZQ0KLSAg
ICAgICAgICAgICAgICBbdmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgbG9va3VwOnNlbGVj
dGVkVGV4dCBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsNCisgICAgICAgICAgICBbdmlldy0+
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgbG9va3VwOnNlbGVjdGlvbkNvbnRleHQgd2l0aFJhbmdl
Ok5TTWFrZVJhbmdlKHRleHRCZWZvcmUubGVuZ3RoKCksIHNlbGVjdGVkVGV4dC5sZW5ndGgoKSkg
ZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQogICAgICAgICB9IGVsc2Ugew0KLSAgICAgICAg
ICAgIGlmIChbdmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGxvb2t1cDp3aXRoUmFuZ2U6ZnJvbVJlY3Q6KV0pDQotICAgICAgICAgICAgICAg
IFt2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50IGxvb2t1cDpzZWxlY3Rpb25Db250ZXh0IHdp
dGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxlbmd0aCgpLCBzZWxlY3RlZFRleHQubGVu
Z3RoKCkpIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOw0KLSAgICAgICAgICAgIGVsc2UNCi0g
ICAgICAgICAgICAgICAgW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgbG9va3VwOnNlbGVj
dGVkVGV4dCBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsNCisgICAgICAgICAgICBbdmlldy0+
X3dlYlNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0aW9uQ29udGV4dCB3aXRoUmFuZ2U6
TlNNYWtlUmFuZ2UodGV4dEJlZm9yZS5sZW5ndGgoKSwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKSBm
cm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsNCiAgICAgICAgIH0NCiAgICAgfSk7DQogfQ0KQEAg
LTE5MDMsMTggKzE4NzEsMTggQEAgLSAodm9pZClfc2hhcmU6KGlkKXNlbmRlcg0KIA0KICAgICAg
ICAgQ0dSZWN0IHByZXNlbnRhdGlvblJlY3QgPSB2aWV3LT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5w
b3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKTsNCiANCi0gICAgICAgIGlm
ICh2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCAmJiBbdmlldy0+X3RleHRTZWxlY3Rpb25B
c3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93U2hhcmVTaGVldEZvcjpm
cm9tUmVjdDopXSkNCisgICAgICAgIGlmICh2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkN
CiAgICAgICAgICAgICBbdmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hl
ZXRGb3I6c3RyaW5nIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOw0KLSAgICAgICAgZWxzZSBp
ZiAodmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFudCAmJiBbdmlldy0+X3dlYlNlbGVjdGlvbkFz
c2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dTaGFyZVNoZWV0Rm9yOmZy
b21SZWN0OildKQ0KKyAgICAgICAgZWxzZSBpZiAodmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCkNCiAgICAgICAgICAgICBbdmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVT
aGVldEZvcjpzdHJpbmcgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQogICAgIH0pOw0KIH0N
CiANCiAtICh2b2lkKV9hZGRTaG9ydGN1dDooaWQpc2VuZGVyDQogew0KLSAgICBpZiAoX3RleHRT
ZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2aWNlRm9yOmZyb21SZWN0OildKQ0KKyAgICBp
ZiAoX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQpDQogICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1RleHRTZXJ2aWNlRm9yOltzZWxmIHNlbGVjdGVkVGV4dF0gZnJvbVJlY3Q6X3Bh
Z2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0c1swXS5yZWN0
KCldOw0KLSAgICBlbHNlIGlmIChfd2ViU2VsZWN0aW9uQXNzaXN0YW50ICYmIFtfd2ViU2VsZWN0
aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2aWNl
Rm9yOmZyb21SZWN0OildKQ0KKyAgICBlbHNlIGlmIChfd2ViU2VsZWN0aW9uQXNzaXN0YW50KQ0K
ICAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1RleHRTZXJ2aWNlRm9yOltzZWxm
IHNlbGVjdGVkVGV4dF0gZnJvbVJlY3Q6X3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERh
dGEoKS5zZWxlY3Rpb25SZWN0c1swXS5yZWN0KCldOw0KIH0NCiANCkBAIC0xOTQ0LDE0ICsxOTEy
LDEyIEBAIC0gKHZvaWQpX3Byb21wdEZvclJlcGxhY2U6KGlkKXNlbmRlcg0KICAgICBpZiAod29y
ZEF0U2VsZWN0aW9uLmlzRW1wdHkoKSkNCiAgICAgICAgIHJldHVybjsNCiANCi0gICAgaWYgKFtf
dGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNjaGVk
dWxlUmVwbGFjZW1lbnRzRm9yVGV4dDopXSkNCi0gICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lz
dGFudCBzY2hlZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6d29yZEF0U2VsZWN0aW9uXTsNCisgICAg
W190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNjaGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4dDp3b3Jk
QXRTZWxlY3Rpb25dOw0KIH0NCiANCiAtICh2b2lkKV90cmFuc2xpdGVyYXRlQ2hpbmVzZTooaWQp
c2VuZGVyDQogew0KLSAgICBpZiAoW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9yVGV4dDop
XSkNCi0gICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzY2hlZHVsZUNoaW5lc2VUcmFu
c2xpdGVyYXRpb25Gb3JUZXh0Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCku
d29yZEF0U2VsZWN0aW9uXTsNCisgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNjaGVkdWxl
Q2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6X3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExh
eW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb25dOw0KIH0NCiANCiAtICh2b2lkKV9yZWFuYWx5emU6
KGlkKXNlbmRlcg0KQEAgLTMzODUsMTQgKzMzNTEsNiBAQCAtICh2b2lkKV9kaWRIYW5kbGVLZXlF
dmVudDooV2ViSU9TRXZlbnQgDQogICAgICAgICByZXR1cm47DQogICAgIH0NCiAgICAgICAgIA0K
LSAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleURvd24pIHsNCi0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG9ubHkgZm9yIHN0YWdpbmcgcHVycG9zZXMuDQotICAgICAgICBpZiAoW1tV
SUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihkaWRIYW5kbGVXZWJLZXlFdmVudDopXSkNCi0gICAgICAgICAgICBbW1VJS2V5Ym9hcmRJbXBs
IHNoYXJlZEluc3RhbmNlXSBkaWRIYW5kbGVXZWJLZXlFdmVudDpldmVudF07DQotICAgICAgICBl
bHNlDQotICAgICAgICAgICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gZGlkSGFu
ZGxlV2ViS2V5RXZlbnRdOw0KLSAgICB9DQotDQogICAgIC8vIElmIHdlIGFyZW4ndCBpbnRlcmFj
dGluZyB3aXRoIGVkaXRhYmxlIGNvbnRlbnQsIHdlIHN0aWxsIG5lZWQgdG8gY2FsbCBbc3VwZXIg
X2hhbmRsZUtleVVJRXZlbnQ6XQ0KICAgICAvLyBzbyB0aGF0IGtleWJvYXJkIHJlcGVhdCB3aWxs
IHdvcmsgY29ycmVjdGx5LiBJZiB3ZSBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBlZGl0YWJsZSBjb250
ZW50LA0KICAgICAvLyB3ZSBhbHJlYWR5IGRpZCBzbyBpbiBfaGFuZGxlS2V5VUlFdmVudC4NCkBA
IC0zNTA2LDIxICszNDY0LDE0IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihXZWJJT1NF
dmVudCANCiAgICAgY2FzZSBrV2ViQmFja3NwYWNlS2V5Og0KICAgICBjYXNlIGtXZWJEZWxldGVL
ZXk6DQogICAgICAgICBpZiAoY29udGVudEVkaXRhYmxlKSB7DQotICAgICAgICAgICAgLy8gRklY
TUU6IHJlbW92ZSBkZWxldGVGcm9tSW5wdXQgb25jZSBVSUtpdCBhZG9wdHMgZGVsZXRlRnJvbUlu
cHV0V2l0aEZsYWdzDQotICAgICAgICAgICAgaWYgKFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFnczopXSkNCi0gICAgICAgICAgICAg
ICAgW2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdz
XTsNCi0gICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBkZWxldGVG
cm9tSW5wdXRdOw0KKyAgICAgICAgICAgIFtrZXlib2FyZCBkZWxldGVGcm9tSW5wdXRXaXRoRmxh
Z3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107DQogICAgICAgICAgICAgcmV0dXJuIFlFUzsNCiAgICAg
ICAgIH0NCiAgICAgICAgIGJyZWFrOw0KIA0KICAgICBjYXNlIGtXZWJTcGFjZUtleToNCiAgICAg
ICAgIGlmIChjb250ZW50RWRpdGFibGUgJiYgaXNDaGFyRXZlbnQpIHsNCi0gICAgICAgICAgICBp
ZiAoW2tleWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkSW5wdXRTdHJpbmc6
d2l0aEZsYWdzOndpdGhJbnB1dE1hbmFnZXJIaW50OildKQ0KLSAgICAgICAgICAgICAgICBba2V5
Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5
Ym9hcmRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpldmVudC5pbnB1dE1hbmFnZXJIaW50XTsN
Ci0gICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0
cmluZzpldmVudC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsNCisg
ICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRo
RmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpldmVudC5pbnB1
dE1hbmFnZXJIaW50XTsNCiAgICAgICAgICAgICByZXR1cm4gWUVTOw0KICAgICAgICAgfQ0KICAg
ICAgICAgYnJlYWs7DQpAQCAtMzU0MCwxMCArMzQ5MSw3IEBAIC0gKEJPT0wpX2ludGVycHJldEtl
eUV2ZW50OihXZWJJT1NFdmVudCANCiANCiAgICAgZGVmYXVsdDoNCiAgICAgICAgIGlmIChjb250
ZW50RWRpdGFibGUgJiYgaXNDaGFyRXZlbnQpIHsNCi0gICAgICAgICAgICBpZiAoW2tleWJvYXJk
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkSW5wdXRTdHJpbmc6d2l0aEZsYWdzOndp
dGhJbnB1dE1hbmFnZXJIaW50OildKQ0KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5w
dXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFncyB3
aXRoSW5wdXRNYW5hZ2VySGludDpldmVudC5pbnB1dE1hbmFnZXJIaW50XTsNCi0gICAgICAgICAg
ICBlbHNlDQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVudC5j
aGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsNCisgICAgICAgICAgICBb
a2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQu
a2V5Ym9hcmRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpldmVudC5pbnB1dE1hbmFnZXJIaW50
XTsNCiAgICAgICAgICAgICByZXR1cm4gWUVTOw0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7
DQpAQCAtNDIwOCwyNSArNDE1NiwyMyBAQCAtIChOU0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZp
ZXdJdGVtQ29uDQogICAgICAgICAgICAgICAgIGNvbnRleHQgPSBbdWlEZWxlZ2F0ZSBfZGF0YURl
dGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3Ol93ZWJWaWV3XTsNCiANCiAgICAgICAgICAgICBERERl
dGVjdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbZ2V0REREZXRlY3Rpb25Db250cm9sbGVy
Q2xhc3MoKSBzaGFyZWRDb250cm9sbGVyXTsNCi0gICAgICAgICAgICBpZiAoW2NvbnRyb2xsZXIg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZXN1bHRGb3JVUkw6aWRlbnRpZmllcjpzZWxl
Y3RlZFRleHQ6cmVzdWx0czpjb250ZXh0OmV4dGVuZGVkQ29udGV4dDopXSkgew0KLSAgICAgICAg
ICAgICAgICBOU0RpY3Rpb25hcnkgKm5ld0NvbnRleHQgPSBuaWw7DQotICAgICAgICAgICAgICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBleHRlbmRlZENvbnRleHQ7DQotICAgICAg
ICAgICAgICAgIEREUmVzdWx0UmVmIGRkUmVzdWx0ID0gW2NvbnRyb2xsZXIgcmVzdWx0Rm9yVVJM
OmRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFMaW5rXSBpZGVudGlmaWVyOl9wb3NpdGlvbklu
Zm9ybWF0aW9uLmRhdGFEZXRlY3RvcklkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OltzZWxmIHNlbGVj
dGVkVGV4dF0gcmVzdWx0czpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRz
LmdldCgpIGNvbnRleHQ6Y29udGV4dCBleHRlbmRlZENvbnRleHQ6Jm5ld0NvbnRleHRdOw0KLSAg
ICAgICAgICAgICAgICBpZiAoZGRSZXN1bHQpDQotICAgICAgICAgICAgICAgICAgICBkYXRhRm9y
UHJldmlld1tVSVByZXZpZXdEYXRhRERSZXN1bHRdID0gKF9fYnJpZGdlIGlkKWRkUmVzdWx0Ow0K
LSAgICAgICAgICAgICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUuaXNF
bXB0eSgpIHx8ICFfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7DQot
ICAgICAgICAgICAgICAgICAgICBleHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAew0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3JzTGVhZGluZ1RleHQoKSA6IF9wb3Np
dGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUsDQotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
a0RhdGFEZXRlY3RvcnNUcmFpbGluZ1RleHQoKSA6IF9wb3NpdGlvbkluZm9ybWF0aW9uLnRleHRB
ZnRlciwNCi0gICAgICAgICAgICAgICAgICAgIH0gbXV0YWJsZUNvcHldKTsNCi0gICAgICAgICAg
ICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0NvbnRleHQpDQotICAgICAg
ICAgICAgICAgICAgICAgICAgW2V4dGVuZGVkQ29udGV4dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25h
cnk6bmV3Q29udGV4dF07DQotICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0ID0gZXh0ZW5k
ZWRDb250ZXh0LmdldCgpOw0KLSAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgTlNEaWN0
aW9uYXJ5ICpuZXdDb250ZXh0ID0gbmlsOw0KKyAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFi
bGVEaWN0aW9uYXJ5PiBleHRlbmRlZENvbnRleHQ7DQorICAgICAgICAgICAgRERSZXN1bHRSZWYg
ZGRSZXN1bHQgPSBbY29udHJvbGxlciByZXN1bHRGb3JVUkw6ZGF0YUZvclByZXZpZXdbVUlQcmV2
aWV3RGF0YUxpbmtdIGlkZW50aWZpZXI6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9y
SWRlbnRpZmllciBzZWxlY3RlZFRleHQ6W3NlbGYgc2VsZWN0ZWRUZXh0XSByZXN1bHRzOl9wb3Np
dGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgY29udGV4dDpjb250ZXh0
IGV4dGVuZGVkQ29udGV4dDombmV3Q29udGV4dF07DQorICAgICAgICAgICAgaWYgKGRkUmVzdWx0
KQ0KKyAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhRERSZXN1bHRd
ID0gKF9fYnJpZGdlIGlkKWRkUmVzdWx0Ow0KKyAgICAgICAgICAgIGlmICghX3Bvc2l0aW9uSW5m
b3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIV9wb3NpdGlvbkluZm9ybWF0aW9uLnRl
eHRBZnRlci5pc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0g
YWRvcHROUyhbQHsNCisgICAgICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3JzTGVhZGlu
Z1RleHQoKSA6IF9wb3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUsDQorICAgICAgICAgICAg
ICAgICAgICBnZXRrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3Jt
YXRpb24udGV4dEFmdGVyLA0KKyAgICAgICAgICAgICAgICB9IG11dGFibGVDb3B5XSk7DQorICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICBpZiAobmV3Q29udGV4dCkNCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFERENvbnRleHRdID0gbmV3
Q29udGV4dDsNCisgICAgICAgICAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQgYWRkRW50cmll
c0Zyb21EaWN0aW9uYXJ5Om5ld0NvbnRleHRdOw0KKyAgICAgICAgICAgICAgICBuZXdDb250ZXh0
ID0gZXh0ZW5kZWRDb250ZXh0LmdldCgpOw0KICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBp
ZiAobmV3Q29udGV4dCkNCisgICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3
RGF0YUREQ29udGV4dF0gPSBuZXdDb250ZXh0Ow0KICAgICAgICAgfQ0KICAgICB9IGVsc2UgaWYg
KGNhblNob3dJbWFnZVByZXZpZXcpIHsNCiAgICAgICAgICp0eXBlID0gVUlQcmV2aWV3SXRlbVR5
cGVJbWFnZTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHJl
dmlzaW9uIDIxMjE3NSkNCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkNCkBAIC0xNzcsOCAr
MTc3LDcgQEAgTWFjaFNlbmRSaWdodCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQQ0KICAgICAv
LyBJbnZhbGlkYXRlIHRoZSBmZW5jZSBpZiBhIHN5bmNocm9ub3VzIG1lc3NhZ2UgYXJyaXZlcyB3
aGlsZSBpdCdzIGluc3RhbGxlZCwNCiAgICAgLy8gYmVjYXVzZSB3ZSB3b24ndCBiZSBhYmxlIHRv
IHJlcGx5IGR1cmluZyB0aGUgZmVuY2Utd2FpdC4NCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmluc3RhbGxJbmNvbWluZ1N5
bmNNZXNzYWdlQ2FsbGJhY2soW3Jvb3RMYXllckNvbnRleHRdIHsNCi0gICAgICAgIGlmIChbcm9v
dExheWVyQ29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludmFsaWRhdGVGZW5j
ZXMpXSkNCi0gICAgICAgICAgICBbcm9vdExheWVyQ29udGV4dCBpbnZhbGlkYXRlRmVuY2VzXTsN
CisgICAgICAgIFtyb290TGF5ZXJDb250ZXh0IGludmFsaWRhdGVGZW5jZXNdOw0KICAgICB9KTsN
CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcmV0YWluZWRQYWdlID0gJm1fd2ViUGFnZVByb3h5
Ow0KICAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOltjYWxsYmFja0lELCByZXRh
aW5lZFBhZ2VdIHsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyMTIx
NzUpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkNCkBAIC00MDEsMTAgKzQwMSw4IEBAIC0gKGlkPE5T
SW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGwNCiANCiAgICAgYWN0aW9uQ29udGV4dC5h
bHRNb2RlID0gWUVTOw0KICAgICBhY3Rpb25Db250ZXh0LmltbWVkaWF0ZSA9IFlFUzsNCi0gICAg
aWYgKFtbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihoYXNBY3Rpb25zRm9yUmVzdWx0OmFjdGlvbkNvbnRleHQ6KV0p
IHsNCi0gICAgICAgIGlmICghW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5h
Z2VyXSBoYXNBY3Rpb25zRm9yUmVzdWx0OmFjdGlvbkNvbnRleHQubWFpblJlc3VsdCBhY3Rpb25D
b250ZXh0OmFjdGlvbkNvbnRleHRdKQ0KLSAgICAgICAgICAgIHJldHVybiBuaWw7DQotICAgIH0N
CisgICAgaWYgKCFbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIGhh
c0FjdGlvbnNGb3JSZXN1bHQ6YWN0aW9uQ29udGV4dC5tYWluUmVzdWx0IGFjdGlvbkNvbnRleHQ6
YWN0aW9uQ29udGV4dF0pDQorICAgICAgICByZXR1cm4gbmlsOw0KIA0KICAgICBSZWZQdHI8V2Vi
UGFnZVByb3h5PiBwYWdlID0gX3BhZ2U7DQogICAgIFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlE
IG92ZXJsYXlJRCA9IF9oaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFPcmlnaW5hdGluZ1Bh
Z2VPdmVybGF5Ow0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkocmV2aXNpb24gMjEyMTc1KQ0KKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkod29y
a2luZyBjb3B5KQ0KQEAgLTI2Niw5ICsyNjYsNiBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlN
YWM6OmNsZWFyU2VydmljDQogDQogUmV0YWluUHRyPE5TTWVudUl0ZW0+IFdlYkNvbnRleHRNZW51
UHJveHlNYWM6OmNyZWF0ZVNoYXJlTWVudUl0ZW0oKQ0KIHsNCi0gICAgaWYgKCFbW05TTWVudUl0
ZW0gY2xhc3NdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3RhbmRhcmRTaGFyZU1lbnVJ
dGVtV2l0aEl0ZW1zOildKQ0KLSAgICAgICAgcmV0dXJuIG5pbDsNCi0NCiAgICAgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3REYXRhID0gbV9jb250ZXh0LndlYkhpdFRlc3RSZXN1
bHREYXRhKCk7DQogDQogICAgIGF1dG8gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301305</attachid>
            <date>2017-02-12 09:01:38 -0800</date>
            <delta_ts>2017-02-12 09:41:29 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>file_168183.txt</filename>
            <type>text/plain</type>
            <size>33989</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncwkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQ0KQEAgLTEyNyw5ICsxMjcsNiBA
QA0KIC8qIE9wdGlvbiBpbiBzZWdtZW50ZWQgY29udHJvbCBmb3IgaW5zZXJ0aW5nIGEgYnVsbGV0
ZWQgbGlzdCBpbiB0ZXh0IGVkaXRpbmcgKi8NCiAiQnVsbGV0ZWQgbGlzdCIgPSAiQnVsbGV0ZWQg
bGlzdCI7DQogDQotLyogbWVudSBpdGVtIHRpdGxlIGZvciBwaG9uZSBudW1iZXIgKi8NCi0iQ2Fs
bCBVc2luZyBpUGhvbmU6IiA9ICJDYWxsIFVzaW5nIGlQaG9uZToiOw0KLQ0KIC8qIFRpdGxlIGZv
ciBDYW5jZWwgYnV0dG9uIGxhYmVsIGluIGJ1dHRvbiBiYXIgKi8NCiAiQ2FuY2VsIGJ1dHRvbiBs
YWJlbCBpbiBidXR0b24gYmFyIiA9ICJDYW5jZWwiOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCShyZXZpc2lvbiAy
MTIyMDIpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDYgKzMzLDcgQEANCiANCiAjaWZkZWYgX19PQkpD
X18NCiANCisjaW1wb3J0IDxRdWFydHpDb3JlL0NBQ29udGV4dC5oPg0KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0FMYXllckhvc3QuaD4NCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJQcml2YXRl
Lmg+DQogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlUHJpdmF0ZS5oPg0KQEAgLTQxLDEy
ICs0Miw2IEBADQogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXkuaD4NCiAjZW5kaWYNCiAN
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTIwMA0KLUBpbnRlcmZhY2UgQ0FDb250ZXh0ICgpDQotLSAodm9pZClzZXRDb21taXRQcmlv
cml0eToodWludDMyX3QpY29tbWl0UHJpb3JpdHk7DQotQGVuZA0KLSNlbmRpZg0KLQ0KICNlbmRp
ZiAvLyBfX09CSkNfXw0KIA0KICNlbHNlDQpAQCAtNjIsNiArNTcsNyBAQA0KIC0gKHVpbnQzMl90
KWNyZWF0ZUltYWdlU2xvdDooQ0dTaXplKXNpemUgaGFzQWxwaGE6KEJPT0wpZmxhZzsNCiAtICh2
b2lkKWRlbGV0ZVNsb3Q6KHVpbnQzMl90KW5hbWU7DQogLSAodm9pZClpbnZhbGlkYXRlOw0KKy0g
KHZvaWQpaW52YWxpZGF0ZUZlbmNlczsNCiAtIChtYWNoX3BvcnRfdCljcmVhdGVGZW5jZVBvcnQ7
DQogLSAodm9pZClzZXRGZW5jZVBvcnQ6KG1hY2hfcG9ydF90KXBvcnQ7DQogLSAodm9pZClzZXRG
ZW5jZVBvcnQ6KG1hY2hfcG9ydF90KXBvcnQgY29tbWl0SGFuZGxlcjoodm9pZCheKSh2b2lkKSli
bG9jazsNCkBAIC0xOTgsMTMgKzE5NCw2IEBAIENGVHlwZUlEIENBTWFjaFBvcnRHZXRUeXBlSUQo
dm9pZCk7DQogDQogV1RGX0VYVEVSTl9DX0VORA0KIA0KLS8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50
byB0aGUgQVBQTEVfSU5URVJOQUxfU0RLIGJsb2NrIG9uY2UgaXQncyBpbiBhbiBTREsuDQotQGlu
dGVyZmFjZSBDQUNvbnRleHQgKEFkZGl0aW9uYWxEZXRhaWxzKQ0KLSNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMTAwKQ0KLS0gKHZvaWQpaW52YWxpZGF0ZUZlbmNlczsNCi0jZW5kaWYNCi1AZW5kDQotDQog
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBVGlsZWRMYXllclJlbW92ZUltbWVkaWF0ZWx5Ow0K
IA0KIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckNvbG9ySW52ZXJ0Ow0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVjdG9yc1VJU1BJLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL0RhdGFEZXRlY3Rv
cnNVSVNQSS5oCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM1LDYgKzM1
LDggQEANCiANCiAjZWxzZQ0KIA0KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9yc0NvcmVT
UEkuaD4NCisNCiBAaW50ZXJmYWNlIEREQWN0aW9uIDogTlNPYmplY3QNCiBAZW5kDQogDQpAQCAt
NTQsMTUgKzU2LDEyIEBADQogKyAoREREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJv
bGxlcjsNCiArIChOU0FycmF5ICopdGFwQW5kSG9sZFNjaGVtZXM7DQogLSAodm9pZClwZXJmb3Jt
QWN0aW9uOihEREFjdGlvbiAqKWFjdGlvbiBmcm9tQWxlcnRDb250cm9sbGVyOihVSUFsZXJ0Q29u
dHJvbGxlciAqKWFsZXJ0Q29udHJvbGxlciBpbnRlcmFjdGlvbkRlbGVnYXRlOihpZCA8REREZXRl
Y3Rpb25Db250cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0ZT4paW50ZXJhY3Rpb25EZWxlZ2F0ZTsN
CistIChOU0FycmF5ICopYWN0aW9uc0ZvclVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNT
dHJpbmcgKilpZGVudGlmaWVyIHNlbGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQg
cmVzdWx0czooTlNBcnJheSAqKXJlc3VsdHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4
dDsNCistIChERFJlc3VsdFJlZilyZXN1bHRGb3JVUkw6KE5TVVJMICopdXJsIGlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRU
ZXh0IHJlc3VsdHM6KE5TQXJyYXkgKilyZXN1bHRzIGNvbnRleHQ6KE5TRGljdGlvbmFyeSAqKWNv
bnRleHQgZXh0ZW5kZWRDb250ZXh0OihOU0RpY3Rpb25hcnkgKiopZXh0ZW5kZWRDb250ZXh0Ow0K
IEBlbmQNCiANCiAjZW5kaWYNCiANCi1AaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAo
RGV0YWlsc1RvQmVSZW1vdmVkKQ0KLS8vIEZJWE1FOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBhcyBz
b29uIGFzIDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4gaXMgZml4ZWQuDQotLSAoTlNBcnJheSAq
KWFjdGlvbnNGb3JBbmNob3I6KGlkKWFuY2hvciB1cmw6KE5TVVJMICopdGFyZ2V0VVJMIGZvckZy
YW1lOihpZClmcmFtZTsNCi1AZW5kDQotDQogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKERh
dGFEZXRlY3RvcnNVSSkNCiBTT0ZUX0xJTktfQ0xBU1MoRGF0YURldGVjdG9yc1VJLCBERERldGVj
dGlvbkNvbnRyb2xsZXIpDQogU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0Rh
dGFEZXRlY3RvcnNMZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcgKikNCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL05TTWVudVNQSS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU01lbnVTUEkuaAkocmV2aXNpb24gMjEyMjAy
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvTlNNZW51U1BJLmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yNywyNSArMjcsMjggQEANCiANCiAjaWYgUExBVEZPUk0oTUFDKQ0KIA0K
LS8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBpbmNsdWRlIHRoZSBhcHByb3ByaWF0ZSBpbnRlcm5h
bCBoZWFkZXJzLg0KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQ0KKw0KKyNpbXBvcnQgPEFw
cEtpdC9OU01lbnVfUHJpdmF0ZS5oPg0KKw0KKyNlbHNlDQogDQogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgTlNNZW51VHlwZSkgew0KICAgICBOU01lbnVUeXBlTm9uZSA9IDAsDQogICAgIE5T
TWVudVR5cGVDb250ZXh0TWVudSwNCiB9Ow0KIA0KLUBpbnRlcmZhY2UgTlNNZW51IChQcml2YXRl
KQ0KK0BpbnRlcmZhY2UgTlNNZW51ICgpDQogKyAoTlNNZW51VHlwZSltZW51VHlwZUZvckV2ZW50
OihOU0V2ZW50ICopZXZlbnQ7DQogQGVuZA0KIA0KIEBjbGFzcyBRTFByZXZpZXdNZW51SXRlbTsN
CiANCi1AaW50ZXJmYWNlIE5TTWVudUl0ZW0gKFByaXZhdGUpDQorQGludGVyZmFjZSBOU01lbnVJ
dGVtICgpIDxOU1VzZXJJbnRlcmZhY2VJdGVtSWRlbnRpZmljYXRpb24+DQogKyAoUUxQcmV2aWV3
TWVudUl0ZW0gKilzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtOw0KICsgKE5TTWVudUl0ZW0gKilz
dGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KE5TQXJyYXkgKilpdGVtczsNCiBAZW5kDQog
DQotQGludGVyZmFjZSBOU01lbnVJdGVtICgpIDxOU1VzZXJJbnRlcmZhY2VJdGVtSWRlbnRpZmlj
YXRpb24+DQotQGVuZA0KKyNlbmRpZg0KIA0KICNlbmRpZg0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9tYWMvVFVDYWxsU1BJLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcGkvbWFjL1RVQ2FsbFNQSS5oCShyZXZpc2lvbiAyMTIyMDIpDQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9UVUNhbGxTUEkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTI2LDYgKzI2LDEyIEBADQogI2ltcG9ydCAiU29mdExpbmtpbmcuaCINCiAjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4NCiANCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykNCisNCisj
aW1wb3J0IDxUZWxlcGhvbnlVdGlsaXRpZXMvVFVDYWxsX1N0cmluZ3MuaD4NCisNCisjZWxzZQ0K
Kw0KIEBpbnRlcmZhY2UgVFVDYWxsIDogTlNPYmplY3QNCiBAZW5kDQogDQpAQCAtMzMsNSArMzks
NyBAQCBAaW50ZXJmYWNlIFRVQ2FsbCAoU3RyaW5ncykNCiArIChOU1N0cmluZyAqKXN1cHBsZW1l
bnRhbERpYWxUZWxlcGhvbnlDYWxsU3RyaW5nOw0KIEBlbmQNCiANCisjZW5kaWYNCisNCiBTT0ZU
X0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoVGVsZXBob255VXRpbGl0aWVzKQ0KIFNP
RlRfTElOS19DTEFTUyhUZWxlcGhvbnlVdGlsaXRpZXMsIFRVQ2FsbCkNCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQ0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCShy
ZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkNCkBAIC0xMDUsMTUgKzEwNSwxMiBAQCBDR0Nv
bG9yU3BhY2VSZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sDQogI2lmIFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDANCiB2b2lkIExheWVy
SG9zdGluZ0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1h
dGNoVW50YWdnZWRDb250ZW50KQ0KIHsNCi0gICAgaWYgKFttX2NvbnRleHQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OildKQ0KLSAgICAg
ICAgW21fY29udGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRh
Z2dlZENvbnRlbnRdOw0KKyAgICBbbV9jb250ZXh0IHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnQ6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07DQogfQ0KIA0KIGJvb2wgTGF5ZXJIb3N0aW5n
Q29udGV4dDo6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCgpIGNvbnN0DQogew0KLSAgICBpZiAo
W21fY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnQpXSkNCi0gICAgICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnRdOw0KLSAgICByZXR1cm4gZmFsc2U7DQorICAgIHJldHVybiBbbV9jb250ZXh0IGNv
bG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOw0KIH0NCiAjZW5kaWYNCiANCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5tbQ0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCShyZXZpc2lvbiAyMTIy
MDIpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW0JKHdv
cmtpbmcgY29weSkNCkBAIC00Myw5ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgew0KIA0KIE5T
U3RyaW5nICptZW51SXRlbVRpdGxlRm9yVGVsZXBob25lTnVtYmVyR3JvdXAoKQ0KIHsNCi0gICAg
aWYgKFtnZXRUVUNhbGxDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcGxl
bWVudGFsRGlhbFRlbGVwaG9ueUNhbGxTdHJpbmcpXSkNCi0gICAgICAgIHJldHVybiBbZ2V0VFVD
YWxsQ2xhc3MoKSBzdXBwbGVtZW50YWxEaWFsVGVsZXBob255Q2FsbFN0cmluZ107DQotICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJDYWxsIFVzaW5nIGlQaG9uZToiLCAibWVudSBpdGVtIHRpdGxl
IGZvciBwaG9uZSBudW1iZXIiKTsNCisgICAgcmV0dXJuIFtnZXRUVUNhbGxDbGFzcygpIHN1cHBs
ZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxsU3RyaW5nXTsNCiB9DQogDQogTlNNZW51SXRlbSAqbWVu
dUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1iZXIpDQpJ
bmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZp
c2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzA4LDYgKzMwOCw3IEBAIHR5cGVkZWYgZW51bSB7DQog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzQW5pbWF0aW5nU2Nyb2xs
KSBCT09MIGlzQW5pbWF0aW5nU2Nyb2xsOw0KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0
IGhvcml6b250YWxTY3JvbGxEZWNlbGVyYXRpb25GYWN0b3I7DQogQHByb3BlcnR5IChub25hdG9t
aWMpIENHRmxvYXQgdmVydGljYWxTY3JvbGxEZWNlbGVyYXRpb25GYWN0b3I7DQorQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbjsN
CiBAZW5kDQogDQogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQ0KQEAgLTUyMSw2
ICs1MjIsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdLR2VzdHVyZVR5DQogLSAo
dm9pZClzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVj
dGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2g7DQogLSAodm9pZClzaG93RGljdGlv
bmFyeUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50
YXRpb25SZWN0Ow0KIC0gKHZvaWQpc2hvd1NoYXJlU2hlZXRGb3I6KE5TU3RyaW5nICopc2VsZWN0
ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCistICh2b2lkKXNob3dU
ZXh0U2VydmljZUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClw
cmVzZW50YXRpb25SZWN0Ow0KKy0gKHZvaWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29u
dGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRp
b25SZWN0Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplciAqc2VsZWN0aW9uTG9uZ1ByZXNzUmVjb2duaXplcjsNCiBAZW5kDQogDQpA
QCAtNTU4LDEyICs1NjEsMTcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlXS0hhbmRs
ZVBvcw0KIEBpbnRlcmZhY2UgVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCA6IFVJVGV4dElu
dGVyYWN0aW9uQXNzaXN0YW50IDxVSVJlc3BvbmRlclN0YW5kYXJkRWRpdEFjdGlvbnM+DQogQGVu
ZA0KIA0KLUBpbnRlcmZhY2UgVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAoVUlXS1RleHRJ
bnRlcmFjdGlvbkFzc2lzdGFudERldGFpbHMpDQorQGludGVyZmFjZSBVSVdLVGV4dEludGVyYWN0
aW9uQXNzaXN0YW50ICgpDQogLSAodm9pZClzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmVBdDoo
Q0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdp
dGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVTdGF0ZSB3aXRoRmxhZ3M6
KFVJV0tTZWxlY3Rpb25GbGFncylmbGFnczsNCiAtICh2b2lkKXNob3dEaWN0aW9uYXJ5Rm9yOihO
U1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7
DQogLSAodm9pZClzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0
aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2g7DQogLSAodm9pZClzaG93
VGV4dFN0eWxlT3B0aW9uczsNCiAtICh2b2lkKWhpZGVUZXh0U3R5bGVPcHRpb25zOw0KKy0gKHZv
aWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2UgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KKy0gKHZvaWQpc2hvd1No
YXJlU2hlZXRGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJl
c2VudGF0aW9uUmVjdDsNCistICh2b2lkKXNob3dUZXh0U2VydmljZUZvcjooTlNTdHJpbmcgKilz
ZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KKy0gKHZvaWQp
c2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OihOU1N0cmluZyAqKXRleHQ7DQorLSAodm9pZClz
Y2hlZHVsZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0OihOU1N0cmluZyAqKXRleHQ7DQog
DQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIFVJTG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIgKmxvdXBlR2VzdHVyZTsNCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGFzc2lnbikgVUlUYXBHZXN0dXJlUmVjb2duaXplciAqc2luZ2xlVGFwR2VzdHVyZTsN
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQ0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1t
CShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFBy
b2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkNCkBAIC0xODAsMTAgKzE4MCw2IEBAIHZvaWQgQ2hp
bGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb24NCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDExMDANCiB2b2lkIENoaWxkUHJvY2Vzczo6c2V0U2hhcmVkSFRU
UENvb2tpZVN0b3JhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKQ0KIHsNCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgcnVudGltZSBjaGVjayB3aGVuIGl0J3Mgbm90IG5lZWRl
ZCAoc29vbikuDQotICAgIGlmICghW05TSFRUUENvb2tpZVN0b3JhZ2UgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6KV0pDQotICAgICAgICBy
ZXR1cm47DQotDQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNvb2tpZVN0b3JhZ2VEYXRhID0g
YWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRpZmllci5kYXRh
KCksIGlkZW50aWZpZXIuc2l6ZSgpKSk7DQogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9y
YWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb29raWVT
dG9yYWdlRGF0YS5nZXQoKSkpOw0KICAgICBbTlNIVFRQQ29va2llU3RvcmFnZSBfc2V0U2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2U6YWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9p
bml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6dWlQcm9jZXNzQ29va2llU3RvcmFnZS5nZXQoKV0p
LmdldCgpXTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9y
eS5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5Lm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9XZWJFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkNCkBAIC0zMjgsMTYgKzMyOCw3IEBA
IHN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmkNCiANCiBzdGF0aWMgaW50
IHR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkNCiB7DQotICAgIGlmIChbTlNNZW51IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSkNCi0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOw0K
LSAgICANCi0gICAgaWYgKG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpID09IFdlYk1vdXNlRXZl
bnQ6OlJpZ2h0QnV0dG9uKQ0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51
VHlwZUNvbnRleHRNZW51KTsNCi0gICAgDQotICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2
ZW50KSA9PSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uICYmIChtb2RpZmllcnNGb3JFdmVudChl
dmVudCkgJiBXZWJFdmVudDo6Q29udHJvbEtleSkpDQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihOU01lbnVUeXBlQ29udGV4dE1lbnUpOw0KLSAgICANCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oTlNNZW51VHlwZU5vbmUpOw0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsNCiB9DQogDQogYm9vbCBXZWJFdmVu
dEZhY3Rvcnk6OnNob3VsZEJlSGFuZGxlZEFzQ29udGV4dENsaWNrKGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQpDQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0NCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5tbQkocmV2aXNp
b24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1Zp
ZXdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtOTcsOCArOTcsNyBAQCAtIChOU0Fy
cmF5IDxVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlvDQogICAgIE5TTXV0YWJsZUFycmF5PFVJ
Vmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW9uICo+ICpwcmV2aWV3QWN0aW9ucyA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07DQogICAgIGZvciAoX1dLRWxlbWVudEFjdGlvbiAqaW1hZ2VBY3Rpb24g
aW4gX2ltYWdlQWN0aW9ucy5nZXQoKSkgew0KICAgICAgICAgVUlWaWV3Q29udHJvbGxlclByZXZp
ZXdBY3Rpb24gKnByZXZpZXdBY3Rpb24gPSBbVUlWaWV3Q29udHJvbGxlclByZXZpZXdBY3Rpb24g
YWN0aW9uV2l0aFRpdGxlOmltYWdlQWN0aW9uLnRpdGxlIGhhbmRsZXI6XihVSVZpZXdDb250cm9s
bGVyUHJldmlld0FjdGlvbiAqYWN0aW9uLCBVSVZpZXdDb250cm9sbGVyICpwcmV2aWV3Vmlld0Nv
bnRyb2xsZXIpIHsNCi0gICAgICAgICAgICBpZiAoW2ltYWdlQWN0aW9uIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IocnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOildKQ0KLSAgICAgICAgICAg
ICAgICBbaW1hZ2VBY3Rpb24gcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOl9hY3RpdmF0ZWRFbGVt
ZW50SW5mby5nZXQoKV07DQorICAgICAgICAgICAgW2ltYWdlQWN0aW9uIHJ1bkFjdGlvbldpdGhF
bGVtZW50SW5mbzpfYWN0aXZhdGVkRWxlbWVudEluZm8uZ2V0KCldOw0KICAgICAgICAgfV07DQog
DQogICAgICAgICBbcHJldmlld0FjdGlvbnMgYWRkT2JqZWN0OnByZXZpZXdBY3Rpb25dOw0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTE0Miw3ICsxNDIsNiBAQCBDRlN0
cmluZ1JlZiBrQVhTQWxsb3dGb3JjZVdlYlNjYWxpbmdFbmFiDQogQGludGVyZmFjZSBVSVNjcm9s
bFZpZXcgKFVJU2Nyb2xsVmlld0ludGVybmFsKQ0KIC0gKHZvaWQpX2FkanVzdEZvckF1dG9tYXRp
Y0tleWJvYXJkSW5mbzooTlNEaWN0aW9uYXJ5KilpbmZvIGFuaW1hdGVkOihCT09MKWFuaW1hdGVk
IGxhc3RBZGp1c3RtZW50OihDR0Zsb2F0KilsYXN0QWRqdXN0bWVudDsNCiAtIChCT09MKV9pc1Nj
cm9sbGluZ1RvVG9wOw0KLS0gKEJPT0wpX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uOw0KIC0g
KENHUG9pbnQpX2FuaW1hdGVkVGFyZ2V0T2Zmc2V0Ow0KIEBlbmQNCiANCkBAIC0yMTgxLDggKzIx
ODAsOCBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBZnRlclNjDQogICAgICAg
ICBpc1N0YWJsZVN0YXRlID0gIVtzZWxmIF9zY3JvbGxWaWV3SXNSdWJiZXJCYW5kaW5nXTsNCiAN
CiAgICAgLy8gRklYTUU6IHRoaXMgY2FuIGJlIG1hZGUgc3RhdGljIGFmdGVyIHdlIHN0b3Agc3Vw
cG9ydGluZyBpT1MgOC54Lg0KLSAgICBpZiAoaXNTdGFibGVTdGF0ZSAmJiBbc2Nyb2xsVmlldyBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbild
KQ0KLSAgICAgICAgaXNTdGFibGVTdGF0ZSA9ICFbc2Nyb2xsVmlldyBwZXJmb3JtU2VsZWN0b3I6
QHNlbGVjdG9yKF9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbildOw0KKyAgICBpZiAoaXNTdGFi
bGVTdGF0ZSkNCisgICAgICAgIGlzU3RhYmxlU3RhdGUgPSAhc2Nyb2xsVmlldy5faXNJbnRlcnJ1
cHRpbmdEZWNlbGVyYXRpb247DQogDQogICAgIGlmIChOU051bWJlciAqc3RhYmxlT3ZlcnJpZGUg
PSBzZWxmLl9zdGFibGVTdGF0ZU92ZXJyaWRlKQ0KICAgICAgICAgaXNTdGFibGVTdGF0ZSA9IHN0
YWJsZU92ZXJyaWRlLmJvb2xWYWx1ZTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQ0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkNCkBAIC0yMjcsMTMgKzIyNyw2IEBAIHZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3INCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lk
IChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpDQogew0KICAgICBhdXRvIHBhc3NMaWJyYXJ5ID0g
YWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0XSk7DQotICAgIGlmICgh
W3Bhc3NMaWJyYXJ5IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3BlblBheW1lbnRTZXR1
cEZvck1lcmNoYW50SWRlbnRpZmllcjpkb21haW46Y29tcGxldGlvbjopXSkgew0KLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlcl0gew0KLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsNCi0gICAgICAgIH0pOw0KLSAgICAgICAgcmV0
dXJuOw0KLSAgICB9DQotDQogICAgIFtwYXNzTGlicmFyeSBvcGVuUGF5bWVudFNldHVwRm9yTWVy
Y2hhbnRJZGVudGlmaWVyOm1lcmNoYW50SWRlbnRpZmllciBkb21haW46ZG9tYWluTmFtZSBjb21w
bGV0aW9uOltjb21wbGV0aW9uSGFuZGxlcl0oQk9PTCByZXN1bHQpIHsNCiAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIsIHJlc3VsdF0gew0KICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7DQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMTIyMDIpDQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5n
IGNvcHkpDQpAQCAtMzExMiwxMSArMzExMiw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpc21pc3ND
b250ZW50UmVsYXRpdmUNCiAgICAgaWYgKG1fdmlldy53aW5kb3cuaXNLZXlXaW5kb3cgfHwgaGFz
QWN0aXZlSW1tZWRpYXRlQWN0aW9uKSB7DQogICAgICAgICBXZWJDb3JlOjpEaWN0aW9uYXJ5TG9v
a3VwOjpoaWRlUG9wdXAoKTsNCiANCi0gICAgICAgIGlmIChEYXRhRGV0ZWN0b3JzTGlicmFyeSgp
KSB7DQotICAgICAgICAgICAgRERBY3Rpb25zTWFuYWdlciAqYWN0aW9uc01hbmFnZXIgPSBbZ2V0
RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl07DQotICAgICAgICAgICAgaWYg
KFthY3Rpb25zTWFuYWdlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlcXVlc3RCdWJi
bGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6KV0pDQotICAgICAgICAgICAgICAgIFthY3Rpb25z
TWFuYWdlciByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWlsdXJlOllFU107DQotICAg
ICAgICB9DQorICAgICAgICBpZiAoRGF0YURldGVjdG9yc0xpYnJhcnkoKSkNCisgICAgICAgICAg
ICBbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIHJlcXVlc3RCdWJi
bGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6WUVTXTsNCiAgICAgfQ0KIA0KICAgICBjbGVhclRl
eHRJbmRpY2F0b3JXaXRoQW5pbWF0aW9uKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dEaXNt
aXNzYWxBbmltYXRpb246OkZhZGVPdXQpOw0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQkocmV2aXNpb24g
MjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFz
c2lzdGFudC5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTU5LDEwICs1OSw2IEBAIFNPRlRfTElOS19Q
UklWQVRFX0ZSQU1FV09SSyhUQ0MpDQogU09GVF9MSU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0
LCBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBzZXJ2aWNlLCBDRkRpY3Rp
b25hcnlSZWYgb3B0aW9ucyksIChzZXJ2aWNlLCBvcHRpb25zKSkNCiBTT0ZUX0xJTktfQ09OU1RB
TlQoVENDLCBrVENDU2VydmljZVBob3RvcywgQ0ZTdHJpbmdSZWYpDQogDQotQGludGVyZmFjZSBE
RERldGVjdGlvbkNvbnRyb2xsZXIgKFN0YWdpbmdUb1JlbW92ZSkNCi0tIChOU0FycmF5ICopYWN0
aW9uc0ZvclVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVy
IHNlbGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQgcmVzdWx0czooTlNBcnJheSAq
KXJlc3VsdHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4dDsNCi1AZW5kDQotDQogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsNCiANCiAjaWYgSEFWRShBUFBfTElOS1MpDQpAQCAtNDgwLDI5
ICs0NzYsMjUgQEAgLSAodm9pZClzaG93RGF0YURldGVjdG9yc1NoZWV0DQogICAgICAgICByZXR1
cm47DQogDQogICAgIERERGV0ZWN0aW9uQ29udHJvbGxlciAqY29udHJvbGxlciA9IFtnZXRERERl
dGVjdGlvbkNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZENvbnRyb2xsZXJdOw0KLSAgICBOU0FycmF5
ICpkYXRhRGV0ZWN0b3JzQWN0aW9ucyA9IG5pbDsNCi0gICAgaWYgKFtjb250cm9sbGVyIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWN0aW9uc0ZvclVSTDppZGVudGlmaWVyOnNlbGVjdGVk
VGV4dDpyZXN1bHRzOmNvbnRleHQ6KV0pIHsNCi0gICAgICAgIE5TRGljdGlvbmFyeSAqY29udGV4
dCA9IG5pbDsNCi0gICAgICAgIE5TU3RyaW5nICp0ZXh0QXRTZWxlY3Rpb24gPSBuaWw7DQotICAg
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5kZWRDb250ZXh0Ow0KLQ0K
LSAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRhdGFE
ZXRlY3Rpb25Db250ZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KV0pDQotICAgICAgICAgICAg
Y29udGV4dCA9IFtkZWxlZ2F0ZSBkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNoZWV0QXNz
aXN0YW50OnNlbGZdOw0KLSAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNlbGVjdGVkVGV4dEZvckFjdGlvblNoZWV0QXNzaXN0YW50OildKQ0KLSAgICAg
ICAgICAgIHRleHRBdFNlbGVjdGlvbiA9IFtkZWxlZ2F0ZSBzZWxlY3RlZFRleHRGb3JBY3Rpb25T
aGVldEFzc2lzdGFudDpzZWxmXTsNCi0gICAgICAgIGlmICghcG9zaXRpb25JbmZvcm1hdGlvbi50
ZXh0QmVmb3JlLmlzRW1wdHkoKSB8fCAhcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIuaXNF
bXB0eSgpKSB7DQotICAgICAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0gYWRvcHROUyhbQHsNCi0g
ICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogcG9zaXRpb25J
bmZvcm1hdGlvbi50ZXh0QmVmb3JlLA0KLSAgICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9y
c1RyYWlsaW5nVGV4dCgpIDogcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIsDQotICAgICAg
ICAgICAgfSBtdXRhYmxlQ29weV0pOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIGlmIChj
b250ZXh0KQ0KLSAgICAgICAgICAgICAgICBbZXh0ZW5kZWRDb250ZXh0IGFkZEVudHJpZXNGcm9t
RGljdGlvbmFyeTpjb250ZXh0XTsNCi0gICAgICAgICAgICBjb250ZXh0ID0gZXh0ZW5kZWRDb250
ZXh0LmdldCgpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZGF0YURldGVjdG9yc0FjdGlvbnMgPSBb
Y29udHJvbGxlciBhY3Rpb25zRm9yVVJMOnRhcmdldFVSTCBpZGVudGlmaWVyOnBvc2l0aW9uSW5m
b3JtYXRpb24uZGF0YURldGVjdG9ySWRlbnRpZmllciBzZWxlY3RlZFRleHQ6dGV4dEF0U2VsZWN0
aW9uIHJlc3VsdHM6cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgp
IGNvbnRleHQ6Y29udGV4dF07DQotICAgIH0gZWxzZQ0KLSAgICAgICAgZGF0YURldGVjdG9yc0Fj
dGlvbnMgPSBbY29udHJvbGxlciBhY3Rpb25zRm9yQW5jaG9yOm5pbCB1cmw6dGFyZ2V0VVJMIGZv
ckZyYW1lOm5pbF07DQorICAgIE5TRGljdGlvbmFyeSAqY29udGV4dCA9IG5pbDsNCisgICAgTlNT
dHJpbmcgKnRleHRBdFNlbGVjdGlvbiA9IG5pbDsNCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IGV4dGVuZGVkQ29udGV4dDsNCisNCisgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yQWN0aW9uU2hlZXRB
c3Npc3RhbnQ6KV0pDQorICAgICAgICBjb250ZXh0ID0gW2RlbGVnYXRlIGRhdGFEZXRlY3Rpb25D
b250ZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07DQorICAgIGlmIChbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZWxlY3RlZFRleHRGb3JBY3Rpb25TaGVldEFz
c2lzdGFudDopXSkNCisgICAgICAgIHRleHRBdFNlbGVjdGlvbiA9IFtkZWxlZ2F0ZSBzZWxlY3Rl
ZFRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsNCisgICAgaWYgKCFwb3NpdGlvbklu
Zm9ybWF0aW9uLnRleHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFwb3NpdGlvbkluZm9ybWF0aW9uLnRl
eHRBZnRlci5pc0VtcHR5KCkpIHsNCisgICAgICAgIGV4dGVuZGVkQ29udGV4dCA9IGFkb3B0TlMo
W0B7DQorICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogcG9zaXRp
b25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLA0KKyAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3Jz
VHJhaWxpbmdUZXh0KCkgOiBwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRBZnRlciwNCisgICAgICAg
IH0gbXV0YWJsZUNvcHldKTsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKGNvbnRleHQpDQorICAg
ICAgICAgICAgW2V4dGVuZGVkQ29udGV4dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6Y29udGV4
dF07DQorICAgICAgICBjb250ZXh0ID0gZXh0ZW5kZWRDb250ZXh0LmdldCgpOw0KKyAgICB9DQor
ICAgIE5TQXJyYXkgKmRhdGFEZXRlY3RvcnNBY3Rpb25zID0gW2NvbnRyb2xsZXIgYWN0aW9uc0Zv
clVSTDp0YXJnZXRVUkwgaWRlbnRpZmllcjpwb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3Rv
cklkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OnRleHRBdFNlbGVjdGlvbiByZXN1bHRzOnBvc2l0aW9u
SW5mb3JtYXRpb24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHRdOw0K
ICAgICBpZiAoW2RhdGFEZXRlY3RvcnNBY3Rpb25zIGNvdW50XSA9PSAwKQ0KICAgICAgICAgcmV0
dXJuOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQko
d29ya2luZyBjb3B5KQ0KQEAgLTIzOSwyOCArMjM5LDYgQEAgLSAodm9pZClzZWxlY3RXb3JkOw0K
IC0gKHZvaWQpc2NoZWR1bGVSZWFuYWx5c2lzOw0KIEBlbmQNCiANCi1AaW50ZXJmYWNlIFVJVGV4
dEludGVyYWN0aW9uQXNzaXN0YW50IChTdGFnaW5nVG9SZW1vdmUpDQotLSAodm9pZClzY2hlZHVs
ZVJlcGxhY2VtZW50c0ZvclRleHQ6KE5TU3RyaW5nICopdGV4dDsNCi0tICh2b2lkKXNob3dUZXh0
U2VydmljZUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVz
ZW50YXRpb25SZWN0Ow0KLS0gKHZvaWQpc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9y
VGV4dDooTlNTdHJpbmcgKil0ZXh0Ow0KLS0gKHZvaWQpc2hvd1NoYXJlU2hlZXRGb3I6KE5TU3Ry
aW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi0t
ICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQgZnJvbVJlY3Q6KENHUmVj
dClwcmVzZW50YXRpb25SZWN0Ow0KLS0gKHZvaWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRo
Q29udGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50
YXRpb25SZWN0Ow0KLUBlbmQNCi0NCi1AaW50ZXJmYWNlIFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQg
KFN0YWdpbmdUb1JlbW92ZSkNCi0tICh2b2lkKXNob3dUZXh0U2VydmljZUZvcjooTlNTdHJpbmcg
KilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLS0gKHZv
aWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCBmcm9tUmVjdDooQ0dSZWN0KXBy
ZXNlbnRhdGlvblJlY3Q7DQotLSAodm9pZClsb29rdXA6KE5TU3RyaW5nICopdGV4dFdpdGhDb250
ZXh0IHdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRhdGlv
blJlY3Q7DQotQGVuZA0KLQ0KLUBpbnRlcmZhY2UgVUlLZXlib2FyZEltcGwgKFN0YWdpbmdUb1Jl
bW92ZSkNCi0tICh2b2lkKWRpZEhhbmRsZVdlYktleUV2ZW50Ow0KLS0gKHZvaWQpZGlkSGFuZGxl
V2ViS2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQ7DQotLSAodm9pZClkZWxldGVGcm9tSW5w
dXRXaXRoRmxhZ3M6KE5TVUludGVnZXIpZmxhZ3M7DQotLSAodm9pZClhZGRJbnB1dFN0cmluZzoo
TlNTdHJpbmcgKilzdHJpbmcgd2l0aEZsYWdzOihOU1VJbnRlZ2VyKWZsYWdzIHdpdGhJbnB1dE1h
bmFnZXJIaW50OihOU1N0cmluZyAqKWhpbnQ7DQotQGVuZA0KLQ0KIEBpbnRlcmZhY2UgVUlWaWV3
IChVSVZpZXdJbnRlcm5hbEhhY2spDQogKyAoQk9PTClfYWRkQ29tcGxldGlvbjoodm9pZCheKShC
T09MKSljb21wbGV0aW9uOw0KIEBlbmQNCkBAIC0yNzIsMTAgKzI1MCw2IEBAIEBpbnRlcmZhY2Ug
VUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKFN0YWcNCiBAZW5kDQogI2VuZGlmDQogDQotQGludGVy
ZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKFN0YWdpbmdUb1JlbW92ZSkNCi0tIChERFJlc3Vs
dFJlZilyZXN1bHRGb3JVUkw6KE5TVVJMICopdXJsIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRl
bnRpZmllciBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0IHJlc3VsdHM6KE5T
QXJyYXkgKilyZXN1bHRzIGNvbnRleHQ6KE5TRGljdGlvbmFyeSAqKWNvbnRleHQgZXh0ZW5kZWRD
b250ZXh0OihOU0RpY3Rpb25hcnkgKiopZXh0ZW5kZWRDb250ZXh0Ow0KLUBlbmQNCi0NCiBAaW50
ZXJmYWNlIFdLRm9jdXNlZEVsZW1lbnRJbmZvIDogTlNPYmplY3QgPF9XS0ZvY3VzZWRFbGVtZW50
SW5mbz4NCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjoo
Y29uc3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIGlzVXNlckluaXRpYXRl
ZDooQk9PTClpc1VzZXJJbml0aWF0ZWQ7DQogQGVuZA0KQEAgLTE4NzksMTUgKzE4NTMsOSBAQCAt
ICh2b2lkKV9sb29rdXA6KGlkKXNlbmRlcg0KICAgICAgICAgDQogICAgICAgICBTdHJpbmcgc2Vs
ZWN0aW9uQ29udGV4dCA9IHRleHRCZWZvcmUgKyBzZWxlY3RlZFRleHQgKyB0ZXh0QWZ0ZXI7DQog
ICAgICAgICBpZiAodmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQpIHsNCi0gICAgICAgICAg
ICBpZiAoW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IobG9va3VwOndpdGhSYW5nZTpmcm9tUmVjdDopXSkNCi0gICAgICAgICAgICAgICAg
W3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGxvb2t1cDpzZWxlY3Rpb25Db250ZXh0IHdp
dGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxlbmd0aCgpLCBzZWxlY3RlZFRleHQubGVu
Z3RoKCkpIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOw0KLSAgICAgICAgICAgIGVsc2UNCi0g
ICAgICAgICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGxvb2t1cDpzZWxl
Y3RlZFRleHQgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQorICAgICAgICAgICAgW3ZpZXct
Pl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGxvb2t1cDpzZWxlY3Rpb25Db250ZXh0IHdpdGhSYW5n
ZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxlbmd0aCgpLCBzZWxlY3RlZFRleHQubGVuZ3RoKCkp
IGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOw0KICAgICAgICAgfSBlbHNlIHsNCi0gICAgICAg
ICAgICBpZiAoW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihsb29rdXA6d2l0aFJhbmdlOmZyb21SZWN0OildKQ0KLSAgICAgICAgICAgICAg
ICBbdmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0aW9uQ29udGV4dCB3
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dEJlZm9yZS5sZW5ndGgoKSwgc2VsZWN0ZWRUZXh0Lmxl
bmd0aCgpKSBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsNCi0gICAgICAgICAgICBlbHNlDQot
ICAgICAgICAgICAgICAgIFt2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50IGxvb2t1cDpzZWxl
Y3RlZFRleHQgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQorICAgICAgICAgICAgW3ZpZXct
Pl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgbG9va3VwOnNlbGVjdGlvbkNvbnRleHQgd2l0aFJhbmdl
Ok5TTWFrZVJhbmdlKHRleHRCZWZvcmUubGVuZ3RoKCksIHNlbGVjdGVkVGV4dC5sZW5ndGgoKSkg
ZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQogICAgICAgICB9DQogICAgIH0pOw0KIH0NCkBA
IC0xOTAzLDE4ICsxODcxLDE4IEBAIC0gKHZvaWQpX3NoYXJlOihpZClzZW5kZXINCiANCiAgICAg
ICAgIENHUmVjdCBwcmVzZW50YXRpb25SZWN0ID0gdmlldy0+X3BhZ2UtPmVkaXRvclN0YXRlKCku
cG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0c1swXS5yZWN0KCk7DQogDQotICAgICAgICBp
ZiAodmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW3ZpZXctPl90ZXh0U2VsZWN0aW9u
QXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1NoYXJlU2hlZXRGb3I6
ZnJvbVJlY3Q6KV0pDQorICAgICAgICBpZiAodmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQp
DQogICAgICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNo
ZWV0Rm9yOnN0cmluZyBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsNCi0gICAgICAgIGVsc2Ug
aWYgKHZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW3ZpZXctPl93ZWJTZWxlY3Rpb25B
c3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93U2hhcmVTaGVldEZvcjpm
cm9tUmVjdDopXSkNCisgICAgICAgIGVsc2UgaWYgKHZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3Rh
bnQpDQogICAgICAgICAgICAgW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJl
U2hlZXRGb3I6c3RyaW5nIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOw0KICAgICB9KTsNCiB9
DQogDQogLSAodm9pZClfYWRkU2hvcnRjdXQ6KGlkKXNlbmRlcg0KIHsNCi0gICAgaWYgKF90ZXh0
U2VsZWN0aW9uQXNzaXN0YW50ICYmIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHNob3dUZXh0U2VydmljZUZvcjpmcm9tUmVjdDopXSkNCisgICAg
aWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQ0KICAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNz
aXN0YW50IHNob3dUZXh0U2VydmljZUZvcjpbc2VsZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9w
YWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVj
dCgpXTsNCi0gICAgZWxzZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCAmJiBbX3dlYlNlbGVj
dGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dUZXh0U2Vydmlj
ZUZvcjpmcm9tUmVjdDopXSkNCisgICAgZWxzZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCkN
CiAgICAgICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dUZXh0U2VydmljZUZvcjpbc2Vs
ZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXRE
YXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVjdCgpXTsNCiB9DQogDQpAQCAtMTk0NCwxNCArMTkx
MiwxMiBAQCAtICh2b2lkKV9wcm9tcHRGb3JSZXBsYWNlOihpZClzZW5kZXINCiAgICAgaWYgKHdv
cmRBdFNlbGVjdGlvbi5pc0VtcHR5KCkpDQogICAgICAgICByZXR1cm47DQogDQotICAgIGlmIChb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzY2hl
ZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6KV0pDQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Np
c3RhbnQgc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OndvcmRBdFNlbGVjdGlvbl07DQorICAg
IFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzY2hlZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6d29y
ZEF0U2VsZWN0aW9uXTsNCiB9DQogDQogLSAodm9pZClfdHJhbnNsaXRlcmF0ZUNoaW5lc2U6KGlk
KXNlbmRlcg0KIHsNCi0gICAgaWYgKFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6
KV0pDQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2NoZWR1bGVDaGluZXNlVHJh
bnNsaXRlcmF0aW9uRm9yVGV4dDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgp
LndvcmRBdFNlbGVjdGlvbl07DQorICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzY2hlZHVs
ZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RM
YXlvdXREYXRhKCkud29yZEF0U2VsZWN0aW9uXTsNCiB9DQogDQogLSAodm9pZClfcmVhbmFseXpl
OihpZClzZW5kZXINCkBAIC0zMzg1LDE0ICszMzUxLDYgQEAgLSAodm9pZClfZGlkSGFuZGxlS2V5
RXZlbnQ6KFdlYklPU0V2ZW50IA0KICAgICAgICAgcmV0dXJuOw0KICAgICB9DQogICAgICAgICAN
Ci0gICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlEb3duKSB7DQotICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBvbmx5IGZvciBzdGFnaW5nIHB1cnBvc2VzLg0KLSAgICAgICAgaWYgKFtb
VUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoZGlkSGFuZGxlV2ViS2V5RXZlbnQ6KV0pDQotICAgICAgICAgICAgW1tVSUtleWJvYXJkSW1w
bCBzaGFyZWRJbnN0YW5jZV0gZGlkSGFuZGxlV2ViS2V5RXZlbnQ6ZXZlbnRdOw0KLSAgICAgICAg
ZWxzZQ0KLSAgICAgICAgICAgIFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIGRpZEhh
bmRsZVdlYktleUV2ZW50XTsNCi0gICAgfQ0KLQ0KICAgICAvLyBJZiB3ZSBhcmVuJ3QgaW50ZXJh
Y3Rpbmcgd2l0aCBlZGl0YWJsZSBjb250ZW50LCB3ZSBzdGlsbCBuZWVkIHRvIGNhbGwgW3N1cGVy
IF9oYW5kbGVLZXlVSUV2ZW50Ol0NCiAgICAgLy8gc28gdGhhdCBrZXlib2FyZCByZXBlYXQgd2ls
bCB3b3JrIGNvcnJlY3RseS4gSWYgd2UgYXJlIGludGVyYWN0aW5nIHdpdGggZWRpdGFibGUgY29u
dGVudCwNCiAgICAgLy8gd2UgYWxyZWFkeSBkaWQgc28gaW4gX2hhbmRsZUtleVVJRXZlbnQuDQpA
QCAtMzUwNiwyMSArMzQ2NCwxNCBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooV2ViSU9T
RXZlbnQgDQogICAgIGNhc2Uga1dlYkJhY2tzcGFjZUtleToNCiAgICAgY2FzZSBrV2ViRGVsZXRl
S2V5Og0KICAgICAgICAgaWYgKGNvbnRlbnRFZGl0YWJsZSkgew0KLSAgICAgICAgICAgIC8vIEZJ
WE1FOiByZW1vdmUgZGVsZXRlRnJvbUlucHV0IG9uY2UgVUlLaXQgYWRvcHRzIGRlbGV0ZUZyb21J
bnB1dFdpdGhGbGFncw0KLSAgICAgICAgICAgIGlmIChba2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3M6KV0pDQotICAgICAgICAgICAg
ICAgIFtrZXlib2FyZCBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFn
c107DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRl
RnJvbUlucHV0XTsNCisgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlucHV0V2l0aEZs
YWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOw0KICAgICAgICAgICAgIHJldHVybiBZRVM7DQogICAg
ICAgICB9DQogICAgICAgICBicmVhazsNCiANCiAgICAgY2FzZSBrV2ViU3BhY2VLZXk6DQogICAg
ICAgICBpZiAoY29udGVudEVkaXRhYmxlICYmIGlzQ2hhckV2ZW50KSB7DQotICAgICAgICAgICAg
aWYgKFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFkZElucHV0U3RyaW5n
OndpdGhGbGFnczp3aXRoSW5wdXRNYW5hZ2VySGludDopXSkNCi0gICAgICAgICAgICAgICAgW2tl
eWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50Lmtl
eWJvYXJkRmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6ZXZlbnQuaW5wdXRNYW5hZ2VySGludF07
DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRT
dHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107DQor
ICAgICAgICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0
aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6ZXZlbnQuaW5w
dXRNYW5hZ2VySGludF07DQogICAgICAgICAgICAgcmV0dXJuIFlFUzsNCiAgICAgICAgIH0NCiAg
ICAgICAgIGJyZWFrOw0KQEAgLTM1NDAsMTAgKzM0OTEsNyBAQCAtIChCT09MKV9pbnRlcnByZXRL
ZXlFdmVudDooV2ViSU9TRXZlbnQgDQogDQogICAgIGRlZmF1bHQ6DQogICAgICAgICBpZiAoY29u
dGVudEVkaXRhYmxlICYmIGlzQ2hhckV2ZW50KSB7DQotICAgICAgICAgICAgaWYgKFtrZXlib2Fy
ZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFkZElucHV0U3RyaW5nOndpdGhGbGFnczp3
aXRoSW5wdXRNYW5hZ2VySGludDopXSkNCi0gICAgICAgICAgICAgICAgW2tleWJvYXJkIGFkZElu
cHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3Mg
d2l0aElucHV0TWFuYWdlckhpbnQ6ZXZlbnQuaW5wdXRNYW5hZ2VySGludF07DQotICAgICAgICAg
ICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQu
Y2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107DQorICAgICAgICAgICAg
W2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50
LmtleWJvYXJkRmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6ZXZlbnQuaW5wdXRNYW5hZ2VySGlu
dF07DQogICAgICAgICAgICAgcmV0dXJuIFlFUzsNCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFr
Ow0KQEAgLTQyMDgsMjUgKzQxNTYsMjMgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFGb3JQcmV2
aWV3SXRlbUNvbg0KICAgICAgICAgICAgICAgICBjb250ZXh0ID0gW3VpRGVsZWdhdGUgX2RhdGFE
ZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzpfd2ViVmlld107DQogDQogICAgICAgICAgICAgRERE
ZXRlY3Rpb25Db250cm9sbGVyICpjb250cm9sbGVyID0gW2dldERERGV0ZWN0aW9uQ29udHJvbGxl
ckNsYXNzKCkgc2hhcmVkQ29udHJvbGxlcl07DQotICAgICAgICAgICAgaWYgKFtjb250cm9sbGVy
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVzdWx0Rm9yVVJMOmlkZW50aWZpZXI6c2Vs
ZWN0ZWRUZXh0OnJlc3VsdHM6Y29udGV4dDpleHRlbmRlZENvbnRleHQ6KV0pIHsNCi0gICAgICAg
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICpuZXdDb250ZXh0ID0gbmlsOw0KLSAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5kZWRDb250ZXh0Ow0KLSAgICAg
ICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtjb250cm9sbGVyIHJlc3VsdEZvclVS
TDpkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhTGlua10gaWRlbnRpZmllcjpfcG9zaXRpb25J
bmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDpbc2VsZiBzZWxl
Y3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9yUmVzdWx0
cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250ZXh0OiZuZXdDb250ZXh0XTsNCi0g
ICAgICAgICAgICAgICAgaWYgKGRkUmVzdWx0KQ0KLSAgICAgICAgICAgICAgICAgICAgZGF0YUZv
clByZXZpZXdbVUlQcmV2aWV3RGF0YUREUmVzdWx0XSA9IChfX2JyaWRnZSBpZClkZFJlc3VsdDsN
Ci0gICAgICAgICAgICAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLmlz
RW1wdHkoKSB8fCAhX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLmlzRW1wdHkoKSkgew0K
LSAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0gYWRvcHROUyhbQHsNCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0KCkgOiBfcG9z
aXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIGdl
dGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0
QWZ0ZXIsDQotICAgICAgICAgICAgICAgICAgICB9IG11dGFibGVDb3B5XSk7DQotICAgICAgICAg
ICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgICAgIGlmIChuZXdDb250ZXh0KQ0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQgYWRkRW50cmllc0Zyb21EaWN0aW9u
YXJ5Om5ld0NvbnRleHRdOw0KLSAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dCA9IGV4dGVu
ZGVkQ29udGV4dC5nZXQoKTsNCi0gICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIE5TRGlj
dGlvbmFyeSAqbmV3Q29udGV4dCA9IG5pbDsNCisgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gZXh0ZW5kZWRDb250ZXh0Ow0KKyAgICAgICAgICAgIEREUmVzdWx0UmVm
IGRkUmVzdWx0ID0gW2NvbnRyb2xsZXIgcmVzdWx0Rm9yVVJMOmRhdGFGb3JQcmV2aWV3W1VJUHJl
dmlld0RhdGFMaW5rXSBpZGVudGlmaWVyOl9wb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3Rv
cklkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OltzZWxmIHNlbGVjdGVkVGV4dF0gcmVzdWx0czpfcG9z
aXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGNvbnRleHQ6Y29udGV4
dCBleHRlbmRlZENvbnRleHQ6Jm5ld0NvbnRleHRdOw0KKyAgICAgICAgICAgIGlmIChkZFJlc3Vs
dCkNCisgICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUREUmVzdWx0
XSA9IChfX2JyaWRnZSBpZClkZFJlc3VsdDsNCisgICAgICAgICAgICBpZiAoIV9wb3NpdGlvbklu
Zm9ybWF0aW9uLnRleHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFfcG9zaXRpb25JbmZvcm1hdGlvbi50
ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIGV4dGVuZGVkQ29udGV4dCA9
IGFkb3B0TlMoW0B7DQorICAgICAgICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc0xlYWRp
bmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLA0KKyAgICAgICAgICAg
ICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNUcmFpbGluZ1RleHQoKSA6IF9wb3NpdGlvbkluZm9y
bWF0aW9uLnRleHRBZnRlciwNCisgICAgICAgICAgICAgICAgfSBtdXRhYmxlQ29weV0pOw0KKyAg
ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgaWYgKG5ld0NvbnRleHQpDQotICAgICAg
ICAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhRERDb250ZXh0XSA9IG5l
d0NvbnRleHQ7DQorICAgICAgICAgICAgICAgICAgICBbZXh0ZW5kZWRDb250ZXh0IGFkZEVudHJp
ZXNGcm9tRGljdGlvbmFyeTpuZXdDb250ZXh0XTsNCisgICAgICAgICAgICAgICAgbmV3Q29udGV4
dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsNCiAgICAgICAgICAgICB9DQorICAgICAgICAgICAg
aWYgKG5ld0NvbnRleHQpDQorICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmll
d0RhdGFERENvbnRleHRdID0gbmV3Q29udGV4dDsNCiAgICAgICAgIH0NCiAgICAgfSBlbHNlIGlm
IChjYW5TaG93SW1hZ2VQcmV2aWV3KSB7DQogICAgICAgICAqdHlwZSA9IFVJUHJldmlld0l0ZW1U
eXBlSW1hZ2U7DQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShy
ZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMTc3LDgg
KzE3Nyw3IEBAIE1hY2hTZW5kUmlnaHQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0ENCiAgICAg
Ly8gSW52YWxpZGF0ZSB0aGUgZmVuY2UgaWYgYSBzeW5jaHJvbm91cyBtZXNzYWdlIGFycml2ZXMg
d2hpbGUgaXQncyBpbnN0YWxsZWQsDQogICAgIC8vIGJlY2F1c2Ugd2Ugd29uJ3QgYmUgYWJsZSB0
byByZXBseSBkdXJpbmcgdGhlIGZlbmNlLXdhaXQuDQogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5pbnN0YWxsSW5jb21pbmdT
eW5jTWVzc2FnZUNhbGxiYWNrKFtyb290TGF5ZXJDb250ZXh0XSB7DQotICAgICAgICBpZiAoW3Jv
b3RMYXllckNvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZhbGlkYXRlRmVu
Y2VzKV0pDQotICAgICAgICAgICAgW3Jvb3RMYXllckNvbnRleHQgaW52YWxpZGF0ZUZlbmNlc107
DQorICAgICAgICBbcm9vdExheWVyQ29udGV4dCBpbnZhbGlkYXRlRmVuY2VzXTsNCiAgICAgfSk7
DQogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHJldGFpbmVkUGFnZSA9ICZtX3dlYlBhZ2VQcm94
eTsNCiAgICAgW0NBVHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpbY2FsbGJhY2tJRCwgcmV0
YWluZWRQYWdlXSB7DQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjEy
MjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtNDAxLDEwICs0MDEsOCBAQCAtIChpZDxO
U0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsDQogDQogICAgIGFjdGlvbkNvbnRleHQu
YWx0TW9kZSA9IFlFUzsNCiAgICAgYWN0aW9uQ29udGV4dC5pbW1lZGlhdGUgPSBZRVM7DQotICAg
IGlmIChbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoaGFzQWN0aW9uc0ZvclJlc3VsdDphY3Rpb25Db250ZXh0Oild
KSB7DQotICAgICAgICBpZiAoIVtbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFu
YWdlcl0gaGFzQWN0aW9uc0ZvclJlc3VsdDphY3Rpb25Db250ZXh0Lm1haW5SZXN1bHQgYWN0aW9u
Q29udGV4dDphY3Rpb25Db250ZXh0XSkNCi0gICAgICAgICAgICByZXR1cm4gbmlsOw0KLSAgICB9
DQorICAgIGlmICghW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBo
YXNBY3Rpb25zRm9yUmVzdWx0OmFjdGlvbkNvbnRleHQubWFpblJlc3VsdCBhY3Rpb25Db250ZXh0
OmFjdGlvbkNvbnRleHRdKQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAgICAgUmVmUHRyPFdl
YlBhZ2VQcm94eT4gcGFnZSA9IF9wYWdlOw0KICAgICBQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlJ
RCBvdmVybGF5SUQgPSBfaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhT3JpZ2luYXRpbmdQ
YWdlT3ZlcmxheTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRl
eHRNZW51UHJveHlNYWMubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHdv
cmtpbmcgY29weSkNCkBAIC0yNjYsOSArMjY2LDYgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5
TWFjOjpjbGVhclNlcnZpYw0KIA0KIFJldGFpblB0cjxOU01lbnVJdGVtPiBXZWJDb250ZXh0TWVu
dVByb3h5TWFjOjpjcmVhdGVTaGFyZU1lbnVJdGVtKCkNCiB7DQotICAgIGlmICghW1tOU01lbnVJ
dGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJkU2hhcmVNZW51
SXRlbVdpdGhJdGVtczopXSkNCi0gICAgICAgIHJldHVybiBuaWw7DQotDQogICAgIGNvbnN0IFdl
YkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0RGF0YSA9IG1fY29udGV4dC53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpOw0KIA0KICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>301306</attachid>
            <date>2017-02-12 09:36:06 -0800</date>
            <delta_ts>2017-02-12 09:36:42 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>file_168183.txt</filename>
            <type>text/plain</type>
            <size>42511</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncwkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQ0KQEAgLTEyNyw5ICsxMjcsNiBA
QA0KIC8qIE9wdGlvbiBpbiBzZWdtZW50ZWQgY29udHJvbCBmb3IgaW5zZXJ0aW5nIGEgYnVsbGV0
ZWQgbGlzdCBpbiB0ZXh0IGVkaXRpbmcgKi8NCiAiQnVsbGV0ZWQgbGlzdCIgPSAiQnVsbGV0ZWQg
bGlzdCI7DQogDQotLyogbWVudSBpdGVtIHRpdGxlIGZvciBwaG9uZSBudW1iZXIgKi8NCi0iQ2Fs
bCBVc2luZyBpUGhvbmU6IiA9ICJDYWxsIFVzaW5nIGlQaG9uZToiOw0KLQ0KIC8qIFRpdGxlIGZv
ciBDYW5jZWwgYnV0dG9uIGxhYmVsIGluIGJ1dHRvbiBiYXIgKi8NCiAiQ2FuY2VsIGJ1dHRvbiBs
YWJlbCBpbiBidXR0b24gYmFyIiA9ICJDYW5jZWwiOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0K
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTgzLDYgKzgzLDExIEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2FjaGVkVVJMUmVz
cG9uc2VDYWxsQmENCiAjZW5kaWYNCiANCiAjaWYgZGVmaW5lZChfX09CSkNfXykNCitAaW50ZXJm
YWNlIE5TVVJMQ2FjaGUgKCkNCistKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZW1vcnlDYXBhY2l0
eTooTlNVSW50ZWdlciltZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6KE5TVUludGVnZXIpZGlz
a0NhcGFjaXR5IHJlbGF0aXZlUGF0aDooTlNTdHJpbmcgKilwYXRoOw0KKy0gKENGVVJMQ2FjaGVS
ZWYpX0NGVVJMQ2FjaGU7DQorQGVuZA0KKw0KIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0ICgpDQog
KyAoTlNBcnJheSAqKWFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6KE5TU3Ry
aW5nICopaG9zdDsNCiArICh2b2lkKXNldEFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZToo
TlNBcnJheSAqKWFsbG93IGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdDsNCkBAIC0xOTAsMTUgKzE5
NSw2IEBAIENGVVJMUmVzcG9uc2VSZWYgQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGgNCiANCiBXVEZf
RVhURVJOX0NfRU5EDQogDQotLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5IGZvcndhcmQgZGVjbGFy
ZSB0aGlzIFNQSSB3aGVuIGJ1aWxkaW5nIGZvciBpT1Mgd2l0aG91dCB0aGUgQXBwbGUgSW50ZXJu
YWwgU0RLLg0KLS8vIEFzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzE5MDI1MDE2
Piwgd2UgbXVzdCBmb3J3YXJkIGRlY2xhcmUgdGhpcyBTUEkgcmVnYXJkbGVzcyBvZiB3aGV0aGVy
DQotLy8gd2UgYXJlIGJ1aWxkaW5nIHdpdGggdGhlIEFwcGxlIEludGVybmFsIFNESy4NCi0jaWYg
ZGVmaW5lZChfX09CSkNfXykgJiYgUExBVEZPUk0oSU9TKQ0KLUBpbnRlcmZhY2UgTlNVUkxDYWNo
ZSAoKQ0KLS0oaWQpX2luaXRXaXRoTWVtb3J5Q2FwYWNpdHk6KE5TVUludGVnZXIpbWVtb3J5Q2Fw
YWNpdHkgZGlza0NhcGFjaXR5OihOU1VJbnRlZ2VyKWRpc2tDYXBhY2l0eSByZWxhdGl2ZVBhdGg6
KE5TU3RyaW5nICopcGF0aDsNCi1AZW5kDQotI2VuZGlmDQotDQogI2lmIGRlZmluZWQoX19PQkpD
X18pICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQ0KIGVudW0gOiBOU1VJbnRlZ2VyIHsNCiAg
ICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluID0gMywNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2Nv
Y29hL1F1YXJ0ekNvcmVTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgJKHdvcmtpbmcgY29weSkNCkBAIC0z
Myw2ICszMyw3IEBADQogDQogI2lmZGVmIF9fT0JKQ19fDQogDQorI2ltcG9ydCA8UXVhcnR6Q29y
ZS9DQUNvbnRleHQuaD4NCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJIb3N0Lmg+DQogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyUHJpdmF0ZS5oPg0KICNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZVByaXZhdGUuaD4NCkBAIC00MSwxMiArNDIsNiBAQA0KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0FEaXNwbGF5Lmg+DQogI2VuZGlmDQogDQotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDANCi1AaW50ZXJmYWNlIENBQ29u
dGV4dCAoKQ0KLS0gKHZvaWQpc2V0Q29tbWl0UHJpb3JpdHk6KHVpbnQzMl90KWNvbW1pdFByaW9y
aXR5Ow0KLUBlbmQNCi0jZW5kaWYNCi0NCiAjZW5kaWYgLy8gX19PQkpDX18NCiANCiAjZWxzZQ0K
QEAgLTYyLDYgKzU3LDcgQEANCiAtICh1aW50MzJfdCljcmVhdGVJbWFnZVNsb3Q6KENHU2l6ZSlz
aXplIGhhc0FscGhhOihCT09MKWZsYWc7DQogLSAodm9pZClkZWxldGVTbG90Oih1aW50MzJfdClu
YW1lOw0KIC0gKHZvaWQpaW52YWxpZGF0ZTsNCistICh2b2lkKWludmFsaWRhdGVGZW5jZXM7DQog
LSAobWFjaF9wb3J0X3QpY3JlYXRlRmVuY2VQb3J0Ow0KIC0gKHZvaWQpc2V0RmVuY2VQb3J0Oiht
YWNoX3BvcnRfdClwb3J0Ow0KIC0gKHZvaWQpc2V0RmVuY2VQb3J0OihtYWNoX3BvcnRfdClwb3J0
IGNvbW1pdEhhbmRsZXI6KHZvaWQoXikodm9pZCkpYmxvY2s7DQpAQCAtMTk4LDEzICsxOTQsNiBA
QCBDRlR5cGVJRCBDQU1hY2hQb3J0R2V0VHlwZUlEKHZvaWQpOw0KIA0KIFdURl9FWFRFUk5fQ19F
TkQNCiANCi0vLyBGSVhNRTogTW92ZSB0aGlzIGludG8gdGhlIEFQUExFX0lOVEVSTkFMX1NESyBi
bG9jayBvbmNlIGl0J3MgaW4gYW4gU0RLLg0KLUBpbnRlcmZhY2UgQ0FDb250ZXh0IChBZGRpdGlv
bmFsRGV0YWlscykNCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkNCi0tICh2b2lkKWludmFsaWRh
dGVGZW5jZXM7DQotI2VuZGlmDQotQGVuZA0KLQ0KIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QVRpbGVkTGF5ZXJSZW1vdmVJbW1lZGlhdGVseTsNCiANCiBleHRlcm4gTlNTdHJpbmcgKiBjb25z
dCBrQ0FGaWx0ZXJDb2xvckludmVydDsNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAkocmV2aXNpb24gMjEyMjAy
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVjdG9yc1VJU1BJ
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNSw2ICszNSw4IEBADQogDQogI2Vsc2UNCiANCisjaW1w
b3J0IDxXZWJDb3JlL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+DQorDQogQGludGVyZmFjZSBEREFj
dGlvbiA6IE5TT2JqZWN0DQogQGVuZA0KIA0KQEAgLTU0LDE1ICs1NiwxMiBAQA0KICsgKERERGV0
ZWN0aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXI7DQogKyAoTlNBcnJheSAqKXRhcEFu
ZEhvbGRTY2hlbWVzOw0KIC0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERBY3Rpb24gKilhY3Rpb24g
ZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilhbGVydENvbnRyb2xsZXIg
aW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJvbGxlckludGVyYWN0aW9u
RGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7DQorLSAoTlNBcnJheSAqKWFjdGlvbnNGb3JV
Ukw6KE5TVVJMICopdXJsIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBzZWxlY3Rl
ZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0IHJlc3VsdHM6KE5TQXJyYXkgKilyZXN1bHRz
IGNvbnRleHQ6KE5TRGljdGlvbmFyeSAqKWNvbnRleHQ7DQorLSAoRERSZXN1bHRSZWYpcmVzdWx0
Rm9yVVJMOihOU1VSTCAqKXVybCBpZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgc2Vs
ZWN0ZWRUZXh0OihOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCByZXN1bHRzOihOU0FycmF5ICopcmVz
dWx0cyBjb250ZXh0OihOU0RpY3Rpb25hcnkgKiljb250ZXh0IGV4dGVuZGVkQ29udGV4dDooTlNE
aWN0aW9uYXJ5ICoqKWV4dGVuZGVkQ29udGV4dDsNCiBAZW5kDQogDQogI2VuZGlmDQogDQotQGlu
dGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkNCi0vLyBG
SVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQgYXMgc29vbiBhcyA8cmRhcjovL3Byb2JsZW0vMTYz
NDY5MTM+IGlzIGZpeGVkLg0KLS0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihpZClhbmNo
b3IgdXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7DQotQGVuZA0KLQ0K
IFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpDQogU09GVF9MSU5L
X0NMQVNTKERhdGFEZXRlY3RvcnNVSSwgREREZXRlY3Rpb25Db250cm9sbGVyKQ0KIFNPRlRfTElO
S19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzTGVhZGluZ1RleHQsIGNv
bnN0IE5TU3RyaW5nICopDQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9O
U01lbnVTUEkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9t
YWMvTlNNZW51U1BJLmgJKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvbWFjL05TTWVudVNQSS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMjUgKzI3LDI4
IEBADQogDQogI2lmIFBMQVRGT1JNKE1BQykNCiANCi0vLyBGSVhNRTogV2Ugc2hvdWxkIGp1c3Qg
aW5jbHVkZSB0aGUgYXBwcm9wcmlhdGUgaW50ZXJuYWwgaGVhZGVycy4NCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykNCisNCisjaW1wb3J0IDxBcHBLaXQvTlNNZW51X1ByaXZhdGUuaD4NCisN
CisjZWxzZQ0KIA0KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TTWVudVR5cGUpIHsNCiAg
ICAgTlNNZW51VHlwZU5vbmUgPSAwLA0KICAgICBOU01lbnVUeXBlQ29udGV4dE1lbnUsDQogfTsN
CiANCi1AaW50ZXJmYWNlIE5TTWVudSAoUHJpdmF0ZSkNCitAaW50ZXJmYWNlIE5TTWVudSAoKQ0K
ICsgKE5TTWVudVR5cGUpbWVudVR5cGVGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50Ow0KIEBlbmQN
CiANCiBAY2xhc3MgUUxQcmV2aWV3TWVudUl0ZW07DQogDQotQGludGVyZmFjZSBOU01lbnVJdGVt
IChQcml2YXRlKQ0KK0BpbnRlcmZhY2UgTlNNZW51SXRlbSAoKSA8TlNVc2VySW50ZXJmYWNlSXRl
bUlkZW50aWZpY2F0aW9uPg0KICsgKFFMUHJldmlld01lbnVJdGVtICopc3RhbmRhcmRRdWlja0xv
b2tNZW51SXRlbTsNCiArIChOU01lbnVJdGVtICopc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0
ZW1zOihOU0FycmF5ICopaXRlbXM7DQogQGVuZA0KIA0KLUBpbnRlcmZhY2UgTlNNZW51SXRlbSAo
KSA8TlNVc2VySW50ZXJmYWNlSXRlbUlkZW50aWZpY2F0aW9uPg0KLUBlbmQNCisjZW5kaWYNCiAN
CiAjZW5kaWYNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL1RVQ2FsbFNQ
SS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9UVUNh
bGxTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nw
aS9tYWMvVFVDYWxsU1BJLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiw2ICsyNiwxMiBAQA0KICNp
bXBvcnQgIlNvZnRMaW5raW5nLmgiDQogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+DQogDQorI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspDQorDQorI2ltcG9ydCA8VGVsZXBob255VXRpbGl0aWVz
L1RVQ2FsbF9TdHJpbmdzLmg+DQorDQorI2Vsc2UNCisNCiBAaW50ZXJmYWNlIFRVQ2FsbCA6IE5T
T2JqZWN0DQogQGVuZA0KIA0KQEAgLTMzLDUgKzM5LDcgQEAgQGludGVyZmFjZSBUVUNhbGwgKFN0
cmluZ3MpDQogKyAoTlNTdHJpbmcgKilzdXBwbGVtZW50YWxEaWFsVGVsZXBob255Q2FsbFN0cmlu
ZzsNCiBAZW5kDQogDQorI2VuZGlmDQorDQogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09Q
VElPTkFMKFRlbGVwaG9ueVV0aWxpdGllcykNCiBTT0ZUX0xJTktfQ0xBU1MoVGVsZXBob255VXRp
bGl0aWVzLCBUVUNhbGwpDQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVy
SG9zdGluZ0NvbnRleHQubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNv
cHkpDQpAQCAtMTA1LDE1ICsxMDUsMTIgQEAgQ0dDb2xvclNwYWNlUmVmIExheWVySG9zdGluZ0Nv
bnRleHQ6OmNvbA0KICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMTAwDQogdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRDb2xvck1h
dGNoVW50YWdnZWRDb250ZW50KGJvb2wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCkNCiB7DQot
ICAgIGlmIChbbV9jb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q29sb3JN
YXRjaFVudGFnZ2VkQ29udGVudDopXSkNCi0gICAgICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRj
aFVudGFnZ2VkQ29udGVudDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsNCisgICAgW21fY29u
dGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnRdOw0KIH0NCiANCiBib29sIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnQoKSBjb25zdA0KIHsNCi0gICAgaWYgKFttX2NvbnRleHQgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KV0pDQotICAgICAgICByZXR1
cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsNCi0gICAgcmV0dXJuIGZh
bHNlOw0KKyAgICByZXR1cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsN
CiB9DQogI2VuZGlmDQogDQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVV
dGlsaXRpZXMubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
TWVudVV0aWxpdGllcy5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtNDMsOSArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsNCiANCiBOU1N0cmluZyAqbWVudUl0ZW1UaXRsZUZvclRl
bGVwaG9uZU51bWJlckdyb3VwKCkNCiB7DQotICAgIGlmIChbZ2V0VFVDYWxsQ2xhc3MoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBsZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxsU3Ry
aW5nKV0pDQotICAgICAgICByZXR1cm4gW2dldFRVQ2FsbENsYXNzKCkgc3VwcGxlbWVudGFsRGlh
bFRlbGVwaG9ueUNhbGxTdHJpbmddOw0KLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2FsbCBV
c2luZyBpUGhvbmU6IiwgIm1lbnUgaXRlbSB0aXRsZSBmb3IgcGhvbmUgbnVtYmVyIik7DQorICAg
IHJldHVybiBbZ2V0VFVDYWxsQ2xhc3MoKSBzdXBwbGVtZW50YWxEaWFsVGVsZXBob255Q2FsbFN0
cmluZ107DQogfQ0KIA0KIE5TTWVudUl0ZW0gKm1lbnVJdGVtRm9yVGVsZXBob25lTnVtYmVyKGNv
bnN0IFN0cmluZyYgdGVsZXBob25lTnVtYmVyKQ0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL3NwaS9pb3MvVUlLaXRTUEkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMw
OCw2ICszMDgsNyBAQCB0eXBlZGVmIGVudW0gew0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgZ2V0dGVyPV9pc0FuaW1hdGluZ1Njcm9sbCkgQk9PTCBpc0FuaW1hdGluZ1Njcm9sbDsN
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBob3Jpem9udGFsU2Nyb2xsRGVjZWxlcmF0
aW9uRmFjdG9yOw0KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHZlcnRpY2FsU2Nyb2xs
RGVjZWxlcmF0aW9uRmFjdG9yOw0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb247DQogQGVuZA0KIA0KIEBpbnRlcmZhY2UgTlNT
dHJpbmcgKFVJS2l0RGV0YWlscykNCkBAIC01MjEsNiArNTIyLDggQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgVUlXS0dlc3R1cmVUeQ0KIC0gKHZvaWQpc2VsZWN0aW9uQ2hhbmdlZFdpdGhU
b3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRv
dWNoKXRvdWNoOw0KIC0gKHZvaWQpc2hvd0RpY3Rpb25hcnlGb3I6KE5TU3RyaW5nICopc2VsZWN0
ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCiAtICh2b2lkKXNob3dT
aGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXBy
ZXNlbnRhdGlvblJlY3Q7DQorLSAodm9pZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICop
c2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCistICh2b2lk
KWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQgd2l0aFJhbmdlOihOU1JhbmdlKXJh
bmdlIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKnNlbGVjdGlvbkxv
bmdQcmVzc1JlY29nbml6ZXI7DQogQGVuZA0KIA0KQEAgLTU1OCwxMiArNTYxLDE3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJV0tIYW5kbGVQb3MNCiBAaW50ZXJmYWNlIFVJV0tUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQgOiBVSVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudCA8VUlSZXNw
b25kZXJTdGFuZGFyZEVkaXRBY3Rpb25zPg0KIEBlbmQNCiANCi1AaW50ZXJmYWNlIFVJV0tUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnREZXRhaWxz
KQ0KK0BpbnRlcmZhY2UgVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAoKQ0KIC0gKHZvaWQp
c2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6
KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSlnZXN0dXJlU3RhdGUgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7
DQogLSAodm9pZClzaG93RGljdGlvbmFyeUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJv
bVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KIC0gKHZvaWQpc2VsZWN0aW9uQ2hhbmdl
ZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVj
dGlvblRvdWNoKXRvdWNoOw0KIC0gKHZvaWQpc2hvd1RleHRTdHlsZU9wdGlvbnM7DQogLSAodm9p
ZCloaWRlVGV4dFN0eWxlT3B0aW9uczsNCistICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0
V2l0aENvbnRleHQgd2l0aFJhbmdlOihOU1JhbmdlKXJhbmdlIGZyb21SZWN0OihDR1JlY3QpcHJl
c2VudGF0aW9uUmVjdDsNCistICh2b2lkKXNob3dTaGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNl
bGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7DQorLSAodm9pZClz
aG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1Jl
Y3QpcHJlc2VudGF0aW9uUmVjdDsNCistICh2b2lkKXNjaGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4
dDooTlNTdHJpbmcgKil0ZXh0Ow0KKy0gKHZvaWQpc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0
aW9uRm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0Ow0KIA0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgYXNzaWduKSBVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICpsb3VwZUdlc3R1
cmU7DQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIFVJVGFwR2VzdHVy
ZVJlY29nbml6ZXIgKnNpbmdsZVRhcEdlc3R1cmU7DQpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkp
DQpAQCAtMTgwLDEwICsxODAsNiBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3goY29uDQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwDQog
dm9pZCBDaGlsZFByb2Nlc3M6OnNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaWRlbnRpZmllcikNCiB7DQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHJ1
bnRpbWUgY2hlY2sgd2hlbiBpdCdzIG5vdCBuZWVkZWQgKHNvb24pLg0KLSAgICBpZiAoIVtOU0hU
VFBDb29raWVTdG9yYWdlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFNoYXJlZEhU
VFBDb29raWVTdG9yYWdlOildKQ0KLSAgICAgICAgcmV0dXJuOw0KLQ0KICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGlkZW50aWZpZXIuZGF0YSgpLCBpZGVudGlmaWVyLnNpemUoKSkpOw0K
ICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gdWlQcm9jZXNzQ29va2llU3Rv
cmFnZSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0ZUZyb21JZGVudGlmeWluZ0Rh
dGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llU3RvcmFnZURhdGEuZ2V0KCkpKTsNCiAgICAg
W05TSFRUUENvb2tpZVN0b3JhZ2UgX3NldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOmFkb3B0TlMo
W1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdl
OnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCldKS5nZXQoKV07DQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0NCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gMjEyMjAy
KQ0KKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMzI4LDE2ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpN
b2RpZmllcnMgbW9kaWZpDQogDQogc3RhdGljIGludCB0eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZl
bnQpDQogew0KLSAgICBpZiAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1l
bnVUeXBlRm9yRXZlbnQ6KV0pDQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNN
ZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsNCi0gICAgDQotICAgIGlmIChtb3VzZUJ1dHRv
bkZvckV2ZW50KGV2ZW50KSA9PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbikNCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVDb250ZXh0TWVudSk7DQotICAgIA0K
LSAgICBpZiAobW91c2VCdXR0b25Gb3JFdmVudChldmVudCkgPT0gV2ViTW91c2VFdmVudDo6TGVm
dEJ1dHRvbiAmJiAobW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpICYgV2ViRXZlbnQ6OkNvbnRyb2xL
ZXkpKQ0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRN
ZW51KTsNCi0gICAgDQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVOb25l
KTsNCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50
OmV2ZW50XSk7DQogfQ0KIA0KIGJvb2wgV2ViRXZlbnRGYWN0b3J5OjpzaG91bGRCZUhhbmRsZWRB
c0NvbnRleHRDbGljayhjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQ0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9s
bGVyLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW1hZ2VQ
cmV2aWV3Vmlld0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQ0KQEAgLTk3LDggKzk3LDcgQEAgLSAoTlNBcnJheSA8VUlWaWV3Q29udHJvbGxlclByZXZp
ZXdBY3Rpbw0KICAgICBOU011dGFibGVBcnJheTxVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlv
biAqPiAqcHJldmlld0FjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOw0KICAgICBmb3Ig
KF9XS0VsZW1lbnRBY3Rpb24gKmltYWdlQWN0aW9uIGluIF9pbWFnZUFjdGlvbnMuZ2V0KCkpIHsN
CiAgICAgICAgIFVJVmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW9uICpwcmV2aWV3QWN0aW9uID0g
W1VJVmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW9uIGFjdGlvbldpdGhUaXRsZTppbWFnZUFjdGlv
bi50aXRsZSBoYW5kbGVyOl4oVUlWaWV3Q29udHJvbGxlclByZXZpZXdBY3Rpb24gKmFjdGlvbiwg
VUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpZXdDb250cm9sbGVyKSB7DQotICAgICAgICAgICAg
aWYgKFtpbWFnZUFjdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJ1bkFjdGlvbldp
dGhFbGVtZW50SW5mbzopXSkNCi0gICAgICAgICAgICAgICAgW2ltYWdlQWN0aW9uIHJ1bkFjdGlv
bldpdGhFbGVtZW50SW5mbzpfYWN0aXZhdGVkRWxlbWVudEluZm8uZ2V0KCldOw0KKyAgICAgICAg
ICAgIFtpbWFnZUFjdGlvbiBydW5BY3Rpb25XaXRoRWxlbWVudEluZm86X2FjdGl2YXRlZEVsZW1l
bnRJbmZvLmdldCgpXTsNCiAgICAgICAgIH1dOw0KIA0KICAgICAgICAgW3ByZXZpZXdBY3Rpb25z
IGFkZE9iamVjdDpwcmV2aWV3QWN0aW9uXTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkNCkBAIC0xNDIsNyArMTQyLDYgQEAgQ0ZTdHJpbmdSZWYga0FYU0FsbG93Rm9yY2VXZWJT
Y2FsaW5nRW5hYg0KIEBpbnRlcmZhY2UgVUlTY3JvbGxWaWV3IChVSVNjcm9sbFZpZXdJbnRlcm5h
bCkNCiAtICh2b2lkKV9hZGp1c3RGb3JBdXRvbWF0aWNLZXlib2FyZEluZm86KE5TRGljdGlvbmFy
eSopaW5mbyBhbmltYXRlZDooQk9PTClhbmltYXRlZCBsYXN0QWRqdXN0bWVudDooQ0dGbG9hdCop
bGFzdEFkanVzdG1lbnQ7DQogLSAoQk9PTClfaXNTY3JvbGxpbmdUb1RvcDsNCi0tIChCT09MKV9p
c0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbjsNCiAtIChDR1BvaW50KV9hbmltYXRlZFRhcmdldE9m
ZnNldDsNCiBAZW5kDQogDQpAQCAtMjE4MSw4ICsyMTgwLDggQEAgLSAodm9pZClfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0QWZ0ZXJTYw0KICAgICAgICAgaXNTdGFibGVTdGF0ZSA9ICFbc2VsZiBf
c2Nyb2xsVmlld0lzUnViYmVyQmFuZGluZ107DQogDQogICAgIC8vIEZJWE1FOiB0aGlzIGNhbiBi
ZSBtYWRlIHN0YXRpYyBhZnRlciB3ZSBzdG9wIHN1cHBvcnRpbmcgaU9TIDgueC4NCi0gICAgaWYg
KGlzU3RhYmxlU3RhdGUgJiYgW3Njcm9sbFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb24pXSkNCi0gICAgICAgIGlzU3RhYmxlU3RhdGUg
PSAhW3Njcm9sbFZpZXcgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfaXNJbnRlcnJ1cHRpbmdE
ZWNlbGVyYXRpb24pXTsNCisgICAgaWYgKGlzU3RhYmxlU3RhdGUpDQorICAgICAgICBpc1N0YWJs
ZVN0YXRlID0gIXNjcm9sbFZpZXcuX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uOw0KIA0KICAg
ICBpZiAoTlNOdW1iZXIgKnN0YWJsZU92ZXJyaWRlID0gc2VsZi5fc3RhYmxlU3RhdGVPdmVycmlk
ZSkNCiAgICAgICAgIGlzU3RhYmxlU3RhdGUgPSBzdGFibGVPdmVycmlkZS5ib29sVmFsdWU7DQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjI3LDEzICsyMjcsNiBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9yDQogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1PcGVuUGF5
bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVy
KQ0KIHsNCiAgICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW2FsbG9jUEtQYXNzTGlicmFy
eUluc3RhbmNlKCkgaW5pdF0pOw0KLSAgICBpZiAoIVtwYXNzTGlicmFyeSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6ZG9t
YWluOmNvbXBsZXRpb246KV0pIHsNCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXJdIHsNCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7DQotICAgICAgICB9KTsNCi0gICAgICAgIHJldHVybjsNCi0gICAgfQ0KLQ0KICAgICBbcGFz
c0xpYnJhcnkgb3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElk
ZW50aWZpZXIgZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpbY29tcGxldGlvbkhhbmRsZXJd
KEJPT0wgcmVzdWx0KSB7DQogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyLCByZXN1bHRdIHsNCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXN1bHQpOw0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTMxMTIsMTEgKzMxMTIs
OCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaXNtaXNzQ29udGVudFJlbGF0aXZlDQogICAgIGlmICht
X3ZpZXcud2luZG93LmlzS2V5V2luZG93IHx8IGhhc0FjdGl2ZUltbWVkaWF0ZUFjdGlvbikgew0K
ICAgICAgICAgV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6aGlkZVBvcHVwKCk7DQogDQotICAg
ICAgICBpZiAoRGF0YURldGVjdG9yc0xpYnJhcnkoKSkgew0KLSAgICAgICAgICAgIEREQWN0aW9u
c01hbmFnZXIgKmFjdGlvbnNNYW5hZ2VyID0gW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNo
YXJlZE1hbmFnZXJdOw0KLSAgICAgICAgICAgIGlmIChbYWN0aW9uc01hbmFnZXIgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihyZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWlsdXJl
OildKQ0KLSAgICAgICAgICAgICAgICBbYWN0aW9uc01hbmFnZXIgcmVxdWVzdEJ1YmJsZUNsb3N1
cmVVbmFuY2hvck9uRmFpbHVyZTpZRVNdOw0KLSAgICAgICAgfQ0KKyAgICAgICAgaWYgKERhdGFE
ZXRlY3RvcnNMaWJyYXJ5KCkpDQorICAgICAgICAgICAgW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xh
c3MoKSBzaGFyZWRNYW5hZ2VyXSByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWlsdXJl
OllFU107DQogICAgIH0NCiANCiAgICAgY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbihX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KTsN
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0
aW9uU2hlZXRBc3Npc3RhbnQubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHdvcmtpbmcgY29weSkN
CkBAIC01OSwxMCArNTksNiBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoVENDKQ0KIFNP
RlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0
LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2Vydmlj
ZSwgb3B0aW9ucykpDQogU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VQaG90b3Ms
IENGU3RyaW5nUmVmKQ0KIA0KLUBpbnRlcmZhY2UgREREZXRlY3Rpb25Db250cm9sbGVyIChTdGFn
aW5nVG9SZW1vdmUpDQotLSAoTlNBcnJheSAqKWFjdGlvbnNGb3JVUkw6KE5TVVJMICopdXJsIGlk
ZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICop
c2VsZWN0ZWRUZXh0IHJlc3VsdHM6KE5TQXJyYXkgKilyZXN1bHRzIGNvbnRleHQ6KE5TRGljdGlv
bmFyeSAqKWNvbnRleHQ7DQotQGVuZA0KLQ0KIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7DQogDQog
I2lmIEhBVkUoQVBQX0xJTktTKQ0KQEAgLTQ4MCwyOSArNDc2LDI1IEBAIC0gKHZvaWQpc2hvd0Rh
dGFEZXRlY3RvcnNTaGVldA0KICAgICAgICAgcmV0dXJuOw0KIA0KICAgICBERERldGVjdGlvbkNv
bnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbZ2V0REREZXRlY3Rpb25Db250cm9sbGVyQ2xhc3MoKSBz
aGFyZWRDb250cm9sbGVyXTsNCi0gICAgTlNBcnJheSAqZGF0YURldGVjdG9yc0FjdGlvbnMgPSBu
aWw7DQotICAgIGlmIChbY29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFj
dGlvbnNGb3JVUkw6aWRlbnRpZmllcjpzZWxlY3RlZFRleHQ6cmVzdWx0czpjb250ZXh0OildKSB7
DQotICAgICAgICBOU0RpY3Rpb25hcnkgKmNvbnRleHQgPSBuaWw7DQotICAgICAgICBOU1N0cmlu
ZyAqdGV4dEF0U2VsZWN0aW9uID0gbmlsOw0KLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IGV4dGVuZGVkQ29udGV4dDsNCi0NCi0gICAgICAgIGlmIChbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNo
ZWV0QXNzaXN0YW50OildKQ0KLSAgICAgICAgICAgIGNvbnRleHQgPSBbZGVsZWdhdGUgZGF0YURl
dGVjdGlvbkNvbnRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsNCi0gICAgICAgIGlm
IChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZWxlY3RlZFRleHRGb3JB
Y3Rpb25TaGVldEFzc2lzdGFudDopXSkNCi0gICAgICAgICAgICB0ZXh0QXRTZWxlY3Rpb24gPSBb
ZGVsZWdhdGUgc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07DQotICAg
ICAgICBpZiAoIXBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIXBv
c2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLmlzRW1wdHkoKSkgew0KLSAgICAgICAgICAgIGV4
dGVuZGVkQ29udGV4dCA9IGFkb3B0TlMoW0B7DQotICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0
ZWN0b3JzTGVhZGluZ1RleHQoKSA6IHBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZSwNCi0g
ICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNUcmFpbGluZ1RleHQoKSA6IHBvc2l0aW9u
SW5mb3JtYXRpb24udGV4dEFmdGVyLA0KLSAgICAgICAgICAgIH0gbXV0YWJsZUNvcHldKTsNCi0g
ICAgICAgICAgICANCi0gICAgICAgICAgICBpZiAoY29udGV4dCkNCi0gICAgICAgICAgICAgICAg
W2V4dGVuZGVkQ29udGV4dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6Y29udGV4dF07DQotICAg
ICAgICAgICAgY29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsNCi0gICAgICAgIH0NCi0g
ICAgICAgIGRhdGFEZXRlY3RvcnNBY3Rpb25zID0gW2NvbnRyb2xsZXIgYWN0aW9uc0ZvclVSTDp0
YXJnZXRVUkwgaWRlbnRpZmllcjpwb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvcklkZW50
aWZpZXIgc2VsZWN0ZWRUZXh0OnRleHRBdFNlbGVjdGlvbiByZXN1bHRzOnBvc2l0aW9uSW5mb3Jt
YXRpb24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHRdOw0KLSAgICB9
IGVsc2UNCi0gICAgICAgIGRhdGFEZXRlY3RvcnNBY3Rpb25zID0gW2NvbnRyb2xsZXIgYWN0aW9u
c0ZvckFuY2hvcjpuaWwgdXJsOnRhcmdldFVSTCBmb3JGcmFtZTpuaWxdOw0KKyAgICBOU0RpY3Rp
b25hcnkgKmNvbnRleHQgPSBuaWw7DQorICAgIE5TU3RyaW5nICp0ZXh0QXRTZWxlY3Rpb24gPSBu
aWw7DQorICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBleHRlbmRlZENvbnRleHQ7
DQorDQorICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRh
RGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNoZWV0QXNzaXN0YW50OildKQ0KKyAgICAgICAgY29u
dGV4dCA9IFtkZWxlZ2F0ZSBkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNoZWV0QXNzaXN0
YW50OnNlbGZdOw0KKyAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KV0pDQorICAgICAgICB0ZXh0
QXRTZWxlY3Rpb24gPSBbZGVsZWdhdGUgc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3Rh
bnQ6c2VsZl07DQorICAgIGlmICghcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLmlzRW1w
dHkoKSB8fCAhcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7DQorICAg
ICAgICBleHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAew0KKyAgICAgICAgICAgIGdldGtEYXRh
RGV0ZWN0b3JzTGVhZGluZ1RleHQoKSA6IHBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZSwN
CisgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4dCgpIDogcG9zaXRpb25J
bmZvcm1hdGlvbi50ZXh0QWZ0ZXIsDQorICAgICAgICB9IG11dGFibGVDb3B5XSk7DQorICAgICAg
ICANCisgICAgICAgIGlmIChjb250ZXh0KQ0KKyAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQg
YWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmNvbnRleHRdOw0KKyAgICAgICAgY29udGV4dCA9IGV4
dGVuZGVkQ29udGV4dC5nZXQoKTsNCisgICAgfQ0KKyAgICBOU0FycmF5ICpkYXRhRGV0ZWN0b3Jz
QWN0aW9ucyA9IFtjb250cm9sbGVyIGFjdGlvbnNGb3JVUkw6dGFyZ2V0VVJMIGlkZW50aWZpZXI6
cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDp0
ZXh0QXRTZWxlY3Rpb24gcmVzdWx0czpwb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJl
c3VsdHMuZ2V0KCkgY29udGV4dDpjb250ZXh0XTsNCiAgICAgaWYgKFtkYXRhRGV0ZWN0b3JzQWN0
aW9ucyBjb3VudF0gPT0gMCkNCiAgICAgICAgIHJldHVybjsNCiANCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkNCkBAIC0yMzksMjgg
KzIzOSw2IEBAIC0gKHZvaWQpc2VsZWN0V29yZDsNCiAtICh2b2lkKXNjaGVkdWxlUmVhbmFseXNp
czsNCiBAZW5kDQogDQotQGludGVyZmFjZSBVSVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAoU3Rh
Z2luZ1RvUmVtb3ZlKQ0KLS0gKHZvaWQpc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OihOU1N0
cmluZyAqKXRleHQ7DQotLSAodm9pZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2Vs
ZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi0tICh2b2lkKXNj
aGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6KE5TU3RyaW5nICopdGV4dDsNCi0t
ICh2b2lkKXNob3dTaGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVj
dDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7DQotLSAodm9pZClsb29rdXA6KE5TU3RyaW5nICop
dGV4dFdpdGhDb250ZXh0IGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi0tICh2
b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQgd2l0aFJhbmdlOihOU1Jhbmdl
KXJhbmdlIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi1AZW5kDQotDQotQGlu
dGVyZmFjZSBVSVdLU2VsZWN0aW9uQXNzaXN0YW50IChTdGFnaW5nVG9SZW1vdmUpDQotLSAodm9p
ZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihD
R1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi0tICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0
V2l0aENvbnRleHQgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLS0gKHZvaWQp
bG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2UpcmFu
Z2UgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLUBlbmQNCi0NCi1AaW50ZXJm
YWNlIFVJS2V5Ym9hcmRJbXBsIChTdGFnaW5nVG9SZW1vdmUpDQotLSAodm9pZClkaWRIYW5kbGVX
ZWJLZXlFdmVudDsNCi0tICh2b2lkKWRpZEhhbmRsZVdlYktleUV2ZW50OihXZWJJT1NFdmVudCAq
KWV2ZW50Ow0KLS0gKHZvaWQpZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdzOihOU1VJbnRlZ2VyKWZs
YWdzOw0KLS0gKHZvaWQpYWRkSW5wdXRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhGbGFn
czooTlNVSW50ZWdlcilmbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDooTlNTdHJpbmcgKiloaW50
Ow0KLUBlbmQNCi0NCiBAaW50ZXJmYWNlIFVJVmlldyAoVUlWaWV3SW50ZXJuYWxIYWNrKQ0KICsg
KEJPT0wpX2FkZENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbjsNCiBAZW5kDQpA
QCAtMjcyLDEwICsyNTAsNiBAQCBAaW50ZXJmYWNlIFVJUHJldmlld0l0ZW1Db250cm9sbGVyIChT
dGFnDQogQGVuZA0KICNlbmRpZg0KIA0KLUBpbnRlcmZhY2UgREREZXRlY3Rpb25Db250cm9sbGVy
IChTdGFnaW5nVG9SZW1vdmUpDQotLSAoRERSZXN1bHRSZWYpcmVzdWx0Rm9yVVJMOihOU1VSTCAq
KXVybCBpZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OihOU1N0
cmluZyAqKXNlbGVjdGVkVGV4dCByZXN1bHRzOihOU0FycmF5ICopcmVzdWx0cyBjb250ZXh0OihO
U0RpY3Rpb25hcnkgKiljb250ZXh0IGV4dGVuZGVkQ29udGV4dDooTlNEaWN0aW9uYXJ5ICoqKWV4
dGVuZGVkQ29udGV4dDsNCi1AZW5kDQotDQogQGludGVyZmFjZSBXS0ZvY3VzZWRFbGVtZW50SW5m
byA6IE5TT2JqZWN0IDxfV0tGb2N1c2VkRWxlbWVudEluZm8+DQogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uJilpbmZvcm1hdGlvbiBpc1VzZXJJbml0aWF0ZWQ6KEJPT0wpaXNVc2VySW5pdGlhdGVkOw0K
IEBlbmQNCkBAIC0xODc5LDE1ICsxODUzLDkgQEAgLSAodm9pZClfbG9va3VwOihpZClzZW5kZXIN
CiAgICAgICAgIA0KICAgICAgICAgU3RyaW5nIHNlbGVjdGlvbkNvbnRleHQgPSB0ZXh0QmVmb3Jl
ICsgc2VsZWN0ZWRUZXh0ICsgdGV4dEFmdGVyOw0KICAgICAgICAgaWYgKHZpZXctPl90ZXh0U2Vs
ZWN0aW9uQXNzaXN0YW50KSB7DQotICAgICAgICAgICAgaWYgKFt2aWV3LT5fdGV4dFNlbGVjdGlv
bkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGxvb2t1cDp3aXRoUmFuZ2U6
ZnJvbVJlY3Q6KV0pDQotICAgICAgICAgICAgICAgIFt2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lz
dGFudCBsb29rdXA6c2VsZWN0aW9uQ29udGV4dCB3aXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dEJl
Zm9yZS5sZW5ndGgoKSwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKSBmcm9tUmVjdDpwcmVzZW50YXRp
b25SZWN0XTsNCi0gICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIFt2aWV3LT5fdGV4
dFNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0ZWRUZXh0IGZyb21SZWN0OnByZXNlbnRh
dGlvblJlY3RdOw0KKyAgICAgICAgICAgIFt2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBs
b29rdXA6c2VsZWN0aW9uQ29udGV4dCB3aXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dEJlZm9yZS5s
ZW5ndGgoKSwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKSBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0
XTsNCiAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgaWYgKFt2aWV3LT5fd2ViU2VsZWN0
aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobG9va3VwOndpdGhSYW5n
ZTpmcm9tUmVjdDopXSkNCi0gICAgICAgICAgICAgICAgW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgbG9va3VwOnNlbGVjdGlvbkNvbnRleHQgd2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRC
ZWZvcmUubGVuZ3RoKCksIHNlbGVjdGVkVGV4dC5sZW5ndGgoKSkgZnJvbVJlY3Q6cHJlc2VudGF0
aW9uUmVjdF07DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBbdmlldy0+X3dl
YlNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0ZWRUZXh0IGZyb21SZWN0OnByZXNlbnRh
dGlvblJlY3RdOw0KKyAgICAgICAgICAgIFt2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50IGxv
b2t1cDpzZWxlY3Rpb25Db250ZXh0IHdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxl
bmd0aCgpLCBzZWxlY3RlZFRleHQubGVuZ3RoKCkpIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3Rd
Ow0KICAgICAgICAgfQ0KICAgICB9KTsNCiB9DQpAQCAtMTkwMywxOCArMTg3MSwxOCBAQCAtICh2
b2lkKV9zaGFyZTooaWQpc2VuZGVyDQogDQogICAgICAgICBDR1JlY3QgcHJlc2VudGF0aW9uUmVj
dCA9IHZpZXctPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9u
UmVjdHNbMF0ucmVjdCgpOw0KIA0KLSAgICAgICAgaWYgKHZpZXctPl90ZXh0U2VsZWN0aW9uQXNz
aXN0YW50ICYmIFt2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNob3dTaGFyZVNoZWV0Rm9yOmZyb21SZWN0OildKQ0KKyAgICAgICAgaWYg
KHZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQ0KICAgICAgICAgICAgIFt2aWV3LT5fdGV4
dFNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpzdHJpbmcgZnJvbVJlY3Q6cHJl
c2VudGF0aW9uUmVjdF07DQotICAgICAgICBlbHNlIGlmICh2aWV3LT5fd2ViU2VsZWN0aW9uQXNz
aXN0YW50ICYmIFt2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2hvd1NoYXJlU2hlZXRGb3I6ZnJvbVJlY3Q6KV0pDQorICAgICAgICBlbHNl
IGlmICh2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50KQ0KICAgICAgICAgICAgIFt2aWV3LT5f
d2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnN0cmluZyBmcm9tUmVjdDpw
cmVzZW50YXRpb25SZWN0XTsNCiAgICAgfSk7DQogfQ0KIA0KIC0gKHZvaWQpX2FkZFNob3J0Y3V0
OihpZClzZW5kZXINCiB7DQotICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCAmJiBbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93VGV4
dFNlcnZpY2VGb3I6ZnJvbVJlY3Q6KV0pDQorICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFu
dCkNCiAgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzaG93VGV4dFNlcnZpY2VGb3I6
W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5
b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKV07DQotICAgIGVsc2UgaWYgKF93ZWJT
ZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzaG93VGV4dFNlcnZpY2VGb3I6ZnJvbVJlY3Q6KV0pDQorICAgIGVs
c2UgaWYgKF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQpDQogICAgICAgICBbX3dlYlNlbGVjdGlvbkFz
c2lzdGFudCBzaG93VGV4dFNlcnZpY2VGb3I6W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpf
cGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJl
Y3QoKV07DQogfQ0KIA0KQEAgLTE5NDQsMTQgKzE5MTIsMTIgQEAgLSAodm9pZClfcHJvbXB0Rm9y
UmVwbGFjZTooaWQpc2VuZGVyDQogICAgIGlmICh3b3JkQXRTZWxlY3Rpb24uaXNFbXB0eSgpKQ0K
ICAgICAgICAgcmV0dXJuOw0KIA0KLSAgICBpZiAoW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0Oild
KQ0KLSAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNjaGVkdWxlUmVwbGFjZW1lbnRz
Rm9yVGV4dDp3b3JkQXRTZWxlY3Rpb25dOw0KKyAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQg
c2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OndvcmRBdFNlbGVjdGlvbl07DQogfQ0KIA0KIC0g
KHZvaWQpX3RyYW5zbGl0ZXJhdGVDaGluZXNlOihpZClzZW5kZXINCiB7DQotICAgIGlmIChbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzY2hlZHVs
ZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0OildKQ0KLSAgICAgICAgW190ZXh0U2VsZWN0
aW9uQXNzaXN0YW50IHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6X3BhZ2Ut
PmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb25dOw0KKyAgICBb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9y
VGV4dDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlv
bl07DQogfQ0KIA0KIC0gKHZvaWQpX3JlYW5hbHl6ZTooaWQpc2VuZGVyDQpAQCAtMzM4NSwxNCAr
MzM1MSw2IEBAIC0gKHZvaWQpX2RpZEhhbmRsZUtleUV2ZW50OihXZWJJT1NFdmVudCANCiAgICAg
ICAgIHJldHVybjsNCiAgICAgfQ0KICAgICAgICAgDQotICAgIGlmIChldmVudC50eXBlID09IFdl
YkV2ZW50S2V5RG93bikgew0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSBmb3Igc3Rh
Z2luZyBwdXJwb3Nlcy4NCi0gICAgICAgIGlmIChbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3Rh
bmNlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZEhhbmRsZVdlYktleUV2ZW50Oild
KQ0KLSAgICAgICAgICAgIFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIGRpZEhhbmRs
ZVdlYktleUV2ZW50OmV2ZW50XTsNCi0gICAgICAgIGVsc2UNCi0gICAgICAgICAgICBbW1VJS2V5
Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBkaWRIYW5kbGVXZWJLZXlFdmVudF07DQotICAgIH0N
Ci0NCiAgICAgLy8gSWYgd2UgYXJlbid0IGludGVyYWN0aW5nIHdpdGggZWRpdGFibGUgY29udGVu
dCwgd2Ugc3RpbGwgbmVlZCB0byBjYWxsIFtzdXBlciBfaGFuZGxlS2V5VUlFdmVudDpdDQogICAg
IC8vIHNvIHRoYXQga2V5Ym9hcmQgcmVwZWF0IHdpbGwgd29yayBjb3JyZWN0bHkuIElmIHdlIGFy
ZSBpbnRlcmFjdGluZyB3aXRoIGVkaXRhYmxlIGNvbnRlbnQsDQogICAgIC8vIHdlIGFscmVhZHkg
ZGlkIHNvIGluIF9oYW5kbGVLZXlVSUV2ZW50Lg0KQEAgLTM1MDYsMjEgKzM0NjQsMTQgQEAgLSAo
Qk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KFdlYklPU0V2ZW50IA0KICAgICBjYXNlIGtXZWJCYWNr
c3BhY2VLZXk6DQogICAgIGNhc2Uga1dlYkRlbGV0ZUtleToNCiAgICAgICAgIGlmIChjb250ZW50
RWRpdGFibGUpIHsNCi0gICAgICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIGRlbGV0ZUZyb21JbnB1
dCBvbmNlIFVJS2l0IGFkb3B0cyBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3MNCi0gICAgICAgICAg
ICBpZiAoW2tleWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGVsZXRlRnJvbUlu
cHV0V2l0aEZsYWdzOildKQ0KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlu
cHV0V2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOw0KLSAgICAgICAgICAgIGVsc2UNCi0g
ICAgICAgICAgICAgICAgW2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dF07DQorICAgICAgICAgICAg
W2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsN
CiAgICAgICAgICAgICByZXR1cm4gWUVTOw0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQog
DQogICAgIGNhc2Uga1dlYlNwYWNlS2V5Og0KICAgICAgICAgaWYgKGNvbnRlbnRFZGl0YWJsZSAm
JiBpc0NoYXJFdmVudCkgew0KLSAgICAgICAgICAgIGlmIChba2V5Ym9hcmQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihhZGRJbnB1dFN0cmluZzp3aXRoRmxhZ3M6d2l0aElucHV0TWFuYWdl
ckhpbnQ6KV0pDQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVu
dC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzIHdpdGhJbnB1dE1hbmFn
ZXJIaW50OmV2ZW50LmlucHV0TWFuYWdlckhpbnRdOw0KLSAgICAgICAgICAgIGVsc2UNCi0gICAg
ICAgICAgICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0
aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOw0KKyAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJ
bnB1dFN0cmluZzpldmVudC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdz
IHdpdGhJbnB1dE1hbmFnZXJIaW50OmV2ZW50LmlucHV0TWFuYWdlckhpbnRdOw0KICAgICAgICAg
ICAgIHJldHVybiBZRVM7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC0zNTQwLDEw
ICszNDkxLDcgQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KFdlYklPU0V2ZW50IA0KIA0K
ICAgICBkZWZhdWx0Og0KICAgICAgICAgaWYgKGNvbnRlbnRFZGl0YWJsZSAmJiBpc0NoYXJFdmVu
dCkgew0KLSAgICAgICAgICAgIGlmIChba2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihhZGRJbnB1dFN0cmluZzp3aXRoRmxhZ3M6d2l0aElucHV0TWFuYWdlckhpbnQ6KV0pDQot
ICAgICAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVudC5jaGFyYWN0ZXJz
IHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50OmV2ZW50
LmlucHV0TWFuYWdlckhpbnRdOw0KLSAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAg
W2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50
LmtleWJvYXJkRmxhZ3NdOw0KKyAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpl
dmVudC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzIHdpdGhJbnB1dE1h
bmFnZXJIaW50OmV2ZW50LmlucHV0TWFuYWdlckhpbnRdOw0KICAgICAgICAgICAgIHJldHVybiBZ
RVM7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC00MjA4LDI1ICs0MTU2LDIzIEBA
IC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db24NCiAgICAgICAgICAgICAg
ICAgY29udGV4dCA9IFt1aURlbGVnYXRlIF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6
X3dlYlZpZXddOw0KIA0KICAgICAgICAgICAgIERERGV0ZWN0aW9uQ29udHJvbGxlciAqY29udHJv
bGxlciA9IFtnZXRERERldGVjdGlvbkNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZENvbnRyb2xsZXJd
Ow0KLSAgICAgICAgICAgIGlmIChbY29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlc3VsdEZvclVSTDppZGVudGlmaWVyOnNlbGVjdGVkVGV4dDpyZXN1bHRzOmNvbnRleHQ6
ZXh0ZW5kZWRDb250ZXh0OildKSB7DQotICAgICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqbmV3
Q29udGV4dCA9IG5pbDsNCi0gICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGV4dGVuZGVkQ29udGV4dDsNCi0gICAgICAgICAgICAgICAgRERSZXN1bHRSZWYgZGRS
ZXN1bHQgPSBbY29udHJvbGxlciByZXN1bHRGb3JVUkw6ZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3
RGF0YUxpbmtdIGlkZW50aWZpZXI6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9ySWRl
bnRpZmllciBzZWxlY3RlZFRleHQ6W3NlbGYgc2VsZWN0ZWRUZXh0XSByZXN1bHRzOl9wb3NpdGlv
bkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgY29udGV4dDpjb250ZXh0IGV4
dGVuZGVkQ29udGV4dDombmV3Q29udGV4dF07DQotICAgICAgICAgICAgICAgIGlmIChkZFJlc3Vs
dCkNCi0gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFERFJl
c3VsdF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7DQotICAgICAgICAgICAgICAgIGlmICghX3Bv
c2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIV9wb3NpdGlvbkluZm9y
bWF0aW9uLnRleHRBZnRlci5pc0VtcHR5KCkpIHsNCi0gICAgICAgICAgICAgICAgICAgIGV4dGVu
ZGVkQ29udGV4dCA9IGFkb3B0TlMoW0B7DQotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0a0Rh
dGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9y
ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4
dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLA0KLSAgICAgICAgICAgICAgICAg
ICAgfSBtdXRhYmxlQ29weV0pOw0KLSAgICAgICAgICAgICAgICAgICAgDQotICAgICAgICAgICAg
ICAgICAgICBpZiAobmV3Q29udGV4dCkNCi0gICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZW5k
ZWRDb250ZXh0IGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpuZXdDb250ZXh0XTsNCi0gICAgICAg
ICAgICAgICAgICAgIG5ld0NvbnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7DQotICAgICAg
ICAgICAgICAgIH0NCisgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKm5ld0NvbnRleHQgPSBuaWw7
DQorICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGV4dGVuZGVkQ29u
dGV4dDsNCisgICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtjb250cm9sbGVyIHJl
c3VsdEZvclVSTDpkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhTGlua10gaWRlbnRpZmllcjpf
cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDpb
c2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVj
dG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250ZXh0OiZuZXdDb250
ZXh0XTsNCisgICAgICAgICAgICBpZiAoZGRSZXN1bHQpDQorICAgICAgICAgICAgICAgIGRhdGFG
b3JQcmV2aWV3W1VJUHJldmlld0RhdGFERFJlc3VsdF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7
DQorICAgICAgICAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLmlzRW1w
dHkoKSB8fCAhX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLmlzRW1wdHkoKSkgew0KKyAg
ICAgICAgICAgICAgICBleHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAew0KKyAgICAgICAgICAg
ICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3Jt
YXRpb24udGV4dEJlZm9yZSwNCisgICAgICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3Jz
VHJhaWxpbmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIsDQorICAgICAg
ICAgICAgICAgIH0gbXV0YWJsZUNvcHldKTsNCisgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgIGlmIChuZXdDb250ZXh0KQ0KLSAgICAgICAgICAgICAgICAgICAgZGF0YUZvclByZXZp
ZXdbVUlQcmV2aWV3RGF0YUREQ29udGV4dF0gPSBuZXdDb250ZXh0Ow0KKyAgICAgICAgICAgICAg
ICAgICAgW2V4dGVuZGVkQ29udGV4dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6bmV3Q29udGV4
dF07DQorICAgICAgICAgICAgICAgIG5ld0NvbnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7
DQogICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChuZXdDb250ZXh0KQ0KKyAgICAgICAg
ICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhRERDb250ZXh0XSA9IG5ld0NvbnRl
eHQ7DQogICAgICAgICB9DQogICAgIH0gZWxzZSBpZiAoY2FuU2hvd0ltYWdlUHJldmlldykgew0K
ICAgICAgICAgKnR5cGUgPSBVSVByZXZpZXdJdGVtVHlwZUltYWdlOw0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTE3Nyw4ICsxNzcsNyBAQCBNYWNoU2VuZFJpZ2h0IFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBDQogICAgIC8vIEludmFsaWRhdGUgdGhlIGZlbmNlIGlm
IGEgc3luY2hyb25vdXMgbWVzc2FnZSBhcnJpdmVzIHdoaWxlIGl0J3MgaW5zdGFsbGVkLA0KICAg
ICAvLyBiZWNhdXNlIHdlIHdvbid0IGJlIGFibGUgdG8gcmVwbHkgZHVyaW5nIHRoZSBmZW5jZS13
YWl0Lg0KICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhbcm9vdExh
eWVyQ29udGV4dF0gew0KLSAgICAgICAgaWYgKFtyb290TGF5ZXJDb250ZXh0IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoaW52YWxpZGF0ZUZlbmNlcyldKQ0KLSAgICAgICAgICAgIFtyb290
TGF5ZXJDb250ZXh0IGludmFsaWRhdGVGZW5jZXNdOw0KKyAgICAgICAgW3Jvb3RMYXllckNvbnRl
eHQgaW52YWxpZGF0ZUZlbmNlc107DQogICAgIH0pOw0KICAgICBSZWZQdHI8V2ViUGFnZVByb3h5
PiByZXRhaW5lZFBhZ2UgPSAmbV93ZWJQYWdlUHJveHk7DQogICAgIFtDQVRyYW5zYWN0aW9uIGFk
ZENvbW1pdEhhbmRsZXI6W2NhbGxiYWNrSUQsIHJldGFpbmVkUGFnZV0gew0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5
KQ0KQEAgLTQwMSwxMCArNDAxLDggQEAgLSAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25D
b250cm9sbA0KIA0KICAgICBhY3Rpb25Db250ZXh0LmFsdE1vZGUgPSBZRVM7DQogICAgIGFjdGlv
bkNvbnRleHQuaW1tZWRpYXRlID0gWUVTOw0KLSAgICBpZiAoW1tnZXREREFjdGlvbnNNYW5hZ2Vy
Q2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGhhc0Fj
dGlvbnNGb3JSZXN1bHQ6YWN0aW9uQ29udGV4dDopXSkgew0KLSAgICAgICAgaWYgKCFbW2dldERE
QWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIGhhc0FjdGlvbnNGb3JSZXN1bHQ6
YWN0aW9uQ29udGV4dC5tYWluUmVzdWx0IGFjdGlvbkNvbnRleHQ6YWN0aW9uQ29udGV4dF0pDQot
ICAgICAgICAgICAgcmV0dXJuIG5pbDsNCi0gICAgfQ0KKyAgICBpZiAoIVtbZ2V0RERBY3Rpb25z
TWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gaGFzQWN0aW9uc0ZvclJlc3VsdDphY3Rpb25D
b250ZXh0Lm1haW5SZXN1bHQgYWN0aW9uQ29udGV4dDphY3Rpb25Db250ZXh0XSkNCisgICAgICAg
IHJldHVybiBuaWw7DQogDQogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSBfcGFnZTsN
CiAgICAgUGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQgb3ZlcmxheUlEID0gX2hpdFRlc3RSZXN1
bHREYXRhLmRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92ZXJsYXk7DQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMjY2LDkgKzI2
Niw2IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y2xlYXJTZXJ2aWMNCiANCiBSZXRh
aW5QdHI8TlNNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlU2hhcmVNZW51
SXRlbSgpDQogew0KLSAgICBpZiAoIVtbTlNNZW51SXRlbSBjbGFzc10gcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KV0pDQotICAgICAg
ICByZXR1cm4gbmlsOw0KLQ0KICAgICBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVz
dERhdGEgPSBtX2NvbnRleHQud2ViSGl0VGVzdFJlc3VsdERhdGEoKTsNCiANCiAgICAgYXV0byBp
dGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOw0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0NCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTc1LDEwICs3NSw2
IEBAIHN0YXRpYyBOU1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmQNCiAgICAgcmV0dXJu
IFt3aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpyZWN0XTsNCiB9DQogDQotQGludGVyZmFjZSBO
U1dpbmRvdyhJc09uQWN0aXZlU3BhY2VBZGRpdGlvbkZvclRpZ2VyQW5kTGVvcGFyZCkNCi0tIChC
T09MKWlzT25BY3RpdmVTcGFjZTsNCi1AZW5kDQotDQogQGltcGxlbWVudGF0aW9uIFdlYkZ1bGxT
Y3JlZW5Db250cm9sbGVyDQogDQogI3ByYWdtYSBtYXJrIC0NCkBAIC0xNjUsMTYgKzE2MSwxMyBA
QCAtICh2b2lkKWNhbmNlbE9wZXJhdGlvbjooaWQpc2VuZGVyDQogDQogLSAodm9pZClhcHBsaWNh
dGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbg0KIHsgICAN
Ci0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBmdWxsc2NyZWVuV2luZG93IGlzIG9uIHRoZSBh
Y3RpdmUgc3BhY2U7IHRoaXMgZnVuY3Rpb24gaXMgYXZhaWxhYmxlDQotICAgIC8vIG9uIDEwLjYg
YW5kIGxhdGVyLCBzbyBkZWZhdWx0IHRvIFlFUyBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IGF2YWls
YWJsZToNCiAgICAgTlNXaW5kb3cqIGZ1bGxzY3JlZW5XaW5kb3cgPSBbc2VsZiB3aW5kb3ddOw0K
LSAgICBCT09MIGlzT25BY3RpdmVTcGFjZSA9IChbZnVsbHNjcmVlbldpbmRvdyByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGlzT25BY3RpdmVTcGFjZSldID8gW2Z1bGxzY3JlZW5XaW5kb3cg
aXNPbkFjdGl2ZVNwYWNlXSA6IFlFUyk7DQogDQogICAgIC8vIFJlcGxpY2F0ZSB0aGUgUXVpY2tU
aW1lIFBsYXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0aW9uIHN0
YXR1czoNCiAgICAgLy8gSXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIHRoZSBtYWluIHNjcmVlbj8g
KE5vdGU6IHRoaXMgY292ZXJzIHRoZSBjYXNlIHdoZXJlIG9ubHkgYSANCiAgICAgLy8gc2luZ2xl
IHNjcmVlbiBpcyBhdmFpbGFibGUuKSAgSXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIG9uIHRoZSBj
dXJyZW50IHNwYWNlPyBJRkYgc28sIA0KICAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2Rl
LiANCi0gICAgaWYgKFtmdWxsc2NyZWVuV2luZG93IHNjcmVlbl0gPT0gW1tOU1NjcmVlbiBzY3Jl
ZW5zXSBvYmplY3RBdEluZGV4OjBdICYmIGlzT25BY3RpdmVTcGFjZSkNCisgICAgaWYgKGZ1bGxz
Y3JlZW5XaW5kb3cuc2NyZWVuID09IFtOU1NjcmVlbiBzY3JlZW5zXVswXSAmJiBmdWxsc2NyZWVu
V2luZG93Lm9uQWN0aXZlU3BhY2UpDQogICAgICAgICAgW3NlbGYgY2FuY2VsT3BlcmF0aW9uOnNl
bGZdOw0KIH0NCiANCkBAIC0zMjUsNyArMzE4LDcgQEAgLSAodm9pZClleGl0RnVsbFNjcmVlbg0K
ICAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVo
YXZpb3JOb25lXTsNCiAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG1vdmVkIHRoZSBmdWxsU2NyZWVu
IHdpbmRvdyBpbnRvIGEgbmV3IHNwYWNlLCB0ZW1wb3JhcmlseSBjaGFuZ2UNCiAgICAgLy8gdGhl
IGNvbGxlY3Rpb25CZWhhdmlvciBvZiB0aGUgd2ViVmlldydzIHdpbmRvdyBzbyB0aGF0IGl0IGlz
IHB1bGxlZCBpbnRvIHRoZSBhY3RpdmUgc3BhY2U6DQotICAgIGlmICghKFt3ZWJXaW5kb3cgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpc09uQWN0aXZlU3BhY2UpXSA/IFt3ZWJXaW5kb3cg
aXNPbkFjdGl2ZVNwYWNlXSA6IFlFUykpIHsNCisgICAgaWYgKCF3ZWJXaW5kb3cub25BY3RpdmVT
cGFjZSkgew0KICAgICAgICAgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3IgYmVoYXZpb3IgPSBb
d2ViV2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl07DQogICAgICAgICBbd2ViV2luZG93IHNldENv
bGxlY3Rpb25CZWhhdmlvcjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckNhbkpvaW5BbGxTcGFj
ZXNdOw0KICAgICAgICAgW3dlYldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0
aXZlVG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07DQpAQCAtNDMwLDEwICs0MjMsNyBA
QCAtICh2b2lkKV91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW4NCiAgICAgICAgICAgICBv
cHRpb25zIHw9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZURvY2s7DQogICAgIH0N
CiAgICAgDQotICAgIGlmIChbTlNBcHAgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQ
cmVzZW50YXRpb25PcHRpb25zOildKQ0KLSAgICAgICAgW05TQXBwIHNldFByZXNlbnRhdGlvbk9w
dGlvbnM6b3B0aW9uc107DQotICAgIGVsc2UNCi0gICAgICAgIFNldFN5c3RlbVVJTW9kZShfaXNG
dWxsU2NyZWVuID8ga1VJTW9kZUFsbEhpZGRlbiA6IGtVSU1vZGVOb3JtYWwsIDApOw0KKyAgICBO
U0FwcC5wcmVzZW50YXRpb25PcHRpb25zID0gb3B0aW9uczsNCiB9DQogDQogI3ByYWdtYSBtYXJr
IC0NCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2
aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0JKHdvcmtpbmcgY29weSkNCkBAIC0zODcyLDkgKzM4NzIsNiBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGZpeE1lbnVzUmVjZWl2DQogDQogc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVt
PiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQp
DQogew0KLSAgICBpZiAoIVtbTlNNZW51SXRlbSBjbGFzc10gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KV0pDQotICAgICAgICByZXR1
cm4gbmlsOw0KLQ0KICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7DQogDQogICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwo
KS5pc0VtcHR5KCkpIHsNCkBAIC02MTA0LDggKzYxMDEsNyBAQCAtICh2b2lkKV93aW5kb3dDaGFu
Z2VkS2V5U3RhdGUNCiAjaWYgIVBMQVRGT1JNKElPUykNCiAtICh2b2lkKW90aGVyTW91c2VEb3du
OihOU0V2ZW50ICopZXZlbnQNCiB7DQotICAgIGlmIChbZXZlbnQgYnV0dG9uTnVtYmVyXSAhPSAy
IHx8IChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVu
dDopXQ0KLSAgICAgICAgJiYgW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSA9PSBOU01l
bnVUeXBlQ29udGV4dE1lbnUpKSB7DQorICAgIGlmIChldmVudC5idXR0b25OdW1iZXIgIT0gMiB8
fCBbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVudVR5cGVDb250ZXh0TWVu
dSkgew0KICAgICAgICAgW3N1cGVyIG90aGVyTW91c2VEb3duOmV2ZW50XTsNCiAgICAgICAgIHJl
dHVybjsNCiAgICAgfQ0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjEyMjAy
KQ0KKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTEyOCw4ICsxMjgsNyBAQCAtICh2b2lkKV9jbGVh
ckltbWVkaWF0ZUFjdGlvblN0YXRlDQogICAgICAgICByZXR1cm47DQogDQogICAgIEREQWN0aW9u
c01hbmFnZXIgKmFjdGlvbnNNYW5hZ2VyID0gW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNo
YXJlZE1hbmFnZXJdOw0KLSAgICBpZiAoW2FjdGlvbnNNYW5hZ2VyIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocmVxdWVzdEJ1YmJsZUNsb3N1cmVVbmFuY2hvck9uRmFpbHVyZTopXSkNCi0g
ICAgICAgIFthY3Rpb25zTWFuYWdlciByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWls
dXJlOllFU107DQorICAgIFthY3Rpb25zTWFuYWdlciByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5j
aG9yT25GYWlsdXJlOllFU107DQogDQogICAgIGlmIChfY3VycmVudEFjdGlvbkNvbnRleHQgJiYg
X2hhc0FjdGl2YXRlZEFjdGlvbkNvbnRleHQpIHsNCiAgICAgICAgIF9oYXNBY3RpdmF0ZWRBY3Rp
b25Db250ZXh0ID0gTk87DQpAQCAtNDM5LDEwICs0MzgsOCBAQCAtIChpZCA8TlNJbW1lZGlhdGVB
Y3Rpb25BbmltYXRpb25Db250cm9sDQogDQogICAgIFthY3Rpb25Db250ZXh0IHNldEFsdE1vZGU6
WUVTXTsNCiAgICAgW2FjdGlvbkNvbnRleHQgc2V0SW1tZWRpYXRlOllFU107DQotICAgIGlmIChb
W2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoaGFzQWN0aW9uc0ZvclJlc3VsdDphY3Rpb25Db250ZXh0OildKSB7DQot
ICAgICAgICBpZiAoIVtbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0g
aGFzQWN0aW9uc0ZvclJlc3VsdDpbYWN0aW9uQ29udGV4dCBtYWluUmVzdWx0XSBhY3Rpb25Db250
ZXh0OmFjdGlvbkNvbnRleHQuZ2V0KCldKQ0KLSAgICAgICAgICAgIHJldHVybiBuaWw7DQotICAg
IH0NCisgICAgaWYgKCFbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJd
IGhhc0FjdGlvbnNGb3JSZXN1bHQ6W2FjdGlvbkNvbnRleHQgbWFpblJlc3VsdF0gYWN0aW9uQ29u
dGV4dDphY3Rpb25Db250ZXh0LmdldCgpXSkNCisgICAgICAgIHJldHVybiBuaWw7DQogDQogICAg
IGF1dG8gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpkZXRlY3Rl
ZERhdGFSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbkRlZmF1bHQsIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTUwNiwxMCArNTA2LDYgQEAg
QGludGVyZmFjZSBXZWJWaWV3KFdlYlZpZXdQcml2YXRlKQ0KIC0gKHZvaWQpX3ByZWZlcmVuY2Vz
Q2hhbmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlczsNCiAtICh2b2lkKV91cGRhdGVT
Y3JlZW5TY2FsZUZyb21XaW5kb3c7DQogQGVuZA0KLQ0KLUBpbnRlcmZhY2UgTlNVUkxDYWNoZSAo
V2ViUHJpdmF0ZSkNCi0tIChDRlVSTENhY2hlUmVmKV9DRlVSTENhY2hlOw0KLUBlbmQNCiAjZW5k
aWYNCiANCiAjaWYgIVBMQVRGT1JNKElPUykNCkBAIC0zMzMxLDcgKzMzMjcsNyBAQCAtICh2b2lk
KV9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lDQogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGNvcmUoW2ZyYW1lIERPTURvY3VtZW50XSk7DQogICAgIGlmIChFbGVtZW50KiBlbGVtZW50
ID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkg
OiAwKSB7DQogICAgICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpjbG9zZUZ1
bGxTY3JlZW5XaXRoTGlzdGVuZXI6KTsNCi0gICAgICAgIGlmIChfcHJpdmF0ZS0+VUlEZWxlZ2F0
ZSAmJiBbX3ByaXZhdGUtPlVJRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkg
ew0KKyAgICAgICAgaWYgKFtfcHJpdmF0ZS0+VUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
c2VsZWN0b3JdKSB7DQogICAgICAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyICpsaXN0
ZW5lciA9IFtbV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnQ6
ZWxlbWVudF07DQogICAgICAgICAgICAgQ2FsbFVJRGVsZWdhdGUoc2VsZiwgc2VsZWN0b3IsIGxp
c3RlbmVyKTsNCiAgICAgICAgICAgICBbbGlzdGVuZXIgcmVsZWFzZV07DQpAQCAtODU4Myw3ICs4
NTc5LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYQ0KICNpZiBQ
TEFURk9STShJT1MpDQogICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IHN0ZDo6bWF4KG5z
dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgW25zdXJsQ2FjaGUgbWVtb3J5Q2FwYWNpdHldKTsNCiAg
ICAgQ0ZVUkxDYWNoZVJlZiBjZkNhY2hlOw0KLSAgICBpZiAoW25zdXJsQ2FjaGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihfQ0ZVUkxDYWNoZSldICYmIChjZkNhY2hlID0gW25zdXJsQ2Fj
aGUgX0NGVVJMQ2FjaGVdKSkNCisgICAgaWYgKGNmQ2FjaGUgPSBbbnN1cmxDYWNoZSBfQ0ZVUkxD
YWNoZV0pDQogICAgICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2ZDYWNoZSwgbnN1
cmxDYWNoZU1lbW9yeUNhcGFjaXR5KTsNCiAgICAgZWxzZQ0KICAgICAgICAgW25zdXJsQ2FjaGUg
c2V0TWVtb3J5Q2FwYWNpdHk6bnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5XTsNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301307</attachid>
            <date>2017-02-12 09:37:20 -0800</date>
            <delta_ts>2017-02-12 10:36:05 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>file_168183.txt</filename>
            <type>text/plain</type>
            <size>42511</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncwkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQ0KQEAgLTEyNyw5ICsxMjcsNiBA
QA0KIC8qIE9wdGlvbiBpbiBzZWdtZW50ZWQgY29udHJvbCBmb3IgaW5zZXJ0aW5nIGEgYnVsbGV0
ZWQgbGlzdCBpbiB0ZXh0IGVkaXRpbmcgKi8NCiAiQnVsbGV0ZWQgbGlzdCIgPSAiQnVsbGV0ZWQg
bGlzdCI7DQogDQotLyogbWVudSBpdGVtIHRpdGxlIGZvciBwaG9uZSBudW1iZXIgKi8NCi0iQ2Fs
bCBVc2luZyBpUGhvbmU6IiA9ICJDYWxsIFVzaW5nIGlQaG9uZToiOw0KLQ0KIC8qIFRpdGxlIGZv
ciBDYW5jZWwgYnV0dG9uIGxhYmVsIGluIGJ1dHRvbiBiYXIgKi8NCiAiQ2FuY2VsIGJ1dHRvbiBs
YWJlbCBpbiBidXR0b24gYmFyIiA9ICJDYW5jZWwiOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0K
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTgzLDYgKzgzLDExIEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2FjaGVkVVJMUmVz
cG9uc2VDYWxsQmENCiAjZW5kaWYNCiANCiAjaWYgZGVmaW5lZChfX09CSkNfXykNCitAaW50ZXJm
YWNlIE5TVVJMQ2FjaGUgKCkNCistKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZW1vcnlDYXBhY2l0
eTooTlNVSW50ZWdlciltZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6KE5TVUludGVnZXIpZGlz
a0NhcGFjaXR5IHJlbGF0aXZlUGF0aDooTlNTdHJpbmcgKilwYXRoOw0KKy0gKENGVVJMQ2FjaGVS
ZWYpX0NGVVJMQ2FjaGU7DQorQGVuZA0KKw0KIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0ICgpDQog
KyAoTlNBcnJheSAqKWFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6KE5TU3Ry
aW5nICopaG9zdDsNCiArICh2b2lkKXNldEFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZToo
TlNBcnJheSAqKWFsbG93IGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdDsNCkBAIC0xOTAsMTUgKzE5
NSw2IEBAIENGVVJMUmVzcG9uc2VSZWYgQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGgNCiANCiBXVEZf
RVhURVJOX0NfRU5EDQogDQotLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5IGZvcndhcmQgZGVjbGFy
ZSB0aGlzIFNQSSB3aGVuIGJ1aWxkaW5nIGZvciBpT1Mgd2l0aG91dCB0aGUgQXBwbGUgSW50ZXJu
YWwgU0RLLg0KLS8vIEFzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzE5MDI1MDE2
Piwgd2UgbXVzdCBmb3J3YXJkIGRlY2xhcmUgdGhpcyBTUEkgcmVnYXJkbGVzcyBvZiB3aGV0aGVy
DQotLy8gd2UgYXJlIGJ1aWxkaW5nIHdpdGggdGhlIEFwcGxlIEludGVybmFsIFNESy4NCi0jaWYg
ZGVmaW5lZChfX09CSkNfXykgJiYgUExBVEZPUk0oSU9TKQ0KLUBpbnRlcmZhY2UgTlNVUkxDYWNo
ZSAoKQ0KLS0oaWQpX2luaXRXaXRoTWVtb3J5Q2FwYWNpdHk6KE5TVUludGVnZXIpbWVtb3J5Q2Fw
YWNpdHkgZGlza0NhcGFjaXR5OihOU1VJbnRlZ2VyKWRpc2tDYXBhY2l0eSByZWxhdGl2ZVBhdGg6
KE5TU3RyaW5nICopcGF0aDsNCi1AZW5kDQotI2VuZGlmDQotDQogI2lmIGRlZmluZWQoX19PQkpD
X18pICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQ0KIGVudW0gOiBOU1VJbnRlZ2VyIHsNCiAg
ICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluID0gMywNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2Nv
Y29hL1F1YXJ0ekNvcmVTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgJKHdvcmtpbmcgY29weSkNCkBAIC0z
Myw2ICszMyw3IEBADQogDQogI2lmZGVmIF9fT0JKQ19fDQogDQorI2ltcG9ydCA8UXVhcnR6Q29y
ZS9DQUNvbnRleHQuaD4NCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJIb3N0Lmg+DQogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyUHJpdmF0ZS5oPg0KICNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZVByaXZhdGUuaD4NCkBAIC00MSwxMiArNDIsNiBAQA0KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0FEaXNwbGF5Lmg+DQogI2VuZGlmDQogDQotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDANCi1AaW50ZXJmYWNlIENBQ29u
dGV4dCAoKQ0KLS0gKHZvaWQpc2V0Q29tbWl0UHJpb3JpdHk6KHVpbnQzMl90KWNvbW1pdFByaW9y
aXR5Ow0KLUBlbmQNCi0jZW5kaWYNCi0NCiAjZW5kaWYgLy8gX19PQkpDX18NCiANCiAjZWxzZQ0K
QEAgLTYyLDYgKzU3LDcgQEANCiAtICh1aW50MzJfdCljcmVhdGVJbWFnZVNsb3Q6KENHU2l6ZSlz
aXplIGhhc0FscGhhOihCT09MKWZsYWc7DQogLSAodm9pZClkZWxldGVTbG90Oih1aW50MzJfdClu
YW1lOw0KIC0gKHZvaWQpaW52YWxpZGF0ZTsNCistICh2b2lkKWludmFsaWRhdGVGZW5jZXM7DQog
LSAobWFjaF9wb3J0X3QpY3JlYXRlRmVuY2VQb3J0Ow0KIC0gKHZvaWQpc2V0RmVuY2VQb3J0Oiht
YWNoX3BvcnRfdClwb3J0Ow0KIC0gKHZvaWQpc2V0RmVuY2VQb3J0OihtYWNoX3BvcnRfdClwb3J0
IGNvbW1pdEhhbmRsZXI6KHZvaWQoXikodm9pZCkpYmxvY2s7DQpAQCAtMTk4LDEzICsxOTQsNiBA
QCBDRlR5cGVJRCBDQU1hY2hQb3J0R2V0VHlwZUlEKHZvaWQpOw0KIA0KIFdURl9FWFRFUk5fQ19F
TkQNCiANCi0vLyBGSVhNRTogTW92ZSB0aGlzIGludG8gdGhlIEFQUExFX0lOVEVSTkFMX1NESyBi
bG9jayBvbmNlIGl0J3MgaW4gYW4gU0RLLg0KLUBpbnRlcmZhY2UgQ0FDb250ZXh0IChBZGRpdGlv
bmFsRGV0YWlscykNCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkNCi0tICh2b2lkKWludmFsaWRh
dGVGZW5jZXM7DQotI2VuZGlmDQotQGVuZA0KLQ0KIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtD
QVRpbGVkTGF5ZXJSZW1vdmVJbW1lZGlhdGVseTsNCiANCiBleHRlcm4gTlNTdHJpbmcgKiBjb25z
dCBrQ0FGaWx0ZXJDb2xvckludmVydDsNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAkocmV2aXNpb24gMjEyMjAy
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVjdG9yc1VJU1BJ
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNSw2ICszNSw4IEBADQogDQogI2Vsc2UNCiANCisjaW1w
b3J0IDxXZWJDb3JlL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+DQorDQogQGludGVyZmFjZSBEREFj
dGlvbiA6IE5TT2JqZWN0DQogQGVuZA0KIA0KQEAgLTU0LDE1ICs1NiwxMiBAQA0KICsgKERERGV0
ZWN0aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXI7DQogKyAoTlNBcnJheSAqKXRhcEFu
ZEhvbGRTY2hlbWVzOw0KIC0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERBY3Rpb24gKilhY3Rpb24g
ZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilhbGVydENvbnRyb2xsZXIg
aW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJvbGxlckludGVyYWN0aW9u
RGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7DQorLSAoTlNBcnJheSAqKWFjdGlvbnNGb3JV
Ukw6KE5TVVJMICopdXJsIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBzZWxlY3Rl
ZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0IHJlc3VsdHM6KE5TQXJyYXkgKilyZXN1bHRz
IGNvbnRleHQ6KE5TRGljdGlvbmFyeSAqKWNvbnRleHQ7DQorLSAoRERSZXN1bHRSZWYpcmVzdWx0
Rm9yVVJMOihOU1VSTCAqKXVybCBpZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgc2Vs
ZWN0ZWRUZXh0OihOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCByZXN1bHRzOihOU0FycmF5ICopcmVz
dWx0cyBjb250ZXh0OihOU0RpY3Rpb25hcnkgKiljb250ZXh0IGV4dGVuZGVkQ29udGV4dDooTlNE
aWN0aW9uYXJ5ICoqKWV4dGVuZGVkQ29udGV4dDsNCiBAZW5kDQogDQogI2VuZGlmDQogDQotQGlu
dGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkNCi0vLyBG
SVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQgYXMgc29vbiBhcyA8cmRhcjovL3Byb2JsZW0vMTYz
NDY5MTM+IGlzIGZpeGVkLg0KLS0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihpZClhbmNo
b3IgdXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7DQotQGVuZA0KLQ0K
IFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpDQogU09GVF9MSU5L
X0NMQVNTKERhdGFEZXRlY3RvcnNVSSwgREREZXRlY3Rpb25Db250cm9sbGVyKQ0KIFNPRlRfTElO
S19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzTGVhZGluZ1RleHQsIGNv
bnN0IE5TU3RyaW5nICopDQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9O
U01lbnVTUEkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9t
YWMvTlNNZW51U1BJLmgJKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvbWFjL05TTWVudVNQSS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMjUgKzI3LDI4
IEBADQogDQogI2lmIFBMQVRGT1JNKE1BQykNCiANCi0vLyBGSVhNRTogV2Ugc2hvdWxkIGp1c3Qg
aW5jbHVkZSB0aGUgYXBwcm9wcmlhdGUgaW50ZXJuYWwgaGVhZGVycy4NCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykNCisNCisjaW1wb3J0IDxBcHBLaXQvTlNNZW51X1ByaXZhdGUuaD4NCisN
CisjZWxzZQ0KIA0KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TTWVudVR5cGUpIHsNCiAg
ICAgTlNNZW51VHlwZU5vbmUgPSAwLA0KICAgICBOU01lbnVUeXBlQ29udGV4dE1lbnUsDQogfTsN
CiANCi1AaW50ZXJmYWNlIE5TTWVudSAoUHJpdmF0ZSkNCitAaW50ZXJmYWNlIE5TTWVudSAoKQ0K
ICsgKE5TTWVudVR5cGUpbWVudVR5cGVGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50Ow0KIEBlbmQN
CiANCiBAY2xhc3MgUUxQcmV2aWV3TWVudUl0ZW07DQogDQotQGludGVyZmFjZSBOU01lbnVJdGVt
IChQcml2YXRlKQ0KK0BpbnRlcmZhY2UgTlNNZW51SXRlbSAoKSA8TlNVc2VySW50ZXJmYWNlSXRl
bUlkZW50aWZpY2F0aW9uPg0KICsgKFFMUHJldmlld01lbnVJdGVtICopc3RhbmRhcmRRdWlja0xv
b2tNZW51SXRlbTsNCiArIChOU01lbnVJdGVtICopc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0
ZW1zOihOU0FycmF5ICopaXRlbXM7DQogQGVuZA0KIA0KLUBpbnRlcmZhY2UgTlNNZW51SXRlbSAo
KSA8TlNVc2VySW50ZXJmYWNlSXRlbUlkZW50aWZpY2F0aW9uPg0KLUBlbmQNCisjZW5kaWYNCiAN
CiAjZW5kaWYNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL1RVQ2FsbFNQ
SS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9UVUNh
bGxTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nw
aS9tYWMvVFVDYWxsU1BJLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiw2ICsyNiwxMiBAQA0KICNp
bXBvcnQgIlNvZnRMaW5raW5nLmgiDQogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+DQogDQorI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspDQorDQorI2ltcG9ydCA8VGVsZXBob255VXRpbGl0aWVz
L1RVQ2FsbF9TdHJpbmdzLmg+DQorDQorI2Vsc2UNCisNCiBAaW50ZXJmYWNlIFRVQ2FsbCA6IE5T
T2JqZWN0DQogQGVuZA0KIA0KQEAgLTMzLDUgKzM5LDcgQEAgQGludGVyZmFjZSBUVUNhbGwgKFN0
cmluZ3MpDQogKyAoTlNTdHJpbmcgKilzdXBwbGVtZW50YWxEaWFsVGVsZXBob255Q2FsbFN0cmlu
ZzsNCiBAZW5kDQogDQorI2VuZGlmDQorDQogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09Q
VElPTkFMKFRlbGVwaG9ueVV0aWxpdGllcykNCiBTT0ZUX0xJTktfQ0xBU1MoVGVsZXBob255VXRp
bGl0aWVzLCBUVUNhbGwpDQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVy
SG9zdGluZ0NvbnRleHQubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNv
cHkpDQpAQCAtMTA1LDE1ICsxMDUsMTIgQEAgQ0dDb2xvclNwYWNlUmVmIExheWVySG9zdGluZ0Nv
bnRleHQ6OmNvbA0KICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMTAwDQogdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRDb2xvck1h
dGNoVW50YWdnZWRDb250ZW50KGJvb2wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCkNCiB7DQot
ICAgIGlmIChbbV9jb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q29sb3JN
YXRjaFVudGFnZ2VkQ29udGVudDopXSkNCi0gICAgICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRj
aFVudGFnZ2VkQ29udGVudDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsNCisgICAgW21fY29u
dGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnRdOw0KIH0NCiANCiBib29sIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnQoKSBjb25zdA0KIHsNCi0gICAgaWYgKFttX2NvbnRleHQgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KV0pDQotICAgICAgICByZXR1
cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsNCi0gICAgcmV0dXJuIGZh
bHNlOw0KKyAgICByZXR1cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsN
CiB9DQogI2VuZGlmDQogDQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVV
dGlsaXRpZXMubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
TWVudVV0aWxpdGllcy5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtNDMsOSArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsNCiANCiBOU1N0cmluZyAqbWVudUl0ZW1UaXRsZUZvclRl
bGVwaG9uZU51bWJlckdyb3VwKCkNCiB7DQotICAgIGlmIChbZ2V0VFVDYWxsQ2xhc3MoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN1cHBsZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxsU3Ry
aW5nKV0pDQotICAgICAgICByZXR1cm4gW2dldFRVQ2FsbENsYXNzKCkgc3VwcGxlbWVudGFsRGlh
bFRlbGVwaG9ueUNhbGxTdHJpbmddOw0KLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2FsbCBV
c2luZyBpUGhvbmU6IiwgIm1lbnUgaXRlbSB0aXRsZSBmb3IgcGhvbmUgbnVtYmVyIik7DQorICAg
IHJldHVybiBbZ2V0VFVDYWxsQ2xhc3MoKSBzdXBwbGVtZW50YWxEaWFsVGVsZXBob255Q2FsbFN0
cmluZ107DQogfQ0KIA0KIE5TTWVudUl0ZW0gKm1lbnVJdGVtRm9yVGVsZXBob25lTnVtYmVyKGNv
bnN0IFN0cmluZyYgdGVsZXBob25lTnVtYmVyKQ0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL3NwaS9pb3MvVUlLaXRTUEkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMw
OCw2ICszMDgsNyBAQCB0eXBlZGVmIGVudW0gew0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgZ2V0dGVyPV9pc0FuaW1hdGluZ1Njcm9sbCkgQk9PTCBpc0FuaW1hdGluZ1Njcm9sbDsN
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBob3Jpem9udGFsU2Nyb2xsRGVjZWxlcmF0
aW9uRmFjdG9yOw0KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHZlcnRpY2FsU2Nyb2xs
RGVjZWxlcmF0aW9uRmFjdG9yOw0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb247DQogQGVuZA0KIA0KIEBpbnRlcmZhY2UgTlNT
dHJpbmcgKFVJS2l0RGV0YWlscykNCkBAIC01MjEsNiArNTIyLDggQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgVUlXS0dlc3R1cmVUeQ0KIC0gKHZvaWQpc2VsZWN0aW9uQ2hhbmdlZFdpdGhU
b3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRv
dWNoKXRvdWNoOw0KIC0gKHZvaWQpc2hvd0RpY3Rpb25hcnlGb3I6KE5TU3RyaW5nICopc2VsZWN0
ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCiAtICh2b2lkKXNob3dT
aGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXBy
ZXNlbnRhdGlvblJlY3Q7DQorLSAodm9pZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICop
c2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCistICh2b2lk
KWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQgd2l0aFJhbmdlOihOU1JhbmdlKXJh
bmdlIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKnNlbGVjdGlvbkxv
bmdQcmVzc1JlY29nbml6ZXI7DQogQGVuZA0KIA0KQEAgLTU1OCwxMiArNTYxLDE3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJV0tIYW5kbGVQb3MNCiBAaW50ZXJmYWNlIFVJV0tUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQgOiBVSVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudCA8VUlSZXNw
b25kZXJTdGFuZGFyZEVkaXRBY3Rpb25zPg0KIEBlbmQNCiANCi1AaW50ZXJmYWNlIFVJV0tUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnREZXRhaWxz
KQ0KK0BpbnRlcmZhY2UgVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAoKQ0KIC0gKHZvaWQp
c2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6
KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSlnZXN0dXJlU3RhdGUgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7
DQogLSAodm9pZClzaG93RGljdGlvbmFyeUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJv
bVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KIC0gKHZvaWQpc2VsZWN0aW9uQ2hhbmdl
ZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVj
dGlvblRvdWNoKXRvdWNoOw0KIC0gKHZvaWQpc2hvd1RleHRTdHlsZU9wdGlvbnM7DQogLSAodm9p
ZCloaWRlVGV4dFN0eWxlT3B0aW9uczsNCistICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0
V2l0aENvbnRleHQgd2l0aFJhbmdlOihOU1JhbmdlKXJhbmdlIGZyb21SZWN0OihDR1JlY3QpcHJl
c2VudGF0aW9uUmVjdDsNCistICh2b2lkKXNob3dTaGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNl
bGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7DQorLSAodm9pZClz
aG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1Jl
Y3QpcHJlc2VudGF0aW9uUmVjdDsNCistICh2b2lkKXNjaGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4
dDooTlNTdHJpbmcgKil0ZXh0Ow0KKy0gKHZvaWQpc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0
aW9uRm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0Ow0KIA0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgYXNzaWduKSBVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICpsb3VwZUdlc3R1
cmU7DQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIFVJVGFwR2VzdHVy
ZVJlY29nbml6ZXIgKnNpbmdsZVRhcEdlc3R1cmU7DQpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkp
DQpAQCAtMTgwLDEwICsxODAsNiBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3goY29uDQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwDQog
dm9pZCBDaGlsZFByb2Nlc3M6OnNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaWRlbnRpZmllcikNCiB7DQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHJ1
bnRpbWUgY2hlY2sgd2hlbiBpdCdzIG5vdCBuZWVkZWQgKHNvb24pLg0KLSAgICBpZiAoIVtOU0hU
VFBDb29raWVTdG9yYWdlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFNoYXJlZEhU
VFBDb29raWVTdG9yYWdlOildKQ0KLSAgICAgICAgcmV0dXJuOw0KLQ0KICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGlkZW50aWZpZXIuZGF0YSgpLCBpZGVudGlmaWVyLnNpemUoKSkpOw0K
ICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gdWlQcm9jZXNzQ29va2llU3Rv
cmFnZSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0ZUZyb21JZGVudGlmeWluZ0Rh
dGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llU3RvcmFnZURhdGEuZ2V0KCkpKTsNCiAgICAg
W05TSFRUUENvb2tpZVN0b3JhZ2UgX3NldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOmFkb3B0TlMo
W1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdl
OnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCldKS5nZXQoKV07DQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0NCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gMjEyMjAy
KQ0KKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMzI4LDE2ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpN
b2RpZmllcnMgbW9kaWZpDQogDQogc3RhdGljIGludCB0eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZl
bnQpDQogew0KLSAgICBpZiAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1l
bnVUeXBlRm9yRXZlbnQ6KV0pDQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNN
ZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsNCi0gICAgDQotICAgIGlmIChtb3VzZUJ1dHRv
bkZvckV2ZW50KGV2ZW50KSA9PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbikNCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVDb250ZXh0TWVudSk7DQotICAgIA0K
LSAgICBpZiAobW91c2VCdXR0b25Gb3JFdmVudChldmVudCkgPT0gV2ViTW91c2VFdmVudDo6TGVm
dEJ1dHRvbiAmJiAobW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpICYgV2ViRXZlbnQ6OkNvbnRyb2xL
ZXkpKQ0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRN
ZW51KTsNCi0gICAgDQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVOb25l
KTsNCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50
OmV2ZW50XSk7DQogfQ0KIA0KIGJvb2wgV2ViRXZlbnRGYWN0b3J5OjpzaG91bGRCZUhhbmRsZWRB
c0NvbnRleHRDbGljayhjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQ0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9s
bGVyLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW1hZ2VQ
cmV2aWV3Vmlld0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQ0KQEAgLTk3LDggKzk3LDcgQEAgLSAoTlNBcnJheSA8VUlWaWV3Q29udHJvbGxlclByZXZp
ZXdBY3Rpbw0KICAgICBOU011dGFibGVBcnJheTxVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlv
biAqPiAqcHJldmlld0FjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOw0KICAgICBmb3Ig
KF9XS0VsZW1lbnRBY3Rpb24gKmltYWdlQWN0aW9uIGluIF9pbWFnZUFjdGlvbnMuZ2V0KCkpIHsN
CiAgICAgICAgIFVJVmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW9uICpwcmV2aWV3QWN0aW9uID0g
W1VJVmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW9uIGFjdGlvbldpdGhUaXRsZTppbWFnZUFjdGlv
bi50aXRsZSBoYW5kbGVyOl4oVUlWaWV3Q29udHJvbGxlclByZXZpZXdBY3Rpb24gKmFjdGlvbiwg
VUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpZXdDb250cm9sbGVyKSB7DQotICAgICAgICAgICAg
aWYgKFtpbWFnZUFjdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJ1bkFjdGlvbldp
dGhFbGVtZW50SW5mbzopXSkNCi0gICAgICAgICAgICAgICAgW2ltYWdlQWN0aW9uIHJ1bkFjdGlv
bldpdGhFbGVtZW50SW5mbzpfYWN0aXZhdGVkRWxlbWVudEluZm8uZ2V0KCldOw0KKyAgICAgICAg
ICAgIFtpbWFnZUFjdGlvbiBydW5BY3Rpb25XaXRoRWxlbWVudEluZm86X2FjdGl2YXRlZEVsZW1l
bnRJbmZvLmdldCgpXTsNCiAgICAgICAgIH1dOw0KIA0KICAgICAgICAgW3ByZXZpZXdBY3Rpb25z
IGFkZE9iamVjdDpwcmV2aWV3QWN0aW9uXTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkNCkBAIC0xNDIsNyArMTQyLDYgQEAgQ0ZTdHJpbmdSZWYga0FYU0FsbG93Rm9yY2VXZWJT
Y2FsaW5nRW5hYg0KIEBpbnRlcmZhY2UgVUlTY3JvbGxWaWV3IChVSVNjcm9sbFZpZXdJbnRlcm5h
bCkNCiAtICh2b2lkKV9hZGp1c3RGb3JBdXRvbWF0aWNLZXlib2FyZEluZm86KE5TRGljdGlvbmFy
eSopaW5mbyBhbmltYXRlZDooQk9PTClhbmltYXRlZCBsYXN0QWRqdXN0bWVudDooQ0dGbG9hdCop
bGFzdEFkanVzdG1lbnQ7DQogLSAoQk9PTClfaXNTY3JvbGxpbmdUb1RvcDsNCi0tIChCT09MKV9p
c0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbjsNCiAtIChDR1BvaW50KV9hbmltYXRlZFRhcmdldE9m
ZnNldDsNCiBAZW5kDQogDQpAQCAtMjE4MSw4ICsyMTgwLDggQEAgLSAodm9pZClfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0QWZ0ZXJTYw0KICAgICAgICAgaXNTdGFibGVTdGF0ZSA9ICFbc2VsZiBf
c2Nyb2xsVmlld0lzUnViYmVyQmFuZGluZ107DQogDQogICAgIC8vIEZJWE1FOiB0aGlzIGNhbiBi
ZSBtYWRlIHN0YXRpYyBhZnRlciB3ZSBzdG9wIHN1cHBvcnRpbmcgaU9TIDgueC4NCi0gICAgaWYg
KGlzU3RhYmxlU3RhdGUgJiYgW3Njcm9sbFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb24pXSkNCi0gICAgICAgIGlzU3RhYmxlU3RhdGUg
PSAhW3Njcm9sbFZpZXcgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfaXNJbnRlcnJ1cHRpbmdE
ZWNlbGVyYXRpb24pXTsNCisgICAgaWYgKGlzU3RhYmxlU3RhdGUpDQorICAgICAgICBpc1N0YWJs
ZVN0YXRlID0gIXNjcm9sbFZpZXcuX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uOw0KIA0KICAg
ICBpZiAoTlNOdW1iZXIgKnN0YWJsZU92ZXJyaWRlID0gc2VsZi5fc3RhYmxlU3RhdGVPdmVycmlk
ZSkNCiAgICAgICAgIGlzU3RhYmxlU3RhdGUgPSBzdGFibGVPdmVycmlkZS5ib29sVmFsdWU7DQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjI3LDEzICsyMjcsNiBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9yDQogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1PcGVuUGF5
bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVy
KQ0KIHsNCiAgICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW2FsbG9jUEtQYXNzTGlicmFy
eUluc3RhbmNlKCkgaW5pdF0pOw0KLSAgICBpZiAoIVtwYXNzTGlicmFyeSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6ZG9t
YWluOmNvbXBsZXRpb246KV0pIHsNCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXJdIHsNCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7DQotICAgICAgICB9KTsNCi0gICAgICAgIHJldHVybjsNCi0gICAgfQ0KLQ0KICAgICBbcGFz
c0xpYnJhcnkgb3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElk
ZW50aWZpZXIgZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpbY29tcGxldGlvbkhhbmRsZXJd
KEJPT0wgcmVzdWx0KSB7DQogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyLCByZXN1bHRdIHsNCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXN1bHQpOw0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTMxMTIsMTEgKzMxMTIs
OCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaXNtaXNzQ29udGVudFJlbGF0aXZlDQogICAgIGlmICht
X3ZpZXcud2luZG93LmlzS2V5V2luZG93IHx8IGhhc0FjdGl2ZUltbWVkaWF0ZUFjdGlvbikgew0K
ICAgICAgICAgV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6aGlkZVBvcHVwKCk7DQogDQotICAg
ICAgICBpZiAoRGF0YURldGVjdG9yc0xpYnJhcnkoKSkgew0KLSAgICAgICAgICAgIEREQWN0aW9u
c01hbmFnZXIgKmFjdGlvbnNNYW5hZ2VyID0gW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNo
YXJlZE1hbmFnZXJdOw0KLSAgICAgICAgICAgIGlmIChbYWN0aW9uc01hbmFnZXIgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihyZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWlsdXJl
OildKQ0KLSAgICAgICAgICAgICAgICBbYWN0aW9uc01hbmFnZXIgcmVxdWVzdEJ1YmJsZUNsb3N1
cmVVbmFuY2hvck9uRmFpbHVyZTpZRVNdOw0KLSAgICAgICAgfQ0KKyAgICAgICAgaWYgKERhdGFE
ZXRlY3RvcnNMaWJyYXJ5KCkpDQorICAgICAgICAgICAgW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xh
c3MoKSBzaGFyZWRNYW5hZ2VyXSByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWlsdXJl
OllFU107DQogICAgIH0NCiANCiAgICAgY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbihX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KTsN
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0
aW9uU2hlZXRBc3Npc3RhbnQubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHdvcmtpbmcgY29weSkN
CkBAIC01OSwxMCArNTksNiBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoVENDKQ0KIFNP
RlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0
LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2Vydmlj
ZSwgb3B0aW9ucykpDQogU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VQaG90b3Ms
IENGU3RyaW5nUmVmKQ0KIA0KLUBpbnRlcmZhY2UgREREZXRlY3Rpb25Db250cm9sbGVyIChTdGFn
aW5nVG9SZW1vdmUpDQotLSAoTlNBcnJheSAqKWFjdGlvbnNGb3JVUkw6KE5TVVJMICopdXJsIGlk
ZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICop
c2VsZWN0ZWRUZXh0IHJlc3VsdHM6KE5TQXJyYXkgKilyZXN1bHRzIGNvbnRleHQ6KE5TRGljdGlv
bmFyeSAqKWNvbnRleHQ7DQotQGVuZA0KLQ0KIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7DQogDQog
I2lmIEhBVkUoQVBQX0xJTktTKQ0KQEAgLTQ4MCwyOSArNDc2LDI1IEBAIC0gKHZvaWQpc2hvd0Rh
dGFEZXRlY3RvcnNTaGVldA0KICAgICAgICAgcmV0dXJuOw0KIA0KICAgICBERERldGVjdGlvbkNv
bnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbZ2V0REREZXRlY3Rpb25Db250cm9sbGVyQ2xhc3MoKSBz
aGFyZWRDb250cm9sbGVyXTsNCi0gICAgTlNBcnJheSAqZGF0YURldGVjdG9yc0FjdGlvbnMgPSBu
aWw7DQotICAgIGlmIChbY29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFj
dGlvbnNGb3JVUkw6aWRlbnRpZmllcjpzZWxlY3RlZFRleHQ6cmVzdWx0czpjb250ZXh0OildKSB7
DQotICAgICAgICBOU0RpY3Rpb25hcnkgKmNvbnRleHQgPSBuaWw7DQotICAgICAgICBOU1N0cmlu
ZyAqdGV4dEF0U2VsZWN0aW9uID0gbmlsOw0KLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IGV4dGVuZGVkQ29udGV4dDsNCi0NCi0gICAgICAgIGlmIChbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNo
ZWV0QXNzaXN0YW50OildKQ0KLSAgICAgICAgICAgIGNvbnRleHQgPSBbZGVsZWdhdGUgZGF0YURl
dGVjdGlvbkNvbnRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsNCi0gICAgICAgIGlm
IChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZWxlY3RlZFRleHRGb3JB
Y3Rpb25TaGVldEFzc2lzdGFudDopXSkNCi0gICAgICAgICAgICB0ZXh0QXRTZWxlY3Rpb24gPSBb
ZGVsZWdhdGUgc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07DQotICAg
ICAgICBpZiAoIXBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIXBv
c2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLmlzRW1wdHkoKSkgew0KLSAgICAgICAgICAgIGV4
dGVuZGVkQ29udGV4dCA9IGFkb3B0TlMoW0B7DQotICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0
ZWN0b3JzTGVhZGluZ1RleHQoKSA6IHBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZSwNCi0g
ICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNUcmFpbGluZ1RleHQoKSA6IHBvc2l0aW9u
SW5mb3JtYXRpb24udGV4dEFmdGVyLA0KLSAgICAgICAgICAgIH0gbXV0YWJsZUNvcHldKTsNCi0g
ICAgICAgICAgICANCi0gICAgICAgICAgICBpZiAoY29udGV4dCkNCi0gICAgICAgICAgICAgICAg
W2V4dGVuZGVkQ29udGV4dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6Y29udGV4dF07DQotICAg
ICAgICAgICAgY29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsNCi0gICAgICAgIH0NCi0g
ICAgICAgIGRhdGFEZXRlY3RvcnNBY3Rpb25zID0gW2NvbnRyb2xsZXIgYWN0aW9uc0ZvclVSTDp0
YXJnZXRVUkwgaWRlbnRpZmllcjpwb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvcklkZW50
aWZpZXIgc2VsZWN0ZWRUZXh0OnRleHRBdFNlbGVjdGlvbiByZXN1bHRzOnBvc2l0aW9uSW5mb3Jt
YXRpb24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHRdOw0KLSAgICB9
IGVsc2UNCi0gICAgICAgIGRhdGFEZXRlY3RvcnNBY3Rpb25zID0gW2NvbnRyb2xsZXIgYWN0aW9u
c0ZvckFuY2hvcjpuaWwgdXJsOnRhcmdldFVSTCBmb3JGcmFtZTpuaWxdOw0KKyAgICBOU0RpY3Rp
b25hcnkgKmNvbnRleHQgPSBuaWw7DQorICAgIE5TU3RyaW5nICp0ZXh0QXRTZWxlY3Rpb24gPSBu
aWw7DQorICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBleHRlbmRlZENvbnRleHQ7
DQorDQorICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRh
RGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNoZWV0QXNzaXN0YW50OildKQ0KKyAgICAgICAgY29u
dGV4dCA9IFtkZWxlZ2F0ZSBkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNoZWV0QXNzaXN0
YW50OnNlbGZdOw0KKyAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KV0pDQorICAgICAgICB0ZXh0
QXRTZWxlY3Rpb24gPSBbZGVsZWdhdGUgc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3Rh
bnQ6c2VsZl07DQorICAgIGlmICghcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLmlzRW1w
dHkoKSB8fCAhcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7DQorICAg
ICAgICBleHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAew0KKyAgICAgICAgICAgIGdldGtEYXRh
RGV0ZWN0b3JzTGVhZGluZ1RleHQoKSA6IHBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZSwN
CisgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4dCgpIDogcG9zaXRpb25J
bmZvcm1hdGlvbi50ZXh0QWZ0ZXIsDQorICAgICAgICB9IG11dGFibGVDb3B5XSk7DQorICAgICAg
ICANCisgICAgICAgIGlmIChjb250ZXh0KQ0KKyAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQg
YWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmNvbnRleHRdOw0KKyAgICAgICAgY29udGV4dCA9IGV4
dGVuZGVkQ29udGV4dC5nZXQoKTsNCisgICAgfQ0KKyAgICBOU0FycmF5ICpkYXRhRGV0ZWN0b3Jz
QWN0aW9ucyA9IFtjb250cm9sbGVyIGFjdGlvbnNGb3JVUkw6dGFyZ2V0VVJMIGlkZW50aWZpZXI6
cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDp0
ZXh0QXRTZWxlY3Rpb24gcmVzdWx0czpwb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJl
c3VsdHMuZ2V0KCkgY29udGV4dDpjb250ZXh0XTsNCiAgICAgaWYgKFtkYXRhRGV0ZWN0b3JzQWN0
aW9ucyBjb3VudF0gPT0gMCkNCiAgICAgICAgIHJldHVybjsNCiANCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkNCkBAIC0yMzksMjgg
KzIzOSw2IEBAIC0gKHZvaWQpc2VsZWN0V29yZDsNCiAtICh2b2lkKXNjaGVkdWxlUmVhbmFseXNp
czsNCiBAZW5kDQogDQotQGludGVyZmFjZSBVSVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAoU3Rh
Z2luZ1RvUmVtb3ZlKQ0KLS0gKHZvaWQpc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OihOU1N0
cmluZyAqKXRleHQ7DQotLSAodm9pZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2Vs
ZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi0tICh2b2lkKXNj
aGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6KE5TU3RyaW5nICopdGV4dDsNCi0t
ICh2b2lkKXNob3dTaGFyZVNoZWV0Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVj
dDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7DQotLSAodm9pZClsb29rdXA6KE5TU3RyaW5nICop
dGV4dFdpdGhDb250ZXh0IGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi0tICh2
b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQgd2l0aFJhbmdlOihOU1Jhbmdl
KXJhbmdlIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi1AZW5kDQotDQotQGlu
dGVyZmFjZSBVSVdLU2VsZWN0aW9uQXNzaXN0YW50IChTdGFnaW5nVG9SZW1vdmUpDQotLSAodm9p
ZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihD
R1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCi0tICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0
V2l0aENvbnRleHQgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLS0gKHZvaWQp
bG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2UpcmFu
Z2UgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLUBlbmQNCi0NCi1AaW50ZXJm
YWNlIFVJS2V5Ym9hcmRJbXBsIChTdGFnaW5nVG9SZW1vdmUpDQotLSAodm9pZClkaWRIYW5kbGVX
ZWJLZXlFdmVudDsNCi0tICh2b2lkKWRpZEhhbmRsZVdlYktleUV2ZW50OihXZWJJT1NFdmVudCAq
KWV2ZW50Ow0KLS0gKHZvaWQpZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdzOihOU1VJbnRlZ2VyKWZs
YWdzOw0KLS0gKHZvaWQpYWRkSW5wdXRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhGbGFn
czooTlNVSW50ZWdlcilmbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDooTlNTdHJpbmcgKiloaW50
Ow0KLUBlbmQNCi0NCiBAaW50ZXJmYWNlIFVJVmlldyAoVUlWaWV3SW50ZXJuYWxIYWNrKQ0KICsg
KEJPT0wpX2FkZENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbjsNCiBAZW5kDQpA
QCAtMjcyLDEwICsyNTAsNiBAQCBAaW50ZXJmYWNlIFVJUHJldmlld0l0ZW1Db250cm9sbGVyIChT
dGFnDQogQGVuZA0KICNlbmRpZg0KIA0KLUBpbnRlcmZhY2UgREREZXRlY3Rpb25Db250cm9sbGVy
IChTdGFnaW5nVG9SZW1vdmUpDQotLSAoRERSZXN1bHRSZWYpcmVzdWx0Rm9yVVJMOihOU1VSTCAq
KXVybCBpZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OihOU1N0
cmluZyAqKXNlbGVjdGVkVGV4dCByZXN1bHRzOihOU0FycmF5ICopcmVzdWx0cyBjb250ZXh0OihO
U0RpY3Rpb25hcnkgKiljb250ZXh0IGV4dGVuZGVkQ29udGV4dDooTlNEaWN0aW9uYXJ5ICoqKWV4
dGVuZGVkQ29udGV4dDsNCi1AZW5kDQotDQogQGludGVyZmFjZSBXS0ZvY3VzZWRFbGVtZW50SW5m
byA6IE5TT2JqZWN0IDxfV0tGb2N1c2VkRWxlbWVudEluZm8+DQogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246KGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uJilpbmZvcm1hdGlvbiBpc1VzZXJJbml0aWF0ZWQ6KEJPT0wpaXNVc2VySW5pdGlhdGVkOw0K
IEBlbmQNCkBAIC0xODc5LDE1ICsxODUzLDkgQEAgLSAodm9pZClfbG9va3VwOihpZClzZW5kZXIN
CiAgICAgICAgIA0KICAgICAgICAgU3RyaW5nIHNlbGVjdGlvbkNvbnRleHQgPSB0ZXh0QmVmb3Jl
ICsgc2VsZWN0ZWRUZXh0ICsgdGV4dEFmdGVyOw0KICAgICAgICAgaWYgKHZpZXctPl90ZXh0U2Vs
ZWN0aW9uQXNzaXN0YW50KSB7DQotICAgICAgICAgICAgaWYgKFt2aWV3LT5fdGV4dFNlbGVjdGlv
bkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGxvb2t1cDp3aXRoUmFuZ2U6
ZnJvbVJlY3Q6KV0pDQotICAgICAgICAgICAgICAgIFt2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lz
dGFudCBsb29rdXA6c2VsZWN0aW9uQ29udGV4dCB3aXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dEJl
Zm9yZS5sZW5ndGgoKSwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKSBmcm9tUmVjdDpwcmVzZW50YXRp
b25SZWN0XTsNCi0gICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIFt2aWV3LT5fdGV4
dFNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0ZWRUZXh0IGZyb21SZWN0OnByZXNlbnRh
dGlvblJlY3RdOw0KKyAgICAgICAgICAgIFt2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBs
b29rdXA6c2VsZWN0aW9uQ29udGV4dCB3aXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dEJlZm9yZS5s
ZW5ndGgoKSwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKSBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0
XTsNCiAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgaWYgKFt2aWV3LT5fd2ViU2VsZWN0
aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobG9va3VwOndpdGhSYW5n
ZTpmcm9tUmVjdDopXSkNCi0gICAgICAgICAgICAgICAgW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgbG9va3VwOnNlbGVjdGlvbkNvbnRleHQgd2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRC
ZWZvcmUubGVuZ3RoKCksIHNlbGVjdGVkVGV4dC5sZW5ndGgoKSkgZnJvbVJlY3Q6cHJlc2VudGF0
aW9uUmVjdF07DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBbdmlldy0+X3dl
YlNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0ZWRUZXh0IGZyb21SZWN0OnByZXNlbnRh
dGlvblJlY3RdOw0KKyAgICAgICAgICAgIFt2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50IGxv
b2t1cDpzZWxlY3Rpb25Db250ZXh0IHdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxl
bmd0aCgpLCBzZWxlY3RlZFRleHQubGVuZ3RoKCkpIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3Rd
Ow0KICAgICAgICAgfQ0KICAgICB9KTsNCiB9DQpAQCAtMTkwMywxOCArMTg3MSwxOCBAQCAtICh2
b2lkKV9zaGFyZTooaWQpc2VuZGVyDQogDQogICAgICAgICBDR1JlY3QgcHJlc2VudGF0aW9uUmVj
dCA9IHZpZXctPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9u
UmVjdHNbMF0ucmVjdCgpOw0KIA0KLSAgICAgICAgaWYgKHZpZXctPl90ZXh0U2VsZWN0aW9uQXNz
aXN0YW50ICYmIFt2aWV3LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNob3dTaGFyZVNoZWV0Rm9yOmZyb21SZWN0OildKQ0KKyAgICAgICAgaWYg
KHZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQ0KICAgICAgICAgICAgIFt2aWV3LT5fdGV4
dFNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpzdHJpbmcgZnJvbVJlY3Q6cHJl
c2VudGF0aW9uUmVjdF07DQotICAgICAgICBlbHNlIGlmICh2aWV3LT5fd2ViU2VsZWN0aW9uQXNz
aXN0YW50ICYmIFt2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2hvd1NoYXJlU2hlZXRGb3I6ZnJvbVJlY3Q6KV0pDQorICAgICAgICBlbHNl
IGlmICh2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50KQ0KICAgICAgICAgICAgIFt2aWV3LT5f
d2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnN0cmluZyBmcm9tUmVjdDpw
cmVzZW50YXRpb25SZWN0XTsNCiAgICAgfSk7DQogfQ0KIA0KIC0gKHZvaWQpX2FkZFNob3J0Y3V0
OihpZClzZW5kZXINCiB7DQotICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCAmJiBbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93VGV4
dFNlcnZpY2VGb3I6ZnJvbVJlY3Q6KV0pDQorICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFu
dCkNCiAgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzaG93VGV4dFNlcnZpY2VGb3I6
W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5
b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKV07DQotICAgIGVsc2UgaWYgKF93ZWJT
ZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzaG93VGV4dFNlcnZpY2VGb3I6ZnJvbVJlY3Q6KV0pDQorICAgIGVs
c2UgaWYgKF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQpDQogICAgICAgICBbX3dlYlNlbGVjdGlvbkFz
c2lzdGFudCBzaG93VGV4dFNlcnZpY2VGb3I6W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpf
cGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJl
Y3QoKV07DQogfQ0KIA0KQEAgLTE5NDQsMTQgKzE5MTIsMTIgQEAgLSAodm9pZClfcHJvbXB0Rm9y
UmVwbGFjZTooaWQpc2VuZGVyDQogICAgIGlmICh3b3JkQXRTZWxlY3Rpb24uaXNFbXB0eSgpKQ0K
ICAgICAgICAgcmV0dXJuOw0KIA0KLSAgICBpZiAoW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0Oild
KQ0KLSAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNjaGVkdWxlUmVwbGFjZW1lbnRz
Rm9yVGV4dDp3b3JkQXRTZWxlY3Rpb25dOw0KKyAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQg
c2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OndvcmRBdFNlbGVjdGlvbl07DQogfQ0KIA0KIC0g
KHZvaWQpX3RyYW5zbGl0ZXJhdGVDaGluZXNlOihpZClzZW5kZXINCiB7DQotICAgIGlmIChbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzY2hlZHVs
ZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0OildKQ0KLSAgICAgICAgW190ZXh0U2VsZWN0
aW9uQXNzaXN0YW50IHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6X3BhZ2Ut
PmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb25dOw0KKyAgICBb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9y
VGV4dDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlv
bl07DQogfQ0KIA0KIC0gKHZvaWQpX3JlYW5hbHl6ZTooaWQpc2VuZGVyDQpAQCAtMzM4NSwxNCAr
MzM1MSw2IEBAIC0gKHZvaWQpX2RpZEhhbmRsZUtleUV2ZW50OihXZWJJT1NFdmVudCANCiAgICAg
ICAgIHJldHVybjsNCiAgICAgfQ0KICAgICAgICAgDQotICAgIGlmIChldmVudC50eXBlID09IFdl
YkV2ZW50S2V5RG93bikgew0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSBmb3Igc3Rh
Z2luZyBwdXJwb3Nlcy4NCi0gICAgICAgIGlmIChbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3Rh
bmNlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZEhhbmRsZVdlYktleUV2ZW50Oild
KQ0KLSAgICAgICAgICAgIFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIGRpZEhhbmRs
ZVdlYktleUV2ZW50OmV2ZW50XTsNCi0gICAgICAgIGVsc2UNCi0gICAgICAgICAgICBbW1VJS2V5
Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBkaWRIYW5kbGVXZWJLZXlFdmVudF07DQotICAgIH0N
Ci0NCiAgICAgLy8gSWYgd2UgYXJlbid0IGludGVyYWN0aW5nIHdpdGggZWRpdGFibGUgY29udGVu
dCwgd2Ugc3RpbGwgbmVlZCB0byBjYWxsIFtzdXBlciBfaGFuZGxlS2V5VUlFdmVudDpdDQogICAg
IC8vIHNvIHRoYXQga2V5Ym9hcmQgcmVwZWF0IHdpbGwgd29yayBjb3JyZWN0bHkuIElmIHdlIGFy
ZSBpbnRlcmFjdGluZyB3aXRoIGVkaXRhYmxlIGNvbnRlbnQsDQogICAgIC8vIHdlIGFscmVhZHkg
ZGlkIHNvIGluIF9oYW5kbGVLZXlVSUV2ZW50Lg0KQEAgLTM1MDYsMjEgKzM0NjQsMTQgQEAgLSAo
Qk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KFdlYklPU0V2ZW50IA0KICAgICBjYXNlIGtXZWJCYWNr
c3BhY2VLZXk6DQogICAgIGNhc2Uga1dlYkRlbGV0ZUtleToNCiAgICAgICAgIGlmIChjb250ZW50
RWRpdGFibGUpIHsNCi0gICAgICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIGRlbGV0ZUZyb21JbnB1
dCBvbmNlIFVJS2l0IGFkb3B0cyBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3MNCi0gICAgICAgICAg
ICBpZiAoW2tleWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGVsZXRlRnJvbUlu
cHV0V2l0aEZsYWdzOildKQ0KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlu
cHV0V2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOw0KLSAgICAgICAgICAgIGVsc2UNCi0g
ICAgICAgICAgICAgICAgW2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dF07DQorICAgICAgICAgICAg
W2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsN
CiAgICAgICAgICAgICByZXR1cm4gWUVTOw0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQog
DQogICAgIGNhc2Uga1dlYlNwYWNlS2V5Og0KICAgICAgICAgaWYgKGNvbnRlbnRFZGl0YWJsZSAm
JiBpc0NoYXJFdmVudCkgew0KLSAgICAgICAgICAgIGlmIChba2V5Ym9hcmQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihhZGRJbnB1dFN0cmluZzp3aXRoRmxhZ3M6d2l0aElucHV0TWFuYWdl
ckhpbnQ6KV0pDQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVu
dC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzIHdpdGhJbnB1dE1hbmFn
ZXJIaW50OmV2ZW50LmlucHV0TWFuYWdlckhpbnRdOw0KLSAgICAgICAgICAgIGVsc2UNCi0gICAg
ICAgICAgICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0
aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOw0KKyAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJ
bnB1dFN0cmluZzpldmVudC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdz
IHdpdGhJbnB1dE1hbmFnZXJIaW50OmV2ZW50LmlucHV0TWFuYWdlckhpbnRdOw0KICAgICAgICAg
ICAgIHJldHVybiBZRVM7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC0zNTQwLDEw
ICszNDkxLDcgQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KFdlYklPU0V2ZW50IA0KIA0K
ICAgICBkZWZhdWx0Og0KICAgICAgICAgaWYgKGNvbnRlbnRFZGl0YWJsZSAmJiBpc0NoYXJFdmVu
dCkgew0KLSAgICAgICAgICAgIGlmIChba2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihhZGRJbnB1dFN0cmluZzp3aXRoRmxhZ3M6d2l0aElucHV0TWFuYWdlckhpbnQ6KV0pDQot
ICAgICAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVudC5jaGFyYWN0ZXJz
IHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50OmV2ZW50
LmlucHV0TWFuYWdlckhpbnRdOw0KLSAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAg
W2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50
LmtleWJvYXJkRmxhZ3NdOw0KKyAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpl
dmVudC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzIHdpdGhJbnB1dE1h
bmFnZXJIaW50OmV2ZW50LmlucHV0TWFuYWdlckhpbnRdOw0KICAgICAgICAgICAgIHJldHVybiBZ
RVM7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC00MjA4LDI1ICs0MTU2LDIzIEBA
IC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db24NCiAgICAgICAgICAgICAg
ICAgY29udGV4dCA9IFt1aURlbGVnYXRlIF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6
X3dlYlZpZXddOw0KIA0KICAgICAgICAgICAgIERERGV0ZWN0aW9uQ29udHJvbGxlciAqY29udHJv
bGxlciA9IFtnZXRERERldGVjdGlvbkNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZENvbnRyb2xsZXJd
Ow0KLSAgICAgICAgICAgIGlmIChbY29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlc3VsdEZvclVSTDppZGVudGlmaWVyOnNlbGVjdGVkVGV4dDpyZXN1bHRzOmNvbnRleHQ6
ZXh0ZW5kZWRDb250ZXh0OildKSB7DQotICAgICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqbmV3
Q29udGV4dCA9IG5pbDsNCi0gICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGV4dGVuZGVkQ29udGV4dDsNCi0gICAgICAgICAgICAgICAgRERSZXN1bHRSZWYgZGRS
ZXN1bHQgPSBbY29udHJvbGxlciByZXN1bHRGb3JVUkw6ZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3
RGF0YUxpbmtdIGlkZW50aWZpZXI6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9ySWRl
bnRpZmllciBzZWxlY3RlZFRleHQ6W3NlbGYgc2VsZWN0ZWRUZXh0XSByZXN1bHRzOl9wb3NpdGlv
bkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgY29udGV4dDpjb250ZXh0IGV4
dGVuZGVkQ29udGV4dDombmV3Q29udGV4dF07DQotICAgICAgICAgICAgICAgIGlmIChkZFJlc3Vs
dCkNCi0gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFERFJl
c3VsdF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7DQotICAgICAgICAgICAgICAgIGlmICghX3Bv
c2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIV9wb3NpdGlvbkluZm9y
bWF0aW9uLnRleHRBZnRlci5pc0VtcHR5KCkpIHsNCi0gICAgICAgICAgICAgICAgICAgIGV4dGVu
ZGVkQ29udGV4dCA9IGFkb3B0TlMoW0B7DQotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0a0Rh
dGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9y
ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4
dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLA0KLSAgICAgICAgICAgICAgICAg
ICAgfSBtdXRhYmxlQ29weV0pOw0KLSAgICAgICAgICAgICAgICAgICAgDQotICAgICAgICAgICAg
ICAgICAgICBpZiAobmV3Q29udGV4dCkNCi0gICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZW5k
ZWRDb250ZXh0IGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpuZXdDb250ZXh0XTsNCi0gICAgICAg
ICAgICAgICAgICAgIG5ld0NvbnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7DQotICAgICAg
ICAgICAgICAgIH0NCisgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKm5ld0NvbnRleHQgPSBuaWw7
DQorICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGV4dGVuZGVkQ29u
dGV4dDsNCisgICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtjb250cm9sbGVyIHJl
c3VsdEZvclVSTDpkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhTGlua10gaWRlbnRpZmllcjpf
cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDpb
c2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVj
dG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250ZXh0OiZuZXdDb250
ZXh0XTsNCisgICAgICAgICAgICBpZiAoZGRSZXN1bHQpDQorICAgICAgICAgICAgICAgIGRhdGFG
b3JQcmV2aWV3W1VJUHJldmlld0RhdGFERFJlc3VsdF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7
DQorICAgICAgICAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLmlzRW1w
dHkoKSB8fCAhX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVyLmlzRW1wdHkoKSkgew0KKyAg
ICAgICAgICAgICAgICBleHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAew0KKyAgICAgICAgICAg
ICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3Jt
YXRpb24udGV4dEJlZm9yZSwNCisgICAgICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3Jz
VHJhaWxpbmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIsDQorICAgICAg
ICAgICAgICAgIH0gbXV0YWJsZUNvcHldKTsNCisgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgIGlmIChuZXdDb250ZXh0KQ0KLSAgICAgICAgICAgICAgICAgICAgZGF0YUZvclByZXZp
ZXdbVUlQcmV2aWV3RGF0YUREQ29udGV4dF0gPSBuZXdDb250ZXh0Ow0KKyAgICAgICAgICAgICAg
ICAgICAgW2V4dGVuZGVkQ29udGV4dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6bmV3Q29udGV4
dF07DQorICAgICAgICAgICAgICAgIG5ld0NvbnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7
DQogICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChuZXdDb250ZXh0KQ0KKyAgICAgICAg
ICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhRERDb250ZXh0XSA9IG5ld0NvbnRl
eHQ7DQogICAgICAgICB9DQogICAgIH0gZWxzZSBpZiAoY2FuU2hvd0ltYWdlUHJldmlldykgew0K
ICAgICAgICAgKnR5cGUgPSBVSVByZXZpZXdJdGVtVHlwZUltYWdlOw0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTE3Nyw4ICsxNzcsNyBAQCBNYWNoU2VuZFJpZ2h0IFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBDQogICAgIC8vIEludmFsaWRhdGUgdGhlIGZlbmNlIGlm
IGEgc3luY2hyb25vdXMgbWVzc2FnZSBhcnJpdmVzIHdoaWxlIGl0J3MgaW5zdGFsbGVkLA0KICAg
ICAvLyBiZWNhdXNlIHdlIHdvbid0IGJlIGFibGUgdG8gcmVwbHkgZHVyaW5nIHRoZSBmZW5jZS13
YWl0Lg0KICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhbcm9vdExh
eWVyQ29udGV4dF0gew0KLSAgICAgICAgaWYgKFtyb290TGF5ZXJDb250ZXh0IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoaW52YWxpZGF0ZUZlbmNlcyldKQ0KLSAgICAgICAgICAgIFtyb290
TGF5ZXJDb250ZXh0IGludmFsaWRhdGVGZW5jZXNdOw0KKyAgICAgICAgW3Jvb3RMYXllckNvbnRl
eHQgaW52YWxpZGF0ZUZlbmNlc107DQogICAgIH0pOw0KICAgICBSZWZQdHI8V2ViUGFnZVByb3h5
PiByZXRhaW5lZFBhZ2UgPSAmbV93ZWJQYWdlUHJveHk7DQogICAgIFtDQVRyYW5zYWN0aW9uIGFk
ZENvbW1pdEhhbmRsZXI6W2NhbGxiYWNrSUQsIHJldGFpbmVkUGFnZV0gew0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5
KQ0KQEAgLTQwMSwxMCArNDAxLDggQEAgLSAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25D
b250cm9sbA0KIA0KICAgICBhY3Rpb25Db250ZXh0LmFsdE1vZGUgPSBZRVM7DQogICAgIGFjdGlv
bkNvbnRleHQuaW1tZWRpYXRlID0gWUVTOw0KLSAgICBpZiAoW1tnZXREREFjdGlvbnNNYW5hZ2Vy
Q2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGhhc0Fj
dGlvbnNGb3JSZXN1bHQ6YWN0aW9uQ29udGV4dDopXSkgew0KLSAgICAgICAgaWYgKCFbW2dldERE
QWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIGhhc0FjdGlvbnNGb3JSZXN1bHQ6
YWN0aW9uQ29udGV4dC5tYWluUmVzdWx0IGFjdGlvbkNvbnRleHQ6YWN0aW9uQ29udGV4dF0pDQot
ICAgICAgICAgICAgcmV0dXJuIG5pbDsNCi0gICAgfQ0KKyAgICBpZiAoIVtbZ2V0RERBY3Rpb25z
TWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gaGFzQWN0aW9uc0ZvclJlc3VsdDphY3Rpb25D
b250ZXh0Lm1haW5SZXN1bHQgYWN0aW9uQ29udGV4dDphY3Rpb25Db250ZXh0XSkNCisgICAgICAg
IHJldHVybiBuaWw7DQogDQogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSBfcGFnZTsN
CiAgICAgUGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQgb3ZlcmxheUlEID0gX2hpdFRlc3RSZXN1
bHREYXRhLmRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92ZXJsYXk7DQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMjY2LDkgKzI2
Niw2IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y2xlYXJTZXJ2aWMNCiANCiBSZXRh
aW5QdHI8TlNNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlU2hhcmVNZW51
SXRlbSgpDQogew0KLSAgICBpZiAoIVtbTlNNZW51SXRlbSBjbGFzc10gcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KV0pDQotICAgICAg
ICByZXR1cm4gbmlsOw0KLQ0KICAgICBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVz
dERhdGEgPSBtX2NvbnRleHQud2ViSGl0VGVzdFJlc3VsdERhdGEoKTsNCiANCiAgICAgYXV0byBp
dGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOw0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0NCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTc1LDEwICs3NSw2
IEBAIHN0YXRpYyBOU1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmQNCiAgICAgcmV0dXJu
IFt3aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpyZWN0XTsNCiB9DQogDQotQGludGVyZmFjZSBO
U1dpbmRvdyhJc09uQWN0aXZlU3BhY2VBZGRpdGlvbkZvclRpZ2VyQW5kTGVvcGFyZCkNCi0tIChC
T09MKWlzT25BY3RpdmVTcGFjZTsNCi1AZW5kDQotDQogQGltcGxlbWVudGF0aW9uIFdlYkZ1bGxT
Y3JlZW5Db250cm9sbGVyDQogDQogI3ByYWdtYSBtYXJrIC0NCkBAIC0xNjUsMTYgKzE2MSwxMyBA
QCAtICh2b2lkKWNhbmNlbE9wZXJhdGlvbjooaWQpc2VuZGVyDQogDQogLSAodm9pZClhcHBsaWNh
dGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbg0KIHsgICAN
Ci0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBmdWxsc2NyZWVuV2luZG93IGlzIG9uIHRoZSBh
Y3RpdmUgc3BhY2U7IHRoaXMgZnVuY3Rpb24gaXMgYXZhaWxhYmxlDQotICAgIC8vIG9uIDEwLjYg
YW5kIGxhdGVyLCBzbyBkZWZhdWx0IHRvIFlFUyBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IGF2YWls
YWJsZToNCiAgICAgTlNXaW5kb3cqIGZ1bGxzY3JlZW5XaW5kb3cgPSBbc2VsZiB3aW5kb3ddOw0K
LSAgICBCT09MIGlzT25BY3RpdmVTcGFjZSA9IChbZnVsbHNjcmVlbldpbmRvdyByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGlzT25BY3RpdmVTcGFjZSldID8gW2Z1bGxzY3JlZW5XaW5kb3cg
aXNPbkFjdGl2ZVNwYWNlXSA6IFlFUyk7DQogDQogICAgIC8vIFJlcGxpY2F0ZSB0aGUgUXVpY2tU
aW1lIFBsYXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0aW9uIHN0
YXR1czoNCiAgICAgLy8gSXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIHRoZSBtYWluIHNjcmVlbj8g
KE5vdGU6IHRoaXMgY292ZXJzIHRoZSBjYXNlIHdoZXJlIG9ubHkgYSANCiAgICAgLy8gc2luZ2xl
IHNjcmVlbiBpcyBhdmFpbGFibGUuKSAgSXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIG9uIHRoZSBj
dXJyZW50IHNwYWNlPyBJRkYgc28sIA0KICAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2Rl
LiANCi0gICAgaWYgKFtmdWxsc2NyZWVuV2luZG93IHNjcmVlbl0gPT0gW1tOU1NjcmVlbiBzY3Jl
ZW5zXSBvYmplY3RBdEluZGV4OjBdICYmIGlzT25BY3RpdmVTcGFjZSkNCisgICAgaWYgKGZ1bGxz
Y3JlZW5XaW5kb3cuc2NyZWVuID09IFtOU1NjcmVlbiBzY3JlZW5zXVswXSAmJiBmdWxsc2NyZWVu
V2luZG93Lm9uQWN0aXZlU3BhY2UpDQogICAgICAgICAgW3NlbGYgY2FuY2VsT3BlcmF0aW9uOnNl
bGZdOw0KIH0NCiANCkBAIC0zMjUsNyArMzE4LDcgQEAgLSAodm9pZClleGl0RnVsbFNjcmVlbg0K
ICAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVo
YXZpb3JOb25lXTsNCiAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG1vdmVkIHRoZSBmdWxsU2NyZWVu
IHdpbmRvdyBpbnRvIGEgbmV3IHNwYWNlLCB0ZW1wb3JhcmlseSBjaGFuZ2UNCiAgICAgLy8gdGhl
IGNvbGxlY3Rpb25CZWhhdmlvciBvZiB0aGUgd2ViVmlldydzIHdpbmRvdyBzbyB0aGF0IGl0IGlz
IHB1bGxlZCBpbnRvIHRoZSBhY3RpdmUgc3BhY2U6DQotICAgIGlmICghKFt3ZWJXaW5kb3cgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpc09uQWN0aXZlU3BhY2UpXSA/IFt3ZWJXaW5kb3cg
aXNPbkFjdGl2ZVNwYWNlXSA6IFlFUykpIHsNCisgICAgaWYgKCF3ZWJXaW5kb3cub25BY3RpdmVT
cGFjZSkgew0KICAgICAgICAgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3IgYmVoYXZpb3IgPSBb
d2ViV2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl07DQogICAgICAgICBbd2ViV2luZG93IHNldENv
bGxlY3Rpb25CZWhhdmlvcjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckNhbkpvaW5BbGxTcGFj
ZXNdOw0KICAgICAgICAgW3dlYldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0
aXZlVG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07DQpAQCAtNDMwLDEwICs0MjMsNyBA
QCAtICh2b2lkKV91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW4NCiAgICAgICAgICAgICBv
cHRpb25zIHw9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZURvY2s7DQogICAgIH0N
CiAgICAgDQotICAgIGlmIChbTlNBcHAgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQ
cmVzZW50YXRpb25PcHRpb25zOildKQ0KLSAgICAgICAgW05TQXBwIHNldFByZXNlbnRhdGlvbk9w
dGlvbnM6b3B0aW9uc107DQotICAgIGVsc2UNCi0gICAgICAgIFNldFN5c3RlbVVJTW9kZShfaXNG
dWxsU2NyZWVuID8ga1VJTW9kZUFsbEhpZGRlbiA6IGtVSU1vZGVOb3JtYWwsIDApOw0KKyAgICBO
U0FwcC5wcmVzZW50YXRpb25PcHRpb25zID0gb3B0aW9uczsNCiB9DQogDQogI3ByYWdtYSBtYXJr
IC0NCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2
aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0JKHdvcmtpbmcgY29weSkNCkBAIC0zODcyLDkgKzM4NzIsNiBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGZpeE1lbnVzUmVjZWl2DQogDQogc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVt
PiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQp
DQogew0KLSAgICBpZiAoIVtbTlNNZW51SXRlbSBjbGFzc10gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KV0pDQotICAgICAgICByZXR1
cm4gbmlsOw0KLQ0KICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7DQogDQogICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwo
KS5pc0VtcHR5KCkpIHsNCkBAIC02MTA0LDggKzYxMDEsNyBAQCAtICh2b2lkKV93aW5kb3dDaGFu
Z2VkS2V5U3RhdGUNCiAjaWYgIVBMQVRGT1JNKElPUykNCiAtICh2b2lkKW90aGVyTW91c2VEb3du
OihOU0V2ZW50ICopZXZlbnQNCiB7DQotICAgIGlmIChbZXZlbnQgYnV0dG9uTnVtYmVyXSAhPSAy
IHx8IChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVu
dDopXQ0KLSAgICAgICAgJiYgW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSA9PSBOU01l
bnVUeXBlQ29udGV4dE1lbnUpKSB7DQorICAgIGlmIChldmVudC5idXR0b25OdW1iZXIgIT0gMiB8
fCBbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVudVR5cGVDb250ZXh0TWVu
dSkgew0KICAgICAgICAgW3N1cGVyIG90aGVyTW91c2VEb3duOmV2ZW50XTsNCiAgICAgICAgIHJl
dHVybjsNCiAgICAgfQ0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjEyMjAy
KQ0KKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTEyOCw4ICsxMjgsNyBAQCAtICh2b2lkKV9jbGVh
ckltbWVkaWF0ZUFjdGlvblN0YXRlDQogICAgICAgICByZXR1cm47DQogDQogICAgIEREQWN0aW9u
c01hbmFnZXIgKmFjdGlvbnNNYW5hZ2VyID0gW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNo
YXJlZE1hbmFnZXJdOw0KLSAgICBpZiAoW2FjdGlvbnNNYW5hZ2VyIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocmVxdWVzdEJ1YmJsZUNsb3N1cmVVbmFuY2hvck9uRmFpbHVyZTopXSkNCi0g
ICAgICAgIFthY3Rpb25zTWFuYWdlciByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWls
dXJlOllFU107DQorICAgIFthY3Rpb25zTWFuYWdlciByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5j
aG9yT25GYWlsdXJlOllFU107DQogDQogICAgIGlmIChfY3VycmVudEFjdGlvbkNvbnRleHQgJiYg
X2hhc0FjdGl2YXRlZEFjdGlvbkNvbnRleHQpIHsNCiAgICAgICAgIF9oYXNBY3RpdmF0ZWRBY3Rp
b25Db250ZXh0ID0gTk87DQpAQCAtNDM5LDEwICs0MzgsOCBAQCAtIChpZCA8TlNJbW1lZGlhdGVB
Y3Rpb25BbmltYXRpb25Db250cm9sDQogDQogICAgIFthY3Rpb25Db250ZXh0IHNldEFsdE1vZGU6
WUVTXTsNCiAgICAgW2FjdGlvbkNvbnRleHQgc2V0SW1tZWRpYXRlOllFU107DQotICAgIGlmIChb
W2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoaGFzQWN0aW9uc0ZvclJlc3VsdDphY3Rpb25Db250ZXh0OildKSB7DQot
ICAgICAgICBpZiAoIVtbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0g
aGFzQWN0aW9uc0ZvclJlc3VsdDpbYWN0aW9uQ29udGV4dCBtYWluUmVzdWx0XSBhY3Rpb25Db250
ZXh0OmFjdGlvbkNvbnRleHQuZ2V0KCldKQ0KLSAgICAgICAgICAgIHJldHVybiBuaWw7DQotICAg
IH0NCisgICAgaWYgKCFbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJd
IGhhc0FjdGlvbnNGb3JSZXN1bHQ6W2FjdGlvbkNvbnRleHQgbWFpblJlc3VsdF0gYWN0aW9uQ29u
dGV4dDphY3Rpb25Db250ZXh0LmdldCgpXSkNCisgICAgICAgIHJldHVybiBuaWw7DQogDQogICAg
IGF1dG8gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpkZXRlY3Rl
ZERhdGFSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbkRlZmF1bHQsIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTUwNiwxMCArNTA2LDYgQEAg
QGludGVyZmFjZSBXZWJWaWV3KFdlYlZpZXdQcml2YXRlKQ0KIC0gKHZvaWQpX3ByZWZlcmVuY2Vz
Q2hhbmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlczsNCiAtICh2b2lkKV91cGRhdGVT
Y3JlZW5TY2FsZUZyb21XaW5kb3c7DQogQGVuZA0KLQ0KLUBpbnRlcmZhY2UgTlNVUkxDYWNoZSAo
V2ViUHJpdmF0ZSkNCi0tIChDRlVSTENhY2hlUmVmKV9DRlVSTENhY2hlOw0KLUBlbmQNCiAjZW5k
aWYNCiANCiAjaWYgIVBMQVRGT1JNKElPUykNCkBAIC0zMzMxLDcgKzMzMjcsNyBAQCAtICh2b2lk
KV9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lDQogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGNvcmUoW2ZyYW1lIERPTURvY3VtZW50XSk7DQogICAgIGlmIChFbGVtZW50KiBlbGVtZW50
ID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkg
OiAwKSB7DQogICAgICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpjbG9zZUZ1
bGxTY3JlZW5XaXRoTGlzdGVuZXI6KTsNCi0gICAgICAgIGlmIChfcHJpdmF0ZS0+VUlEZWxlZ2F0
ZSAmJiBbX3ByaXZhdGUtPlVJRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkg
ew0KKyAgICAgICAgaWYgKFtfcHJpdmF0ZS0+VUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
c2VsZWN0b3JdKSB7DQogICAgICAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyICpsaXN0
ZW5lciA9IFtbV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnQ6
ZWxlbWVudF07DQogICAgICAgICAgICAgQ2FsbFVJRGVsZWdhdGUoc2VsZiwgc2VsZWN0b3IsIGxp
c3RlbmVyKTsNCiAgICAgICAgICAgICBbbGlzdGVuZXIgcmVsZWFzZV07DQpAQCAtODU4Myw3ICs4
NTc5LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYQ0KICNpZiBQ
TEFURk9STShJT1MpDQogICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IHN0ZDo6bWF4KG5z
dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgW25zdXJsQ2FjaGUgbWVtb3J5Q2FwYWNpdHldKTsNCiAg
ICAgQ0ZVUkxDYWNoZVJlZiBjZkNhY2hlOw0KLSAgICBpZiAoW25zdXJsQ2FjaGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihfQ0ZVUkxDYWNoZSldICYmIChjZkNhY2hlID0gW25zdXJsQ2Fj
aGUgX0NGVVJMQ2FjaGVdKSkNCisgICAgaWYgKGNmQ2FjaGUgPSBbbnN1cmxDYWNoZSBfQ0ZVUkxD
YWNoZV0pDQogICAgICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2ZDYWNoZSwgbnN1
cmxDYWNoZU1lbW9yeUNhcGFjaXR5KTsNCiAgICAgZWxzZQ0KICAgICAgICAgW25zdXJsQ2FjaGUg
c2V0TWVtb3J5Q2FwYWNpdHk6bnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5XTsNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301310</attachid>
            <date>2017-02-12 10:36:05 -0800</date>
            <delta_ts>2017-02-12 12:06:02 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>file_168183.txt</filename>
            <type>text/plain</type>
            <size>60794</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncwkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQ0KQEAgLTEyNyw5ICsxMjcsNiBA
QA0KIC8qIE9wdGlvbiBpbiBzZWdtZW50ZWQgY29udHJvbCBmb3IgaW5zZXJ0aW5nIGEgYnVsbGV0
ZWQgbGlzdCBpbiB0ZXh0IGVkaXRpbmcgKi8NCiAiQnVsbGV0ZWQgbGlzdCIgPSAiQnVsbGV0ZWQg
bGlzdCI7DQogDQotLyogbWVudSBpdGVtIHRpdGxlIGZvciBwaG9uZSBudW1iZXIgKi8NCi0iQ2Fs
bCBVc2luZyBpUGhvbmU6IiA9ICJDYWxsIFVzaW5nIGlQaG9uZToiOw0KLQ0KIC8qIFRpdGxlIGZv
ciBDYW5jZWwgYnV0dG9uIGxhYmVsIGluIGJ1dHRvbiBiYXIgKi8NCiAiQ2FuY2VsIGJ1dHRvbiBs
YWJlbCBpbiBidXR0b24gYmFyIiA9ICJDYW5jZWwiOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW0NCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZpc2lvbiAyMTIyMDIp
DQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbQkod29y
a2luZyBjb3B5KQ0KQEAgLTIyMSwxOCArMjIxLDE2IEBAIHN0YXRpYyBQbGF0Zm9ybUFuaW1hdGlv
bkNvbnRyb2xsZXIgc2hvd1ANCiAgICAgICAgIHRleHRJbmRpY2F0b3JJbnN0YWxsYXRpb25DYWxs
YmFjayh0ZXh0SW5kaWNhdG9yLmdldCgpKTsNCiAgICAgICAgIFttdXRhYmxlT3B0aW9ucyBzZXRP
YmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0
b3IoKV07DQogDQotICAgICAgICBpZiAoW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNz
KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93RGVmaW5pdGlvbkZvclRlcm06cmVs
YXRpdmVUb1JlY3Q6b2ZWaWV3Om9wdGlvbnM6KV0pIHsNCi0gICAgICAgICAgICBGbG9hdFJlY3Qg
Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzID0gdGV4dEluZGljYXRvci5nZXQoKS50ZXh0
UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKClbMF07DQotICAgICAgICAgICAgRmxvYXRS
ZWN0IHRleHRCb3VuZGluZ1JlY3RJblZpZXdDb29yZGluYXRlcyA9IHRleHRJbmRpY2F0b3IuZ2V0
KCkudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpOw0KLSAgICAgICAgICAg
IGlmIChyb290Vmlld1RvVmlld0NvbnZlcnNpb25DYWxsYmFjaykNCi0gICAgICAgICAgICAgICAg
dGV4dEJvdW5kaW5nUmVjdEluVmlld0Nvb3JkaW5hdGVzID0gcm9vdFZpZXdUb1ZpZXdDb252ZXJz
aW9uQ2FsbGJhY2sodGV4dEJvdW5kaW5nUmVjdEluVmlld0Nvb3JkaW5hdGVzKTsNCi0gICAgICAg
ICAgICBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMubW92ZUJ5KHRleHRCb3VuZGluZ1Jl
Y3RJblZpZXdDb29yZGluYXRlcy5sb2NhdGlvbigpKTsNCi0gICAgICAgICAgICBpZiAoY3JlYXRl
QW5pbWF0aW9uQ29udHJvbGxlcikNCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtnZXRMVUxvb2t1
cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJt
OmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSByZWxhdGl2ZVRvUmVj
dDpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgb2ZWaWV3OnZpZXcgb3B0aW9uczptdXRh
YmxlT3B0aW9ucy5nZXQoKV07DQotDQotICAgICAgICAgICAgW2dldExVTG9va3VwRGVmaW5pdGlv
bk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8u
YXR0cmlidXRlZFN0cmluZy5nZXQoKSByZWxhdGl2ZVRvUmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3
Q29vcmRpbmF0ZXMgb2ZWaWV3OnZpZXcgb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07DQot
ICAgICAgICAgICAgcmV0dXJuIG5pbDsNCi0gICAgICAgIH0NCisgICAgICAgIEZsb2F0UmVjdCBm
aXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSB0ZXh0SW5kaWNhdG9yLmdldCgpLnRleHRS
ZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMoKVswXTsNCisgICAgICAgIEZsb2F0UmVjdCB0
ZXh0Qm91bmRpbmdSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSB0ZXh0SW5kaWNhdG9yLmdldCgpLnRl
eHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKTsNCisgICAgICAgIGlmIChyb290
Vmlld1RvVmlld0NvbnZlcnNpb25DYWxsYmFjaykNCisgICAgICAgICAgICB0ZXh0Qm91bmRpbmdS
ZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSByb290Vmlld1RvVmlld0NvbnZlcnNpb25DYWxsYmFjayh0
ZXh0Qm91bmRpbmdSZWN0SW5WaWV3Q29vcmRpbmF0ZXMpOw0KKyAgICAgICAgZmlyc3RUZXh0UmVj
dEluVmlld0Nvb3JkaW5hdGVzLm1vdmVCeSh0ZXh0Qm91bmRpbmdSZWN0SW5WaWV3Q29vcmRpbmF0
ZXMubG9jYXRpb24oKSk7DQorICAgICAgICBpZiAoY3JlYXRlQW5pbWF0aW9uQ29udHJvbGxlcikN
CisgICAgICAgICAgICByZXR1cm4gW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkg
bG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRy
aWJ1dGVkU3RyaW5nLmdldCgpIHJlbGF0aXZlVG9SZWN0OmZpcnN0VGV4dFJlY3RJblZpZXdDb29y
ZGluYXRlcyBvZlZpZXc6dmlldyBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsNCisNCisg
ICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9u
Rm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmVsYXRp
dmVUb1JlY3Q6Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzIG9mVmlldzp2aWV3IG9wdGlv
bnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOw0KKyAgICAgICAgcmV0dXJuIG5pbDsNCiAgICAgfQ0K
IA0KICAgICBOU1BvaW50IHRleHRCYXNlbGluZU9yaWdpbiA9IGRpY3Rpb25hcnlQb3B1cEluZm8u
b3JpZ2luOw0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDIx
MjIwMikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTc2LDggKzc2LDcgQEAgdm9pZCBO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aW5pdA0KICAgICBtX25lRmlsdGVyU291cmNl
ID0gYWRvcHROUyhbYWxsb2NORUZpbHRlclNvdXJjZUluc3RhbmNlKCkgaW5pdFdpdGhEZWNpc2lv
blF1ZXVlOm1fcXVldWUuZ2V0KCldKTsNCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkNCiAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGUgLXJlc3BvbmRzVG9TZWxlY3RvcjogY2hlY2sgb25jZSAtc2V0U291cmNlQXBw
QnVuZGxlSUQ6IGlzIGluIGFuIFNESyAoPHJkYXI6Ly9wcm9ibGVtLzI5MTQ3MTc0PikuDQotICAg
IGlmIChbbV9uZUZpbHRlclNvdXJjZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNv
dXJjZUFwcEJ1bmRsZUlEOildKQ0KLSAgICAgICAgW21fbmVGaWx0ZXJTb3VyY2Ugc2V0U291cmNl
QXBwQnVuZGxlSUQ6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCldOw0KKyAgICBbbV9uZUZp
bHRlclNvdXJjZSBzZXRTb3VyY2VBcHBJZGVudGlmaWVyOmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpXTsNCiAjZW5kaWYNCiAjZWxzZQ0KICAgICBBU1NFUlRfQVJHKHVybCwgdXJsKTsNCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Njcm9sbENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkNCkBAIC00MSwzMSArNDEsNiBA
QA0KIA0KICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpIHx8IEVOQUJMRShDU1NfU0NST0xMX1NO
QVApDQogDQotI2lmIFBMQVRGT1JNKE1BQykNCi1zdGF0aWMgTlNUaW1lSW50ZXJ2YWwgc3lzdGVt
VXB0aW1lKCkNCi17DQotICAgIGlmIChbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3lzdGVtVXB0aW1lKV0pDQotICAgICAgICByZXR1cm4g
W1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdOw0KLQ0KLSAgICAvLyBH
ZXQgaG93IGxvbmcgc3lzdGVtIGhhcyBiZWVuIHVwLiBGb3VuZCBieSBsb29raW5nIGdldHRpbmcg
ImJvb3R0aW1lIiBmcm9tIHRoZSBrZXJuZWwuDQotICAgIHN0YXRpYyBzdHJ1Y3QgdGltZXZhbCBi
b290dGltZSA9IHswLCAwfTsNCi0gICAgaWYgKCFib290dGltZS50dl9zZWMpIHsNCi0gICAgICAg
IGludCBtaWJbMl0gPSB7Q1RMX0tFUk4sIEtFUk5fQk9PVFRJTUV9Ow0KLSAgICAgICAgc2l6ZV90
IHNpemUgPSBzaXplb2YoYm9vdHRpbWUpOw0KLSAgICAgICAgaWYgKC0xID09IHN5c2N0bChtaWIs
IDIsICZib290dGltZSwgJnNpemUsIDAsIDApKQ0KLSAgICAgICAgICAgIGJvb3R0aW1lLnR2X3Nl
YyA9IDA7DQotICAgIH0NCi0gICAgc3RydWN0IHRpbWV2YWwgbm93Ow0KLSAgICBpZiAoYm9vdHRp
bWUudHZfc2VjICYmIC0xICE9IGdldHRpbWVvZmRheSgmbm93LCAwKSkgew0KLSAgICAgICAgc3Ry
dWN0IHRpbWV2YWwgdXB0aW1lOw0KLSAgICAgICAgdGltZXJzdWIoJm5vdywgJmJvb3R0aW1lLCAm
dXB0aW1lKTsNCi0gICAgICAgIE5TVGltZUludGVydmFsIHJlc3VsdCA9IHVwdGltZS50dl9zZWMg
KyAodXB0aW1lLnR2X3VzZWMgLyAxRSs2KTsNCi0gICAgICAgIHJldHVybiByZXN1bHQ7DQotICAg
IH0NCi0gICAgcmV0dXJuIDA7DQotfQ0KLSNlbmRpZg0KLQ0KIG5hbWVzcGFjZSBXZWJDb3JlIHsN
CiANCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQ0KQEAgLTQyNyw3ICs0MDIsNyBAQCB2b2lk
IFNjcm9sbENvbnRyb2xsZXI6OnN0b3BTbmFwUnViYmVyYmFuDQogDQogdm9pZCBTY3JvbGxDb250
cm9sbGVyOjpzbmFwUnViYmVyQmFuZCgpDQogew0KLSAgICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVs
dGEgPSBzeXN0ZW1VcHRpbWUoKSAtIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wOw0KKyAg
ICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVsdGEgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10u
c3lzdGVtVXB0aW1lIC0gbV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXA7DQogICAgIGlmICht
X2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCAmJiB0aW1lRGVsdGEgPj0gc2Nyb2xsVmVsb2Np
dHlaZXJvaW5nVGltZW91dCkNCiAgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6
ZSgpOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0NCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1hYy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTExNiwxMiArMTE2LDkgQEAg
dm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpzaG93UA0KIA0KICAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpzaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIgLSBjaGVja0FjdGl2ZVJvdXRlID0gJWkiLCAoaW50KWNoZWNrQWN0aXZlUm91dGUpOw0KIA0K
LSAgICBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVHlwZSAqcGlja2VyID0gZGV2aWNlUGlj
a2VyKCk7DQotICAgIGlmICghW3BpY2tlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNo
b3dNZW51Rm9yUmVjdDphcHBlYXJhbmNlTmFtZTphbGxvd1Jlc2VsZWN0aW9uT2ZTZWxlY3RlZE91
dHB1dERldmljZTopXSkNCi0gICAgICAgIHJldHVybjsNCi0NCiAgICAgbV9zaG93aW5nTWVudSA9
IHRydWU7DQotICAgIGlmIChbcGlja2VyIHNob3dNZW51Rm9yUmVjdDpsb2NhdGlvbiBhcHBlYXJh
bmNlTmFtZTpOU0FwcGVhcmFuY2VOYW1lVmlicmFudExpZ2h0IGFsbG93UmVzZWxlY3Rpb25PZlNl
bGVjdGVkT3V0cHV0RGV2aWNlOiFjaGVja0FjdGl2ZVJvdXRlXSkgew0KKw0KKyAgICBpZiAoW2Rl
dmljZVBpY2tlcigpIHNob3dNZW51Rm9yUmVjdDpsb2NhdGlvbiBhcHBlYXJhbmNlTmFtZTpOU0Fw
cGVhcmFuY2VOYW1lVmlicmFudExpZ2h0IGFsbG93UmVzZWxlY3Rpb25PZlNlbGVjdGVkT3V0cHV0
RGV2aWNlOiFjaGVja0FjdGl2ZVJvdXRlXSkgew0KICAgICAgICAgaWYgKCFjaGVja0FjdGl2ZVJv
dXRlKQ0KICAgICAgICAgICAgIGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsNCiAgICAgfQ0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0NCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTc1Nyw4ICs3NTcs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6DQogICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fdmlkZW9MYXllci5nZXQo
KSwgZGVmYXVsdFNpemUpOw0KIA0KICNpZiBQTEFURk9STShJT1MpDQotICAgIGlmIChbbV92aWRl
b0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0p
DQotICAgICAgICBbbV92aWRlb0xheWVyIHNldFBJUE1vZGVFbmFibGVkOihwbGF5ZXIoKS0+ZnVs
bHNjcmVlbk1vZGUoKSAmIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZSldOw0KKyAgICBbbV92aWRlb0xheWVyIHNldFBJUE1vZGVFbmFibGVkOihwbGF5ZXIo
KS0+ZnVsbHNjcmVlbk1vZGUoKSAmIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGlj
dHVyZUluUGljdHVyZSldOw0KICNlbmRpZg0KICNlbHNlDQogICAgIFttX3ZpZGVvTGF5ZXIgc2V0
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBkZWZhdWx0U2l6ZS53aWR0aCgpLCBkZWZhdWx0U2l6ZS5o
ZWlnaHQoKSldOw0KQEAgLTEyNTcsOCArMTI1Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzoNCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkNCiB7DQogI2lmIFBMQVRGT1JNKElPUykNCi0gICAgaWYgKG1fdmlkZW9MYXllciAm
JiBbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVu
YWJsZWQ6KV0pDQotICAgICAgICBbbV92aWRlb0xheWVyIHNldFBJUE1vZGVFbmFibGVkOihtb2Rl
ICYgTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKV07DQor
ICAgIFttX3ZpZGVvTGF5ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6
VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpXTsNCiAgICAgdXBkYXRlRGlzYWJs
ZUV4dGVybmFsUGxheWJhY2soKTsNCiAjZWxzZQ0KICAgICBVTlVTRURfUEFSQU0obW9kZSk7DQpA
QCAtMjI0NCw3ICsyMjQyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOg0KICAgICAgICAgcmV0dXJuIGZhbHNlOw0KIA0KICAgICBXZWJDb3JlTlNVUkxTZXNzaW9u
ICpzZXNzaW9uID0gKFdlYkNvcmVOU1VSTFNlc3Npb24gKilyZXNvdXJjZUxvYWRlci5VUkxTZXNz
aW9uOw0KLSAgICBpZiAoW3Nlc3Npb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkaWRQ
YXNzQ09SU0FjY2Vzc0NoZWNrcyldKQ0KKyAgICBpZiAoW3Nlc3Npb24gaXNLaW5kT2ZDbGFzczpb
V2ViQ29yZU5TVVJMU2Vzc2lvbiBjbGFzc11dKQ0KICAgICAgICAgcmV0dXJuIHNlc3Npb24uZGlk
UGFzc0NPUlNBY2Nlc3NDaGVja3M7DQogI2VuZGlmDQogICAgIHJldHVybiBmYWxzZTsNCkBAIC0z
MTk5LDggKzMxOTcsNyBAQCBVUkwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
DQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGREaXNh
YmxlU2xlZXAoYm9vbCBmbGFnKQ0KIHsNCiAjaWYgUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0o
SU9TX1NJTVVMQVRPUikNCi0gICAgaWYgKG1fYXZQbGF5ZXIgJiYgW21fYXZQbGF5ZXIgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0UHJldmVudHNTbGVlcER1cmluZ1ZpZGVvUGxheWJh
Y2s6KV0pDQotICAgICAgICBbbV9hdlBsYXllciBfc2V0UHJldmVudHNTbGVlcER1cmluZ1ZpZGVv
UGxheWJhY2s6ZmxhZ107DQorICAgIFttX2F2UGxheWVyIF9zZXRQcmV2ZW50c1NsZWVwRHVyaW5n
VmlkZW9QbGF5YmFjazpmbGFnXTsNCiAjZWxzZQ0KICAgICBVTlVTRURfUEFSQU0oZmxhZyk7DQog
I2VuZGlmDQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMTEyLDEwICsxMTIsOCBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkDQogICAgICAgICBDQUNvbnRleHQg
Km5ld0NvbnRleHQgPSBbbV92aWRlb0xheWVyIGNvbnRleHRdOw0KICAgICAgICAgaWYgKG9sZENv
bnRleHQgJiYgbmV3Q29udGV4dCAmJiBvbGRDb250ZXh0ICE9IG5ld0NvbnRleHQpIHsNCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MA0KLSAgICAgICAgICAgIGlmIChbb2xkQ29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNldENvbW1pdFByaW9yaXR5OildKSB7DQotICAgICAgICAgICAgICAgIFtvbGRDb250ZXh0
IHNldENvbW1pdFByaW9yaXR5OjBdOw0KLSAgICAgICAgICAgICAgICBbbmV3Q29udGV4dCBzZXRD
b21taXRQcmlvcml0eToxXTsNCi0gICAgICAgICAgICB9DQorICAgICAgICAgICAgb2xkQ29udGV4
dC5jb21taXRQcmlvcml0eSA9IDA7DQorICAgICAgICAgICAgbmV3Q29udGV4dC5jb21taXRQcmlv
cml0eSA9IDE7DQogI2VuZGlmDQogICAgICAgICAgICAgbWFjaF9wb3J0X3QgZmVuY2VQb3J0ID0g
W29sZENvbnRleHQgY3JlYXRlRmVuY2VQb3J0XTsNCiAgICAgICAgICAgICBbbmV3Q29udGV4dCBz
ZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCShyZXZpc2lvbiAyMTIyMDIpDQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0JKHdv
cmtpbmcgY29weSkNCkBAIC01Niw4ICs1Niw3IEBAIC0oaWQpaW5pdFdpdGhHcmFwaGljc0NvbnRl
eHQzRDooR3JhcGhpY3MNCiAjaWYgUExBVEZPUk0oTUFDKQ0KICAgICBzZWxmLmNvbnRlbnRzU2Nh
bGUgPSBfZGV2aWNlUGl4ZWxSYXRpbzsNCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDExMDANCi0gICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc2V0Q29sb3JzcGFjZTopXSkNCi0gICAgICAgIFtzZWxmIHNldENvbG9yc3BhY2U6c1JHQkNv
bG9yU3BhY2VSZWYoKV07DQorICAgIHNlbGYuY29sb3JzcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVm
KCk7DQogI2VuZGlmDQogI2VuZGlmDQogICAgIHJldHVybiBzZWxmOw0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTY3MSwxNiArNjcx
LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TQ0KIA0KIHN0YXRp
YyBpbnQgdHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQ0KIHsNCi0gICAgaWYgKFtOU01lbnUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildKQ0KLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50
XSk7DQotDQotICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBSaWdodEJ1dHRv
bikNCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVDb250ZXh0TWVu
dSk7DQotDQotICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBMZWZ0QnV0dG9u
ICYmIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q3RybEtleSkpDQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVU
eXBlQ29udGV4dE1lbnUpOw0KLQ0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVU
eXBlTm9uZSk7DQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFtOU01lbnUgbWVudVR5cGVG
b3JFdmVudDpldmVudF0pOw0KIH0NCiAgICAgDQogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50QnVp
bGRlciA6IHB1YmxpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgew0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTIx
OSwxNiArMjE5LDEzIEBAIC0gKE5TUmVjdCl2aWRlb0VsZW1lbnRSZWN0DQogLSAodm9pZClhcHBs
aWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbg0KIHsg
ICANCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7DQotICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiB0aGUgZnVsbHNjcmVlbldpbmRvdyBpcyBvbiB0aGUgYWN0aXZlIHNwYWNlOyB0aGlzIGZ1
bmN0aW9uIGlzIGF2YWlsYWJsZQ0KLSAgICAvLyBvbiAxMC42IGFuZCBsYXRlciwgc28gZGVmYXVs
dCB0byBZRVMgaWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGU6DQogICAgIE5TV2luZG93
KiBmdWxsc2NyZWVuV2luZG93ID0gW3NlbGYgZnVsbHNjcmVlbldpbmRvd107DQotICAgIEJPT0wg
aXNPbkFjdGl2ZVNwYWNlID0gKFtmdWxsc2NyZWVuV2luZG93IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaXNPbkFjdGl2ZVNwYWNlKV0gPyBbZnVsbHNjcmVlbldpbmRvdyBpc09uQWN0aXZl
U3BhY2VdIDogWUVTKTsNCiANCiAgICAgLy8gUmVwbGljYXRlIHRoZSBRdWlja1RpbWUgUGxheWVy
IChYKSBiZWhhdmlvciB3aGVuIGxvc2luZyBhY3RpdmUgYXBwbGljYXRpb24gc3RhdHVzOg0KICAg
ICAvLyBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhp
cyBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgb25seSBhIA0KICAgICAvLyBzaW5nbGUgc2NyZWVuIGlz
IGF2YWlsYWJsZS4pICBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gb24gdGhlIGN1cnJlbnQgc3Bh
Y2U/IElGRiBzbywgDQogICAgIC8vIHRoZW4gZXhpdCBmdWxsc2NyZWVuIG1vZGUuICAgIA0KLSAg
ICBpZiAoW2Z1bGxzY3JlZW5XaW5kb3cgc2NyZWVuXSA9PSBbW05TU2NyZWVuIHNjcmVlbnNdIG9i
amVjdEF0SW5kZXg6MF0gJiYgaXNPbkFjdGl2ZVNwYWNlKQ0KKyAgICBpZiAoZnVsbHNjcmVlbldp
bmRvdy5zY3JlZW4gPT0gW05TU2NyZWVuIHNjcmVlbnNdWzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cu
b25BY3RpdmVTcGFjZSkNCiAgICAgICAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRo
QW5pbWF0aW9uOk5PXTsNCiB9DQogICAgICAgICAgDQpAQCAtMzUzLDEwICszNTAsNyBAQCAtICh2
b2lkKXVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbg0KICAgICAgICAgICAgIG9wdGlvbnMg
fD0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlRG9jazsNCiAgICAgfQ0KIA0KLSAg
ICBpZiAoW05TQXBwIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UHJlc2VudGF0aW9u
T3B0aW9uczopXSkNCi0gICAgICAgIFtOU0FwcCBzZXRQcmVzZW50YXRpb25PcHRpb25zOm9wdGlv
bnNdOw0KLSAgICBlbHNlDQotICAgICAgICBTZXRTeXN0ZW1VSU1vZGUoX2lzRW5kaW5nRnVsbHNj
cmVlbiA/IGtVSU1vZGVOb3JtYWwgOiBrVUlNb2RlQWxsSGlkZGVuLCAwKTsNCisgICAgTlNBcHAu
cHJlc2VudGF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7DQogfQ0KIA0KIC0gKHZvaWQpdXBkYXRlUG93
ZXJBc3NlcnRpb25zDQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0JKHJldmlzaW9u
IDIxMjIwMikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMTcwLDE2ICsxNzAsMTQgQEAg
LSAodm9pZCl1cGRhdGVJc1BsYXlpbmc6KEJPT0wpaXNQbGF5aW5nIA0KIHsNCiAgICAgX3BsYXlp
bmcgPSBpc1BsYXlpbmcgJiYgcGxheWJhY2tSYXRlOw0KIA0KLSAgICBpZiAoW19waXBWaWV3Q29u
dHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFBsYXlpbmc6KV0pDQotICAg
ICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHNldFBsYXlpbmc6X3BsYXlpbmddOw0KKyAgICBbX3Bp
cFZpZXdDb250cm9sbGVyIHNldFBsYXlpbmc6X3BsYXlpbmddOw0KIH0NCiANCiAtICh2b2lkKXNl
dFZpZGVvRGltZW5zaW9uczooTlNTaXplKXZpZGVvRGltZW5zaW9ucw0KIHsNCiAgICAgX3ZpZGVv
RGltZW5zaW9ucyA9IHZpZGVvRGltZW5zaW9uczsNCiANCi0gICAgaWYgKFtfcGlwVmlld0NvbnRy
b2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRBc3BlY3RSYXRpbzopXSkNCi0g
ICAgICAgIFtfcGlwVmlld0NvbnRyb2xsZXIgc2V0QXNwZWN0UmF0aW86X3ZpZGVvRGltZW5zaW9u
c107DQorICAgIFtfcGlwVmlld0NvbnRyb2xsZXIgc2V0QXNwZWN0UmF0aW86X3ZpZGVvRGltZW5z
aW9uc107DQogfQ0KIA0KIC0gKHZvaWQpc2V0VXBQSVBGb3JWaWRlb1ZpZXc6KE5TVmlldyAqKXZp
ZGVvVmlldyB3aXRoRnJhbWU6KE5TUmVjdClmcmFtZSBpbldpbmRvdzooTlNXaW5kb3cgKil3aW5k
b3cNCkBAIC0xOTAsMTAgKzE4OCw4IEBAIC0gKHZvaWQpc2V0VXBQSVBGb3JWaWRlb1ZpZXc6KE5T
VmlldyAqKXYNCiANCiAgICAgX3BpcFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW2dldFBJUFZp
ZXdDb250cm9sbGVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOw0KICAgICBbX3BpcFZpZXdDb250cm9s
bGVyIHNldERlbGVnYXRlOnNlbGZdOw0KLSAgICBpZiAoW19waXBWaWV3Q29udHJvbGxlciByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVzZXJDYW5SZXNpemU6KV0pDQotICAgICAgICBb
X3BpcFZpZXdDb250cm9sbGVyIHNldFVzZXJDYW5SZXNpemU6WUVTXTsNCi0gICAgaWYgKFtfcGlw
Vmlld0NvbnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQbGF5aW5nOild
KQ0KLSAgICAgICAgW19waXBWaWV3Q29udHJvbGxlciBzZXRQbGF5aW5nOl9wbGF5aW5nXTsNCisg
ICAgW19waXBWaWV3Q29udHJvbGxlciBzZXRVc2VyQ2FuUmVzaXplOllFU107DQorICAgIFtfcGlw
Vmlld0NvbnRyb2xsZXIgc2V0UGxheWluZzpfcGxheWluZ107DQogICAgIFtzZWxmIHNldFZpZGVv
RGltZW5zaW9uczpOU0VxdWFsU2l6ZXMoX3ZpZGVvRGltZW5zaW9ucywgTlNaZXJvU2l6ZSkgPyBm
cmFtZS5zaXplIDogX3ZpZGVvRGltZW5zaW9uc107DQogICAgIGlmIChfd2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjICYmIF93ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPndlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkpDQogICAgICAgICBfd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLT53ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0eShX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCk7DQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5o
CShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NG
TmV0d29ya1NQSS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtODMsNiArODMsMTEgQEAgdHlwZWRlZiB2
b2lkICheQ0ZDYWNoZWRVUkxSZXNwb25zZUNhbGxCYQ0KICNlbmRpZg0KIA0KICNpZiBkZWZpbmVk
KF9fT0JKQ19fKQ0KK0BpbnRlcmZhY2UgTlNVUkxDYWNoZSAoKQ0KKy0oaW5zdGFuY2V0eXBlKV9p
bml0V2l0aE1lbW9yeUNhcGFjaXR5OihOU1VJbnRlZ2VyKW1lbW9yeUNhcGFjaXR5IGRpc2tDYXBh
Y2l0eTooTlNVSW50ZWdlcilkaXNrQ2FwYWNpdHkgcmVsYXRpdmVQYXRoOihOU1N0cmluZyAqKXBh
dGg7DQorLSAoQ0ZVUkxDYWNoZVJlZilfQ0ZVUkxDYWNoZTsNCitAZW5kDQorDQogQGludGVyZmFj
ZSBOU1VSTFJlcXVlc3QgKCkNCiArIChOU0FycmF5ICopYWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdDooTlNTdHJpbmcgKilob3N0Ow0KICsgKHZvaWQpc2V0QWxsb3dzU3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlOihOU0FycmF5ICopYWxsb3cgZm9ySG9zdDooTlNTdHJpbmcgKilo
b3N0Ow0KQEAgLTE5MCwxNSArMTk1LDYgQEAgQ0ZVUkxSZXNwb25zZVJlZiBDRlVSTFJlc3BvbnNl
Q3JlYXRlV2l0aA0KIA0KIFdURl9FWFRFUk5fQ19FTkQNCiANCi0vLyBGSVhNRTogV2Ugc2hvdWxk
IG9ubHkgZm9yd2FyZCBkZWNsYXJlIHRoaXMgU1BJIHdoZW4gYnVpbGRpbmcgZm9yIGlPUyB3aXRo
b3V0IHRoZSBBcHBsZSBJbnRlcm5hbCBTREsuDQotLy8gQXMgYSB3b3JrYXJvdW5kIGZvciA8cmRh
cjovL3Byb2JsZW0vMTkwMjUwMTY+LCB3ZSBtdXN0IGZvcndhcmQgZGVjbGFyZSB0aGlzIFNQSSBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXINCi0vLyB3ZSBhcmUgYnVpbGRpbmcgd2l0aCB0aGUgQXBwbGUg
SW50ZXJuYWwgU0RLLg0KLSNpZiBkZWZpbmVkKF9fT0JKQ19fKSAmJiBQTEFURk9STShJT1MpDQot
QGludGVyZmFjZSBOU1VSTENhY2hlICgpDQotLShpZClfaW5pdFdpdGhNZW1vcnlDYXBhY2l0eToo
TlNVSW50ZWdlciltZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6KE5TVUludGVnZXIpZGlza0Nh
cGFjaXR5IHJlbGF0aXZlUGF0aDooTlNTdHJpbmcgKilwYXRoOw0KLUBlbmQNCi0jZW5kaWYNCi0N
CiAjaWYgZGVmaW5lZChfX09CSkNfXykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspDQogZW51
bSA6IE5TVUludGVnZXIgew0KICAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVs
eUZyb21NYWluRG9jdW1lbnREb21haW4gPSAzLA0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJLmgJKHJldmlzaW9u
IDIxMjIwMikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTkVGaWx0ZXJT
b3VyY2VTUEkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTczLDE1ICs3MywxMSBAQCB0eXBlZGVmIHZv
aWQgKF5ORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuDQogLSAodm9pZClyZWNlaXZlZERhdGE6KE5T
RGF0YSAqKWRhdGEgZGVjaXNpb25IYW5kbGVyOihORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuZGxl
cilkZWNpc2lvbkhhbmRsZXI7DQogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGVjaXNpb25I
YW5kbGVyOihORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXI7DQog
LSAodm9pZClyZW1lZGlhdGVXaXRoRGVjaXNpb25IYW5kbGVyOihORUZpbHRlclNvdXJjZURlY2lz
aW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXI7DQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApDQorQHByb3BlcnR5
IChjb3B5KSBOU1N0cmluZyAqc291cmNlQXBwSWRlbnRpZmllcjsNCisjZW5kaWYNCiBAZW5kDQog
DQogI2VuZGlmDQogDQogI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQ0KLQ0KLSNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKQ0KLS8vIEZJWE1FOiBDb25maW5lIHRoaXMgdG8gdGhlICFVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKSBzZWN0aW9uIG9uY2UgdGhpcyBpcyBkZWZpbmVkIGluIGFuIFNESyAoPHJk
YXI6Ly9wcm9ibGVtLzI5MTQ3MTc0PikuDQotQGludGVyZmFjZSBORUZpbHRlclNvdXJjZSAoV0tT
dGFnaW5nKQ0KLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNvdXJjZUFwcEJ1bmRsZUlEOw0K
LUBlbmQNCi0jZW5kaWYNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2Ev
UXVhcnR6Q29yZVNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0zMyw2ICszMyw3IEBADQogDQogI2lmZGVmIF9fT0JKQ19fDQogDQorI2ltcG9ydCA8UXVh
cnR6Q29yZS9DQUNvbnRleHQuaD4NCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJIb3N0Lmg+
DQogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyUHJpdmF0ZS5oPg0KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4NCkBAIC00MSwxMiArNDIsNiBAQA0KICNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ0FEaXNwbGF5Lmg+DQogI2VuZGlmDQogDQotI2lmIFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDANCi1AaW50ZXJmYWNl
IENBQ29udGV4dCAoKQ0KLS0gKHZvaWQpc2V0Q29tbWl0UHJpb3JpdHk6KHVpbnQzMl90KWNvbW1p
dFByaW9yaXR5Ow0KLUBlbmQNCi0jZW5kaWYNCi0NCiAjZW5kaWYgLy8gX19PQkpDX18NCiANCiAj
ZWxzZQ0KQEAgLTYyLDYgKzU3LDcgQEANCiAtICh1aW50MzJfdCljcmVhdGVJbWFnZVNsb3Q6KENH
U2l6ZSlzaXplIGhhc0FscGhhOihCT09MKWZsYWc7DQogLSAodm9pZClkZWxldGVTbG90Oih1aW50
MzJfdCluYW1lOw0KIC0gKHZvaWQpaW52YWxpZGF0ZTsNCistICh2b2lkKWludmFsaWRhdGVGZW5j
ZXM7DQogLSAobWFjaF9wb3J0X3QpY3JlYXRlRmVuY2VQb3J0Ow0KIC0gKHZvaWQpc2V0RmVuY2VQ
b3J0OihtYWNoX3BvcnRfdClwb3J0Ow0KIC0gKHZvaWQpc2V0RmVuY2VQb3J0OihtYWNoX3BvcnRf
dClwb3J0IGNvbW1pdEhhbmRsZXI6KHZvaWQoXikodm9pZCkpYmxvY2s7DQpAQCAtMTk4LDEzICsx
OTQsNiBAQCBDRlR5cGVJRCBDQU1hY2hQb3J0R2V0VHlwZUlEKHZvaWQpOw0KIA0KIFdURl9FWFRF
Uk5fQ19FTkQNCiANCi0vLyBGSVhNRTogTW92ZSB0aGlzIGludG8gdGhlIEFQUExFX0lOVEVSTkFM
X1NESyBibG9jayBvbmNlIGl0J3MgaW4gYW4gU0RLLg0KLUBpbnRlcmZhY2UgQ0FDb250ZXh0IChB
ZGRpdGlvbmFsRGV0YWlscykNCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkNCi0tICh2b2lkKWlu
dmFsaWRhdGVGZW5jZXM7DQotI2VuZGlmDQotQGVuZA0KLQ0KIGV4dGVybiBOU1N0cmluZyAqIGNv
bnN0IGtDQVRpbGVkTGF5ZXJSZW1vdmVJbW1lZGlhdGVseTsNCiANCiBleHRlcm4gTlNTdHJpbmcg
KiBjb25zdCBrQ0FGaWx0ZXJDb2xvckludmVydDsNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAkocmV2aXNpb24g
MjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVjdG9y
c1VJU1BJLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNSw2ICszNSw4IEBADQogDQogI2Vsc2UNCiAN
CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+DQorDQogQGludGVyZmFj
ZSBEREFjdGlvbiA6IE5TT2JqZWN0DQogQGVuZA0KIA0KQEAgLTU0LDE1ICs1NiwxMiBAQA0KICsg
KERERGV0ZWN0aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXI7DQogKyAoTlNBcnJheSAq
KXRhcEFuZEhvbGRTY2hlbWVzOw0KIC0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERBY3Rpb24gKilh
Y3Rpb24gZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilhbGVydENvbnRy
b2xsZXIgaW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJvbGxlckludGVy
YWN0aW9uRGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7DQorLSAoTlNBcnJheSAqKWFjdGlv
bnNGb3JVUkw6KE5TVVJMICopdXJsIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBz
ZWxlY3RlZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0IHJlc3VsdHM6KE5TQXJyYXkgKily
ZXN1bHRzIGNvbnRleHQ6KE5TRGljdGlvbmFyeSAqKWNvbnRleHQ7DQorLSAoRERSZXN1bHRSZWYp
cmVzdWx0Rm9yVVJMOihOU1VSTCAqKXVybCBpZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZp
ZXIgc2VsZWN0ZWRUZXh0OihOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCByZXN1bHRzOihOU0FycmF5
ICopcmVzdWx0cyBjb250ZXh0OihOU0RpY3Rpb25hcnkgKiljb250ZXh0IGV4dGVuZGVkQ29udGV4
dDooTlNEaWN0aW9uYXJ5ICoqKWV4dGVuZGVkQ29udGV4dDsNCiBAZW5kDQogDQogI2VuZGlmDQog
DQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkN
Ci0vLyBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQgYXMgc29vbiBhcyA8cmRhcjovL3Byb2Js
ZW0vMTYzNDY5MTM+IGlzIGZpeGVkLg0KLS0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihp
ZClhbmNob3IgdXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7DQotQGVu
ZA0KLQ0KIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpDQogU09G
VF9MSU5LX0NMQVNTKERhdGFEZXRlY3RvcnNVSSwgREREZXRlY3Rpb25Db250cm9sbGVyKQ0KIFNP
RlRfTElOS19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzTGVhZGluZ1Rl
eHQsIGNvbnN0IE5TU3RyaW5nICopDQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L21hYy9Mb29rdXBTUEkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9tYWMvTG9va3VwU1BJLmgJKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvbWFjL0xvb2t1cFNQSS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNDIsMjQg
KzQyLDEzIEBAIEBpbnRlcmZhY2UgTFVMb29rdXBEZWZpbml0aW9uTW9kdWxlIDogTlMNCiANCiAr
IChOU1JhbmdlKXRva2VuUmFuZ2VGb3JTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJhbmdlOihO
U1JhbmdlKXJhbmdlIG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKilvcHRpb25zOw0KICsgKHZvaWQp
c2hvd0RlZmluaXRpb25Gb3JUZXJtOihOU0F0dHJpYnV0ZWRTdHJpbmcgKil0ZXJtIGF0TG9jYXRp
b246KE5TUG9pbnQpc2NyZWVuUG9pbnQgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsN
CisrICh2b2lkKXNob3dEZWZpbml0aW9uRm9yVGVybTooTlNBdHRyaWJ1dGVkU3RyaW5nICopdGVy
bSByZWxhdGl2ZVRvUmVjdDooTlNSZWN0KXBvc2l0aW9uaW5nUmVjdCBvZlZpZXc6KE5TVmlldyAq
KXBvc2l0aW9uaW5nVmlldyBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zOw0KICsgKHZv
aWQpaGlkZURlZmluaXRpb247DQotDQotQGVuZA0KLQ0KLSNlbmRpZiAvLyAhVVNFKEFQUExFX0lO
VEVSTkFMX1NESykNCi0NCi1AaW50ZXJmYWNlIExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZSAoKQ0K
LQ0KICsgKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pbG9va3VwQW5p
bWF0aW9uQ29udHJvbGxlckZvclRlcm06KE5TQXR0cmlidXRlZFN0cmluZyAqKXRlcm0gYXRMb2Nh
dGlvbjooTlNQb2ludClzY3JlZW5Qb2ludCBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25z
Ow0KLQ0KICsgKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pbG9va3Vw
QW5pbWF0aW9uQ29udHJvbGxlckZvclRlcm06KE5TQXR0cmlidXRlZFN0cmluZyAqKXRlcm0gcmVs
YXRpdmVUb1JlY3Q6KE5TUmVjdClwb3NpdGlvbmluZ1JlY3Qgb2ZWaWV3OihOU1ZpZXcgKilwb3Np
dGlvbmluZ1ZpZXcgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsNCiANCiBAZW5kDQog
DQotQGludGVyZmFjZSBMVUxvb2t1cERlZmluaXRpb25Nb2R1bGUgKCkNCi0NCi0rICh2b2lkKXNo
b3dEZWZpbml0aW9uRm9yVGVybTooTlNBdHRyaWJ1dGVkU3RyaW5nICopdGVybSByZWxhdGl2ZVRv
UmVjdDooTlNSZWN0KXBvc2l0aW9uaW5nUmVjdCBvZlZpZXc6KE5TVmlldyAqKXBvc2l0aW9uaW5n
VmlldyBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zOw0KLQ0KLUBlbmQNCisjZW5kaWYg
Ly8gIVVTRShBUFBMRV9JTlRFUk5BTF9TREspDQogDQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykN
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL05TTWVudVNQSS5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU01lbnVTUEkuaAko
cmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvTlNN
ZW51U1BJLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywyNSArMjcsMjggQEANCiANCiAjaWYgUExB
VEZPUk0oTUFDKQ0KIA0KLS8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBpbmNsdWRlIHRoZSBhcHBy
b3ByaWF0ZSBpbnRlcm5hbCBoZWFkZXJzLg0KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQ0K
Kw0KKyNpbXBvcnQgPEFwcEtpdC9OU01lbnVfUHJpdmF0ZS5oPg0KKw0KKyNlbHNlDQogDQogdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNNZW51VHlwZSkgew0KICAgICBOU01lbnVUeXBlTm9u
ZSA9IDAsDQogICAgIE5TTWVudVR5cGVDb250ZXh0TWVudSwNCiB9Ow0KIA0KLUBpbnRlcmZhY2Ug
TlNNZW51IChQcml2YXRlKQ0KK0BpbnRlcmZhY2UgTlNNZW51ICgpDQogKyAoTlNNZW51VHlwZSlt
ZW51VHlwZUZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQ7DQogQGVuZA0KIA0KIEBjbGFzcyBRTFBy
ZXZpZXdNZW51SXRlbTsNCiANCi1AaW50ZXJmYWNlIE5TTWVudUl0ZW0gKFByaXZhdGUpDQorQGlu
dGVyZmFjZSBOU01lbnVJdGVtICgpIDxOU1VzZXJJbnRlcmZhY2VJdGVtSWRlbnRpZmljYXRpb24+
DQogKyAoUUxQcmV2aWV3TWVudUl0ZW0gKilzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtOw0KICsg
KE5TTWVudUl0ZW0gKilzdGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KE5TQXJyYXkgKilp
dGVtczsNCiBAZW5kDQogDQotQGludGVyZmFjZSBOU01lbnVJdGVtICgpIDxOU1VzZXJJbnRlcmZh
Y2VJdGVtSWRlbnRpZmljYXRpb24+DQotQGVuZA0KKyNlbmRpZg0KIA0KICNlbmRpZg0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvVFVDYWxsU1BJLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL1RVQ2FsbFNQSS5oCShyZXZpc2lv
biAyMTIyMDIpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9UVUNhbGxTUEku
aAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDEyIEBADQogI2ltcG9ydCAiU29mdExpbmtp
bmcuaCINCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4NCiANCisjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykNCisNCisjaW1wb3J0IDxUZWxlcGhvbnlVdGlsaXRpZXMvVFVDYWxsX1N0cmluZ3Mu
aD4NCisNCisjZWxzZQ0KKw0KIEBpbnRlcmZhY2UgVFVDYWxsIDogTlNPYmplY3QNCiBAZW5kDQog
DQpAQCAtMzMsNSArMzksNyBAQCBAaW50ZXJmYWNlIFRVQ2FsbCAoU3RyaW5ncykNCiArIChOU1N0
cmluZyAqKXN1cHBsZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxsU3RyaW5nOw0KIEBlbmQNCiANCisj
ZW5kaWYNCisNCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoVGVsZXBob255
VXRpbGl0aWVzKQ0KIFNPRlRfTElOS19DTEFTUyhUZWxlcGhvbnlVdGlsaXRpZXMsIFRVQ2FsbCkN
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5t
bQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkNCkBAIC0xMDUsMTUg
KzEwNSwxMiBAQCBDR0NvbG9yU3BhY2VSZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sDQogI2lm
IFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEx
MDANCiB2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnQoYm9vbCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KQ0KIHsNCi0gICAgaWYgKFttX2NvbnRl
eHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRDb2xvck1hdGNoVW50YWdnZWRDb250
ZW50OildKQ0KLSAgICAgICAgW21fY29udGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50
OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOw0KKyAgICBbbV9jb250ZXh0IHNldENvbG9yTWF0
Y2hVbnRhZ2dlZENvbnRlbnQ6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07DQogfQ0KIA0KIGJv
b2wgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCgpIGNvbnN0
DQogew0KLSAgICBpZiAoW21fY29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNv
bG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpXSkNCi0gICAgICAgIHJldHVybiBbbV9jb250ZXh0IGNv
bG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOw0KLSAgICByZXR1cm4gZmFsc2U7DQorICAgIHJldHVy
biBbbV9jb250ZXh0IGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOw0KIH0NCiAjZW5kaWYNCiAN
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5tbQ0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1t
CShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVV
dGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkNCkBAIC00Myw5ICs0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgew0KIA0KIE5TU3RyaW5nICptZW51SXRlbVRpdGxlRm9yVGVsZXBob25lTnVtYmVyR3Jv
dXAoKQ0KIHsNCi0gICAgaWYgKFtnZXRUVUNhbGxDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc3VwcGxlbWVudGFsRGlhbFRlbGVwaG9ueUNhbGxTdHJpbmcpXSkNCi0gICAgICAg
IHJldHVybiBbZ2V0VFVDYWxsQ2xhc3MoKSBzdXBwbGVtZW50YWxEaWFsVGVsZXBob255Q2FsbFN0
cmluZ107DQotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDYWxsIFVzaW5nIGlQaG9uZToiLCAi
bWVudSBpdGVtIHRpdGxlIGZvciBwaG9uZSBudW1iZXIiKTsNCisgICAgcmV0dXJuIFtnZXRUVUNh
bGxDbGFzcygpIHN1cHBsZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxsU3RyaW5nXTsNCiB9DQogDQog
TlNNZW51SXRlbSAqbWVudUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxl
cGhvbmVOdW1iZXIpDQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtp
dFNQSS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
c3BpL2lvcy9VSUtpdFNQSS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzA4LDYgKzMwOCw3IEBAIHR5
cGVkZWYgZW51bSB7DQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lz
QW5pbWF0aW5nU2Nyb2xsKSBCT09MIGlzQW5pbWF0aW5nU2Nyb2xsOw0KIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBDR0Zsb2F0IGhvcml6b250YWxTY3JvbGxEZWNlbGVyYXRpb25GYWN0b3I7DQogQHBy
b3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgdmVydGljYWxTY3JvbGxEZWNlbGVyYXRpb25GYWN0
b3I7DQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9pc0ludGVycnVwdGlu
Z0RlY2VsZXJhdGlvbjsNCiBAZW5kDQogDQogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRh
aWxzKQ0KQEAgLTUyMSw2ICs1MjIsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdL
R2VzdHVyZVR5DQogLSAodm9pZClzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQp
cG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2g7DQogLSAo
dm9pZClzaG93RGljdGlvbmFyeUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6
KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KIC0gKHZvaWQpc2hvd1NoYXJlU2hlZXRGb3I6KE5T
U3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsN
CistICh2b2lkKXNob3dUZXh0U2VydmljZUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJv
bVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KKy0gKHZvaWQpbG9va3VwOihOU1N0cmlu
ZyAqKXRleHRXaXRoQ29udGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZnJvbVJlY3Q6KENH
UmVjdClwcmVzZW50YXRpb25SZWN0Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
VUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqc2VsZWN0aW9uTG9uZ1ByZXNzUmVjb2duaXpl
cjsNCiBAZW5kDQogDQpAQCAtNTU4LDEyICs1NjEsMTcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgVUlXS0hhbmRsZVBvcw0KIEBpbnRlcmZhY2UgVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lz
dGFudCA6IFVJVGV4dEludGVyYWN0aW9uQXNzaXN0YW50IDxVSVJlc3BvbmRlclN0YW5kYXJkRWRp
dEFjdGlvbnM+DQogQGVuZA0KIA0KLUBpbnRlcmZhY2UgVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lz
dGFudCAoVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudERldGFpbHMpDQorQGludGVyZmFjZSBV
SVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50ICgpDQogLSAodm9pZClzZWxlY3Rpb25DaGFuZ2Vk
V2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBl
KWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVT
dGF0ZSB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylmbGFnczsNCiAtICh2b2lkKXNob3dE
aWN0aW9uYXJ5Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXBy
ZXNlbnRhdGlvblJlY3Q7DQogLSAodm9pZClzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENH
UG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2g7
DQogLSAodm9pZClzaG93VGV4dFN0eWxlT3B0aW9uczsNCiAtICh2b2lkKWhpZGVUZXh0U3R5bGVP
cHRpb25zOw0KKy0gKHZvaWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCB3aXRo
UmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0K
Ky0gKHZvaWQpc2hvd1NoYXJlU2hlZXRGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21S
ZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsNCistICh2b2lkKXNob3dUZXh0U2VydmljZUZv
cjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25S
ZWN0Ow0KKy0gKHZvaWQpc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OihOU1N0cmluZyAqKXRl
eHQ7DQorLSAodm9pZClzY2hlZHVsZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0OihOU1N0
cmluZyAqKXRleHQ7DQogDQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24p
IFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKmxvdXBlR2VzdHVyZTsNCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGFzc2lnbikgVUlUYXBHZXN0dXJlUmVjb2duaXplciAqc2lu
Z2xlVGFwR2VzdHVyZTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJv
Y2Vzc01hYy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hp
bGRQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkNCkBAIC0xODAsMTAgKzE4
MCw2IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb24NCiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDANCiB2b2lkIENoaWxkUHJvY2Vz
czo6c2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVu
dGlmaWVyKQ0KIHsNCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgcnVudGltZSBjaGVjayB3aGVu
IGl0J3Mgbm90IG5lZWRlZCAoc29vbikuDQotICAgIGlmICghW05TSFRUUENvb2tpZVN0b3JhZ2Ug
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6
KV0pDQotICAgICAgICByZXR1cm47DQotDQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNvb2tp
ZVN0b3JhZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
aWRlbnRpZmllci5kYXRhKCksIGlkZW50aWZpZXIuc2l6ZSgpKSk7DQogICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlID0gYWRvcHRDRihD
RkhUVFBDb29raWVTdG9yYWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0YShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOw0KICAgICBbTlNIVFRQQ29va2llU3Rv
cmFnZSBfc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6YWRvcHROUyhbW05TSFRUUENvb2tpZVN0
b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6dWlQcm9jZXNzQ29va2ll
U3RvcmFnZS5nZXQoKV0pLmdldCgpXTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1dlYkV2ZW50RmFjdG9yeS5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkNCkBAIC0z
MjgsMTYgKzMyOCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmkN
CiANCiBzdGF0aWMgaW50IHR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkNCiB7DQotICAgIGlm
IChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDop
XSkNCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFtOU01lbnUgbWVudVR5cGVGb3JF
dmVudDpldmVudF0pOw0KLSAgICANCi0gICAgaWYgKG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQp
ID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQ0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51KTsNCi0gICAgDQotICAgIGlmIChtb3VzZUJ1
dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uICYmIChtb2Rp
ZmllcnNGb3JFdmVudChldmVudCkgJiBXZWJFdmVudDo6Q29udHJvbEtleSkpDQotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlQ29udGV4dE1lbnUpOw0KLSAgICANCi0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZU5vbmUpOw0KKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsNCiB9DQog
DQogYm9vbCBXZWJFdmVudEZhY3Rvcnk6OnNob3VsZEJlSGFuZGxlZEFzQ29udGV4dENsaWNrKGNv
bnN0IFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpDQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0NCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdWaWV3Q29udHJv
bGxlci5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
S0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtOTcsOCAr
OTcsNyBAQCAtIChOU0FycmF5IDxVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlvDQogICAgIE5T
TXV0YWJsZUFycmF5PFVJVmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW9uICo+ICpwcmV2aWV3QWN0
aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJheV07DQogICAgIGZvciAoX1dLRWxlbWVudEFjdGlv
biAqaW1hZ2VBY3Rpb24gaW4gX2ltYWdlQWN0aW9ucy5nZXQoKSkgew0KICAgICAgICAgVUlWaWV3
Q29udHJvbGxlclByZXZpZXdBY3Rpb24gKnByZXZpZXdBY3Rpb24gPSBbVUlWaWV3Q29udHJvbGxl
clByZXZpZXdBY3Rpb24gYWN0aW9uV2l0aFRpdGxlOmltYWdlQWN0aW9uLnRpdGxlIGhhbmRsZXI6
XihVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlvbiAqYWN0aW9uLCBVSVZpZXdDb250cm9sbGVy
ICpwcmV2aWV3Vmlld0NvbnRyb2xsZXIpIHsNCi0gICAgICAgICAgICBpZiAoW2ltYWdlQWN0aW9u
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOild
KQ0KLSAgICAgICAgICAgICAgICBbaW1hZ2VBY3Rpb24gcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZv
Ol9hY3RpdmF0ZWRFbGVtZW50SW5mby5nZXQoKV07DQorICAgICAgICAgICAgW2ltYWdlQWN0aW9u
IHJ1bkFjdGlvbldpdGhFbGVtZW50SW5mbzpfYWN0aXZhdGVkRWxlbWVudEluZm8uZ2V0KCldOw0K
ICAgICAgICAgfV07DQogDQogICAgICAgICBbcHJldmlld0FjdGlvbnMgYWRkT2JqZWN0OnByZXZp
ZXdBY3Rpb25dOw0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTE0Miw3
ICsxNDIsNiBAQCBDRlN0cmluZ1JlZiBrQVhTQWxsb3dGb3JjZVdlYlNjYWxpbmdFbmFiDQogQGlu
dGVyZmFjZSBVSVNjcm9sbFZpZXcgKFVJU2Nyb2xsVmlld0ludGVybmFsKQ0KIC0gKHZvaWQpX2Fk
anVzdEZvckF1dG9tYXRpY0tleWJvYXJkSW5mbzooTlNEaWN0aW9uYXJ5KilpbmZvIGFuaW1hdGVk
OihCT09MKWFuaW1hdGVkIGxhc3RBZGp1c3RtZW50OihDR0Zsb2F0KilsYXN0QWRqdXN0bWVudDsN
CiAtIChCT09MKV9pc1Njcm9sbGluZ1RvVG9wOw0KLS0gKEJPT0wpX2lzSW50ZXJydXB0aW5nRGVj
ZWxlcmF0aW9uOw0KIC0gKENHUG9pbnQpX2FuaW1hdGVkVGFyZ2V0T2Zmc2V0Ow0KIEBlbmQNCiAN
CkBAIC0yMTgxLDggKzIxODAsOCBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RB
ZnRlclNjDQogICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtzZWxmIF9zY3JvbGxWaWV3SXNSdWJi
ZXJCYW5kaW5nXTsNCiANCiAgICAgLy8gRklYTUU6IHRoaXMgY2FuIGJlIG1hZGUgc3RhdGljIGFm
dGVyIHdlIHN0b3Agc3VwcG9ydGluZyBpT1MgOC54Lg0KLSAgICBpZiAoaXNTdGFibGVTdGF0ZSAm
JiBbc2Nyb2xsVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9pc0ludGVycnVwdGlu
Z0RlY2VsZXJhdGlvbildKQ0KLSAgICAgICAgaXNTdGFibGVTdGF0ZSA9ICFbc2Nyb2xsVmlldyBw
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbildOw0K
KyAgICBpZiAoaXNTdGFibGVTdGF0ZSkNCisgICAgICAgIGlzU3RhYmxlU3RhdGUgPSAhc2Nyb2xs
Vmlldy5faXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb247DQogDQogICAgIGlmIChOU051bWJlciAq
c3RhYmxlT3ZlcnJpZGUgPSBzZWxmLl9zdGFibGVTdGF0ZU92ZXJyaWRlKQ0KICAgICAgICAgaXNT
dGFibGVTdGF0ZSA9IHN0YWJsZU92ZXJyaWRlLmJvb2xWYWx1ZTsNCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyMTIy
MDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkNCkBAIC0yMjcsMTMgKzIy
Nyw2IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3INCiB2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpDQogew0KICAgICBhdXRv
IHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0
XSk7DQotICAgIGlmICghW3Bhc3NMaWJyYXJ5IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
b3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjpkb21haW46Y29tcGxldGlvbjop
XSkgew0KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
cl0gew0KLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsNCi0gICAgICAgIH0p
Ow0KLSAgICAgICAgcmV0dXJuOw0KLSAgICB9DQotDQogICAgIFtwYXNzTGlicmFyeSBvcGVuUGF5
bWVudFNldHVwRm9yTWVyY2hhbnRJZGVudGlmaWVyOm1lcmNoYW50SWRlbnRpZmllciBkb21haW46
ZG9tYWluTmFtZSBjb21wbGV0aW9uOltjb21wbGV0aW9uSGFuZGxlcl0oQk9PTCByZXN1bHQpIHsN
CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIsIHJl
c3VsdF0gew0KICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7DQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZp
c2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMzExMiwxMSArMzExMiw4IEBAIHZvaWQgV2ViVmll
d0ltcGw6OmRpc21pc3NDb250ZW50UmVsYXRpdmUNCiAgICAgaWYgKG1fdmlldy53aW5kb3cuaXNL
ZXlXaW5kb3cgfHwgaGFzQWN0aXZlSW1tZWRpYXRlQWN0aW9uKSB7DQogICAgICAgICBXZWJDb3Jl
OjpEaWN0aW9uYXJ5TG9va3VwOjpoaWRlUG9wdXAoKTsNCiANCi0gICAgICAgIGlmIChEYXRhRGV0
ZWN0b3JzTGlicmFyeSgpKSB7DQotICAgICAgICAgICAgRERBY3Rpb25zTWFuYWdlciAqYWN0aW9u
c01hbmFnZXIgPSBbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl07DQot
ICAgICAgICAgICAgaWYgKFthY3Rpb25zTWFuYWdlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6KV0pDQotICAgICAgICAg
ICAgICAgIFthY3Rpb25zTWFuYWdlciByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWls
dXJlOllFU107DQotICAgICAgICB9DQorICAgICAgICBpZiAoRGF0YURldGVjdG9yc0xpYnJhcnko
KSkNCisgICAgICAgICAgICBbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFn
ZXJdIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6WUVTXTsNCiAgICAgfQ0K
IA0KICAgICBjbGVhclRleHRJbmRpY2F0b3JXaXRoQW5pbWF0aW9uKFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpOw0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFu
dC5tbQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTU5LDEwICs1OSw2
IEBAIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhUQ0MpDQogU09GVF9MSU5LKFRDQywgVEND
QWNjZXNzUHJlZmxpZ2h0LCBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBz
ZXJ2aWNlLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyksIChzZXJ2aWNlLCBvcHRpb25zKSkNCiBT
T0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZVBob3RvcywgQ0ZTdHJpbmdSZWYpDQog
DQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKFN0YWdpbmdUb1JlbW92ZSkNCi0t
IChOU0FycmF5ICopYWN0aW9uc0ZvclVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIHNlbGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQgcmVz
dWx0czooTlNBcnJheSAqKXJlc3VsdHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4dDsN
Ci1AZW5kDQotDQogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsNCiANCiAjaWYgSEFWRShBUFBfTElO
S1MpDQpAQCAtNDgwLDI5ICs0NzYsMjUgQEAgLSAodm9pZClzaG93RGF0YURldGVjdG9yc1NoZWV0
DQogICAgICAgICByZXR1cm47DQogDQogICAgIERERGV0ZWN0aW9uQ29udHJvbGxlciAqY29udHJv
bGxlciA9IFtnZXRERERldGVjdGlvbkNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZENvbnRyb2xsZXJd
Ow0KLSAgICBOU0FycmF5ICpkYXRhRGV0ZWN0b3JzQWN0aW9ucyA9IG5pbDsNCi0gICAgaWYgKFtj
b250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWN0aW9uc0ZvclVSTDppZGVu
dGlmaWVyOnNlbGVjdGVkVGV4dDpyZXN1bHRzOmNvbnRleHQ6KV0pIHsNCi0gICAgICAgIE5TRGlj
dGlvbmFyeSAqY29udGV4dCA9IG5pbDsNCi0gICAgICAgIE5TU3RyaW5nICp0ZXh0QXRTZWxlY3Rp
b24gPSBuaWw7DQotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5k
ZWRDb250ZXh0Ow0KLQ0KLSAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KV0p
DQotICAgICAgICAgICAgY29udGV4dCA9IFtkZWxlZ2F0ZSBkYXRhRGV0ZWN0aW9uQ29udGV4dEZv
ckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOw0KLSAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNlbGVjdGVkVGV4dEZvckFjdGlvblNoZWV0QXNzaXN0
YW50OildKQ0KLSAgICAgICAgICAgIHRleHRBdFNlbGVjdGlvbiA9IFtkZWxlZ2F0ZSBzZWxlY3Rl
ZFRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsNCi0gICAgICAgIGlmICghcG9zaXRp
b25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLmlzRW1wdHkoKSB8fCAhcG9zaXRpb25JbmZvcm1hdGlv
bi50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7DQotICAgICAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0g
YWRvcHROUyhbQHsNCi0gICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4
dCgpIDogcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLA0KLSAgICAgICAgICAgICAgICBn
ZXRrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4dCgpIDogcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0
QWZ0ZXIsDQotICAgICAgICAgICAgfSBtdXRhYmxlQ29weV0pOw0KLSAgICAgICAgICAgIA0KLSAg
ICAgICAgICAgIGlmIChjb250ZXh0KQ0KLSAgICAgICAgICAgICAgICBbZXh0ZW5kZWRDb250ZXh0
IGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpjb250ZXh0XTsNCi0gICAgICAgICAgICBjb250ZXh0
ID0gZXh0ZW5kZWRDb250ZXh0LmdldCgpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZGF0YURldGVj
dG9yc0FjdGlvbnMgPSBbY29udHJvbGxlciBhY3Rpb25zRm9yVVJMOnRhcmdldFVSTCBpZGVudGlm
aWVyOnBvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9ySWRlbnRpZmllciBzZWxlY3RlZFRl
eHQ6dGV4dEF0U2VsZWN0aW9uIHJlc3VsdHM6cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0
b3JSZXN1bHRzLmdldCgpIGNvbnRleHQ6Y29udGV4dF07DQotICAgIH0gZWxzZQ0KLSAgICAgICAg
ZGF0YURldGVjdG9yc0FjdGlvbnMgPSBbY29udHJvbGxlciBhY3Rpb25zRm9yQW5jaG9yOm5pbCB1
cmw6dGFyZ2V0VVJMIGZvckZyYW1lOm5pbF07DQorICAgIE5TRGljdGlvbmFyeSAqY29udGV4dCA9
IG5pbDsNCisgICAgTlNTdHJpbmcgKnRleHRBdFNlbGVjdGlvbiA9IG5pbDsNCisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGV4dGVuZGVkQ29udGV4dDsNCisNCisgICAgaWYgKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRhdGFEZXRlY3Rpb25Db250ZXh0
Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KV0pDQorICAgICAgICBjb250ZXh0ID0gW2RlbGVnYXRl
IGRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07DQorICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZWxlY3RlZFRleHRG
b3JBY3Rpb25TaGVldEFzc2lzdGFudDopXSkNCisgICAgICAgIHRleHRBdFNlbGVjdGlvbiA9IFtk
ZWxlZ2F0ZSBzZWxlY3RlZFRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsNCisgICAg
aWYgKCFwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFwb3NpdGlv
bkluZm9ybWF0aW9uLnRleHRBZnRlci5pc0VtcHR5KCkpIHsNCisgICAgICAgIGV4dGVuZGVkQ29u
dGV4dCA9IGFkb3B0TlMoW0B7DQorICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNMZWFkaW5n
VGV4dCgpIDogcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLA0KKyAgICAgICAgICAgIGdl
dGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0KCkgOiBwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRB
ZnRlciwNCisgICAgICAgIH0gbXV0YWJsZUNvcHldKTsNCisgICAgICAgIA0KKyAgICAgICAgaWYg
KGNvbnRleHQpDQorICAgICAgICAgICAgW2V4dGVuZGVkQ29udGV4dCBhZGRFbnRyaWVzRnJvbURp
Y3Rpb25hcnk6Y29udGV4dF07DQorICAgICAgICBjb250ZXh0ID0gZXh0ZW5kZWRDb250ZXh0Lmdl
dCgpOw0KKyAgICB9DQorICAgIE5TQXJyYXkgKmRhdGFEZXRlY3RvcnNBY3Rpb25zID0gW2NvbnRy
b2xsZXIgYWN0aW9uc0ZvclVSTDp0YXJnZXRVUkwgaWRlbnRpZmllcjpwb3NpdGlvbkluZm9ybWF0
aW9uLmRhdGFEZXRlY3RvcklkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OnRleHRBdFNlbGVjdGlvbiBy
ZXN1bHRzOnBvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250
ZXh0OmNvbnRleHRdOw0KICAgICBpZiAoW2RhdGFEZXRlY3RvcnNBY3Rpb25zIGNvdW50XSA9PSAw
KQ0KICAgICAgICAgcmV0dXJuOw0KIA0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9u
IDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTIzOSwyOCArMjM5LDYgQEAgLSAodm9p
ZClzZWxlY3RXb3JkOw0KIC0gKHZvaWQpc2NoZWR1bGVSZWFuYWx5c2lzOw0KIEBlbmQNCiANCi1A
aW50ZXJmYWNlIFVJVGV4dEludGVyYWN0aW9uQXNzaXN0YW50IChTdGFnaW5nVG9SZW1vdmUpDQot
LSAodm9pZClzY2hlZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6KE5TU3RyaW5nICopdGV4dDsNCi0t
ICh2b2lkKXNob3dUZXh0U2VydmljZUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJl
Y3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLS0gKHZvaWQpc2NoZWR1bGVDaGluZXNlVHJh
bnNsaXRlcmF0aW9uRm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0Ow0KLS0gKHZvaWQpc2hvd1NoYXJl
U2hlZXRGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2Vu
dGF0aW9uUmVjdDsNCi0tICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQg
ZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLS0gKHZvaWQpbG9va3VwOihOU1N0
cmluZyAqKXRleHRXaXRoQ29udGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZnJvbVJlY3Q6
KENHUmVjdClwcmVzZW50YXRpb25SZWN0Ow0KLUBlbmQNCi0NCi1AaW50ZXJmYWNlIFVJV0tTZWxl
Y3Rpb25Bc3Npc3RhbnQgKFN0YWdpbmdUb1JlbW92ZSkNCi0tICh2b2lkKXNob3dUZXh0U2Vydmlj
ZUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRp
b25SZWN0Ow0KLS0gKHZvaWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCBmcm9t
UmVjdDooQ0dSZWN0KXByZXNlbnRhdGlvblJlY3Q7DQotLSAodm9pZClsb29rdXA6KE5TU3RyaW5n
ICopdGV4dFdpdGhDb250ZXh0IHdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBmcm9tUmVjdDooQ0dS
ZWN0KXByZXNlbnRhdGlvblJlY3Q7DQotQGVuZA0KLQ0KLUBpbnRlcmZhY2UgVUlLZXlib2FyZElt
cGwgKFN0YWdpbmdUb1JlbW92ZSkNCi0tICh2b2lkKWRpZEhhbmRsZVdlYktleUV2ZW50Ow0KLS0g
KHZvaWQpZGlkSGFuZGxlV2ViS2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQ7DQotLSAodm9p
ZClkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3M6KE5TVUludGVnZXIpZmxhZ3M7DQotLSAodm9pZClh
ZGRJbnB1dFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZsYWdzOihOU1VJbnRlZ2VyKWZs
YWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50OihOU1N0cmluZyAqKWhpbnQ7DQotQGVuZA0KLQ0KIEBp
bnRlcmZhY2UgVUlWaWV3IChVSVZpZXdJbnRlcm5hbEhhY2spDQogKyAoQk9PTClfYWRkQ29tcGxl
dGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uOw0KIEBlbmQNCkBAIC0yNzIsMTAgKzI1MCw2
IEBAIEBpbnRlcmZhY2UgVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKFN0YWcNCiBAZW5kDQogI2Vu
ZGlmDQogDQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKFN0YWdpbmdUb1JlbW92
ZSkNCi0tIChERFJlc3VsdFJlZilyZXN1bHRGb3JVUkw6KE5TVVJMICopdXJsIGlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRU
ZXh0IHJlc3VsdHM6KE5TQXJyYXkgKilyZXN1bHRzIGNvbnRleHQ6KE5TRGljdGlvbmFyeSAqKWNv
bnRleHQgZXh0ZW5kZWRDb250ZXh0OihOU0RpY3Rpb25hcnkgKiopZXh0ZW5kZWRDb250ZXh0Ow0K
LUBlbmQNCi0NCiBAaW50ZXJmYWNlIFdLRm9jdXNlZEVsZW1lbnRJbmZvIDogTlNPYmplY3QgPF9X
S0ZvY3VzZWRFbGVtZW50SW5mbz4NCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbjooY29uc3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9u
IGlzVXNlckluaXRpYXRlZDooQk9PTClpc1VzZXJJbml0aWF0ZWQ7DQogQGVuZA0KQEAgLTE4Nzks
MTUgKzE4NTMsOSBAQCAtICh2b2lkKV9sb29rdXA6KGlkKXNlbmRlcg0KICAgICAgICAgDQogICAg
ICAgICBTdHJpbmcgc2VsZWN0aW9uQ29udGV4dCA9IHRleHRCZWZvcmUgKyBzZWxlY3RlZFRleHQg
KyB0ZXh0QWZ0ZXI7DQogICAgICAgICBpZiAodmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQp
IHsNCi0gICAgICAgICAgICBpZiAoW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobG9va3VwOndpdGhSYW5nZTpmcm9tUmVjdDopXSkNCi0g
ICAgICAgICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGxvb2t1cDpzZWxl
Y3Rpb25Db250ZXh0IHdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxlbmd0aCgpLCBz
ZWxlY3RlZFRleHQubGVuZ3RoKCkpIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOw0KLSAgICAg
ICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0
YW50IGxvb2t1cDpzZWxlY3RlZFRleHQgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQorICAg
ICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGxvb2t1cDpzZWxlY3Rpb25D
b250ZXh0IHdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxlbmd0aCgpLCBzZWxlY3Rl
ZFRleHQubGVuZ3RoKCkpIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOw0KICAgICAgICAgfSBl
bHNlIHsNCi0gICAgICAgICAgICBpZiAoW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihsb29rdXA6d2l0aFJhbmdlOmZyb21SZWN0OildKQ0K
LSAgICAgICAgICAgICAgICBbdmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2Vs
ZWN0aW9uQ29udGV4dCB3aXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dEJlZm9yZS5sZW5ndGgoKSwg
c2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKSBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsNCi0gICAg
ICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIFt2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0
YW50IGxvb2t1cDpzZWxlY3RlZFRleHQgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQorICAg
ICAgICAgICAgW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgbG9va3VwOnNlbGVjdGlvbkNv
bnRleHQgd2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRCZWZvcmUubGVuZ3RoKCksIHNlbGVjdGVk
VGV4dC5sZW5ndGgoKSkgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07DQogICAgICAgICB9DQog
ICAgIH0pOw0KIH0NCkBAIC0xOTAzLDE4ICsxODcxLDE4IEBAIC0gKHZvaWQpX3NoYXJlOihpZClz
ZW5kZXINCiANCiAgICAgICAgIENHUmVjdCBwcmVzZW50YXRpb25SZWN0ID0gdmlldy0+X3BhZ2Ut
PmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0c1swXS5yZWN0KCk7
DQogDQotICAgICAgICBpZiAodmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW3ZpZXct
Pl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hv
d1NoYXJlU2hlZXRGb3I6ZnJvbVJlY3Q6KV0pDQorICAgICAgICBpZiAodmlldy0+X3RleHRTZWxl
Y3Rpb25Bc3Npc3RhbnQpDQogICAgICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0
YW50IHNob3dTaGFyZVNoZWV0Rm9yOnN0cmluZyBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsN
Ci0gICAgICAgIGVsc2UgaWYgKHZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW3ZpZXct
Pl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93
U2hhcmVTaGVldEZvcjpmcm9tUmVjdDopXSkNCisgICAgICAgIGVsc2UgaWYgKHZpZXctPl93ZWJT
ZWxlY3Rpb25Bc3Npc3RhbnQpDQogICAgICAgICAgICAgW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6c3RyaW5nIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3Rd
Ow0KICAgICB9KTsNCiB9DQogDQogLSAodm9pZClfYWRkU2hvcnRjdXQ6KGlkKXNlbmRlcg0KIHsN
Ci0gICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50ICYmIFtfdGV4dFNlbGVjdGlvbkFzc2lz
dGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dUZXh0U2VydmljZUZvcjpmcm9t
UmVjdDopXSkNCisgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQ0KICAgICAgICAgW190
ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dUZXh0U2VydmljZUZvcjpbc2VsZiBzZWxlY3RlZFRl
eHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0
aW9uUmVjdHNbMF0ucmVjdCgpXTsNCi0gICAgZWxzZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCAmJiBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNob3dUZXh0U2VydmljZUZvcjpmcm9tUmVjdDopXSkNCisgICAgZWxzZSBpZiAoX3dlYlNlbGVj
dGlvbkFzc2lzdGFudCkNCiAgICAgICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dUZXh0
U2VydmljZUZvcjpbc2VsZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0b3JTdGF0
ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVjdCgpXTsNCiB9DQogDQpA
QCAtMTk0NCwxNCArMTkxMiwxMiBAQCAtICh2b2lkKV9wcm9tcHRGb3JSZXBsYWNlOihpZClzZW5k
ZXINCiAgICAgaWYgKHdvcmRBdFNlbGVjdGlvbi5pc0VtcHR5KCkpDQogICAgICAgICByZXR1cm47
DQogDQotICAgIGlmIChbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihzY2hlZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6KV0pDQotICAgICAgICBbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OndvcmRBdFNl
bGVjdGlvbl07DQorICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzY2hlZHVsZVJlcGxhY2Vt
ZW50c0ZvclRleHQ6d29yZEF0U2VsZWN0aW9uXTsNCiB9DQogDQogLSAodm9pZClfdHJhbnNsaXRl
cmF0ZUNoaW5lc2U6KGlkKXNlbmRlcg0KIHsNCi0gICAgaWYgKFtfdGV4dFNlbGVjdGlvbkFzc2lz
dGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0
ZXJhdGlvbkZvclRleHQ6KV0pDQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2No
ZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9yVGV4dDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5w
b3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlvbl07DQorICAgIFtfdGV4dFNlbGVjdGlvbkFz
c2lzdGFudCBzY2hlZHVsZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0Ol9wYWdlLT5lZGl0
b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkud29yZEF0U2VsZWN0aW9uXTsNCiB9DQogDQogLSAo
dm9pZClfcmVhbmFseXplOihpZClzZW5kZXINCkBAIC0zMzg1LDE0ICszMzUxLDYgQEAgLSAodm9p
ZClfZGlkSGFuZGxlS2V5RXZlbnQ6KFdlYklPU0V2ZW50IA0KICAgICAgICAgcmV0dXJuOw0KICAg
ICB9DQogICAgICAgICANCi0gICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlEb3duKSB7
DQotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IGZvciBzdGFnaW5nIHB1cnBvc2VzLg0K
LSAgICAgICAgaWYgKFtbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoZGlkSGFuZGxlV2ViS2V5RXZlbnQ6KV0pDQotICAgICAgICAgICAg
W1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gZGlkSGFuZGxlV2ViS2V5RXZlbnQ6ZXZl
bnRdOw0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgIFtbVUlLZXlib2FyZEltcGwgc2hhcmVk
SW5zdGFuY2VdIGRpZEhhbmRsZVdlYktleUV2ZW50XTsNCi0gICAgfQ0KLQ0KICAgICAvLyBJZiB3
ZSBhcmVuJ3QgaW50ZXJhY3Rpbmcgd2l0aCBlZGl0YWJsZSBjb250ZW50LCB3ZSBzdGlsbCBuZWVk
IHRvIGNhbGwgW3N1cGVyIF9oYW5kbGVLZXlVSUV2ZW50Ol0NCiAgICAgLy8gc28gdGhhdCBrZXli
b2FyZCByZXBlYXQgd2lsbCB3b3JrIGNvcnJlY3RseS4gSWYgd2UgYXJlIGludGVyYWN0aW5nIHdp
dGggZWRpdGFibGUgY29udGVudCwNCiAgICAgLy8gd2UgYWxyZWFkeSBkaWQgc28gaW4gX2hhbmRs
ZUtleVVJRXZlbnQuDQpAQCAtMzUwNiwyMSArMzQ2NCwxNCBAQCAtIChCT09MKV9pbnRlcnByZXRL
ZXlFdmVudDooV2ViSU9TRXZlbnQgDQogICAgIGNhc2Uga1dlYkJhY2tzcGFjZUtleToNCiAgICAg
Y2FzZSBrV2ViRGVsZXRlS2V5Og0KICAgICAgICAgaWYgKGNvbnRlbnRFZGl0YWJsZSkgew0KLSAg
ICAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgZGVsZXRlRnJvbUlucHV0IG9uY2UgVUlLaXQgYWRv
cHRzIGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFncw0KLSAgICAgICAgICAgIGlmIChba2V5Ym9hcmQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3M6KV0p
DQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3M6ZXZl
bnQua2V5Ym9hcmRGbGFnc107DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBb
a2V5Ym9hcmQgZGVsZXRlRnJvbUlucHV0XTsNCisgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRl
RnJvbUlucHV0V2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOw0KICAgICAgICAgICAgIHJl
dHVybiBZRVM7DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCiANCiAgICAgY2FzZSBrV2Vi
U3BhY2VLZXk6DQogICAgICAgICBpZiAoY29udGVudEVkaXRhYmxlICYmIGlzQ2hhckV2ZW50KSB7
DQotICAgICAgICAgICAgaWYgKFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGFkZElucHV0U3RyaW5nOndpdGhGbGFnczp3aXRoSW5wdXRNYW5hZ2VySGludDopXSkNCi0gICAg
ICAgICAgICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0
aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6ZXZlbnQuaW5w
dXRNYW5hZ2VySGludF07DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBba2V5
Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5
Ym9hcmRGbGFnc107DQorICAgICAgICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50
LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3Mgd2l0aElucHV0TWFuYWdl
ckhpbnQ6ZXZlbnQuaW5wdXRNYW5hZ2VySGludF07DQogICAgICAgICAgICAgcmV0dXJuIFlFUzsN
CiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KQEAgLTM1NDAsMTAgKzM0OTEsNyBAQCAtIChC
T09MKV9pbnRlcnByZXRLZXlFdmVudDooV2ViSU9TRXZlbnQgDQogDQogICAgIGRlZmF1bHQ6DQog
ICAgICAgICBpZiAoY29udGVudEVkaXRhYmxlICYmIGlzQ2hhckV2ZW50KSB7DQotICAgICAgICAg
ICAgaWYgKFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFkZElucHV0U3Ry
aW5nOndpdGhGbGFnczp3aXRoSW5wdXRNYW5hZ2VySGludDopXSkNCi0gICAgICAgICAgICAgICAg
W2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50
LmtleWJvYXJkRmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6ZXZlbnQuaW5wdXRNYW5hZ2VySGlu
dF07DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5w
dXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107
DQorICAgICAgICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMg
d2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6ZXZlbnQu
aW5wdXRNYW5hZ2VySGludF07DQogICAgICAgICAgICAgcmV0dXJuIFlFUzsNCiAgICAgICAgIH0N
CiAgICAgICAgIGJyZWFrOw0KQEAgLTQyMDgsMjUgKzQxNTYsMjMgQEAgLSAoTlNEaWN0aW9uYXJ5
ICopX2RhdGFGb3JQcmV2aWV3SXRlbUNvbg0KICAgICAgICAgICAgICAgICBjb250ZXh0ID0gW3Vp
RGVsZWdhdGUgX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzpfd2ViVmlld107DQogDQog
ICAgICAgICAgICAgREREZXRlY3Rpb25Db250cm9sbGVyICpjb250cm9sbGVyID0gW2dldERERGV0
ZWN0aW9uQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQ29udHJvbGxlcl07DQotICAgICAgICAgICAg
aWYgKFtjb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVzdWx0Rm9yVVJM
OmlkZW50aWZpZXI6c2VsZWN0ZWRUZXh0OnJlc3VsdHM6Y29udGV4dDpleHRlbmRlZENvbnRleHQ6
KV0pIHsNCi0gICAgICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpuZXdDb250ZXh0ID0gbmlsOw0K
LSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5kZWRD
b250ZXh0Ow0KLSAgICAgICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtjb250cm9s
bGVyIHJlc3VsdEZvclVSTDpkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhTGlua10gaWRlbnRp
ZmllcjpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVk
VGV4dDpbc2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0
YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250ZXh0OiZu
ZXdDb250ZXh0XTsNCi0gICAgICAgICAgICAgICAgaWYgKGRkUmVzdWx0KQ0KLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUREUmVzdWx0XSA9IChfX2JyaWRn
ZSBpZClkZFJlc3VsdDsNCi0gICAgICAgICAgICAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlv
bi50ZXh0QmVmb3JlLmlzRW1wdHkoKSB8fCAhX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEFmdGVy
LmlzRW1wdHkoKSkgew0KLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0gYWRv
cHROUyhbQHsNCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc0xlYWRp
bmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLA0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0KCkgOiBfcG9zaXRpb25J
bmZvcm1hdGlvbi50ZXh0QWZ0ZXIsDQotICAgICAgICAgICAgICAgICAgICB9IG11dGFibGVDb3B5
XSk7DQotICAgICAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgICAgIGlmIChuZXdD
b250ZXh0KQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQgYWRkRW50
cmllc0Zyb21EaWN0aW9uYXJ5Om5ld0NvbnRleHRdOw0KLSAgICAgICAgICAgICAgICAgICAgbmV3
Q29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsNCi0gICAgICAgICAgICAgICAgfQ0KKyAg
ICAgICAgICAgIE5TRGljdGlvbmFyeSAqbmV3Q29udGV4dCA9IG5pbDsNCisgICAgICAgICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5kZWRDb250ZXh0Ow0KKyAgICAgICAg
ICAgIEREUmVzdWx0UmVmIGRkUmVzdWx0ID0gW2NvbnRyb2xsZXIgcmVzdWx0Rm9yVVJMOmRhdGFG
b3JQcmV2aWV3W1VJUHJldmlld0RhdGFMaW5rXSBpZGVudGlmaWVyOl9wb3NpdGlvbkluZm9ybWF0
aW9uLmRhdGFEZXRlY3RvcklkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OltzZWxmIHNlbGVjdGVkVGV4
dF0gcmVzdWx0czpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgp
IGNvbnRleHQ6Y29udGV4dCBleHRlbmRlZENvbnRleHQ6Jm5ld0NvbnRleHRdOw0KKyAgICAgICAg
ICAgIGlmIChkZFJlc3VsdCkNCisgICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2
aWV3RGF0YUREUmVzdWx0XSA9IChfX2JyaWRnZSBpZClkZFJlc3VsdDsNCisgICAgICAgICAgICBp
ZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFfcG9zaXRp
b25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIGV4
dGVuZGVkQ29udGV4dCA9IGFkb3B0TlMoW0B7DQorICAgICAgICAgICAgICAgICAgICBnZXRrRGF0
YURldGVjdG9yc0xlYWRpbmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3Jl
LA0KKyAgICAgICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNUcmFpbGluZ1RleHQoKSA6
IF9wb3NpdGlvbkluZm9ybWF0aW9uLnRleHRBZnRlciwNCisgICAgICAgICAgICAgICAgfSBtdXRh
YmxlQ29weV0pOw0KKyAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgaWYgKG5ld0Nv
bnRleHQpDQotICAgICAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRh
RERDb250ZXh0XSA9IG5ld0NvbnRleHQ7DQorICAgICAgICAgICAgICAgICAgICBbZXh0ZW5kZWRD
b250ZXh0IGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpuZXdDb250ZXh0XTsNCisgICAgICAgICAg
ICAgICAgbmV3Q29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsNCiAgICAgICAgICAgICB9
DQorICAgICAgICAgICAgaWYgKG5ld0NvbnRleHQpDQorICAgICAgICAgICAgICAgIGRhdGFGb3JQ
cmV2aWV3W1VJUHJldmlld0RhdGFERENvbnRleHRdID0gbmV3Q29udGV4dDsNCiAgICAgICAgIH0N
CiAgICAgfSBlbHNlIGlmIChjYW5TaG93SW1hZ2VQcmV2aWV3KSB7DQogICAgICAgICAqdHlwZSA9
IFVJUHJldmlld0l0ZW1UeXBlSW1hZ2U7DQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNv
cHkpDQpAQCAtMTc3LDggKzE3Nyw3IEBAIE1hY2hTZW5kUmlnaHQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0ENCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgZmVuY2UgaWYgYSBzeW5jaHJvbm91cyBt
ZXNzYWdlIGFycml2ZXMgd2hpbGUgaXQncyBpbnN0YWxsZWQsDQogICAgIC8vIGJlY2F1c2Ugd2Ug
d29uJ3QgYmUgYWJsZSB0byByZXBseSBkdXJpbmcgdGhlIGZlbmNlLXdhaXQuDQogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5p
bnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKFtyb290TGF5ZXJDb250ZXh0XSB7DQot
ICAgICAgICBpZiAoW3Jvb3RMYXllckNvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihpbnZhbGlkYXRlRmVuY2VzKV0pDQotICAgICAgICAgICAgW3Jvb3RMYXllckNvbnRleHQgaW52
YWxpZGF0ZUZlbmNlc107DQorICAgICAgICBbcm9vdExheWVyQ29udGV4dCBpbnZhbGlkYXRlRmVu
Y2VzXTsNCiAgICAgfSk7DQogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHJldGFpbmVkUGFnZSA9
ICZtX3dlYlBhZ2VQcm94eTsNCiAgICAgW0NBVHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpb
Y2FsbGJhY2tJRCwgcmV0YWluZWRQYWdlXSB7DQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0NCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bQkocmV2aXNpb24gMjEyMjAyKQ0KKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtNDAxLDEwICs0
MDEsOCBAQCAtIChpZDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsDQogDQogICAg
IGFjdGlvbkNvbnRleHQuYWx0TW9kZSA9IFlFUzsNCiAgICAgYWN0aW9uQ29udGV4dC5pbW1lZGlh
dGUgPSBZRVM7DQotICAgIGlmIChbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1h
bmFnZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaGFzQWN0aW9uc0ZvclJlc3VsdDph
Y3Rpb25Db250ZXh0OildKSB7DQotICAgICAgICBpZiAoIVtbZ2V0RERBY3Rpb25zTWFuYWdlckNs
YXNzKCkgc2hhcmVkTWFuYWdlcl0gaGFzQWN0aW9uc0ZvclJlc3VsdDphY3Rpb25Db250ZXh0Lm1h
aW5SZXN1bHQgYWN0aW9uQ29udGV4dDphY3Rpb25Db250ZXh0XSkNCi0gICAgICAgICAgICByZXR1
cm4gbmlsOw0KLSAgICB9DQorICAgIGlmICghW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBz
aGFyZWRNYW5hZ2VyXSBoYXNBY3Rpb25zRm9yUmVzdWx0OmFjdGlvbkNvbnRleHQubWFpblJlc3Vs
dCBhY3Rpb25Db250ZXh0OmFjdGlvbkNvbnRleHRdKQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCiAN
CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcGFnZSA9IF9wYWdlOw0KICAgICBQYWdlT3Zlcmxh
eTo6UGFnZU92ZXJsYXlJRCBvdmVybGF5SUQgPSBfaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWRE
YXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0NCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHJldmlzaW9u
IDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51
UHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkNCkBAIC0yNjYsOSArMjY2LDYgQEAgdm9pZCBXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpjbGVhclNlcnZpYw0KIA0KIFJldGFpblB0cjxOU01lbnVJdGVt
PiBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGVTaGFyZU1lbnVJdGVtKCkNCiB7DQotICAg
IGlmICghW1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0
YW5kYXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczopXSkNCi0gICAgICAgIHJldHVybiBuaWw7DQot
DQogICAgIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0RGF0YSA9IG1fY29udGV4
dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpOw0KIA0KICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7DQpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQ0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHJldmlzaW9u
IDIxMjIwMikNCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250
cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtNzUsMTAgKzc1LDYgQEAgc3RhdGljIE5TUmVj
dCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZA0KICAgICByZXR1cm4gW3dpbmRvdyBjb252ZXJ0
UmVjdFRvU2NyZWVuOnJlY3RdOw0KIH0NCiANCi1AaW50ZXJmYWNlIE5TV2luZG93KElzT25BY3Rp
dmVTcGFjZUFkZGl0aW9uRm9yVGlnZXJBbmRMZW9wYXJkKQ0KLS0gKEJPT0wpaXNPbkFjdGl2ZVNw
YWNlOw0KLUBlbmQNCi0NCiBAaW1wbGVtZW50YXRpb24gV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIN
CiANCiAjcHJhZ21hIG1hcmsgLQ0KQEAgLTE2NSwxNiArMTYxLDEzIEBAIC0gKHZvaWQpY2FuY2Vs
T3BlcmF0aW9uOihpZClzZW5kZXINCiANCiAtICh2b2lkKWFwcGxpY2F0aW9uRGlkUmVzaWduQWN0
aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uDQogeyAgIA0KLSAgICAvLyBDaGVjayB0
byBzZWUgaWYgdGhlIGZ1bGxzY3JlZW5XaW5kb3cgaXMgb24gdGhlIGFjdGl2ZSBzcGFjZTsgdGhp
cyBmdW5jdGlvbiBpcyBhdmFpbGFibGUNCi0gICAgLy8gb24gMTAuNiBhbmQgbGF0ZXIsIHNvIGRl
ZmF1bHQgdG8gWUVTIGlmIHRoZSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlOg0KICAgICBOU1dp
bmRvdyogZnVsbHNjcmVlbldpbmRvdyA9IFtzZWxmIHdpbmRvd107DQotICAgIEJPT0wgaXNPbkFj
dGl2ZVNwYWNlID0gKFtmdWxsc2NyZWVuV2luZG93IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoaXNPbkFjdGl2ZVNwYWNlKV0gPyBbZnVsbHNjcmVlbldpbmRvdyBpc09uQWN0aXZlU3BhY2Vd
IDogWUVTKTsNCiANCiAgICAgLy8gUmVwbGljYXRlIHRoZSBRdWlja1RpbWUgUGxheWVyIChYKSBi
ZWhhdmlvciB3aGVuIGxvc2luZyBhY3RpdmUgYXBwbGljYXRpb24gc3RhdHVzOg0KICAgICAvLyBJ
cyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhpcyBjb3Zl
cnMgdGhlIGNhc2Ugd2hlcmUgb25seSBhIA0KICAgICAvLyBzaW5nbGUgc2NyZWVuIGlzIGF2YWls
YWJsZS4pICBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gb24gdGhlIGN1cnJlbnQgc3BhY2U/IElG
RiBzbywgDQogICAgIC8vIHRoZW4gZXhpdCBmdWxsc2NyZWVuIG1vZGUuIA0KLSAgICBpZiAoW2Z1
bGxzY3JlZW5XaW5kb3cgc2NyZWVuXSA9PSBbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5k
ZXg6MF0gJiYgaXNPbkFjdGl2ZVNwYWNlKQ0KKyAgICBpZiAoZnVsbHNjcmVlbldpbmRvdy5zY3Jl
ZW4gPT0gW05TU2NyZWVuIHNjcmVlbnNdWzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cub25BY3RpdmVT
cGFjZSkNCiAgICAgICAgICBbc2VsZiBjYW5jZWxPcGVyYXRpb246c2VsZl07DQogfQ0KIA0KQEAg
LTMyNSw3ICszMTgsNyBAQCAtICh2b2lkKWV4aXRGdWxsU2NyZWVuDQogICAgIFt3ZWJXaW5kb3cg
c2V0QW5pbWF0aW9uQmVoYXZpb3I6TlNXaW5kb3dBbmltYXRpb25CZWhhdmlvck5vbmVdOw0KICAg
ICAvLyBJZiB0aGUgdXNlciBoYXMgbW92ZWQgdGhlIGZ1bGxTY3JlZW4gd2luZG93IGludG8gYSBu
ZXcgc3BhY2UsIHRlbXBvcmFyaWx5IGNoYW5nZQ0KICAgICAvLyB0aGUgY29sbGVjdGlvbkJlaGF2
aW9yIG9mIHRoZSB3ZWJWaWV3J3Mgd2luZG93IHNvIHRoYXQgaXQgaXMgcHVsbGVkIGludG8gdGhl
IGFjdGl2ZSBzcGFjZToNCi0gICAgaWYgKCEoW3dlYldpbmRvdyByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGlzT25BY3RpdmVTcGFjZSldID8gW3dlYldpbmRvdyBpc09uQWN0aXZlU3BhY2Vd
IDogWUVTKSkgew0KKyAgICBpZiAoIXdlYldpbmRvdy5vbkFjdGl2ZVNwYWNlKSB7DQogICAgICAg
ICBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvciBiZWhhdmlvciA9IFt3ZWJXaW5kb3cgY29sbGVj
dGlvbkJlaGF2aW9yXTsNCiAgICAgICAgIFt3ZWJXaW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9y
Ok5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yQ2FuSm9pbkFsbFNwYWNlc107DQogICAgICAgICBb
d2ViV2luZG93IG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2lu
ZG93XSB3aW5kb3dOdW1iZXJdXTsNCkBAIC00MzAsMTAgKzQyMyw3IEBAIC0gKHZvaWQpX3VwZGF0
ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbg0KICAgICAgICAgICAgIG9wdGlvbnMgfD0gTlNBcHBs
aWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlRG9jazsNCiAgICAgfQ0KICAgICANCi0gICAgaWYg
KFtOU0FwcCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFByZXNlbnRhdGlvbk9wdGlv
bnM6KV0pDQotICAgICAgICBbTlNBcHAgc2V0UHJlc2VudGF0aW9uT3B0aW9uczpvcHRpb25zXTsN
Ci0gICAgZWxzZQ0KLSAgICAgICAgU2V0U3lzdGVtVUlNb2RlKF9pc0Z1bGxTY3JlZW4gPyBrVUlN
b2RlQWxsSGlkZGVuIDoga1VJTW9kZU5vcm1hbCwgMCk7DQorICAgIE5TQXBwLnByZXNlbnRhdGlv
bk9wdGlvbnMgPSBvcHRpb25zOw0KIH0NCiANCiAjcHJhZ21hIG1hcmsgLQ0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0NCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAyMTIyMDIpDQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5
KQ0KQEAgLTM4NzIsOSArMzg3Miw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZml4TWVu
dXNSZWNlaXYNCiANCiBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVu
dUl0ZW0oY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkNCiB7DQotICAgIGlmICgh
W1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJk
U2hhcmVNZW51SXRlbVdpdGhJdGVtczopXSkNCi0gICAgICAgIHJldHVybiBuaWw7DQotDQogICAg
IGF1dG8gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsNCiAN
CiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHkoKSkgew0K
QEAgLTYxMDQsOCArNjEwMSw3IEBAIC0gKHZvaWQpX3dpbmRvd0NoYW5nZWRLZXlTdGF0ZQ0KICNp
ZiAhUExBVEZPUk0oSU9TKQ0KIC0gKHZvaWQpb3RoZXJNb3VzZURvd246KE5TRXZlbnQgKilldmVu
dA0KIHsNCi0gICAgaWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildDQotICAgICAgICAm
JiBbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVudVR5cGVDb250ZXh0TWVu
dSkpIHsNCisgICAgaWYgKGV2ZW50LmJ1dHRvbk51bWJlciAhPSAyIHx8IFtOU01lbnUgbWVudVR5
cGVGb3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUNvbnRleHRNZW51KSB7DQogICAgICAgICBb
c3VwZXIgb3RoZXJNb3VzZURvd246ZXZlbnRdOw0KICAgICAgICAgcmV0dXJuOw0KICAgICB9DQpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5n
IGNvcHkpDQpAQCAtMTI4LDggKzEyOCw3IEBAIC0gKHZvaWQpX2NsZWFySW1tZWRpYXRlQWN0aW9u
U3RhdGUNCiAgICAgICAgIHJldHVybjsNCiANCiAgICAgRERBY3Rpb25zTWFuYWdlciAqYWN0aW9u
c01hbmFnZXIgPSBbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl07DQot
ICAgIGlmIChbYWN0aW9uc01hbmFnZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZXF1
ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9yT25GYWlsdXJlOildKQ0KLSAgICAgICAgW2FjdGlvbnNN
YW5hZ2VyIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6WUVTXTsNCisgICAg
W2FjdGlvbnNNYW5hZ2VyIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6WUVT
XTsNCiANCiAgICAgaWYgKF9jdXJyZW50QWN0aW9uQ29udGV4dCAmJiBfaGFzQWN0aXZhdGVkQWN0
aW9uQ29udGV4dCkgew0KICAgICAgICAgX2hhc0FjdGl2YXRlZEFjdGlvbkNvbnRleHQgPSBOTzsN
CkBAIC00MzksMTAgKzQzOCw4IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNv
bnRyb2wNCiANCiAgICAgW2FjdGlvbkNvbnRleHQgc2V0QWx0TW9kZTpZRVNdOw0KICAgICBbYWN0
aW9uQ29udGV4dCBzZXRJbW1lZGlhdGU6WUVTXTsNCi0gICAgaWYgKFtbZ2V0RERBY3Rpb25zTWFu
YWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvciho
YXNBY3Rpb25zRm9yUmVzdWx0OmFjdGlvbkNvbnRleHQ6KV0pIHsNCi0gICAgICAgIGlmICghW1tn
ZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBoYXNBY3Rpb25zRm9yUmVz
dWx0OlthY3Rpb25Db250ZXh0IG1haW5SZXN1bHRdIGFjdGlvbkNvbnRleHQ6YWN0aW9uQ29udGV4
dC5nZXQoKV0pDQotICAgICAgICAgICAgcmV0dXJuIG5pbDsNCi0gICAgfQ0KKyAgICBpZiAoIVtb
Z2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gaGFzQWN0aW9uc0ZvclJl
c3VsdDpbYWN0aW9uQ29udGV4dCBtYWluUmVzdWx0XSBhY3Rpb25Db250ZXh0OmFjdGlvbkNvbnRl
eHQuZ2V0KCldKQ0KKyAgICAgICAgcmV0dXJuIG5pbDsNCiANCiAgICAgYXV0byBpbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmRldGVjdGVkRGF0YVJhbmdlLCBUZXh0
SW5kaWNhdG9yT3B0aW9uRGVmYXVsdCwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b246OkZhZGVJbik7DQogDQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAyMTIyMDIpDQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtNTA2LDEwICs1MDYsNiBAQCBAaW50ZXJmYWNlIFdlYlZp
ZXcoV2ViVmlld1ByaXZhdGUpDQogLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVm
ZXJlbmNlcyAqKXByZWZlcmVuY2VzOw0KIC0gKHZvaWQpX3VwZGF0ZVNjcmVlblNjYWxlRnJvbVdp
bmRvdzsNCiBAZW5kDQotDQotQGludGVyZmFjZSBOU1VSTENhY2hlIChXZWJQcml2YXRlKQ0KLS0g
KENGVVJMQ2FjaGVSZWYpX0NGVVJMQ2FjaGU7DQotQGVuZA0KICNlbmRpZg0KIA0KICNpZiAhUExB
VEZPUk0oSU9TKQ0KQEAgLTMzMzEsNyArMzMyNyw3IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUNCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZShbZnJhbWUg
RE9NRG9jdW1lbnRdKTsNCiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudCA/IGRv
Y3VtZW50LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA6IDApIHsNCiAgICAgICAg
IFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmNsb3NlRnVsbFNjcmVlbldpdGhMaXN0
ZW5lcjopOw0KLSAgICAgICAgaWYgKF9wcml2YXRlLT5VSURlbGVnYXRlICYmIFtfcHJpdmF0ZS0+
VUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7DQorICAgICAgICBpZiAo
W19wcml2YXRlLT5VSURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsNCiAg
ICAgICAgICAgICBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJLaXRG
dWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XTsNCiAgICAg
ICAgICAgICBDYWxsVUlEZWxlZ2F0ZShzZWxmLCBzZWxlY3RvciwgbGlzdGVuZXIpOw0KICAgICAg
ICAgICAgIFtsaXN0ZW5lciByZWxlYXNlXTsNCkBAIC04NTgzLDcgKzg1NzksNyBAQCArICh2b2lk
KV9zZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhDQogI2lmIFBMQVRGT1JNKElPUykNCiAg
ICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gc3RkOjptYXgobnN1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5LCBbbnN1cmxDYWNoZSBtZW1vcnlDYXBhY2l0eV0pOw0KICAgICBDRlVSTENhY2hlUmVm
IGNmQ2FjaGU7DQotICAgIGlmIChbbnN1cmxDYWNoZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9DRlVSTENhY2hlKV0gJiYgKGNmQ2FjaGUgPSBbbnN1cmxDYWNoZSBfQ0ZVUkxDYWNoZV0p
KQ0KKyAgICBpZiAoKGNmQ2FjaGUgPSBbbnN1cmxDYWNoZSBfQ0ZVUkxDYWNoZV0pKQ0KICAgICAg
ICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNmQ2FjaGUsIG5zdXJsQ2FjaGVNZW1vcnlD
YXBhY2l0eSk7DQogICAgIGVsc2UNCiAgICAgICAgIFtuc3VybENhY2hlIHNldE1lbW9yeUNhcGFj
aXR5Om5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eV07DQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301313</attachid>
            <date>2017-02-12 12:06:07 -0800</date>
            <delta_ts>2017-02-12 13:05:22 -0800</delta_ts>
            <desc>Remove unnecessary checking</desc>
            <filename>bug-168183-20170212120336.patch</filename>
            <type>text/plain</type>
            <size>68975</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDE3LTAyLTEyICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBTb21lIC1yZXNwb25k
c1RvU2VsZWN0b3I6IGNoZWNrcyBhcmUgdW5uZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODE4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzOiBSZW1vdmVkIGEgc3RyaW5nIHRoYXTigJlzIG5vIGxvbmdlciBuZWVkZWQgYWZ0ZXIg
dGhlCisgICAgICAgICAgY2hhbmdlIHRvIFdlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVVdGlsaXRp
ZXMubW0uCisKKyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvd1BvcHVwT3JDcmVhdGVBbmltYXRpb25Db250cm9sbGVyKTogUmVt
b3ZlZCBjaGVjayB3aGV0aGVyCisgICAgICAgICAgTFVMb29rdXBEZWZpbml0aW9uTW9kdWxlIHJl
c3BvbmRzIHRvICtzaG93RGVmaW5pdGlvbkZvclRlcm06cmVsYXRpdmVUb1JlY3Q6b2ZWaWV3Om9w
dGlvbnM6LgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6aW5pdGlhbGl6ZSk6IENoYW5nZWQgdG8gdXNlCisgICAgICAgICAgLVtORUZpbHRlclNv
dXJjZSBzZXRTb3VyY2VBcHBJZGVudGlmaWVyOl0sIHdpdGhvdXQgY2hlY2tpbmcsIGluc3RlYWQg
b2YKKyAgICAgICAgICAtc2V0U291cmNlQXBwQnVuZGxlSUQ6LCB3aGljaCBkb2VzIG5vdCBleGlz
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAg
ICAgIChzeXN0ZW1VcHRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29u
dHJvbGxlcjo6c25hcFJ1YmJlckJhbmQpOiBVc2UgLVtOU1Byb2Nlc3NJbmZvIHN5c3RlbVVwdGlt
ZV0gZGlyZWN0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYzo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTog
UmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWUGxheWVyTGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRp
ZFBhc3NDT1JTQWNjZXNzQ2hlY2spOiBSZXBsYWNlZAorICAgICAgICAgIC1yZXNwb25kc1RvU2Vs
ZWN0b3I6IGNoZWNrIHdpdGggLWlzS2luZE9mQ2xhc3M6IGNoZWNrIGNvcnJlc3BvbmRpbmcgdG8g
dGhlIGFib3ZlIGNhc3QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOiBSZW1vdmVkIHVubmVjZXNzYXJ5
CisgICAgICAgICAgY2hlY2suCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViR0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBpbml0V2l0aEdy
YXBoaWNzQ29udGV4dDNEOl0pOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGVGb3JFdmVudCk6
IFJlbW92ZWQgY2hlY2sgd2hldGhlciBOU01lbnUgcmVzcG9uZHMgdG8gK21lbnVUeXBlRm9yRXZl
bnQ6IGFuZAorICAgICAgICAgIGFsbCBjb2RlIHRvIGhhbmRsZSB0aGF0IGNhc2UgdGhhdCBpdCBk
b2VzbuKAmXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhcHBs
aWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTpdKTogUmVtb3ZlZCBjaGVjayB3aGV0aGVyCisgICAgICAg
ICAgTlNXaW5kb3cgcmVzcG9uZHMgdG8gLWlzT25BY3RpdmVTcGFjZS4KKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW5d
KTogUmVtb3ZlZCBjaGVjayB3aGV0aGVyCisgICAgICAgICAgTlNBcHBsaWNhdGlvbiByZXNwb25k
cyB0byAtc2V0UHJlc2VudGF0aW9uT3B0aW9uczoKKworICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hY09iakMgdXBkYXRlSXNQbGF5aW5nOm5ld1BsYXliYWNrUmF0ZTpd
KTogUmVtb3ZlZAorICAgICAgICAgIHVubmVjZXNzYXJ5IC1yZXNwb25kc1RvU2VsZWN0b3I6IGNo
ZWNrLgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDIHNldFZp
ZGVvRGltZW5zaW9uczpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hY09iakMgc2V0VXBQSVBGb3JWaWRlb1ZpZXc6d2l0aEZyYW1lOmluV2luZG93Ol0p
OiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDogTW92
ZWQgZGVjbGFyYXRpb25zIG9mCisgICAgICAgICAgLVtOU1VSTENhY2hlIF9pbml0V2l0aE1lbW9y
eUNhcGFjaXR5OmRpc2tDYXBhY2l0eTpyZWxhdGl2ZVBhdGg6XSBhbmQKKyAgICAgICAgICAtW05T
VVJMQ2FjaGUgX0NGVVJMQ2FjaGVdIHRvIHRoZSAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykgc2Vj
dGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5o
OiBBZGRlZCBkZWNsYXJhdGlvbiBvZiBORUZpbHRlclNvdXJjZeKAmQorICAgICAgICAgIHNvdXJj
ZUFwcElkZW50aWZpZXIgcHJvcGVydHkgdG8gdGhlICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSBz
ZWN0aW9uIGFuZCBkZWxldGVkCisgICAgICAgICAgdW5jb25kaXRpb25hbCBkZWNsYXJhdGlvbiBv
ZiBzb3VyY2VBcHBCdW5kbGVJRCBwcm9wZXJ0eSwgd2hpY2ggZG9lc27igJl0IGV4aXN0LgorCisg
ICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaDogUmVtb3ZlZCByZWR1
bmRhbnQgZGVjbGFyYXRpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaDogTW92ZWQgZGVjbGFyYXRpb25zIG9mIERERGV0ZWN0aW9uQ29udHJvbGxl
ciBtZXRob2RzCisgICAgICAgICAgZnJvbSBXZWJLaXQyL1VJUHJvY2Vzcy9pb3Mve1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQsV0tDb250ZW50Vmlld0ludGVyYWN0aW9ufS5tbSB0byBoZXJlLgorICAg
ICAgICAgIFJlbW92ZWQgYW4gdW51c2VkIGRlY2xhcmF0aW9uLgorCisgICAgICAgICogcGxhdGZv
cm0vc3BpL21hYy9Mb29rdXBTUEkuaDogTW92ZWQgcmVkdW5kYW50IGRlY2xhcmF0aW9ucyBpbnRv
IHRoZQorICAgICAgICAgICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSBzZWN0aW9uLgorCisgICAg
ICAgICogcGxhdGZvcm0vc3BpL21hYy9OU01lbnVTUEkuaDogQ2hhbmdlZCB0byBpbXBvcnQgTlNN
ZW51X1ByaXZhdGUuaCB3aGVuIHVzaW5nIHRoZQorICAgICAgICAgIEFwcGxlIGludGVybmFsIFNE
Sy4gQ2xlYW5lZCB1cCB0aGUgZGVjbGFyYXRpb25zIGZvciB0aGUgb3RoZXIgY2FzZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL3NwaS9tYWMvVFVDYWxsU1BJLmg6IENoYW5nZWQgdG8gaW1wb3J0IFRV
Q2FsbF9TdHJpbmdzLmggd2hlbiB1c2UgdGhlIEFwcGxlCisgICAgICAgICAgaW50ZXJuYWwgU0RL
LgorCiAyMDE3LTAyLTExICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIGN1c3RvbSBiaW5kaW5ncyBmb3IgWFNMVFByb2Nlc3Nvci5pZGwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHJldmlz
aW9uIDIxMjIwMikKKysrIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtMTI3LDkgKzEyNyw2IEBACiAvKiBPcHRpb24gaW4g
c2VnbWVudGVkIGNvbnRyb2wgZm9yIGluc2VydGluZyBhIGJ1bGxldGVkIGxpc3QgaW4gdGV4dCBl
ZGl0aW5nICovCiAiQnVsbGV0ZWQgbGlzdCIgPSAiQnVsbGV0ZWQgbGlzdCI7CiAKLS8qIG1lbnUg
aXRlbSB0aXRsZSBmb3IgcGhvbmUgbnVtYmVyICovCi0iQ2FsbCBVc2luZyBpUGhvbmU6IiA9ICJD
YWxsIFVzaW5nIGlQaG9uZToiOwotCiAvKiBUaXRsZSBmb3IgQ2FuY2VsIGJ1dHRvbiBsYWJlbCBp
biBidXR0b24gYmFyICovCiAiQ2FuY2VsIGJ1dHRvbiBsYWJlbCBpbiBidXR0b24gYmFyIiA9ICJD
YW5jZWwiOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9v
a3VwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25h
cnlMb29rdXAubW0JKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0RpY3Rpb25hcnlMb29rdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyMSwxOCArMjIxLDE2
IEBAIHN0YXRpYyBQbGF0Zm9ybUFuaW1hdGlvbkNvbnRyb2xsZXIgc2hvd1AKICAgICAgICAgdGV4
dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKHRleHRJbmRpY2F0b3IuZ2V0KCkpOwogICAg
ICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlv
bkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOwogCi0gICAgICAgIGlmIChbZ2V0TFVMb29r
dXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNo
b3dEZWZpbml0aW9uRm9yVGVybTpyZWxhdGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9uczopXSkgewot
ICAgICAgICAgICAgRmxvYXRSZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyA9IHRl
eHRJbmRpY2F0b3IuZ2V0KCkudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcygpWzBd
OwotICAgICAgICAgICAgRmxvYXRSZWN0IHRleHRCb3VuZGluZ1JlY3RJblZpZXdDb29yZGluYXRl
cyA9IHRleHRJbmRpY2F0b3IuZ2V0KCkudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcygpOwotICAgICAgICAgICAgaWYgKHJvb3RWaWV3VG9WaWV3Q29udmVyc2lvbkNhbGxiYWNr
KQotICAgICAgICAgICAgICAgIHRleHRCb3VuZGluZ1JlY3RJblZpZXdDb29yZGluYXRlcyA9IHJv
b3RWaWV3VG9WaWV3Q29udmVyc2lvbkNhbGxiYWNrKHRleHRCb3VuZGluZ1JlY3RJblZpZXdDb29y
ZGluYXRlcyk7Ci0gICAgICAgICAgICBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMubW92
ZUJ5KHRleHRCb3VuZGluZ1JlY3RJblZpZXdDb29yZGluYXRlcy5sb2NhdGlvbigpKTsKLSAgICAg
ICAgICAgIGlmIChjcmVhdGVBbmltYXRpb25Db250cm9sbGVyKQotICAgICAgICAgICAgICAgIHJl
dHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBsb29rdXBBbmltYXRpb25D
b250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0
KCkgcmVsYXRpdmVUb1JlY3Q6Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzIG9mVmlldzp2
aWV3IG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwotCi0gICAgICAgICAgICBbZ2V0TFVM
b29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlv
bmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIHJlbGF0aXZlVG9SZWN0OmZpcnN0
VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyBvZlZpZXc6dmlldyBvcHRpb25zOm11dGFibGVPcHRp
b25zLmdldCgpXTsKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIH0KKyAgICAgICAg
RmxvYXRSZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyA9IHRleHRJbmRpY2F0b3Iu
Z2V0KCkudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcygpWzBdOworICAgICAgICBG
bG9hdFJlY3QgdGV4dEJvdW5kaW5nUmVjdEluVmlld0Nvb3JkaW5hdGVzID0gdGV4dEluZGljYXRv
ci5nZXQoKS50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCk7CisgICAgICAg
IGlmIChyb290Vmlld1RvVmlld0NvbnZlcnNpb25DYWxsYmFjaykKKyAgICAgICAgICAgIHRleHRC
b3VuZGluZ1JlY3RJblZpZXdDb29yZGluYXRlcyA9IHJvb3RWaWV3VG9WaWV3Q29udmVyc2lvbkNh
bGxiYWNrKHRleHRCb3VuZGluZ1JlY3RJblZpZXdDb29yZGluYXRlcyk7CisgICAgICAgIGZpcnN0
VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcy5tb3ZlQnkodGV4dEJvdW5kaW5nUmVjdEluVmlld0Nv
b3JkaW5hdGVzLmxvY2F0aW9uKCkpOworICAgICAgICBpZiAoY3JlYXRlQW5pbWF0aW9uQ29udHJv
bGxlcikKKyAgICAgICAgICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xh
c3MoKSBsb29rdXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZv
LmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6Zmlyc3RUZXh0UmVjdEluVmll
d0Nvb3JkaW5hdGVzIG9mVmlldzp2aWV3IG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwor
CisgICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0
aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmVs
YXRpdmVUb1JlY3Q6Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzIG9mVmlldzp2aWV3IG9w
dGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOworICAgICAgICByZXR1cm4gbmlsOwogICAgIH0K
IAogICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBvcHVwSW5mby5v
cmlnaW47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQkocmV2aXNpb24gMjEyMjAy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDcgQEAgdm9pZCBOZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aW5pdAogICAgIEFTU0VSVF9VTlVTRUQodXJsLCAhdXJs
KTsKICAgICBtX25lRmlsdGVyU291cmNlID0gYWRvcHROUyhbYWxsb2NORUZpbHRlclNvdXJjZUlu
c3RhbmNlKCkgaW5pdFdpdGhEZWNpc2lvblF1ZXVlOm1fcXVldWUuZ2V0KCldKTsKICNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIC1yZXNwb25kc1RvU2VsZWN0b3I6IGNo
ZWNrIG9uY2UgLXNldFNvdXJjZUFwcEJ1bmRsZUlEOiBpcyBpbiBhbiBTREsgKDxyZGFyOi8vcHJv
YmxlbS8yOTE0NzE3ND4pLgotICAgIGlmIChbbV9uZUZpbHRlclNvdXJjZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcEJ1bmRsZUlEOildKQotICAgICAgICBbbV9uZUZp
bHRlclNvdXJjZSBzZXRTb3VyY2VBcHBCdW5kbGVJRDphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKV07CisgICAgW21fbmVGaWx0ZXJTb3VyY2Ugc2V0U291cmNlQXBwSWRlbnRpZmllcjphcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKV07CiAjZW5kaWYKICNlbHNlCiAgICAgQVNTRVJUX0FS
Ryh1cmwsIHVybCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQx
LDMxICs0MSw2IEBACiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpIHx8IEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAKLSNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgTlNUaW1lSW50ZXJ2YWwg
c3lzdGVtVXB0aW1lKCkKLXsKLSAgICBpZiAoW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN5c3RlbVVwdGltZSldKQotICAgICAgICByZXR1
cm4gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdOwotCi0gICAgLy8g
R2V0IGhvdyBsb25nIHN5c3RlbSBoYXMgYmVlbiB1cC4gRm91bmQgYnkgbG9va2luZyBnZXR0aW5n
ICJib290dGltZSIgZnJvbSB0aGUga2VybmVsLgotICAgIHN0YXRpYyBzdHJ1Y3QgdGltZXZhbCBi
b290dGltZSA9IHswLCAwfTsKLSAgICBpZiAoIWJvb3R0aW1lLnR2X3NlYykgewotICAgICAgICBp
bnQgbWliWzJdID0ge0NUTF9LRVJOLCBLRVJOX0JPT1RUSU1FfTsKLSAgICAgICAgc2l6ZV90IHNp
emUgPSBzaXplb2YoYm9vdHRpbWUpOwotICAgICAgICBpZiAoLTEgPT0gc3lzY3RsKG1pYiwgMiwg
JmJvb3R0aW1lLCAmc2l6ZSwgMCwgMCkpCi0gICAgICAgICAgICBib290dGltZS50dl9zZWMgPSAw
OwotICAgIH0KLSAgICBzdHJ1Y3QgdGltZXZhbCBub3c7Ci0gICAgaWYgKGJvb3R0aW1lLnR2X3Nl
YyAmJiAtMSAhPSBnZXR0aW1lb2ZkYXkoJm5vdywgMCkpIHsKLSAgICAgICAgc3RydWN0IHRpbWV2
YWwgdXB0aW1lOwotICAgICAgICB0aW1lcnN1Yigmbm93LCAmYm9vdHRpbWUsICZ1cHRpbWUpOwot
ICAgICAgICBOU1RpbWVJbnRlcnZhbCByZXN1bHQgPSB1cHRpbWUudHZfc2VjICsgKHVwdGltZS50
dl91c2VjIC8gMUUrNik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVy
biAwOwotfQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKQEAgLTQyNyw3ICs0MDIsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0
b3BTbmFwUnViYmVyYmFuCiAKIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c25hcFJ1YmJlckJhbmQo
KQogewotICAgIENGVGltZUludGVydmFsIHRpbWVEZWx0YSA9IHN5c3RlbVVwdGltZSgpIC0gbV9s
YXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXA7CisgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZURlbHRh
ID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnN5c3RlbVVwdGltZSAtIG1fbGFzdE1vbWVu
dHVtU2Nyb2xsVGltZXN0YW1wOwogICAgIGlmIChtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFt
cCAmJiB0aW1lRGVsdGEgPj0gc2Nyb2xsVmVsb2NpdHlaZXJvaW5nVGltZW91dCkKICAgICAgICAg
bV9tb21lbnR1bVZlbG9jaXR5ID0gRmxvYXRTaXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQkocmV2
aXNpb24gMjEyMjAyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTE2LDEyICsxMTYsOSBAQCB2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6
OnNob3dQCiAKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIgLSBjaGVja0FjdGl2ZVJvdXRlID0gJWkiLCAoaW50KWNo
ZWNrQWN0aXZlUm91dGUpOwogCi0gICAgQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlclR5cGUg
KnBpY2tlciA9IGRldmljZVBpY2tlcigpOwotICAgIGlmICghW3BpY2tlciByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHNob3dNZW51Rm9yUmVjdDphcHBlYXJhbmNlTmFtZTphbGxvd1Jlc2Vs
ZWN0aW9uT2ZTZWxlY3RlZE91dHB1dERldmljZTopXSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
bV9zaG93aW5nTWVudSA9IHRydWU7Ci0gICAgaWYgKFtwaWNrZXIgc2hvd01lbnVGb3JSZWN0Omxv
Y2F0aW9uIGFwcGVhcmFuY2VOYW1lOk5TQXBwZWFyYW5jZU5hbWVWaWJyYW50TGlnaHQgYWxsb3dS
ZXNlbGVjdGlvbk9mU2VsZWN0ZWRPdXRwdXREZXZpY2U6IWNoZWNrQWN0aXZlUm91dGVdKSB7CisK
KyAgICBpZiAoW2RldmljZVBpY2tlcigpIHNob3dNZW51Rm9yUmVjdDpsb2NhdGlvbiBhcHBlYXJh
bmNlTmFtZTpOU0FwcGVhcmFuY2VOYW1lVmlicmFudExpZ2h0IGFsbG93UmVzZWxlY3Rpb25PZlNl
bGVjdGVkT3V0cHV0RGV2aWNlOiFjaGVja0FjdGl2ZVJvdXRlXSkgewogICAgICAgICBpZiAoIWNo
ZWNrQWN0aXZlUm91dGUpCiAgICAgICAgICAgICBjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCk7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAyMTIyMDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NTcsOCAr
NzU3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fdmlkZW9MYXllci5n
ZXQoKSwgZGVmYXVsdFNpemUpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChbbV92aWRl
b0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0p
Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KHBsYXllcigpLT5mdWxs
c2NyZWVuTW9kZSgpICYgTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5Q
aWN0dXJlKV07CisgICAgW21fdmlkZW9MYXllciBzZXRQSVBNb2RlRW5hYmxlZDoocGxheWVyKCkt
PmZ1bGxzY3JlZW5Nb2RlKCkgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUpXTsKICNlbmRpZgogI2Vsc2UKICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgZGVmYXVsdFNpemUud2lkdGgoKSwgZGVmYXVsdFNpemUuaGVpZ2h0
KCkpXTsKQEAgLTEyNTcsOCArMTI1Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzoKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAobV92aWRlb0xheWVyICYmIFttX3ZpZGVv
TGF5ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkK
LSAgICAgICAgW21fdmlkZW9MYXllciBzZXRQSVBNb2RlRW5hYmxlZDoobW9kZSAmIE1lZGlhUGxh
eWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSldOworICAgIFttX3ZpZGVv
TGF5ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpXTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5
YmFjaygpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CkBAIC0yMjQ0LDcgKzIyNDIs
NyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFdlYkNvcmVOU1VSTFNlc3Npb24gKnNlc3Npb24gPSAoV2ViQ29y
ZU5TVVJMU2Vzc2lvbiAqKXJlc291cmNlTG9hZGVyLlVSTFNlc3Npb247Ci0gICAgaWYgKFtzZXNz
aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGlkUGFzc0NPUlNBY2Nlc3NDaGVja3Mp
XSkKKyAgICBpZiAoW3Nlc3Npb24gaXNLaW5kT2ZDbGFzczpbV2ViQ29yZU5TVVJMU2Vzc2lvbiBj
bGFzc11dKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi5kaWRQYXNzQ09SU0FjY2Vzc0NoZWNrczsK
ICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKQEAgLTMxOTksOCArMzE5Nyw3IEBAIFVSTCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjoKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZmxhZykKIHsKICNp
ZiBQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQotICAgIGlmIChtX2F2
UGxheWVyICYmIFttX2F2UGxheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFBy
ZXZlbnRzU2xlZXBEdXJpbmdWaWRlb1BsYXliYWNrOildKQotICAgICAgICBbbV9hdlBsYXllciBf
c2V0UHJldmVudHNTbGVlcER1cmluZ1ZpZGVvUGxheWJhY2s6ZmxhZ107CisgICAgW21fYXZQbGF5
ZXIgX3NldFByZXZlbnRzU2xlZXBEdXJpbmdWaWRlb1BsYXliYWNrOmZsYWddOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZmxhZyk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0JKHJldmlzaW9uIDIx
MjIwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDEwICsxMTIsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkCiAg
ICAgICAgIENBQ29udGV4dCAqbmV3Q29udGV4dCA9IFttX3ZpZGVvTGF5ZXIgY29udGV4dF07CiAg
ICAgICAgIGlmIChvbGRDb250ZXh0ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdD
b250ZXh0KSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMAotICAgICAgICAgICAgaWYgKFtvbGRDb250ZXh0IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q29tbWl0UHJpb3JpdHk6KV0pIHsKLSAgICAgICAgICAgICAg
ICBbb2xkQ29udGV4dCBzZXRDb21taXRQcmlvcml0eTowXTsKLSAgICAgICAgICAgICAgICBbbmV3
Q29udGV4dCBzZXRDb21taXRQcmlvcml0eToxXTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG9sZENvbnRleHQuY29tbWl0UHJpb3JpdHkgPSAwOworICAgICAgICAgICAgbmV3Q29udGV4dC5j
b21taXRQcmlvcml0eSA9IDE7CiAjZW5kaWYKICAgICAgICAgICAgIG1hY2hfcG9ydF90IGZlbmNl
UG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07CiAgICAgICAgICAgICBbbmV3Q29u
dGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCShyZXZpc2lvbiAyMTIyMDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsNyBAQCAtKGlkKWluaXRXaXRoR3JhcGhpY3NDb250
ZXh0M0Q6KEdyYXBoaWNzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHNlbGYuY29udGVudHNTY2Fs
ZSA9IF9kZXZpY2VQaXhlbFJhdGlvOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMTAwCi0gICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2V0Q29sb3JzcGFjZTopXSkKLSAgICAgICAgW3NlbGYgc2V0Q29sb3JzcGFjZTpzUkdCQ29sb3JT
cGFjZVJlZigpXTsKKyAgICBzZWxmLmNvbG9yc3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwog
I2VuZGlmCiAjZW5kaWYKICAgICByZXR1cm4gc2VsZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0JKHJldmlz
aW9uIDIxMjIwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50
RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcxLDE2ICs2NzEsNyBAQCBzdGF0aWMg
aW5saW5lIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNCiAKIHN0YXRpYyBpbnQgdHlwZUZvckV2
ZW50KE5TRXZlbnQgKmV2ZW50KQogewotICAgIGlmIChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7Ci0KLSAgICBpZiAobW91
c2VCdXR0b25Gb3JFdmVudChldmVudCkgPT0gUmlnaHRCdXR0b24pCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVDb250ZXh0TWVudSk7Ci0KLSAgICBpZiAobW91c2VC
dXR0b25Gb3JFdmVudChldmVudCkgPT0gTGVmdEJ1dHRvbiAmJiBtb2RpZmllcnNGb3JFdmVudChl
dmVudCkuY29udGFpbnMoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxLZXkpKQotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlQ29udGV4dE1lbnUpOwotCi0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZU5vbmUpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOwogfQogICAgIAog
Y2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybU1vdXNlRXZl
bnQgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTksMTYgKzIxOSwxMyBAQCAtIChOU1JlY3QpdmlkZW9FbGVt
ZW50UmVjdAogLSAodm9pZClhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRp
b24qKW5vdGlmaWNhdGlvbgogeyAgIAogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwot
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZnVsbHNjcmVlbldpbmRvdyBpcyBvbiB0aGUgYWN0
aXZlIHNwYWNlOyB0aGlzIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZQotICAgIC8vIG9uIDEwLjYgYW5k
IGxhdGVyLCBzbyBkZWZhdWx0IHRvIFlFUyBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJs
ZToKICAgICBOU1dpbmRvdyogZnVsbHNjcmVlbldpbmRvdyA9IFtzZWxmIGZ1bGxzY3JlZW5XaW5k
b3ddOwotICAgIEJPT0wgaXNPbkFjdGl2ZVNwYWNlID0gKFtmdWxsc2NyZWVuV2luZG93IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaXNPbkFjdGl2ZVNwYWNlKV0gPyBbZnVsbHNjcmVlbldp
bmRvdyBpc09uQWN0aXZlU3BhY2VdIDogWUVTKTsKIAogICAgIC8vIFJlcGxpY2F0ZSB0aGUgUXVp
Y2tUaW1lIFBsYXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0aW9u
IHN0YXR1czoKICAgICAvLyBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVu
PyAoTm90ZTogdGhpcyBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgb25seSBhIAogICAgIC8vIHNpbmds
ZSBzY3JlZW4gaXMgYXZhaWxhYmxlLikgIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0aGUg
Y3VycmVudCBzcGFjZT8gSUZGIHNvLCAKICAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2Rl
LiAgICAKLSAgICBpZiAoW2Z1bGxzY3JlZW5XaW5kb3cgc2NyZWVuXSA9PSBbW05TU2NyZWVuIHNj
cmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gJiYgaXNPbkFjdGl2ZVNwYWNlKQorICAgIGlmIChmdWxs
c2NyZWVuV2luZG93LnNjcmVlbiA9PSBbTlNTY3JlZW4gc2NyZWVuc11bMF0gJiYgZnVsbHNjcmVl
bldpbmRvdy5vbkFjdGl2ZVNwYWNlKQogICAgICAgICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsc2Ny
ZWVuV2l0aEFuaW1hdGlvbjpOT107CiB9CiAgICAgICAgICAKQEAgLTM1MywxMCArMzUwLDcgQEAg
LSAodm9pZCl1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW4KICAgICAgICAgICAgIG9wdGlv
bnMgfD0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlRG9jazsKICAgICB9CiAKLSAg
ICBpZiAoW05TQXBwIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UHJlc2VudGF0aW9u
T3B0aW9uczopXSkKLSAgICAgICAgW05TQXBwIHNldFByZXNlbnRhdGlvbk9wdGlvbnM6b3B0aW9u
c107Ci0gICAgZWxzZQotICAgICAgICBTZXRTeXN0ZW1VSU1vZGUoX2lzRW5kaW5nRnVsbHNjcmVl
biA/IGtVSU1vZGVOb3JtYWwgOiBrVUlNb2RlQWxsSGlkZGVuLCAwKTsKKyAgICBOU0FwcC5wcmVz
ZW50YXRpb25PcHRpb25zID0gb3B0aW9uczsKIH0KIAogLSAodm9pZCl1cGRhdGVQb3dlckFzc2Vy
dGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQkocmV2aXNpb24gMjEyMjAyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcwLDE2ICsxNzAsMTQgQEAgLSAodm9pZCl1cGRh
dGVJc1BsYXlpbmc6KEJPT0wpaXNQbGF5aW5nIAogewogICAgIF9wbGF5aW5nID0gaXNQbGF5aW5n
ICYmIHBsYXliYWNrUmF0ZTsKIAotICAgIGlmIChbX3BpcFZpZXdDb250cm9sbGVyIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UGxheWluZzopXSkKLSAgICAgICAgW19waXBWaWV3Q29u
dHJvbGxlciBzZXRQbGF5aW5nOl9wbGF5aW5nXTsKKyAgICBbX3BpcFZpZXdDb250cm9sbGVyIHNl
dFBsYXlpbmc6X3BsYXlpbmddOwogfQogCiAtICh2b2lkKXNldFZpZGVvRGltZW5zaW9uczooTlNT
aXplKXZpZGVvRGltZW5zaW9ucwogewogICAgIF92aWRlb0RpbWVuc2lvbnMgPSB2aWRlb0RpbWVu
c2lvbnM7CiAKLSAgICBpZiAoW19waXBWaWV3Q29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldEFzcGVjdFJhdGlvOildKQotICAgICAgICBbX3BpcFZpZXdDb250cm9sbGVy
IHNldEFzcGVjdFJhdGlvOl92aWRlb0RpbWVuc2lvbnNdOworICAgIFtfcGlwVmlld0NvbnRyb2xs
ZXIgc2V0QXNwZWN0UmF0aW86X3ZpZGVvRGltZW5zaW9uc107CiB9CiAKIC0gKHZvaWQpc2V0VXBQ
SVBGb3JWaWRlb1ZpZXc6KE5TVmlldyAqKXZpZGVvVmlldyB3aXRoRnJhbWU6KE5TUmVjdClmcmFt
ZSBpbldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKQEAgLTE5MCwxMCArMTg4LDggQEAgLSAodm9p
ZClzZXRVcFBJUEZvclZpZGVvVmlldzooTlNWaWV3ICopdgogCiAgICAgX3BpcFZpZXdDb250cm9s
bGVyID0gYWRvcHROUyhbW2dldFBJUFZpZXdDb250cm9sbGVyQ2xhc3MoKSBhbGxvY10gaW5pdF0p
OwogICAgIFtfcGlwVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgaWYgKFtf
cGlwVmlld0NvbnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRVc2VyQ2Fu
UmVzaXplOildKQotICAgICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHNldFVzZXJDYW5SZXNpemU6
WUVTXTsKLSAgICBpZiAoW19waXBWaWV3Q29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldFBsYXlpbmc6KV0pCi0gICAgICAgIFtfcGlwVmlld0NvbnRyb2xsZXIgc2V0UGxh
eWluZzpfcGxheWluZ107CisgICAgW19waXBWaWV3Q29udHJvbGxlciBzZXRVc2VyQ2FuUmVzaXpl
OllFU107CisgICAgW19waXBWaWV3Q29udHJvbGxlciBzZXRQbGF5aW5nOl9wbGF5aW5nXTsKICAg
ICBbc2VsZiBzZXRWaWRlb0RpbWVuc2lvbnM6TlNFcXVhbFNpemVzKF92aWRlb0RpbWVuc2lvbnMs
IE5TWmVyb1NpemUpID8gZnJhbWUuc2l6ZSA6IF92aWRlb0RpbWVuc2lvbnNdOwogICAgIGlmIChf
d2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjICYmIF93ZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMtPndlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCiAgICAgICAgIF93ZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMtPndlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVv
TGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3RGaWxsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmgJKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTEgQEAg
dHlwZWRlZiB2b2lkICheQ0ZDYWNoZWRVUkxSZXNwb25zZUNhbGxCYQogI2VuZGlmCiAKICNpZiBk
ZWZpbmVkKF9fT0JKQ19fKQorQGludGVyZmFjZSBOU1VSTENhY2hlICgpCistKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTooTlNVSW50ZWdlciltZW1vcnlDYXBhY2l0eSBkaXNr
Q2FwYWNpdHk6KE5TVUludGVnZXIpZGlza0NhcGFjaXR5IHJlbGF0aXZlUGF0aDooTlNTdHJpbmcg
KilwYXRoOworLSAoQ0ZVUkxDYWNoZVJlZilfQ0ZVUkxDYWNoZTsKK0BlbmQKKwogQGludGVyZmFj
ZSBOU1VSTFJlcXVlc3QgKCkKICsgKE5TQXJyYXkgKilhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0OihOU1N0cmluZyAqKWhvc3Q7CiArICh2b2lkKXNldEFsbG93c1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZTooTlNBcnJheSAqKWFsbG93IGZvckhvc3Q6KE5TU3RyaW5nICopaG9z
dDsKQEAgLTE5MCwxNSArMTk1LDYgQEAgQ0ZVUkxSZXNwb25zZVJlZiBDRlVSTFJlc3BvbnNlQ3Jl
YXRlV2l0aAogCiBXVEZfRVhURVJOX0NfRU5ECiAKLS8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBm
b3J3YXJkIGRlY2xhcmUgdGhpcyBTUEkgd2hlbiBidWlsZGluZyBmb3IgaU9TIHdpdGhvdXQgdGhl
IEFwcGxlIEludGVybmFsIFNESy4KLS8vIEFzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzE5MDI1MDE2Piwgd2UgbXVzdCBmb3J3YXJkIGRlY2xhcmUgdGhpcyBTUEkgcmVnYXJkbGVz
cyBvZiB3aGV0aGVyCi0vLyB3ZSBhcmUgYnVpbGRpbmcgd2l0aCB0aGUgQXBwbGUgSW50ZXJuYWwg
U0RLLgotI2lmIGRlZmluZWQoX19PQkpDX18pICYmIFBMQVRGT1JNKElPUykKLUBpbnRlcmZhY2Ug
TlNVUkxDYWNoZSAoKQotLShpZClfaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTooTlNVSW50ZWdlcilt
ZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6KE5TVUludGVnZXIpZGlza0NhcGFjaXR5IHJlbGF0
aXZlUGF0aDooTlNTdHJpbmcgKilwYXRoOwotQGVuZAotI2VuZGlmCi0KICNpZiBkZWZpbmVkKF9f
T0JKQ19fKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIGVudW0gOiBOU1VJbnRlZ2VyIHsK
ICAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4gPSAzLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05FRmls
dGVyU291cmNlU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2NvY29hL05FRmlsdGVyU291cmNlU1BJLmgJKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MywxNSArNzMsMTEgQEAgdHlwZWRlZiB2b2lkICheTkVGaWx0ZXJTb3VyY2VEZWNp
c2lvbkhhbgogLSAodm9pZClyZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEgZGVjaXNpb25IYW5k
bGVyOihORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXI7CiAtICh2
b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEZWNpc2lvbkhhbmRsZXI6KE5FRmlsdGVyU291cmNlRGVj
aXNpb25IYW5kbGVyKWRlY2lzaW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVtZWRpYXRlV2l0aERlY2lz
aW9uSGFuZGxlcjooTkVGaWx0ZXJTb3VyY2VEZWNpc2lvbkhhbmRsZXIpZGVjaXNpb25IYW5kbGVy
OworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApCitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzb3VyY2VBcHBJ
ZGVudGlmaWVyOworI2VuZGlmCiBAZW5kCiAKICNlbmRpZgogCiAjZW5kaWYgLy8gIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspCi0KLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotLy8gRklYTUU6IENvbmZpbmUgdGhp
cyB0byB0aGUgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspIHNlY3Rpb24gb25jZSB0aGlzIGlzIGRl
ZmluZWQgaW4gYW4gU0RLICg8cmRhcjovL3Byb2JsZW0vMjkxNDcxNzQ+KS4KLUBpbnRlcmZhY2Ug
TkVGaWx0ZXJTb3VyY2UgKFdLU3RhZ2luZykKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNv
dXJjZUFwcEJ1bmRsZUlEOwotQGVuZAotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgJKHJldmlzaW9uIDIxMjIwMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmZGVmIF9fT0JKQ19fCiAKKyNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ0FDb250ZXh0Lmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJI
b3N0Lmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CkBAIC00MSwxMiArNDIsNiBAQAogI2ltcG9y
dCA8UXVhcnR6Q29yZS9DQURpc3BsYXkuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotQGludGVyZmFjZSBD
QUNvbnRleHQgKCkKLS0gKHZvaWQpc2V0Q29tbWl0UHJpb3JpdHk6KHVpbnQzMl90KWNvbW1pdFBy
aW9yaXR5OwotQGVuZAotI2VuZGlmCi0KICNlbmRpZiAvLyBfX09CSkNfXwogCiAjZWxzZQpAQCAt
NjIsNiArNTcsNyBAQAogLSAodWludDMyX3QpY3JlYXRlSW1hZ2VTbG90OihDR1NpemUpc2l6ZSBo
YXNBbHBoYTooQk9PTClmbGFnOwogLSAodm9pZClkZWxldGVTbG90Oih1aW50MzJfdCluYW1lOwog
LSAodm9pZClpbnZhbGlkYXRlOworLSAodm9pZClpbnZhbGlkYXRlRmVuY2VzOwogLSAobWFjaF9w
b3J0X3QpY3JlYXRlRmVuY2VQb3J0OwogLSAodm9pZClzZXRGZW5jZVBvcnQ6KG1hY2hfcG9ydF90
KXBvcnQ7CiAtICh2b2lkKXNldEZlbmNlUG9ydDoobWFjaF9wb3J0X3QpcG9ydCBjb21taXRIYW5k
bGVyOih2b2lkKF4pKHZvaWQpKWJsb2NrOwpAQCAtMTk4LDEzICsxOTQsNiBAQCBDRlR5cGVJRCBD
QU1hY2hQb3J0R2V0VHlwZUlEKHZvaWQpOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKLS8vIEZJWE1F
OiBNb3ZlIHRoaXMgaW50byB0aGUgQVBQTEVfSU5URVJOQUxfU0RLIGJsb2NrIG9uY2UgaXQncyBp
biBhbiBTREsuCi1AaW50ZXJmYWNlIENBQ29udGV4dCAoQWRkaXRpb25hbERldGFpbHMpCi0jaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTEwMCkKLS0gKHZvaWQpaW52YWxpZGF0ZUZlbmNlczsKLSNlbmRpZgot
QGVuZAotCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FUaWxlZExheWVyUmVtb3ZlSW1tZWRp
YXRlbHk7CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckNvbG9ySW52ZXJ0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL0RhdGFEZXRl
Y3RvcnNVSVNQSS5oCShyZXZpc2lvbiAyMTIyMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw4IEBACiAKICNlbHNlCiAKKyNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9yc0NvcmVTUEku
aD4KKwogQGludGVyZmFjZSBEREFjdGlvbiA6IE5TT2JqZWN0CiBAZW5kCiAKQEAgLTU0LDE1ICs1
NiwxMiBAQAogKyAoREREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsKICsg
KE5TQXJyYXkgKil0YXBBbmRIb2xkU2NoZW1lczsKIC0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERB
Y3Rpb24gKilhY3Rpb24gZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilh
bGVydENvbnRyb2xsZXIgaW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJv
bGxlckludGVyYWN0aW9uRGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7CistIChOU0FycmF5
ICopYWN0aW9uc0ZvclVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVu
dGlmaWVyIHNlbGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQgcmVzdWx0czooTlNB
cnJheSAqKXJlc3VsdHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4dDsKKy0gKEREUmVz
dWx0UmVmKXJlc3VsdEZvclVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNTdHJpbmcgKilp
ZGVudGlmaWVyIHNlbGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQgcmVzdWx0czoo
TlNBcnJheSAqKXJlc3VsdHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4dCBleHRlbmRl
ZENvbnRleHQ6KE5TRGljdGlvbmFyeSAqKilleHRlbmRlZENvbnRleHQ7CiBAZW5kCiAKICNlbmRp
ZgogCi1AaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoRGV0YWlsc1RvQmVSZW1vdmVk
KQotLy8gRklYTUU6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgPHJkYXI6Ly9wcm9i
bGVtLzE2MzQ2OTEzPiBpcyBmaXhlZC4KLS0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihp
ZClhbmNob3IgdXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7Ci1AZW5k
Ci0KIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpCiBTT0ZUX0xJ
TktfQ0xBU1MoRGF0YURldGVjdG9yc1VJLCBERERldGVjdGlvbkNvbnRyb2xsZXIpCiBTT0ZUX0xJ
TktfQ09OU1RBTlQoRGF0YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0LCBj
b25zdCBOU1N0cmluZyAqKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9M
b29rdXBTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFj
L0xvb2t1cFNQSS5oCShyZXZpc2lvbiAyMTIyMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvbWFjL0xvb2t1cFNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyNCArNDIsMTMgQEAg
QGludGVyZmFjZSBMVUxvb2t1cERlZmluaXRpb25Nb2R1bGUgOiBOUwogCiArIChOU1JhbmdlKXRv
a2VuUmFuZ2VGb3JTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJhbmdlOihOU1JhbmdlKXJhbmdl
IG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKilvcHRpb25zOwogKyAodm9pZClzaG93RGVmaW5pdGlv
bkZvclRlcm06KE5TQXR0cmlidXRlZFN0cmluZyAqKXRlcm0gYXRMb2NhdGlvbjooTlNQb2ludClz
Y3JlZW5Qb2ludCBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zOworKyAodm9pZClzaG93
RGVmaW5pdGlvbkZvclRlcm06KE5TQXR0cmlidXRlZFN0cmluZyAqKXRlcm0gcmVsYXRpdmVUb1Jl
Y3Q6KE5TUmVjdClwb3NpdGlvbmluZ1JlY3Qgb2ZWaWV3OihOU1ZpZXcgKilwb3NpdGlvbmluZ1Zp
ZXcgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsKICsgKHZvaWQpaGlkZURlZmluaXRp
b247Ci0KLUBlbmQKLQotI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi1AaW50
ZXJmYWNlIExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZSAoKQotCiArIChpZDxOU0ltbWVkaWF0ZUFj
dGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KWxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJt
OihOU0F0dHJpYnV0ZWRTdHJpbmcgKil0ZXJtIGF0TG9jYXRpb246KE5TUG9pbnQpc2NyZWVuUG9p
bnQgb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsKLQogKyAoaWQ8TlNJbW1lZGlhdGVB
Y3Rpb25BbmltYXRpb25Db250cm9sbGVyPilsb29rdXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVy
bTooTlNBdHRyaWJ1dGVkU3RyaW5nICopdGVybSByZWxhdGl2ZVRvUmVjdDooTlNSZWN0KXBvc2l0
aW9uaW5nUmVjdCBvZlZpZXc6KE5TVmlldyAqKXBvc2l0aW9uaW5nVmlldyBvcHRpb25zOihOU0Rp
Y3Rpb25hcnkgKilvcHRpb25zOwogCiBAZW5kCiAKLUBpbnRlcmZhY2UgTFVMb29rdXBEZWZpbml0
aW9uTW9kdWxlICgpCi0KLSsgKHZvaWQpc2hvd0RlZmluaXRpb25Gb3JUZXJtOihOU0F0dHJpYnV0
ZWRTdHJpbmcgKil0ZXJtIHJlbGF0aXZlVG9SZWN0OihOU1JlY3QpcG9zaXRpb25pbmdSZWN0IG9m
VmlldzooTlNWaWV3ICopcG9zaXRpb25pbmdWaWV3IG9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKW9w
dGlvbnM7Ci0KLUBlbmQKKyNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9t
YWMvTlNNZW51U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L21hYy9OU01lbnVTUEkuaAkocmV2aXNpb24gMjEyMjAyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL21hYy9OU01lbnVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjUgKzI3LDI4
IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLS8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBpbmNs
dWRlIHRoZSBhcHByb3ByaWF0ZSBpbnRlcm5hbCBoZWFkZXJzLgorI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisKKyNpbXBvcnQgPEFwcEtpdC9OU01lbnVfUHJpdmF0ZS5oPgorCisjZWxzZQog
CiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU01lbnVUeXBlKSB7CiAgICAgTlNNZW51VHlw
ZU5vbmUgPSAwLAogICAgIE5TTWVudVR5cGVDb250ZXh0TWVudSwKIH07CiAKLUBpbnRlcmZhY2Ug
TlNNZW51IChQcml2YXRlKQorQGludGVyZmFjZSBOU01lbnUgKCkKICsgKE5TTWVudVR5cGUpbWVu
dVR5cGVGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50OwogQGVuZAogCiBAY2xhc3MgUUxQcmV2aWV3
TWVudUl0ZW07CiAKLUBpbnRlcmZhY2UgTlNNZW51SXRlbSAoUHJpdmF0ZSkKK0BpbnRlcmZhY2Ug
TlNNZW51SXRlbSAoKSA8TlNVc2VySW50ZXJmYWNlSXRlbUlkZW50aWZpY2F0aW9uPgogKyAoUUxQ
cmV2aWV3TWVudUl0ZW0gKilzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtOwogKyAoTlNNZW51SXRl
bSAqKXN0YW5kYXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczooTlNBcnJheSAqKWl0ZW1zOwogQGVu
ZAogCi1AaW50ZXJmYWNlIE5TTWVudUl0ZW0gKCkgPE5TVXNlckludGVyZmFjZUl0ZW1JZGVudGlm
aWNhdGlvbj4KLUBlbmQKKyNlbmRpZgogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9tYWMvVFVDYWxsU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL21hYy9UVUNhbGxTUEkuaAkocmV2aXNpb24gMjEyMjAyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9UVUNhbGxTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsMTIgQEAKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPFRlbGVw
aG9ueVV0aWxpdGllcy9UVUNhbGxfU3RyaW5ncy5oPgorCisjZWxzZQorCiBAaW50ZXJmYWNlIFRV
Q2FsbCA6IE5TT2JqZWN0CiBAZW5kCiAKQEAgLTMzLDUgKzM5LDcgQEAgQGludGVyZmFjZSBUVUNh
bGwgKFN0cmluZ3MpCiArIChOU1N0cmluZyAqKXN1cHBsZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxs
U3RyaW5nOwogQGVuZAogCisjZW5kaWYKKwogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09Q
VElPTkFMKFRlbGVwaG9ueVV0aWxpdGllcykKIFNPRlRfTElOS19DTEFTUyhUZWxlcGhvbnlVdGls
aXRpZXMsIFRVQ2FsbCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE3
LTAyLTEyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBTb21lIC1yZXNwb25kc1RvU2VsZWN0b3I6IGNoZWNrcyBhcmUgdW5uZWNlc3NhcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODE4MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vbWFj
L0xheWVySG9zdGluZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0Nv
bnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpOiBSZW1vdmVkIHVubmVjZXNzYXJ5
CisgICAgICAgICAgLXJlc3BvbmRzVG9TZWxlY3RvcjogY2hlY2suCisgICAgICAgIChXZWJLaXQ6
OkxheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpOiBEaXR0by4K
KworICAgICAgICAqIFBsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2Vi
S2l0OjptZW51SXRlbVRpdGxlRm9yVGVsZXBob25lTnVtYmVyR3JvdXApOiBEaXR0by4KKworICAg
ICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDogTW92ZWQgZGVjbGFyYXRpb24gb2YK
KyAgICAgICAgICAtW1VJU2Nyb2xsVmlldyBfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb25dIGZy
b20gV0tXZWJWaWV3Lm1tIHRvIHRoZQorICAgICAgICAgICFVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KSBzZWN0aW9uIGhlcmUuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpzZXRTaGFyZWRIVFRQQ29va2llU3Rv
cmFnZSk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgLXJlc3BvbmRzVG9TZWxlY3RvcjoKKyAgICAgICAg
ICBjaGVjay4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAg
ICAgICAoV2ViS2l0Ojp0eXBlRm9yRXZlbnQpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVZp
c2libGVDb250ZW50UmVjdEFmdGVyU2Nyb2xsSW5WaWV3Ol0pOiBEaXR0by4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1PcGVuUGF5bWVudFNldHVwKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaXNtaXNzQ29u
dGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzRnJvbVZpZXdPbmx5KTogRGl0dG8uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlciBwcmV2aWV3QWN0aW9uc10pOiBSZW1vdmVkIGNo
ZWNrIHdoZXRoZXIgX1dLRWxlbWVudEFjdGlvbgorICAgICAgICAgIHJlc3BvbmRzIHRvIC1ydW5B
Y3Rpb25XaXRoRWxlbWVudEluZm86LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlv
blNoZWV0QXNzaXN0YW50Lm1tOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHNo
b3dEYXRhRGV0ZWN0b3JzU2hlZXRdKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
bG9va3VwOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hhcmU6XSk6IERp
dHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGRTaG9ydGN1dDpdKTogRGl0dG8uCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Byb21wdEZvclJlcGxhY2U6XSk6IERpdHRvLgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF90cmFuc2xpdGVyYXRlQ2hpbmVzZTpdKTogRGl0dG8uCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZEhhbmRsZUtleUV2ZW50OmV2ZW50V2FzSGFuZGxl
ZDpdKTogUmVtb3ZlZCBjYWxsIHRvCisgICAgICAgICAgLVtVSUtleWJvYXJkSW1wbCBkaWRIYW5k
bGVXZWJLZXlFdmVudF0sIHdoaWNoIGlzIGEgbm8tb3AuCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2ludGVycHJldEtleUV2ZW50OmlzQ2hhckV2ZW50Ol0pOiBSZW1vdmVkIHVubmVjZXNzYXJ5
IC1yZXNwb25kc1RvU2VsZWN0b3I6CisgICAgICAgICAgY2hlY2suCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2RhdGFGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6YXRQb3NpdGlvbjp0eXBlOl0p
OiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eTo6Y3JlYXRlRmVuY2UpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRU
ZXh0XSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVh
dGVTaGFyZU1lbnVJdGVtKTogRGl0dG8uCisKIDIwMTctMDItMTEgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggY3Jhc2hlcyBhZnRlciBb
TlNVUkxTZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjEy
MjAyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxNSArMTA1LDEyIEBAIENHQ29sb3JTcGFjZVJlZiBM
YXllckhvc3RpbmdDb250ZXh0Ojpjb2wKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCiB2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6
OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1hdGNoVW50YWdnZWRDb250
ZW50KQogewotICAgIGlmIChbbV9jb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29udGVudDopXSkKLSAgICAgICAgW21fY29udGV4dCBzZXRD
b2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOworICAg
IFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29udGVudDpjb2xvck1hdGNoVW50YWdn
ZWRDb250ZW50XTsKIH0KIAogYm9vbCBMYXllckhvc3RpbmdDb250ZXh0Ojpjb2xvck1hdGNoVW50
YWdnZWRDb250ZW50KCkgY29uc3QKIHsKLSAgICBpZiAoW21fY29udGV4dCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpXSkKLSAgICAgICAgcmV0
dXJuIFttX2NvbnRleHQgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOwog
fQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9NZW51VXRpbGl0
aWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9NZW51VXRp
bGl0aWVzLm1tCShyZXZpc2lvbiAyMTIyMDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvTWVudVV0aWxpdGllcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogTlNTdHJpbmcgKm1lbnVJdGVtVGl0bGVGb3JUZWxlcGhvbmVOdW1i
ZXJHcm91cCgpCiB7Ci0gICAgaWYgKFtnZXRUVUNhbGxDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc3VwcGxlbWVudGFsRGlhbFRlbGVwaG9ueUNhbGxTdHJpbmcpXSkKLSAgICAg
ICAgcmV0dXJuIFtnZXRUVUNhbGxDbGFzcygpIHN1cHBsZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxs
U3RyaW5nXTsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2FsbCBVc2luZyBpUGhvbmU6Iiwg
Im1lbnUgaXRlbSB0aXRsZSBmb3IgcGhvbmUgbnVtYmVyIik7CisgICAgcmV0dXJuIFtnZXRUVUNh
bGxDbGFzcygpIHN1cHBsZW1lbnRhbERpYWxUZWxlcGhvbnlDYWxsU3RyaW5nXTsKIH0KIAogTlNN
ZW51SXRlbSAqbWVudUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhv
bmVOdW1iZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCShyZXZpc2lvbiAyMTIyMDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9z
L1VJS2l0U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsNyBAQCB0eXBlZGVmIGVu
dW0gewogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzQW5pbWF0aW5n
U2Nyb2xsKSBCT09MIGlzQW5pbWF0aW5nU2Nyb2xsOwogQHByb3BlcnR5IChub25hdG9taWMpIENH
RmxvYXQgaG9yaXpvbnRhbFNjcm9sbERlY2VsZXJhdGlvbkZhY3RvcjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBDR0Zsb2F0IHZlcnRpY2FsU2Nyb2xsRGVjZWxlcmF0aW9uRmFjdG9yOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlv
bjsKIEBlbmQKIAogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQpAQCAtNTIxLDYg
KzUyMiw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJV0tHZXN0dXJlVHkKIC0gKHZv
aWQpc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rp
b25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoOwogLSAodm9pZClzaG93RGljdGlvbmFy
eUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRp
b25SZWN0OwogLSAodm9pZClzaG93U2hhcmVTaGVldEZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRl
cm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0OworLSAodm9pZClzaG93VGV4dFNl
cnZpY2VGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2Vu
dGF0aW9uUmVjdDsKKy0gKHZvaWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCB3
aXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUxvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyICpzZWxlY3Rpb25Mb25nUHJlc3NSZWNvZ25pemVyOwogQGVuZAogCkBAIC01NTgsMTIg
KzU2MSwxNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdLSGFuZGxlUG9zCiBAaW50
ZXJmYWNlIFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgOiBVSVRleHRJbnRlcmFjdGlvbkFz
c2lzdGFudCA8VUlSZXNwb25kZXJTdGFuZGFyZEVkaXRBY3Rpb25zPgogQGVuZAogCi1AaW50ZXJm
YWNlIFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Np
c3RhbnREZXRhaWxzKQorQGludGVyZmFjZSBVSVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50ICgp
CiAtICh2b2lkKXNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdp
dGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1
cmVSZWNvZ25pemVyU3RhdGUpZ2VzdHVyZVN0YXRlIHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZs
YWdzKWZsYWdzOwogLSAodm9pZClzaG93RGljdGlvbmFyeUZvcjooTlNTdHJpbmcgKilzZWxlY3Rl
ZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0OwogLSAodm9pZClzZWxlY3Rp
b25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihV
SVdLU2VsZWN0aW9uVG91Y2gpdG91Y2g7CiAtICh2b2lkKXNob3dUZXh0U3R5bGVPcHRpb25zOwog
LSAodm9pZCloaWRlVGV4dFN0eWxlT3B0aW9uczsKKy0gKHZvaWQpbG9va3VwOihOU1N0cmluZyAq
KXRleHRXaXRoQ29udGV4dCB3aXRoUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZnJvbVJlY3Q6KENHUmVj
dClwcmVzZW50YXRpb25SZWN0OworLSAodm9pZClzaG93U2hhcmVTaGVldEZvcjooTlNTdHJpbmcg
KilzZWxlY3RlZFRlcm0gZnJvbVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0OworLSAodm9p
ZClzaG93VGV4dFNlcnZpY2VGb3I6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihD
R1JlY3QpcHJlc2VudGF0aW9uUmVjdDsKKy0gKHZvaWQpc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JU
ZXh0OihOU1N0cmluZyAqKXRleHQ7CistICh2b2lkKXNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJh
dGlvbkZvclRleHQ6KE5TU3RyaW5nICopdGV4dDsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBhc3NpZ24pIFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKmxvdXBlR2VzdHVy
ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBVSVRhcEdlc3R1cmVS
ZWNvZ25pemVyICpzaW5nbGVUYXBHZXN0dXJlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODAsMTAgKzE4MCw2IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb24K
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAogdm9pZCBDaGls
ZFByb2Nlc3M6OnNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaWRlbnRpZmllcikKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBydW50aW1lIGNoZWNr
IHdoZW4gaXQncyBub3QgbmVlZGVkIChzb29uKS4KLSAgICBpZiAoIVtOU0hUVFBDb29raWVTdG9y
YWdlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFNoYXJlZEhUVFBDb29raWVTdG9y
YWdlOildKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjb29r
aWVTdG9yYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGlkZW50aWZpZXIuZGF0YSgpLCBpZGVudGlmaWVyLnNpemUoKSkpOwogICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlID0gYWRvcHRDRihD
RkhUVFBDb29raWVTdG9yYWdlQ3JlYXRlRnJvbUlkZW50aWZ5aW5nRGF0YShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBjb29raWVTdG9yYWdlRGF0YS5nZXQoKSkpOwogICAgIFtOU0hUVFBDb29raWVTdG9y
YWdlIF9zZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTphZG9wdE5TKFtbTlNIVFRQQ29va2llU3Rv
cmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTp1aVByb2Nlc3NDb29raWVT
dG9yYWdlLmdldCgpXSkuZ2V0KCldOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9X
ZWJFdmVudEZhY3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9XZWJFdmVudEZhY3RvcnkubW0JKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjgsMTYg
KzMyOCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmkKIAogc3Rh
dGljIGludCB0eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7Ci0gICAgaWYgKFtOU01lbnUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildKQotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRd
KTsKLSAgICAKLSAgICBpZiAobW91c2VCdXR0b25Gb3JFdmVudChldmVudCkgPT0gV2ViTW91c2VF
dmVudDo6UmlnaHRCdXR0b24pCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVu
dVR5cGVDb250ZXh0TWVudSk7Ci0gICAgCi0gICAgaWYgKG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZl
bnQpID09IFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b24gJiYgKG1vZGlmaWVyc0ZvckV2ZW50KGV2
ZW50KSAmIFdlYkV2ZW50OjpDb250cm9sS2V5KSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51KTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihOU01lbnVUeXBlTm9uZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oW05T
TWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7CiB9CiAKIGJvb2wgV2ViRXZlbnRGYWN0b3J5
OjpzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGljayhjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW1hZ2VQ
cmV2aWV3Vmlld0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw4ICs5Nyw3IEBAIC0gKE5TQXJyYXkgPFVJVmlld0Nv
bnRyb2xsZXJQcmV2aWV3QWN0aW8KICAgICBOU011dGFibGVBcnJheTxVSVZpZXdDb250cm9sbGVy
UHJldmlld0FjdGlvbiAqPiAqcHJldmlld0FjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
OwogICAgIGZvciAoX1dLRWxlbWVudEFjdGlvbiAqaW1hZ2VBY3Rpb24gaW4gX2ltYWdlQWN0aW9u
cy5nZXQoKSkgewogICAgICAgICBVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlvbiAqcHJldmll
d0FjdGlvbiA9IFtVSVZpZXdDb250cm9sbGVyUHJldmlld0FjdGlvbiBhY3Rpb25XaXRoVGl0bGU6
aW1hZ2VBY3Rpb24udGl0bGUgaGFuZGxlcjpeKFVJVmlld0NvbnRyb2xsZXJQcmV2aWV3QWN0aW9u
ICphY3Rpb24sIFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaWV3Q29udHJvbGxlcikgewotICAg
ICAgICAgICAgaWYgKFtpbWFnZUFjdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJ1
bkFjdGlvbldpdGhFbGVtZW50SW5mbzopXSkKLSAgICAgICAgICAgICAgICBbaW1hZ2VBY3Rpb24g
cnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOl9hY3RpdmF0ZWRFbGVtZW50SW5mby5nZXQoKV07Cisg
ICAgICAgICAgICBbaW1hZ2VBY3Rpb24gcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOl9hY3RpdmF0
ZWRFbGVtZW50SW5mby5nZXQoKV07CiAgICAgICAgIH1dOwogCiAgICAgICAgIFtwcmV2aWV3QWN0
aW9ucyBhZGRPYmplY3Q6cHJldmlld0FjdGlvbl07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjEyMjAyKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE0Miw3ICsxNDIsNiBAQCBDRlN0cmluZ1JlZiBrQVhTQWxsb3dGb3JjZVdlYlNj
YWxpbmdFbmFiCiBAaW50ZXJmYWNlIFVJU2Nyb2xsVmlldyAoVUlTY3JvbGxWaWV3SW50ZXJuYWwp
CiAtICh2b2lkKV9hZGp1c3RGb3JBdXRvbWF0aWNLZXlib2FyZEluZm86KE5TRGljdGlvbmFyeSop
aW5mbyBhbmltYXRlZDooQk9PTClhbmltYXRlZCBsYXN0QWRqdXN0bWVudDooQ0dGbG9hdCopbGFz
dEFkanVzdG1lbnQ7CiAtIChCT09MKV9pc1Njcm9sbGluZ1RvVG9wOwotLSAoQk9PTClfaXNJbnRl
cnJ1cHRpbmdEZWNlbGVyYXRpb247CiAtIChDR1BvaW50KV9hbmltYXRlZFRhcmdldE9mZnNldDsK
IEBlbmQKIApAQCAtMjE4MSw4ICsyMTgwLDggQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0QWZ0ZXJTYwogICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtzZWxmIF9zY3JvbGxWaWV3
SXNSdWJiZXJCYW5kaW5nXTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGNhbiBiZSBtYWRlIHN0YXRp
YyBhZnRlciB3ZSBzdG9wIHN1cHBvcnRpbmcgaU9TIDgueC4KLSAgICBpZiAoaXNTdGFibGVTdGF0
ZSAmJiBbc2Nyb2xsVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9pc0ludGVycnVw
dGluZ0RlY2VsZXJhdGlvbildKQotICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtzY3JvbGxWaWV3
IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uKV07
CisgICAgaWYgKGlzU3RhYmxlU3RhdGUpCisgICAgICAgIGlzU3RhYmxlU3RhdGUgPSAhc2Nyb2xs
Vmlldy5faXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb247CiAKICAgICBpZiAoTlNOdW1iZXIgKnN0
YWJsZU92ZXJyaWRlID0gc2VsZi5fc3RhYmxlU3RhdGVPdmVycmlkZSkKICAgICAgICAgaXNTdGFi
bGVTdGF0ZSA9IHN0YWJsZU92ZXJyaWRlLmJvb2xWYWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyMTIyMDIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI3LDEzICsyMjcsNiBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9yCiB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBt
ZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlv
bjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBwYXNzTGlicmFy
eSA9IGFkb3B0TlMoW2FsbG9jUEtQYXNzTGlicmFyeUluc3RhbmNlKCkgaW5pdF0pOwotICAgIGlm
ICghW3Bhc3NMaWJyYXJ5IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3BlblBheW1lbnRT
ZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjpkb21haW46Y29tcGxldGlvbjopXSkgewotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyXSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJjaGFu
dElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBsZXRp
b246W2NvbXBsZXRpb25IYW5kbGVyXShCT09MIHJlc3VsdCkgewogICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCByZXN1bHRdIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMTIyMDIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMxMTIsMTEgKzMxMTIsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaXNtaXNzQ29udGVudFJlbGF0
aXZlCiAgICAgaWYgKG1fdmlldy53aW5kb3cuaXNLZXlXaW5kb3cgfHwgaGFzQWN0aXZlSW1tZWRp
YXRlQWN0aW9uKSB7CiAgICAgICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlMb29rdXA6OmhpZGVQb3B1
cCgpOwogCi0gICAgICAgIGlmIChEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKSB7Ci0gICAgICAgICAg
ICBEREFjdGlvbnNNYW5hZ2VyICphY3Rpb25zTWFuYWdlciA9IFtnZXREREFjdGlvbnNNYW5hZ2Vy
Q2xhc3MoKSBzaGFyZWRNYW5hZ2VyXTsKLSAgICAgICAgICAgIGlmIChbYWN0aW9uc01hbmFnZXIg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5jaG9y
T25GYWlsdXJlOildKQotICAgICAgICAgICAgICAgIFthY3Rpb25zTWFuYWdlciByZXF1ZXN0QnVi
YmxlQ2xvc3VyZVVuYW5jaG9yT25GYWlsdXJlOllFU107Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KERhdGFEZXRlY3RvcnNMaWJyYXJ5KCkpCisgICAgICAgICAgICBbW2dldEREQWN0aW9uc01hbmFn
ZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JPbkZh
aWx1cmU6WUVTXTsKICAgICB9CiAKICAgICBjbGVhclRleHRJbmRpY2F0b3JXaXRoQW5pbWF0aW9u
KFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rp
b25TaGVldEFzc2lzdGFudC5tbQkocmV2aXNpb24gMjEyMjAyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01OSwxMCArNTksNiBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoVENDKQogU09GVF9M
SU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0LCBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChD
RlN0cmluZ1JlZiBzZXJ2aWNlLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyksIChzZXJ2aWNlLCBv
cHRpb25zKSkKIFNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2aWNlUGhvdG9zLCBDRlN0
cmluZ1JlZikKIAotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKFN0YWdpbmdUb1Jl
bW92ZSkKLS0gKE5TQXJyYXkgKilhY3Rpb25zRm9yVVJMOihOU1VSTCAqKXVybCBpZGVudGlmaWVy
OihOU1N0cmluZyAqKWlkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OihOU1N0cmluZyAqKXNlbGVjdGVk
VGV4dCByZXN1bHRzOihOU0FycmF5ICopcmVzdWx0cyBjb250ZXh0OihOU0RpY3Rpb25hcnkgKilj
b250ZXh0OwotQGVuZAotCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAjaWYgSEFWRShBUFBf
TElOS1MpCkBAIC00ODAsMjkgKzQ3NiwyNSBAQCAtICh2b2lkKXNob3dEYXRhRGV0ZWN0b3JzU2hl
ZXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgREREZXRlY3Rpb25Db250cm9sbGVyICpjb250cm9s
bGVyID0gW2dldERERGV0ZWN0aW9uQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQ29udHJvbGxlcl07
Ci0gICAgTlNBcnJheSAqZGF0YURldGVjdG9yc0FjdGlvbnMgPSBuaWw7Ci0gICAgaWYgKFtjb250
cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWN0aW9uc0ZvclVSTDppZGVudGlm
aWVyOnNlbGVjdGVkVGV4dDpyZXN1bHRzOmNvbnRleHQ6KV0pIHsKLSAgICAgICAgTlNEaWN0aW9u
YXJ5ICpjb250ZXh0ID0gbmlsOwotICAgICAgICBOU1N0cmluZyAqdGV4dEF0U2VsZWN0aW9uID0g
bmlsOwotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5kZWRDb250
ZXh0OwotCi0gICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNoZWV0QXNzaXN0YW50OildKQotICAgICAg
ICAgICAgY29udGV4dCA9IFtkZWxlZ2F0ZSBkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNo
ZWV0QXNzaXN0YW50OnNlbGZdOwotICAgICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KV0pCi0g
ICAgICAgICAgICB0ZXh0QXRTZWxlY3Rpb24gPSBbZGVsZWdhdGUgc2VsZWN0ZWRUZXh0Rm9yQWN0
aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07Ci0gICAgICAgIGlmICghcG9zaXRpb25JbmZvcm1hdGlv
bi50ZXh0QmVmb3JlLmlzRW1wdHkoKSB8fCAhcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBleHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAewot
ICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3JzTGVhZGluZ1RleHQoKSA6IHBvc2l0aW9u
SW5mb3JtYXRpb24udGV4dEJlZm9yZSwKLSAgICAgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9y
c1RyYWlsaW5nVGV4dCgpIDogcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIsCi0gICAgICAg
ICAgICB9IG11dGFibGVDb3B5XSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChjb250
ZXh0KQotICAgICAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQgYWRkRW50cmllc0Zyb21EaWN0
aW9uYXJ5OmNvbnRleHRdOwotICAgICAgICAgICAgY29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5n
ZXQoKTsKLSAgICAgICAgfQotICAgICAgICBkYXRhRGV0ZWN0b3JzQWN0aW9ucyA9IFtjb250cm9s
bGVyIGFjdGlvbnNGb3JVUkw6dGFyZ2V0VVJMIGlkZW50aWZpZXI6cG9zaXRpb25JbmZvcm1hdGlv
bi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDp0ZXh0QXRTZWxlY3Rpb24gcmVz
dWx0czpwb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgY29udGV4
dDpjb250ZXh0XTsKLSAgICB9IGVsc2UKLSAgICAgICAgZGF0YURldGVjdG9yc0FjdGlvbnMgPSBb
Y29udHJvbGxlciBhY3Rpb25zRm9yQW5jaG9yOm5pbCB1cmw6dGFyZ2V0VVJMIGZvckZyYW1lOm5p
bF07CisgICAgTlNEaWN0aW9uYXJ5ICpjb250ZXh0ID0gbmlsOworICAgIE5TU3RyaW5nICp0ZXh0
QXRTZWxlY3Rpb24gPSBuaWw7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGV4
dGVuZGVkQ29udGV4dDsKKworICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlvblNoZWV0QXNzaXN0YW50OildKQor
ICAgICAgICBjb250ZXh0ID0gW2RlbGVnYXRlIGRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yQWN0aW9u
U2hlZXRBc3Npc3RhbnQ6c2VsZl07CisgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNlbGVjdGVkVGV4dEZvckFjdGlvblNoZWV0QXNzaXN0YW50OildKQorICAg
ICAgICB0ZXh0QXRTZWxlY3Rpb24gPSBbZGVsZWdhdGUgc2VsZWN0ZWRUZXh0Rm9yQWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6c2VsZl07CisgICAgaWYgKCFwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZv
cmUuaXNFbXB0eSgpIHx8ICFwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRBZnRlci5pc0VtcHR5KCkp
IHsKKyAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0gYWRvcHROUyhbQHsKKyAgICAgICAgICAgIGdl
dGtEYXRhRGV0ZWN0b3JzTGVhZGluZ1RleHQoKSA6IHBvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJl
Zm9yZSwKKyAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0KCkgOiBwb3Np
dGlvbkluZm9ybWF0aW9uLnRleHRBZnRlciwKKyAgICAgICAgfSBtdXRhYmxlQ29weV0pOworICAg
ICAgICAKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBbZXh0ZW5kZWRDb250ZXh0
IGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpjb250ZXh0XTsKKyAgICAgICAgY29udGV4dCA9IGV4
dGVuZGVkQ29udGV4dC5nZXQoKTsKKyAgICB9CisgICAgTlNBcnJheSAqZGF0YURldGVjdG9yc0Fj
dGlvbnMgPSBbY29udHJvbGxlciBhY3Rpb25zRm9yVVJMOnRhcmdldFVSTCBpZGVudGlmaWVyOnBv
c2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9ySWRlbnRpZmllciBzZWxlY3RlZFRleHQ6dGV4
dEF0U2VsZWN0aW9uIHJlc3VsdHM6cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1
bHRzLmdldCgpIGNvbnRleHQ6Y29udGV4dF07CiAgICAgaWYgKFtkYXRhRGV0ZWN0b3JzQWN0aW9u
cyBjb3VudF0gPT0gMCkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQko
cmV2aXNpb24gMjEyMjAyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOSwyOCArMjM5LDYgQEAg
LSAodm9pZClzZWxlY3RXb3JkOwogLSAodm9pZClzY2hlZHVsZVJlYW5hbHlzaXM7CiBAZW5kCiAK
LUBpbnRlcmZhY2UgVUlUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKFN0YWdpbmdUb1JlbW92ZSkK
LS0gKHZvaWQpc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OihOU1N0cmluZyAqKXRleHQ7Ci0t
ICh2b2lkKXNob3dUZXh0U2VydmljZUZvcjooTlNTdHJpbmcgKilzZWxlY3RlZFRlcm0gZnJvbVJl
Y3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0OwotLSAodm9pZClzY2hlZHVsZUNoaW5lc2VUcmFu
c2xpdGVyYXRpb25Gb3JUZXh0OihOU1N0cmluZyAqKXRleHQ7Ci0tICh2b2lkKXNob3dTaGFyZVNo
ZWV0Rm9yOihOU1N0cmluZyAqKXNlbGVjdGVkVGVybSBmcm9tUmVjdDooQ0dSZWN0KXByZXNlbnRh
dGlvblJlY3Q7Ci0tICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0aENvbnRleHQgZnJv
bVJlY3Q6KENHUmVjdClwcmVzZW50YXRpb25SZWN0OwotLSAodm9pZClsb29rdXA6KE5TU3RyaW5n
ICopdGV4dFdpdGhDb250ZXh0IHdpdGhSYW5nZTooTlNSYW5nZSlyYW5nZSBmcm9tUmVjdDooQ0dS
ZWN0KXByZXNlbnRhdGlvblJlY3Q7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgVUlXS1NlbGVjdGlvbkFz
c2lzdGFudCAoU3RhZ2luZ1RvUmVtb3ZlKQotLSAodm9pZClzaG93VGV4dFNlcnZpY2VGb3I6KE5T
U3RyaW5nICopc2VsZWN0ZWRUZXJtIGZyb21SZWN0OihDR1JlY3QpcHJlc2VudGF0aW9uUmVjdDsK
LS0gKHZvaWQpbG9va3VwOihOU1N0cmluZyAqKXRleHRXaXRoQ29udGV4dCBmcm9tUmVjdDooQ0dS
ZWN0KXByZXNlbnRhdGlvblJlY3Q7Ci0tICh2b2lkKWxvb2t1cDooTlNTdHJpbmcgKil0ZXh0V2l0
aENvbnRleHQgd2l0aFJhbmdlOihOU1JhbmdlKXJhbmdlIGZyb21SZWN0OihDR1JlY3QpcHJlc2Vu
dGF0aW9uUmVjdDsKLUBlbmQKLQotQGludGVyZmFjZSBVSUtleWJvYXJkSW1wbCAoU3RhZ2luZ1Rv
UmVtb3ZlKQotLSAodm9pZClkaWRIYW5kbGVXZWJLZXlFdmVudDsKLS0gKHZvaWQpZGlkSGFuZGxl
V2ViS2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQ7Ci0tICh2b2lkKWRlbGV0ZUZyb21JbnB1
dFdpdGhGbGFnczooTlNVSW50ZWdlcilmbGFnczsKLS0gKHZvaWQpYWRkSW5wdXRTdHJpbmc6KE5T
U3RyaW5nICopc3RyaW5nIHdpdGhGbGFnczooTlNVSW50ZWdlcilmbGFncyB3aXRoSW5wdXRNYW5h
Z2VySGludDooTlNTdHJpbmcgKiloaW50OwotQGVuZAotCiBAaW50ZXJmYWNlIFVJVmlldyAoVUlW
aWV3SW50ZXJuYWxIYWNrKQogKyAoQk9PTClfYWRkQ29tcGxldGlvbjoodm9pZCheKShCT09MKSlj
b21wbGV0aW9uOwogQGVuZApAQCAtMjcyLDEwICsyNTAsNiBAQCBAaW50ZXJmYWNlIFVJUHJldmll
d0l0ZW1Db250cm9sbGVyIChTdGFnCiBAZW5kCiAjZW5kaWYKIAotQGludGVyZmFjZSBERERldGVj
dGlvbkNvbnRyb2xsZXIgKFN0YWdpbmdUb1JlbW92ZSkKLS0gKEREUmVzdWx0UmVmKXJlc3VsdEZv
clVSTDooTlNVUkwgKil1cmwgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIHNlbGVj
dGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQgcmVzdWx0czooTlNBcnJheSAqKXJlc3Vs
dHMgY29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4dCBleHRlbmRlZENvbnRleHQ6KE5TRGlj
dGlvbmFyeSAqKilleHRlbmRlZENvbnRleHQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tGb2N1c2Vk
RWxlbWVudEluZm8gOiBOU09iamVjdCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPgogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246KGNvbnN0IEFzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiBpc1VzZXJJbml0aWF0ZWQ6KEJPT0wpaXNVc2VySW5p
dGlhdGVkOwogQGVuZApAQCAtMTg3OSwxNSArMTg1Myw5IEBAIC0gKHZvaWQpX2xvb2t1cDooaWQp
c2VuZGVyCiAgICAgICAgIAogICAgICAgICBTdHJpbmcgc2VsZWN0aW9uQ29udGV4dCA9IHRleHRC
ZWZvcmUgKyBzZWxlY3RlZFRleHQgKyB0ZXh0QWZ0ZXI7CiAgICAgICAgIGlmICh2aWV3LT5fdGV4
dFNlbGVjdGlvbkFzc2lzdGFudCkgewotICAgICAgICAgICAgaWYgKFt2aWV3LT5fdGV4dFNlbGVj
dGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGxvb2t1cDp3aXRoUmFu
Z2U6ZnJvbVJlY3Q6KV0pCi0gICAgICAgICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNz
aXN0YW50IGxvb2t1cDpzZWxlY3Rpb25Db250ZXh0IHdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0
QmVmb3JlLmxlbmd0aCgpLCBzZWxlY3RlZFRleHQubGVuZ3RoKCkpIGZyb21SZWN0OnByZXNlbnRh
dGlvblJlY3RdOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFt2aWV3LT5fdGV4
dFNlbGVjdGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0ZWRUZXh0IGZyb21SZWN0OnByZXNlbnRh
dGlvblJlY3RdOworICAgICAgICAgICAgW3ZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGxv
b2t1cDpzZWxlY3Rpb25Db250ZXh0IHdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0QmVmb3JlLmxl
bmd0aCgpLCBzZWxlY3RlZFRleHQubGVuZ3RoKCkpIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3Rd
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKFt2aWV3LT5fd2ViU2VsZWN0aW9u
QXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobG9va3VwOndpdGhSYW5nZTpm
cm9tUmVjdDopXSkKLSAgICAgICAgICAgICAgICBbdmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCBsb29rdXA6c2VsZWN0aW9uQ29udGV4dCB3aXRoUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dEJlZm9y
ZS5sZW5ndGgoKSwgc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKSBmcm9tUmVjdDpwcmVzZW50YXRpb25S
ZWN0XTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBbdmlldy0+X3dlYlNlbGVj
dGlvbkFzc2lzdGFudCBsb29rdXA6c2VsZWN0ZWRUZXh0IGZyb21SZWN0OnByZXNlbnRhdGlvblJl
Y3RdOworICAgICAgICAgICAgW3ZpZXctPl93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgbG9va3VwOnNl
bGVjdGlvbkNvbnRleHQgd2l0aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRCZWZvcmUubGVuZ3RoKCks
IHNlbGVjdGVkVGV4dC5sZW5ndGgoKSkgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07CiAgICAg
ICAgIH0KICAgICB9KTsKIH0KQEAgLTE5MDMsMTggKzE4NzEsMTggQEAgLSAodm9pZClfc2hhcmU6
KGlkKXNlbmRlcgogCiAgICAgICAgIENHUmVjdCBwcmVzZW50YXRpb25SZWN0ID0gdmlldy0+X3Bh
Z2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0c1swXS5yZWN0
KCk7CiAKLSAgICAgICAgaWYgKHZpZXctPl90ZXh0U2VsZWN0aW9uQXNzaXN0YW50ICYmIFt2aWV3
LT5fdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNo
b3dTaGFyZVNoZWV0Rm9yOmZyb21SZWN0OildKQorICAgICAgICBpZiAodmlldy0+X3RleHRTZWxl
Y3Rpb25Bc3Npc3RhbnQpCiAgICAgICAgICAgICBbdmlldy0+X3RleHRTZWxlY3Rpb25Bc3Npc3Rh
bnQgc2hvd1NoYXJlU2hlZXRGb3I6c3RyaW5nIGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOwot
ICAgICAgICBlbHNlIGlmICh2aWV3LT5fd2ViU2VsZWN0aW9uQXNzaXN0YW50ICYmIFt2aWV3LT5f
d2ViU2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1No
YXJlU2hlZXRGb3I6ZnJvbVJlY3Q6KV0pCisgICAgICAgIGVsc2UgaWYgKHZpZXctPl93ZWJTZWxl
Y3Rpb25Bc3Npc3RhbnQpCiAgICAgICAgICAgICBbdmlldy0+X3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCBzaG93U2hhcmVTaGVldEZvcjpzdHJpbmcgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07CiAg
ICAgfSk7CiB9CiAKIC0gKHZvaWQpX2FkZFNob3J0Y3V0OihpZClzZW5kZXIKIHsKLSAgICBpZiAo
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2aWNlRm9yOmZyb21SZWN0OildKQor
ICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkKICAgICAgICAgW190ZXh0U2VsZWN0aW9u
QXNzaXN0YW50IHNob3dUZXh0U2VydmljZUZvcjpbc2VsZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0
Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0u
cmVjdCgpXTsKLSAgICBlbHNlIGlmIChfd2ViU2VsZWN0aW9uQXNzaXN0YW50ICYmIFtfd2ViU2Vs
ZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2
aWNlRm9yOmZyb21SZWN0OildKQorICAgIGVsc2UgaWYgKF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQp
CiAgICAgICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dUZXh0U2VydmljZUZvcjpbc2Vs
ZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXRE
YXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVjdCgpXTsKIH0KIApAQCAtMTk0NCwxNCArMTkxMiwx
MiBAQCAtICh2b2lkKV9wcm9tcHRGb3JSZXBsYWNlOihpZClzZW5kZXIKICAgICBpZiAod29yZEF0
U2VsZWN0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFtfdGV4dFNl
bGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNjaGVkdWxlUmVw
bGFjZW1lbnRzRm9yVGV4dDopXSkKLSAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNj
aGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4dDp3b3JkQXRTZWxlY3Rpb25dOworICAgIFtfdGV4dFNl
bGVjdGlvbkFzc2lzdGFudCBzY2hlZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6d29yZEF0U2VsZWN0
aW9uXTsKIH0KIAogLSAodm9pZClfdHJhbnNsaXRlcmF0ZUNoaW5lc2U6KGlkKXNlbmRlcgogewot
ICAgIGlmIChbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzY2hlZHVsZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0OildKQotICAgICAgICBb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9y
VGV4dDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlv
bl07CisgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0
ZXJhdGlvbkZvclRleHQ6X3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS53b3Jk
QXRTZWxlY3Rpb25dOwogfQogCiAtICh2b2lkKV9yZWFuYWx5emU6KGlkKXNlbmRlcgpAQCAtMzM4
NSwxNCArMzM1MSw2IEBAIC0gKHZvaWQpX2RpZEhhbmRsZUtleUV2ZW50OihXZWJJT1NFdmVudCAK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgaWYgKGV2ZW50LnR5cGUgPT0g
V2ViRXZlbnRLZXlEb3duKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgZm9yIHN0
YWdpbmcgcHVycG9zZXMuCi0gICAgICAgIGlmIChbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3Rh
bmNlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZEhhbmRsZVdlYktleUV2ZW50Oild
KQotICAgICAgICAgICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gZGlkSGFuZGxl
V2ViS2V5RXZlbnQ6ZXZlbnRdOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbW1VJS2V5Ym9h
cmRJbXBsIHNoYXJlZEluc3RhbmNlXSBkaWRIYW5kbGVXZWJLZXlFdmVudF07Ci0gICAgfQotCiAg
ICAgLy8gSWYgd2UgYXJlbid0IGludGVyYWN0aW5nIHdpdGggZWRpdGFibGUgY29udGVudCwgd2Ug
c3RpbGwgbmVlZCB0byBjYWxsIFtzdXBlciBfaGFuZGxlS2V5VUlFdmVudDpdCiAgICAgLy8gc28g
dGhhdCBrZXlib2FyZCByZXBlYXQgd2lsbCB3b3JrIGNvcnJlY3RseS4gSWYgd2UgYXJlIGludGVy
YWN0aW5nIHdpdGggZWRpdGFibGUgY29udGVudCwKICAgICAvLyB3ZSBhbHJlYWR5IGRpZCBzbyBp
biBfaGFuZGxlS2V5VUlFdmVudC4KQEAgLTM1MDYsMjEgKzM0NjQsMTQgQEAgLSAoQk9PTClfaW50
ZXJwcmV0S2V5RXZlbnQ6KFdlYklPU0V2ZW50IAogICAgIGNhc2Uga1dlYkJhY2tzcGFjZUtleToK
ICAgICBjYXNlIGtXZWJEZWxldGVLZXk6CiAgICAgICAgIGlmIChjb250ZW50RWRpdGFibGUpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgZGVsZXRlRnJvbUlucHV0IG9uY2UgVUlLaXQg
YWRvcHRzIGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFncwotICAgICAgICAgICAgaWYgKFtrZXlib2Fy
ZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFnczop
XSkKLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdzOmV2
ZW50LmtleWJvYXJkRmxhZ3NdOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFtr
ZXlib2FyZCBkZWxldGVGcm9tSW5wdXRdOworICAgICAgICAgICAgW2tleWJvYXJkIGRlbGV0ZUZy
b21JbnB1dFdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsKICAgICAgICAgICAgIHJldHVy
biBZRVM7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIGtXZWJTcGFjZUtl
eToKICAgICAgICAgaWYgKGNvbnRlbnRFZGl0YWJsZSAmJiBpc0NoYXJFdmVudCkgewotICAgICAg
ICAgICAgaWYgKFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFkZElucHV0
U3RyaW5nOndpdGhGbGFnczp3aXRoSW5wdXRNYW5hZ2VySGludDopXSkKLSAgICAgICAgICAgICAg
ICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZl
bnQua2V5Ym9hcmRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpldmVudC5pbnB1dE1hbmFnZXJI
aW50XTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5w
dXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107
CisgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3
aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpldmVudC5p
bnB1dE1hbmFnZXJIaW50XTsKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CkBAIC0zNTQwLDEwICszNDkxLDcgQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5
RXZlbnQ6KFdlYklPU0V2ZW50IAogCiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYgKGNvbnRlbnRF
ZGl0YWJsZSAmJiBpc0NoYXJFdmVudCkgewotICAgICAgICAgICAgaWYgKFtrZXlib2FyZCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFkZElucHV0U3RyaW5nOndpdGhGbGFnczp3aXRoSW5w
dXRNYW5hZ2VySGludDopXSkKLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJp
bmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFncyB3aXRoSW5w
dXRNYW5hZ2VySGludDpldmVudC5pbnB1dE1hbmFnZXJIaW50XTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVy
cyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107CisgICAgICAgICAgICBba2V5Ym9hcmQg
YWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRG
bGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpldmVudC5pbnB1dE1hbmFnZXJIaW50XTsKICAgICAg
ICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC00MjA4LDI1
ICs0MTU2LDIzIEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db24KICAg
ICAgICAgICAgICAgICBjb250ZXh0ID0gW3VpRGVsZWdhdGUgX2RhdGFEZXRlY3Rpb25Db250ZXh0
Rm9yV2ViVmlldzpfd2ViVmlld107CiAKICAgICAgICAgICAgIERERGV0ZWN0aW9uQ29udHJvbGxl
ciAqY29udHJvbGxlciA9IFtnZXRERERldGVjdGlvbkNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZENv
bnRyb2xsZXJdOwotICAgICAgICAgICAgaWYgKFtjb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocmVzdWx0Rm9yVVJMOmlkZW50aWZpZXI6c2VsZWN0ZWRUZXh0OnJlc3VsdHM6
Y29udGV4dDpleHRlbmRlZENvbnRleHQ6KV0pIHsKLSAgICAgICAgICAgICAgICBOU0RpY3Rpb25h
cnkgKm5ld0NvbnRleHQgPSBuaWw7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZURpY3Rpb25hcnk+IGV4dGVuZGVkQ29udGV4dDsKLSAgICAgICAgICAgICAgICBERFJlc3VsdFJl
ZiBkZFJlc3VsdCA9IFtjb250cm9sbGVyIHJlc3VsdEZvclVSTDpkYXRhRm9yUHJldmlld1tVSVBy
ZXZpZXdEYXRhTGlua10gaWRlbnRpZmllcjpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0
b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDpbc2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bv
c2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRl
eHQgZXh0ZW5kZWRDb250ZXh0OiZuZXdDb250ZXh0XTsKLSAgICAgICAgICAgICAgICBpZiAoZGRS
ZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFE
RFJlc3VsdF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7Ci0gICAgICAgICAgICAgICAgaWYgKCFf
cG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3JlLmlzRW1wdHkoKSB8fCAhX3Bvc2l0aW9uSW5m
b3JtYXRpb24udGV4dEFmdGVyLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBleHRl
bmRlZENvbnRleHQgPSBhZG9wdE5TKFtAewotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0a0Rh
dGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9y
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0
KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIsCi0gICAgICAgICAgICAgICAgICAg
IH0gbXV0YWJsZUNvcHldKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChuZXdDb250ZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVuZGVkQ29u
dGV4dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6bmV3Q29udGV4dF07Ci0gICAgICAgICAgICAg
ICAgICAgIG5ld0NvbnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpuZXdDb250ZXh0ID0gbmlsOworICAgICAg
ICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGV4dGVuZGVkQ29udGV4dDsKKyAg
ICAgICAgICAgIEREUmVzdWx0UmVmIGRkUmVzdWx0ID0gW2NvbnRyb2xsZXIgcmVzdWx0Rm9yVVJM
OmRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFMaW5rXSBpZGVudGlmaWVyOl9wb3NpdGlvbklu
Zm9ybWF0aW9uLmRhdGFEZXRlY3RvcklkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OltzZWxmIHNlbGVj
dGVkVGV4dF0gcmVzdWx0czpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRz
LmdldCgpIGNvbnRleHQ6Y29udGV4dCBleHRlbmRlZENvbnRleHQ6Jm5ld0NvbnRleHRdOworICAg
ICAgICAgICAgaWYgKGRkUmVzdWx0KQorICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJ
UHJldmlld0RhdGFERFJlc3VsdF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7CisgICAgICAgICAg
ICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFfcG9z
aXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ZXh0ZW5kZWRDb250ZXh0ID0gYWRvcHROUyhbQHsKKyAgICAgICAgICAgICAgICAgICAgZ2V0a0Rh
dGFEZXRlY3RvcnNMZWFkaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9y
ZSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNUcmFpbGluZ1RleHQoKSA6
IF9wb3NpdGlvbkluZm9ybWF0aW9uLnRleHRBZnRlciwKKyAgICAgICAgICAgICAgICB9IG11dGFi
bGVDb3B5XSk7CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG5ld0NvbnRl
eHQpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFERENv
bnRleHRdID0gbmV3Q29udGV4dDsKKyAgICAgICAgICAgICAgICAgICAgW2V4dGVuZGVkQ29udGV4
dCBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6bmV3Q29udGV4dF07CisgICAgICAgICAgICAgICAg
bmV3Q29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChuZXdDb250ZXh0KQorICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJ
UHJldmlld0RhdGFERENvbnRleHRdID0gbmV3Q29udGV4dDsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoY2FuU2hvd0ltYWdlUHJldmlldykgewogICAgICAgICAqdHlwZSA9IFVJUHJldmlld0l0
ZW1UeXBlSW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShy
ZXZpc2lvbiAyMTIyMDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw4ICsx
NzcsNyBAQCBNYWNoU2VuZFJpZ2h0IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBCiAgICAgLy8g
SW52YWxpZGF0ZSB0aGUgZmVuY2UgaWYgYSBzeW5jaHJvbm91cyBtZXNzYWdlIGFycml2ZXMgd2hp
bGUgaXQncyBpbnN0YWxsZWQsCiAgICAgLy8gYmVjYXVzZSB3ZSB3b24ndCBiZSBhYmxlIHRvIHJl
cGx5IGR1cmluZyB0aGUgZmVuY2Utd2FpdC4KICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+aW5zdGFsbEluY29taW5nU3luY01l
c3NhZ2VDYWxsYmFjayhbcm9vdExheWVyQ29udGV4dF0gewotICAgICAgICBpZiAoW3Jvb3RMYXll
ckNvbnRleHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZhbGlkYXRlRmVuY2VzKV0p
Ci0gICAgICAgICAgICBbcm9vdExheWVyQ29udGV4dCBpbnZhbGlkYXRlRmVuY2VzXTsKKyAgICAg
ICAgW3Jvb3RMYXllckNvbnRleHQgaW52YWxpZGF0ZUZlbmNlc107CiAgICAgfSk7CiAgICAgUmVm
UHRyPFdlYlBhZ2VQcm94eT4gcmV0YWluZWRQYWdlID0gJm1fd2ViUGFnZVByb3h5OwogICAgIFtD
QVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W2NhbGxiYWNrSUQsIHJldGFpbmVkUGFnZV0g
ewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxMjIwMikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MDEsMTAgKzQwMSw4IEBAIC0gKGlkPE5TSW1tZWRpYXRlQWN0aW9u
QW5pbWF0aW9uQ29udHJvbGwKIAogICAgIGFjdGlvbkNvbnRleHQuYWx0TW9kZSA9IFlFUzsKICAg
ICBhY3Rpb25Db250ZXh0LmltbWVkaWF0ZSA9IFlFUzsKLSAgICBpZiAoW1tnZXREREFjdGlvbnNN
YW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGhhc0FjdGlvbnNGb3JSZXN1bHQ6YWN0aW9uQ29udGV4dDopXSkgewotICAgICAgICBpZiAoIVtb
Z2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gaGFzQWN0aW9uc0ZvclJl
c3VsdDphY3Rpb25Db250ZXh0Lm1haW5SZXN1bHQgYWN0aW9uQ29udGV4dDphY3Rpb25Db250ZXh0
XSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQorICAgIGlmICghW1tnZXREREFjdGlv
bnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBoYXNBY3Rpb25zRm9yUmVzdWx0OmFjdGlv
bkNvbnRleHQubWFpblJlc3VsdCBhY3Rpb25Db250ZXh0OmFjdGlvbkNvbnRleHRdKQorICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcGFnZSA9IF9wYWdlOwog
ICAgIFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEIG92ZXJsYXlJRCA9IF9oaXRUZXN0UmVzdWx0
RGF0YS5kZXRlY3RlZERhdGFPcmlnaW5hdGluZ1BhZ2VPdmVybGF5OwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5t
bQkocmV2aXNpb24gMjEyMjAyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsOSArMjY2LDYgQEAg
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjbGVhclNlcnZpYwogCiBSZXRhaW5QdHI8TlNN
ZW51SXRlbT4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlU2hhcmVNZW51SXRlbSgpCiB7
Ci0gICAgaWYgKCFbW05TTWVudUl0ZW0gY2xhc3NdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOildKQotICAgICAgICByZXR1cm4gbmls
OwotCiAgICAgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3REYXRhID0gbV9jb250
ZXh0LndlYkhpdFRlc3RSZXN1bHREYXRhKCk7CiAKICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMTIyMDgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wMi0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gU29tZSAtcmVzcG9uZHNUb1NlbGVjdG9yOiBjaGVj
a3MgYXJlIHVubmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjgxODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOl0p
OiBSZW1vdmVkIGNoZWNrIHdoZXRoZXIgTlNXaW5kb3cKKyAgICAgICAgICByZXNwb25kcyB0byAt
aXNPbkFjdGl2ZVNwYWNlLgorICAgICAgICAoLVtXZWJGdWxsU2NyZWVuQ29udHJvbGxlciBleGl0
RnVsbFNjcmVlbl0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIg
X3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl0pOiBSZW1vdmVkIGNoZWNrIHdoZXRoZXIK
KyAgICAgICAgICBOU0FwcGxpY2F0aW9uIHJlc3BvbmRzIHRvIC1zZXRQcmVzZW50YXRpb25PcHRp
b25zLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0
ZVNoYXJlTWVudUl0ZW0pOiBSZW1vdmVkIHVubmVjZXNzYXJ5IC1yZXNwb25kc1RvU2VsZWN0b3I6
IGNoZWNrLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBvdGhlck1vdXNlRG93bjpdKTogRGl0dG8u
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06Cisg
ICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2NsZWFySW1tZWRpYXRlQWN0
aW9uU3RhdGVdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRUZXh0XSk6IERpdHRvLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOl0pOiBSZW1vdmVkIHJlZHVuZGFudCBuaWwgY2hlY2su
CisgICAgICAgICgrW1dlYlZpZXcgX3NldENhY2hlTW9kZWw6XSk6IFJlbW92ZWQgdW5uZWNlc3Nh
cnkgLXJlc3BvbmRzVG9TZWxlY3RvcjogY2hlY2suCisKIDIwMTctMDItMTAgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIERldGFjaCBmcmFtZSBmcm9tIGRvY3Vt
ZW50IHdoZW4gZW50ZXJpbmcgcGFnZSBjYWNoZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyMTIy
MDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMCArNzUsNiBAQCBzdGF0aWMgTlNSZWN0IGNvbnZl
cnRSZWN0VG9TY3JlZW4oTlNXaW5kCiAgICAgcmV0dXJuIFt3aW5kb3cgY29udmVydFJlY3RUb1Nj
cmVlbjpyZWN0XTsKIH0KIAotQGludGVyZmFjZSBOU1dpbmRvdyhJc09uQWN0aXZlU3BhY2VBZGRp
dGlvbkZvclRpZ2VyQW5kTGVvcGFyZCkKLS0gKEJPT0wpaXNPbkFjdGl2ZVNwYWNlOwotQGVuZAot
CiBAaW1wbGVtZW50YXRpb24gV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIKIAogI3ByYWdtYSBtYXJr
IC0KQEAgLTE2NSwxNiArMTYxLDEzIEBAIC0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClzZW5k
ZXIKIAogLSAodm9pZClhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24q
KW5vdGlmaWNhdGlvbgogeyAgIAotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZnVsbHNjcmVl
bldpbmRvdyBpcyBvbiB0aGUgYWN0aXZlIHNwYWNlOyB0aGlzIGZ1bmN0aW9uIGlzIGF2YWlsYWJs
ZQotICAgIC8vIG9uIDEwLjYgYW5kIGxhdGVyLCBzbyBkZWZhdWx0IHRvIFlFUyBpZiB0aGUgZnVu
Y3Rpb24gaXMgbm90IGF2YWlsYWJsZToKICAgICBOU1dpbmRvdyogZnVsbHNjcmVlbldpbmRvdyA9
IFtzZWxmIHdpbmRvd107Ci0gICAgQk9PTCBpc09uQWN0aXZlU3BhY2UgPSAoW2Z1bGxzY3JlZW5X
aW5kb3cgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpc09uQWN0aXZlU3BhY2UpXSA/IFtm
dWxsc2NyZWVuV2luZG93IGlzT25BY3RpdmVTcGFjZV0gOiBZRVMpOwogCiAgICAgLy8gUmVwbGlj
YXRlIHRoZSBRdWlja1RpbWUgUGxheWVyIChYKSBiZWhhdmlvciB3aGVuIGxvc2luZyBhY3RpdmUg
YXBwbGljYXRpb24gc3RhdHVzOgogICAgIC8vIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiB0aGUg
bWFpbiBzY3JlZW4/IChOb3RlOiB0aGlzIGNvdmVycyB0aGUgY2FzZSB3aGVyZSBvbmx5IGEgCiAg
ICAgLy8gc2luZ2xlIHNjcmVlbiBpcyBhdmFpbGFibGUuKSAgSXMgdGhlIGZ1bGxzY3JlZW4gc2Ny
ZWVuIG9uIHRoZSBjdXJyZW50IHNwYWNlPyBJRkYgc28sIAogICAgIC8vIHRoZW4gZXhpdCBmdWxs
c2NyZWVuIG1vZGUuIAotICAgIGlmIChbZnVsbHNjcmVlbldpbmRvdyBzY3JlZW5dID09IFtbTlNT
Y3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSAmJiBpc09uQWN0aXZlU3BhY2UpCisgICAg
aWYgKGZ1bGxzY3JlZW5XaW5kb3cuc2NyZWVuID09IFtOU1NjcmVlbiBzY3JlZW5zXVswXSAmJiBm
dWxsc2NyZWVuV2luZG93Lm9uQWN0aXZlU3BhY2UpCiAgICAgICAgICBbc2VsZiBjYW5jZWxPcGVy
YXRpb246c2VsZl07CiB9CiAKQEAgLTMyNSw3ICszMTgsNyBAQCAtICh2b2lkKWV4aXRGdWxsU2Ny
ZWVuCiAgICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjpOU1dpbmRvd0FuaW1hdGlv
bkJlaGF2aW9yTm9uZV07CiAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG1vdmVkIHRoZSBmdWxsU2Ny
ZWVuIHdpbmRvdyBpbnRvIGEgbmV3IHNwYWNlLCB0ZW1wb3JhcmlseSBjaGFuZ2UKICAgICAvLyB0
aGUgY29sbGVjdGlvbkJlaGF2aW9yIG9mIHRoZSB3ZWJWaWV3J3Mgd2luZG93IHNvIHRoYXQgaXQg
aXMgcHVsbGVkIGludG8gdGhlIGFjdGl2ZSBzcGFjZToKLSAgICBpZiAoIShbd2ViV2luZG93IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaXNPbkFjdGl2ZVNwYWNlKV0gPyBbd2ViV2luZG93
IGlzT25BY3RpdmVTcGFjZV0gOiBZRVMpKSB7CisgICAgaWYgKCF3ZWJXaW5kb3cub25BY3RpdmVT
cGFjZSkgewogICAgICAgICBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvciBiZWhhdmlvciA9IFt3
ZWJXaW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXTsKICAgICAgICAgW3dlYldpbmRvdyBzZXRDb2xs
ZWN0aW9uQmVoYXZpb3I6TlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JDYW5Kb2luQWxsU3BhY2Vz
XTsKICAgICAgICAgW3dlYldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZl
VG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07CkBAIC00MzAsMTAgKzQyMyw3IEBAIC0g
KHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbgogICAgICAgICAgICAgb3B0aW9u
cyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrOwogICAgIH0KICAgICAK
LSAgICBpZiAoW05TQXBwIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UHJlc2VudGF0
aW9uT3B0aW9uczopXSkKLSAgICAgICAgW05TQXBwIHNldFByZXNlbnRhdGlvbk9wdGlvbnM6b3B0
aW9uc107Ci0gICAgZWxzZQotICAgICAgICBTZXRTeXN0ZW1VSU1vZGUoX2lzRnVsbFNjcmVlbiA/
IGtVSU1vZGVBbGxIaWRkZW4gOiBrVUlNb2RlTm9ybWFsLCAwKTsKKyAgICBOU0FwcC5wcmVzZW50
YXRpb25PcHRpb25zID0gb3B0aW9uczsKIH0KIAogI3ByYWdtYSBtYXJrIC0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMjEyMjAyKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzg3Miw5ICszODcyLDYgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaXhNZW51c1Jl
Y2VpdgogCiBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0o
Y29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKIHsKLSAgICBpZiAoIVtbTlNNZW51
SXRlbSBjbGFzc10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVu
dUl0ZW1XaXRoSXRlbXM6KV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBhdXRvIGl0ZW1z
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICBpZiAoIWhp
dFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgpKSB7CkBAIC02MTA0LDggKzYx
MDEsNyBAQCAtICh2b2lkKV93aW5kb3dDaGFuZ2VkS2V5U3RhdGUKICNpZiAhUExBVEZPUk0oSU9T
KQogLSAodm9pZClvdGhlck1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50CiB7Ci0gICAgaWYgKFtl
dmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildCi0gICAgICAgICYmIFtOU01lbnUgbWVudVR5cGVG
b3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUNvbnRleHRNZW51KSkgeworICAgIGlmIChldmVu
dC5idXR0b25OdW1iZXIgIT0gMiB8fCBbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09
IE5TTWVudVR5cGVDb250ZXh0TWVudSkgewogICAgICAgICBbc3VwZXIgb3RoZXJNb3VzZURvd246
ZXZlbnRdOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQko
cmV2aXNpb24gMjEyMjAyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOCArMTI4LDcgQEAg
LSAodm9pZClfY2xlYXJJbW1lZGlhdGVBY3Rpb25TdGF0ZQogICAgICAgICByZXR1cm47CiAKICAg
ICBEREFjdGlvbnNNYW5hZ2VyICphY3Rpb25zTWFuYWdlciA9IFtnZXREREFjdGlvbnNNYW5hZ2Vy
Q2xhc3MoKSBzaGFyZWRNYW5hZ2VyXTsKLSAgICBpZiAoW2FjdGlvbnNNYW5hZ2VyIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IocmVxdWVzdEJ1YmJsZUNsb3N1cmVVbmFuY2hvck9uRmFpbHVy
ZTopXSkKLSAgICAgICAgW2FjdGlvbnNNYW5hZ2VyIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNo
b3JPbkZhaWx1cmU6WUVTXTsKKyAgICBbYWN0aW9uc01hbmFnZXIgcmVxdWVzdEJ1YmJsZUNsb3N1
cmVVbmFuY2hvck9uRmFpbHVyZTpZRVNdOwogCiAgICAgaWYgKF9jdXJyZW50QWN0aW9uQ29udGV4
dCAmJiBfaGFzQWN0aXZhdGVkQWN0aW9uQ29udGV4dCkgewogICAgICAgICBfaGFzQWN0aXZhdGVk
QWN0aW9uQ29udGV4dCA9IE5POwpAQCAtNDM5LDEwICs0MzgsOCBAQCAtIChpZCA8TlNJbW1lZGlh
dGVBY3Rpb25BbmltYXRpb25Db250cm9sCiAKICAgICBbYWN0aW9uQ29udGV4dCBzZXRBbHRNb2Rl
OllFU107CiAgICAgW2FjdGlvbkNvbnRleHQgc2V0SW1tZWRpYXRlOllFU107Ci0gICAgaWYgKFtb
Z2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihoYXNBY3Rpb25zRm9yUmVzdWx0OmFjdGlvbkNvbnRleHQ6KV0pIHsKLSAg
ICAgICAgaWYgKCFbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIGhh
c0FjdGlvbnNGb3JSZXN1bHQ6W2FjdGlvbkNvbnRleHQgbWFpblJlc3VsdF0gYWN0aW9uQ29udGV4
dDphY3Rpb25Db250ZXh0LmdldCgpXSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQor
ICAgIGlmICghW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBoYXNB
Y3Rpb25zRm9yUmVzdWx0OlthY3Rpb25Db250ZXh0IG1haW5SZXN1bHRdIGFjdGlvbkNvbnRleHQ6
YWN0aW9uQ29udGV4dC5nZXQoKV0pCisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBhdXRvIGlu
ZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqZGV0ZWN0ZWREYXRhUmFu
Z2UsIFRleHRJbmRpY2F0b3JPcHRpb25EZWZhdWx0LCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6RmFkZUluKTsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkocmV2aXNpb24gMjEyMjAyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MDYsMTAgKzUwNiw2IEBAIEBpbnRlcmZhY2UgV2Vi
VmlldyhXZWJWaWV3UHJpdmF0ZSkKIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJl
ZmVyZW5jZXMgKilwcmVmZXJlbmNlczsKIC0gKHZvaWQpX3VwZGF0ZVNjcmVlblNjYWxlRnJvbVdp
bmRvdzsKIEBlbmQKLQotQGludGVyZmFjZSBOU1VSTENhY2hlIChXZWJQcml2YXRlKQotLSAoQ0ZV
UkxDYWNoZVJlZilfQ0ZVUkxDYWNoZTsKLUBlbmQKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElP
UykKQEAgLTMzMzEsNyArMzMyNyw3IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb3JlKFtmcmFtZSBET01Eb2N1bWVu
dF0pOwogICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+d2Vi
a2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgOiAwKSB7CiAgICAgICAgIFNFTCBzZWxlY3Rv
ciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmNsb3NlRnVsbFNjcmVlbldpdGhMaXN0ZW5lcjopOwotICAg
ICAgICBpZiAoX3ByaXZhdGUtPlVJRGVsZWdhdGUgJiYgW19wcml2YXRlLT5VSURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKKyAgICAgICAgaWYgKFtfcHJpdmF0ZS0+VUlE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7CiAgICAgICAgICAgICBXZWJL
aXRGdWxsU2NyZWVuTGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJLaXRGdWxsU2NyZWVuTGlzdGVu
ZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XTsKICAgICAgICAgICAgIENhbGxVSURl
bGVnYXRlKHNlbGYsIHNlbGVjdG9yLCBsaXN0ZW5lcik7CiAgICAgICAgICAgICBbbGlzdGVuZXIg
cmVsZWFzZV07CkBAIC04NTgzLDcgKzg1NzksNyBAQCArICh2b2lkKV9zZXRDYWNoZU1vZGVsOihX
ZWJDYWNoZU1vZGVsKWNhCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG5zdXJsQ2FjaGVNZW1vcnlD
YXBhY2l0eSA9IHN0ZDo6bWF4KG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgW25zdXJsQ2FjaGUg
bWVtb3J5Q2FwYWNpdHldKTsKICAgICBDRlVSTENhY2hlUmVmIGNmQ2FjaGU7Ci0gICAgaWYgKFtu
c3VybENhY2hlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX0NGVVJMQ2FjaGUpXSAmJiAo
Y2ZDYWNoZSA9IFtuc3VybENhY2hlIF9DRlVSTENhY2hlXSkpCisgICAgaWYgKChjZkNhY2hlID0g
W25zdXJsQ2FjaGUgX0NGVVJMQ2FjaGVdKSkKICAgICAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNh
cGFjaXR5KGNmQ2FjaGUsIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSk7CiAgICAgZWxzZQogICAg
ICAgICBbbnN1cmxDYWNoZSBzZXRNZW1vcnlDYXBhY2l0eTpuc3VybENhY2hlTWVtb3J5Q2FwYWNp
dHldOwo=
</data>
<flag name="review"
          id="323136"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>