<?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>74685</bug_id>
          
          <creation_ts>2011-12-15 21:35:06 -0800</creation_ts>
          <short_desc>Give PlatformEvents a base class</short_desc>
          <delta_ts>2011-12-16 14:46:38 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522509</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-15 21:35:06 -0800</bug_when>
    <thetext>Give PlatformEvents a base class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522510</commentid>
    <comment_count>1</comment_count>
      <attachid>119561</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-15 21:36:44 -0800</bug_when>
    <thetext>Created attachment 119561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522513</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-15 21:39:54 -0800</bug_when>
    <thetext>Giving the EWS a chance to chew through this one. It touches a lot of platform files :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522516</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 21:41:02 -0800</bug_when>
    <thetext>Attachment 119561 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/PlatformMouseEvent.h:97:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/platform/wx/MouseEventWx.cpp:40:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 7 in 85 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>522519</commentid>
    <comment_count>4</comment_count>
      <attachid>119562</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-15 21:45:53 -0800</bug_when>
    <thetext>Created attachment 119562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522521</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 21:48:37 -0800</bug_when>
    <thetext>Attachment 119562 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/platform/PlatformMouseEvent.h:97:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/wx/MouseEventWx.cpp:40:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 7 in 90 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>522536</commentid>
    <comment_count>6</comment_count>
      <attachid>119562</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 22:06:45 -0800</bug_when>
    <thetext>Comment on attachment 119562
Patch

Attachment 119562 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10895582</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522545</commentid>
    <comment_count>7</comment_count>
      <attachid>119569</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-15 22:39:59 -0800</bug_when>
    <thetext>Created attachment 119569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522550</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 22:42:38 -0800</bug_when>
    <thetext>Attachment 119569 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/platform/PlatformMouseEvent.h:97:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/wx/MouseEventWx.cpp:40:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 7 in 90 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>522557</commentid>
    <comment_count>9</comment_count>
      <attachid>119571</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-15 22:54:51 -0800</bug_when>
    <thetext>Created attachment 119571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522558</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 22:58:09 -0800</bug_when>
    <thetext>Attachment 119571 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/platform/PlatformMouseEvent.h:97:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/wx/MouseEventWx.cpp:40:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 7 in 90 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>522569</commentid>
    <comment_count>11</comment_count>
      <attachid>119571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 23:21:48 -0800</bug_when>
    <thetext>Comment on attachment 119571
Patch

Attachment 119571 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10914573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522587</commentid>
    <comment_count>12</comment_count>
      <attachid>119571</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-16 00:03:25 -0800</bug_when>
    <thetext>Comment on attachment 119571
Patch

Attachment 119571 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10900593</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522792</commentid>
    <comment_count>13</comment_count>
      <attachid>119626</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-16 09:48:10 -0800</bug_when>
    <thetext>Created attachment 119626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522794</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 09:49:43 -0800</bug_when>
    <thetext>Attachment 119626 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/platform/PlatformMouseEvent.h:97:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/wx/MouseEventWx.cpp:40:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 7 in 90 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>522802</commentid>
    <comment_count>15</comment_count>
      <attachid>119626</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-16 09:59:05 -0800</bug_when>
    <thetext>Comment on attachment 119626
Patch

Attachment 119626 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10904775</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522829</commentid>
    <comment_count>16</comment_count>
      <attachid>119626</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 10:28:56 -0800</bug_when>
    <thetext>Comment on attachment 119626
Patch

Attachment 119626 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10904784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522836</commentid>
    <comment_count>17</comment_count>
      <attachid>119632</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-16 10:38:58 -0800</bug_when>
    <thetext>Created attachment 119632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522840</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 10:43:04 -0800</bug_when>
    <thetext>Attachment 119632 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/platform/PlatformMouseEvent.h:97:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/wx/MouseEventWx.cpp:40:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 7 in 90 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>522841</commentid>
    <comment_count>19</comment_count>
      <attachid>119633</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-16 10:45:34 -0800</bug_when>
    <thetext>Created attachment 119633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522842</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 10:48:59 -0800</bug_when>
    <thetext>Attachment 119633 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/platform/PlatformMouseEvent.h:97:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/PlatformMouseEvent.h:137:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/wx/MouseEventWx.cpp:40:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 7 in 91 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>522958</commentid>
    <comment_count>21</comment_count>
      <attachid>119656</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-16 12:53:54 -0800</bug_when>
    <thetext>Created attachment 119656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522966</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 13:07:23 -0800</bug_when>
    <thetext>Attachment 119656 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1187:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/PlatformKeyboardEvent.h:69:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/KeyboardEvent.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 3 in 91 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>522974</commentid>
    <comment_count>23</comment_count>
      <attachid>119656</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-12-16 13:16:19 -0800</bug_when>
    <thetext>Comment on attachment 119656
Patch

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

&gt; Source/WebCore/platform/PlatformEvent.h:112
&gt; +

You should add a protected destructor here as well, that way people won&apos;t inadvertly delete a platform event. The destructor doesn&apos;t need to be virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523048</commentid>
    <comment_count>24</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-16 14:46:38 -0800</bug_when>
    <thetext>Committed r103112: &lt;http://trac.webkit.org/changeset/103112&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119561</attachid>
            <date>2011-12-15 21:36:44 -0800</date>
            <delta_ts>2011-12-15 21:45:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111215213641.patch</filename>
            <type>text/plain</type>
            <size>151728</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRN
ZW51XSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorICAgICAgICAqIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICog
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycyk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL3d4L0V2ZW50SGFuZGxlcld4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Y3RybEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxhdGZvcm1F
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hl
ZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZvck5TRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXlwYWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0eXBl
RnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorCiAyMDExLTEyLTE1ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIHNpemVvZihSZW5kZXJPYmplY3QpIGlzIDMyIGlu
c3RlYWQgb2YgMjQgb24gV2luZG93cwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkp
CkBAIC02MDgsOCArNjA4LDggQEAgX19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZsb2F0c0Vm
ZmZmCiBfX1pON1dlYkNvcmUyMHByb3RvY29sSXNKYXZhU2NyaXB0RVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9fWk43
V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgotX19aTjdXZWJDb3JlMjFQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0ZUtleURvd25FdmVudEVOUzBfNFR5cGVF
YgogX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQKK19fWk43
V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRF
TlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBf
X1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1M
b2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktO
U18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1lbnRFeHRlbnNpb25z
MjFzYW1wbGVBbmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0U1ZHU01JTEVsZW1l
bnRFZApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MDcwLDYgKzUwNzAs
OCBAQAogCQlCQzVBODY4NTBDMzM2NzYwMDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVBODY4MjBDMzM2NzYw
MDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmggKi87IH07CiAJCUJDNUE4NkI1MEMzMzY3RTgwMEVF
QTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzVBODZCMzBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rp
b24uY3BwICovOyB9OwogCQlCQzVBODZCNjBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4
NkI0MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oICovOyB9OworCQlCQzVDNzYy
QTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVDNzYyODE0OTdGRTE0MDBCQzQ3NzUgLyog
UGxhdGZvcm1FdmVudC5jcHAgKi87IH07CisJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQ
bGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUNGQ0E5MTFGNzkz
MzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRpb25TdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1Q0ZDQTgxMUY3OTMzMjAwOTlFRDA5IC8qIExv
Y2FsaXphdGlvblN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzVFQjVERDBFODFCOEREMDBCMjU5NjUgLyogT3V0
bGluZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzVFQjVEQzBFODFCOEREMDBCMjU5NjUgLyogT3V0bGluZVZhbHVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMzkxLDYgKzEyMzkzLDgg
QEAKIAkJQkM1QTg2ODMwQzMzNjc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IERPTVNlbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDNUE4NkIzMEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01TZWxlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVBODZCNDBDMzM2N0U4MDBFRUE2NDkg
LyogSlNET01TZWxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NU2VsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUM3NjI4MTQ5
N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDNUNGQ0E4MTFGNzkzMzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRp
b25TdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGl6YXRp
b25TdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVFQjVEQTBFODFC
N0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQm9yZGVyVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0JvcmRlclZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUVCNURDMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5l
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT3V0bGluZVZhbHVlLmg7
IHBhdGggPSBzdHlsZS9PdXRsaW5lVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIwMjQ0LDYgKzIwMjQ4LDggQEAKIAkJCQkxQUQ4RjgxQTExQ0FCOUU5MDBFOTNFNTQgLyog
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcCAqLywKIAkJCQkxQUQ4RjgxOTExQ0FCOUU5MDBFOTNFNTQg
LyogUGxhdGZvcm1TdHJhdGVnaWVzLmggKi8sCiAJCQkJOTM1QzQ3NkEwOUFDNEQ0RjAwQTZBQUI0
IC8qIFBsYXRmb3JtV2hlZWxFdmVudC5oICovLAorCQkJCUJDNUM3NjI4MTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLywKKwkJCQlCQzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUg
LyogUGxhdGZvcm1FdmVudC5oICovLAogCQkJCUJDQkI4QUI0MTNGMUFGQjAwMDczNERGMCAvKiBQ
T0RBcmVuYS5oICovLAogCQkJCUJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZh
bC5oICovLAogCQkJCUJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUu
aCAqLywKQEAgLTI0ODU4LDYgKzI0ODY0LDcgQEAKIAkJCQlGMzVBRTVBQzE0OTI1RjVCMDA0RDU3
NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2QzE3QTNFMTQ5
MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4
MEZBMzE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGlsZUNhY2hlTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI2ODE0OTk3OTBEMDBDREQzQTQgLyogRkVD
b21wb3NpdGVBcml0aG1ldGljTkVPTi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkExNDk5
NzkwRDAwQ0REM0E0IC8qIEZFR2F1c3NpYW5CbHVyTkVPTi5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
Nzc1MSw2ICsyNzc1OCw3IEBACiAJCQkJOEMxMDkxOTgxNDk0RkIxMjAwQjVEM0ZFIC8qIENTU0Vs
ZW1lbnRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5
NTU1NDMwMDdGMTdBQyAvKiBLaWxsUmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1
ODBGQTQxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVDYWNoZUxheWVyLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkM1Qzc2MkExNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNjcxNDk5NzkwRDAwQ0REM0E0IC8qIEZFQ29tcG9zaXRl
QXJpdGhtZXRpY05FT04uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNjkxNDk5NzkwRDAw
Q0REM0E0IC8qIEZFR2F1c3NpYW5CbHVyTkVPTi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVD
RUI2QjE0OTk3OTBEMDBDREQzQTQgLyogRkVMaWdodGluZ05FT04uY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gMTAyOTY4
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1OTAsNyArMjU5MCw3IEBAIC0gKHZv
aWQpYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudQogICAgIC8vIFNpbXVsYXRlIGEgY2xpY2sg
aW4gdGhlIG1pZGRsZSBvZiB0aGUgb2JqZWN0LgogICAgIExheW91dFBvaW50IGNsaWNrUG9pbnQg
PSBtX29iamVjdC0+Y2xpY2tQb2ludCgpOwogICAgIAotICAgIFBsYXRmb3JtTW91c2VFdmVudCBt
b3VzZUV2ZW50KGNsaWNrUG9pbnQsIGNsaWNrUG9pbnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50
UHJlc3NlZCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwor
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KGNsaWNrUG9pbnQsIGNsaWNrUG9pbnQs
IFJpZ2h0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQpOwogICAg
IGlmIChoYW5kbGVkKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2hvd0NvbnRleHRNZW51KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiAxMDI5Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDE4ICszNCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxp
bmUgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShQbGF0Zm9ybUV2ZW50OjpUeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpLZXlVcDoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpLZXlVcDoKICAg
ICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5dXBFdmVudDsKLSAgICAgICAgY2FzZSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd246CisgICAgICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6UmF3S2V5RG93bjoKICAgICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50OwotICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjoKKyAgICAg
ICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpDaGFyOgogICAgICAgICAgICAgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5rZXlwcmVzc0V2ZW50OwotICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
S2V5RG93bjoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOgogICAgICAgICAg
ICAgLy8gVGhlIGNhbGxlciBzaG91bGQgZGlzYW1iaWd1YXRlIHRoZSBjb21iaW5lZCBldmVudCBp
bnRvIFJhd0tleURvd24gb3IgQ2hhciBldmVudHMuCiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmtleWRvd25FdmVudDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TW91c2VFdmVudD4gTW91c2VFdmVudDo6
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEFic3RyYWN0
Vmlldz4gdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgaW50IGRldGFpbCwg
UGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFyZ2V0KQogewotICAgIEFTU0VSVChldmVudC5ldmVu
dFR5cGUoKSA9PSBNb3VzZUV2ZW50TW92ZWQgfHwgZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0b24p
OworICAgIEFTU0VSVChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCB8
fCBldmVudC5idXR0b24oKSAhPSBOb0J1dHRvbik7CiAKICAgICBib29sIGlzQ2FuY2VsYWJsZSA9
IGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzks
NyArNzksNyBAQCBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZU1vdXNlRXZlCiAgICAg
c2hpZnRLZXkgPSBjdHJsS2V5ID0gYWx0S2V5ID0gbWV0YUtleSA9IGZhbHNlOwogICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxL
ZXksIGFsdEtleSwgbWV0YUtleSk7CiAgICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChkcmFn
RGF0YS0+Y2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEtPmdsb2JhbFBvc2l0aW9uKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAs
IHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlmdEtleSwgY3Ry
bEtleSwgYWx0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YUtleSwgY3Vy
cmVudFRpbWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJ
KHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIzMywxOSArMjIzMywxOSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvCiAgICAgLy8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAog
ICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlRhcERvd25UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRh
cERvd246CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRh
cFR5cGU6IHsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA6IHsKICAgICAgICAg
Ly8gRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGlt
ZXMgb25jZSBoaXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3Zl
LgotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQu
cG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3Vz
ZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCks
IGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2
ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1
cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50
LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgp
LCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQg
Ki8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdl
c3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50
LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUo
Z2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBO
b0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBn
ZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2
ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0
YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0
b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0
dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50
LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1w
KCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50
LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVF
dmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0
S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7
CiAgICAgICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNl
UHJlc3NFdmVudChmYWtlTW91c2VEb3duKTsKICAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNr
RGl2aXNvciA9IChmbG9hdClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8g
RklYTUU6IFJlcGxhY2UgdGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3Zl
IGZpeG1lIGhhcyBiZWVuIGFkZHJlc3NlZC4KICAgICAgICAgSW50UG9pbnQgcG9pbnQoZ2VzdHVy
ZUV2ZW50LnBvc2l0aW9uKCkueCgpLCBnZXN0dXJlRXZlbnQucG9zaXRpb24oKS55KCkpOwpAQCAt
MjI1NCw5ICsyMjU0LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChj
bwogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91
YmxlVGFwVHlwZToKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5
cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKKyAgICBj
YXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAgY2FzZSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJl
U2Nyb2xsRW5kOiB7CiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsK
ICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2NCw2
ICsyMjY0LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAg
ICAgICB2aWV3LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAtMjM1Nyw5ICsyMzYw
LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50RgogICAgIC8vIFRo
aXMgaXMgcmVxdWlyZWQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogCiAjaWYgT1MoV0lORE9XUykK
LSAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAg
UGxhdGZvcm1FdmVudDo6VHlwZSBldmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVh
c2VkOwogI2Vsc2UKLSAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJl
c3NlZDsKKyAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIGV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUHJlc3NlZDsKICNlbmRpZgogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZl
bnQocG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBSaWdodEJ1dHRvbiwgZXZlbnRUeXBlLCAxLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpjdXJyZW50VGltZSgpKTsKQEAgLTI0MTcs
NyArMjQyMCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW0KICAg
ICBib29sIG1ldGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9k
aWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKICAgICBJbnRQ
b2ludCBnbG9iYWxQb2ludCA9IHZpZXctPmNvbnRlbnRzVG9TY3JlZW4oSW50UmVjdCh2aWV3LT53
aW5kb3dUb0NvbnRlbnRzKG1fY3VycmVudE1vdXNlUG9zaXRpb24pLCBJbnRTaXplKCkpKS5sb2Nh
dGlvbigpOwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlRXZlbnQobV9jdXJy
ZW50TW91c2VQb3NpdGlvbiwgZ2xvYmFsUG9pbnQsIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQs
IDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIGN1cnJlbnRUaW1lKCkpOwor
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlRXZlbnQobV9jdXJyZW50TW91c2VQ
b3NpdGlvbiwgZ2xvYmFsUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVk
LCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsK
ICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmVFdmVudCk7CiB9CiAKQEAgLTI0NzEsOCArMjQ3
NCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVBY2Nlc3NLZXkoY29uc3QKICAgICAvLyBJ
RSBtYXRjaGVzIGxvd2VyIGFuZCB1cHBlciBjYXNlIGFjY2VzcyBrZXlzIHJlZ2FyZGxlc3Mgb2Yg
U2hpZnQga2V5IHN0YXRlIC0gYnV0IGlmIGJvdGggdXBwZXIgYW5kCiAgICAgLy8gbG93ZXIgY2Fz
ZSB2YXJpYW50cyBhcmUgcHJlc2VudCBpbiBhIGRvY3VtZW50LCB0aGUgY29ycmVjdCBlbGVtZW50
IGlzIG1hdGNoZWQgYmFzZWQgb24gU2hpZnQga2V5IHN0YXRlLgogICAgIC8vIEZpcmVmb3ggb25s
eSBtYXRjaGVzIGFuIGFjY2VzcyBrZXkgaWYgU2hpZnQgaXMgbm90IHByZXNzZWQsIGFuZCBkb2Vz
IHRoYXQgY2FzZS1pbnNlbnNpdGl2ZWx5LgotICAgIEFTU0VSVCghKGFjY2Vzc0tleU1vZGlmaWVy
cygpICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpTaGlmdEtleSkpOwotICAgIGlmICgoZXZ0Lm1v
ZGlmaWVycygpICYgflBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tl
eU1vZGlmaWVycygpKQorICAgIEFTU0VSVCghKGFjY2Vzc0tleU1vZGlmaWVycygpICYgUGxhdGZv
cm1FdmVudDo6U2hpZnRLZXkpKTsKKyAgICBpZiAoKGV2dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9y
bUV2ZW50OjpTaGlmdEtleSkgIT0gYWNjZXNzS2V5TW9kaWZpZXJzKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBTdHJpbmcga2V5ID0gZXZ0LnVubW9kaWZpZWRUZXh0KCk7CiAgICAgRWxl
bWVudCogZWxlbSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUFjY2Vzc0tleShr
ZXkubG93ZXIoKSk7CkBAIC0yNTIwLDcgKzI1MjMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5
RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
IHsKICAgICAgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5T
Y3JvbGxJblByb2dyZXNzKSB7CiAgICAgICAgICAgICAvLyBJZiBhIGtleSBpcyBwcmVzc2VkIHdo
aWxlIHRoZSBwYW5TY3JvbGwgaXMgaW4gcHJvZ3Jlc3MgdGhlbiB3ZSB3YW50IHRvIHN0b3AKLSAg
ICAgICAgICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6S2V5RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UmF3S2V5RG93bikgCisgICAgICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgCiAgICAgICAgICAgICAgICAgc3RvcEF1dG9z
Y3JvbGxUaW1lcigpOwogCiAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGluIHBhbnNjcm9sbCBt
b2RlLCB3ZSBzd2FsbG93IHRoZSBrZXkgZXZlbnQKQEAgLTI1NTAsMjUgKzI1NTMsMjUgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIC8vIE9uIFdpbmRvd3Ms
IFdlYktpdCBleHBsaWNpdGx5IGNhbGxzIGhhbmRsZUFjY2Vzc0tleSgpIGluc3RlYWQgb2YgZGlz
cGF0Y2hpbmcgYSBrZXlwcmVzcyBldmVudCBmb3IgV01fU1lTQ0hBUiBtZXNzYWdlcy4KICAgICAv
LyBPdGhlciBwbGF0Zm9ybXMgY3VycmVudGx5IG1hdGNoIGVpdGhlciBNYWMgb3IgV2luZG93cyBi
ZWhhdmlvciwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSBzZW5kIGNvbWJpbmVkIEtleURvd24g
ZXZlbnRzLgogICAgIGJvb2wgbWF0Y2hlZEFuQWNjZXNzS2V5ID0gZmFsc2U7Ci0gICAgaWYgKGlu
aXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQor
ICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24p
CiAgICAgICAgIG1hdGNoZWRBbkFjY2Vzc0tleSA9IGhhbmRsZUFjY2Vzc0tleShpbml0aWFsS2V5
RXZlbnQpOwogCiAgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIGZhaXIgdG8gbGV0IGFuIGlucHV0
IG1ldGhvZCBoYW5kbGUgS2V5VXAgZXZlbnRzIGJlZm9yZSBET00gZGlzcGF0Y2guCi0gICAgaWYg
KGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCB8
fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikK
KyAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCB8
fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAg
IHJldHVybiAhbm9kZS0+ZGlzcGF0Y2hLZXlFdmVudChpbml0aWFsS2V5RXZlbnQpOwogCiAgICAg
Ym9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1i
aWd1YXRpb25RdWlya3MoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50IGtleURvd25FdmVudCA9IGluaXRpYWxLZXlFdmVudDsgICAgCi0gICAgaWYg
KGtleURvd25FdmVudC50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3du
KQotICAgICAgICBrZXlEb3duRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7Cisg
ICAgaWYgKGtleURvd25FdmVudC50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikK
KyAgICAgICAga2V5RG93bkV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2
ZW50OjpSYXdLZXlEb3duLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBSZWZQdHI8
S2V5Ym9hcmRFdmVudD4ga2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZl
bnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIGlmIChtYXRjaGVk
QW5BY2Nlc3NLZXkpCiAgICAgICAgIGtleWRvd24tPnNldERlZmF1bHRQcmV2ZW50ZWQodHJ1ZSk7
CiAgICAga2V5ZG93bi0+c2V0VGFyZ2V0KG5vZGUpOwogCi0gICAgaWYgKGluaXRpYWxLZXlFdmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYg
KGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewog
ICAgICAgICBub2RlLT5kaXNwYXRjaEV2ZW50KGtleWRvd24sIGVjKTsKICAgICAgICAgLy8gSWYg
ZnJhbWUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiBrZXlkb3duIGRpc3BhdGNoLCB0aGVuIHJldHVy
biB0cnVlIHRvIGF2b2lkIHNlbmRpbmcgYSBzdWJzZXF1ZW50IGtleXByZXNzIG1lc3NhZ2UgdG8g
dGhlIG5ldyBmcmFtZS4KICAgICAgICAgYm9vbCBjaGFuZ2VkRm9jdXNlZEZyYW1lID0gbV9mcmFt
ZS0+cGFnZSgpICYmIG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC0yNjA3LDcgKzI2MTAsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgfQogCiAgICAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50IGtleVByZXNzRXZlbnQgPSBpbml0aWFsS2V5RXZlbnQ7Ci0gICAga2V5UHJlc3NF
dmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFy
LCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKKyAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmln
dWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxp
dHlNb2RlKTsKICAgICBpZiAoa2V5UHJlc3NFdmVudC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4ga2V5ZG93blJlc3VsdDsKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5cHJl
c3MgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5UHJlc3NFdmVudCwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZGVmYXVsdFZpZXcoKSk7CkBAIC0yNzg2LDcgKzI3ODksNyBAQCBzdGF0aWMgYm9vbCBF
eGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlm
IChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuZXZlbnQoKS5l
dmVudFR5cGUoKSAhPSBNb3VzZUV2ZW50TW92ZWQpIHsKKyAgICBpZiAoZXZlbnQuZXZlbnQoKS5i
dXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkudHlwZSgpICE9IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQpIHsKICAgICAgICAgLy8gSWYgd2UgYWxsb3dlZCB0aGUgb3RoZXIg
c2lkZSBvZiB0aGUgYnJpZGdlIHRvIGhhbmRsZSBhIGRyYWcKICAgICAgICAgLy8gbGFzdCB0aW1l
LCB0aGVuIG1fbW91c2VQcmVzc2VkIG1pZ2h0IHN0aWxsIGJlIHNldC4gU28gd2UKICAgICAgICAg
Ly8gY2xlYXIgaXQgbm93IHRvIG1ha2Ugc3VyZSB0aGUgbmV4dCBtb3ZlIGFmdGVyIGEgZHJhZwpA
QCAtMjgyMiw3ICsyODI1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91cwogICAgIC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0aGUgc2VsZWN0aW9uLCB0aGUgdXNl
ciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFuZCBtb3VzZWRyYWcsCiAgICAgLy8g
b3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVmZiBhbmQgYWxsb3cgc2VsZWN0aW9u
IHRvIG9jY3VyCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmIG1fZHJhZ01heVN0
YXJ0U2VsZWN0aW9uSW5zdGVhZCAmJiAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIERyYWdTb3Vy
Y2VBY3Rpb25TZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNl
RG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKLSAgICAgICAgQVNTRVJUKGV2ZW50LmV2
ZW50KCkuZXZlbnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkKTsKKyAgICAgICAgQVNTRVJUKGV2
ZW50LmV2ZW50KCkudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpOwogICAgICAg
ICBpZiAoKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7
CiAgICAgICAgICAgICAvLyAuLi4gdW5sZXNzIHRoZSBtb3VzZSBpcyBvdmVyIGFuIGltYWdlLCB0
aGVuIHdlIHN0YXJ0IGRyYWdnaW5nIGp1c3QgdGhlIGltYWdlCiAgICAgICAgICAgICBkcmFnU3Rh
dGUoKS5tX2RyYWdUeXBlID0gRHJhZ1NvdXJjZUFjdGlvbkltYWdlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRsZXJCbGFja0Jl
cnJ5LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ibGFja2Jl
cnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3
Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMKIAogdW5zaWdu
ZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0
S2V5OwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21p
dW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsOSArMTQ4
LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdgogdW5zaWduZWQg
RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewogI2lmIE9TKERBUldJTikKLSAg
ICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkgfCBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiAjZWxzZQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2VuZGlmCiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAko
cmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVy
RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw2IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIAogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFs
dEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCShyZXZpc2lvbiAxMDI5
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVJlbGVhc2VFdmVudAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVy
cygpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJl
dHVybiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAKIC8vIEdUSysgbXVzdCBzY3JvbGwgaG9y
aXpvbnRhbGx5IGlmIHRoZSBtb3VzZSBwb2ludGVyIGlzIG9uIHRvcCBvZiB0aGUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDEwMjk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzE5LDkgKzcxOSw5IEBAIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNz
S2V5TW9kaWZpZXIKICAgICAvLyBTbywgd2UgdXNlIENvbnRyb2wgaW4gdGhpcyBjYXNlLCBldmVu
IHRob3VnaCBpdCBjb25mbGljdHMgd2l0aCBFbWFjcy1zdHlsZSBrZXkgYmluZGluZ3MuCiAgICAg
Ly8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDc+IGZv
ciBtb3JlIGRldGFpbC4KICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFu
Y2VkVXNlckludGVyZmFjZUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6Q3RybEtleTsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7
CiAKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkg
fCBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDkg
KzEyNCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIHVuc2ln
bmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKICNpZiBPUyhEQVJXSU4p
Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5IHwg
UGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2Vsc2UKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbmRp
ZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5j
cHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFu
ZGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6cGFzc1dpZGdldE1vdXNlRG93bkV2CiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6
YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAJKHJldmlzaW9uIDEw
Mjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50
SGFuZGxlcjo6Y3JlYQogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVy
cygpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJl
dHVybiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1F
dmVudC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3Jt
RXZlbnRfaAorI2RlZmluZSBQbGF0Zm9ybUV2ZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBQbGF0Zm9ybUV2ZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAg
ICAvLyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQKKyAgICAgICAgS2V5RG93biwKKyAgICAgICAgS2V5
VXAsCisgICAgICAgIFJhd0tleURvd24sCisgICAgICAgIENoYXIsCisKKyAgICAgICAgLy8gUGxh
dGZvcm1Nb3VzZUV2ZW50CisgICAgICAgIE1vdXNlTW92ZWQsCisgICAgICAgIE1vdXNlUHJlc3Nl
ZCwKKyAgICAgICAgTW91c2VSZWxlYXNlZCwKKyAgICAgICAgTW91c2VTY3JvbGwsCisgICAgICAg
IAorICAgICAgICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgV2hlZWwsCisgICAgICAg
IAorICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xs
QmVnaW4sCisgICAgICAgIEdlc3R1cmVTY3JvbGxFbmQsCisgICAgICAgIEdlc3R1cmVTY3JvbGxV
cGRhdGUsCisgICAgICAgIEdlc3R1cmVUYXAsCisgICAgICAgIEdlc3R1cmVUYXBEb3duLAorICAg
ICAgICBHZXN0dXJlRG91YmxlVGFwLAorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CisKKworICAgIC8vIEV2ZW50IE1v
ZGlmaWVycworCisgICAgZW51bSBNb2RpZmllcktleSB7CisgICAgICAgIEFsdEtleSA9IDEgPDwg
MCwKKyAgICAgICAgQ3RybEtleSA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwK
KyAgICAgICAgU2hpZnRLZXkgPSAxIDw8IDMKKyAgICB9OworCisgICAgYm9vbCBzaGlmdEtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7
IHJldHVybiBtX2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx0S2V5OyB9CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9
CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IChhbHRLZXkoKSA/IEFsdEtleSA6IDApCisgICAgICAgICAgICB8IChjdHJsS2V5KCkgPyBDdHJs
S2V5IDogMCkKKyAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1ldGFLZXkgOiAwKQorICAgICAg
ICAgICAgfCAoc2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7CisgICAgfQorCitwcm90ZWN0ZWQ6
CisgICAgUGxhdGZvcm1FdmVudChUeXBlIHR5cGUpCisgICAgICAgIDogbV9zaGlmdEtleShmYWxz
ZSkKKyAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCisgICAgICAgICwgbV9hbHRLZXkoZmFsc2Up
CisgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAg
IHsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IG1fc2hp
ZnRLZXkoc2hpZnRLZXkpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwg
bV9hbHRLZXkoYWx0S2V5KQorICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgICAgICAs
IG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fc2hpZnRLZXk7CisgICAg
Ym9vbCBtX2N0cmxLZXk7CisgICAgYm9vbCBtX2FsdEtleTsKKyAgICBib29sIG1fbWV0YUtleTsK
KyAgICB1bnNpZ25lZCBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBQbGF0Zm9ybUV2ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtR2VzdHVyZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNDIgKzI5LDMwIEBACiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogCiAjaW5jbHVkZSAi
SW50UG9pbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQgeworY2xhc3MgUGxhdGZvcm1HZXN0
dXJlRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1FdmVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBUeXBl
IHsKLSAgICAgICAgU2Nyb2xsQmVnaW5UeXBlLAotICAgICAgICBTY3JvbGxFbmRUeXBlLAotICAg
ICAgICBTY3JvbGxVcGRhdGVUeXBlLAotICAgICAgICBUYXBUeXBlLAotICAgICAgICBUYXBEb3du
VHlwZSwKLSAgICAgICAgRG91YmxlVGFwVHlwZSwKLSAgICB9OwotCiAgICAgUGxhdGZvcm1HZXN0
dXJlRXZlbnQoKQotICAgICAgICA6IG1fdHlwZShTY3JvbGxCZWdpblR5cGUpCisgICAgICAgIDog
UGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAg
ICwgbV90aW1lc3RhbXAoMCkKKyAgICAgICAgLCBtX2RlbHRhWCgwKQorICAgICAgICAsIG1fZGVs
dGFZKDApCiAgICAgewogICAgIH0KIAotICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5cGUgdHlw
ZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIGNvbnN0IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRlbHRhWCwgY29uc3QgZmxv
YXQgZGVsdGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IG1ldGFLZXkpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgUGxhdGZvcm1HZXN0dXJlRXZl
bnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgZG91YmxlIHRpbWVzdGFtcCwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0
YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtl
eSkKKyAgICAgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRL
ZXksIG1ldGFLZXkpCiAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgLCBt
X2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICAgICAsIG1fdGltZXN0YW1wKHRp
bWVzdGFtcCkKICAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCiAgICAgICAgICwgbV9kZWx0YVko
ZGVsdGFZKQotICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJs
S2V5KGN0cmxLZXkpCi0gICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0
YUtleShtZXRhS2V5KQogICAgIHsKICAgICB9CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KLQogICAgIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQ
b3NpdGlvbjsgfSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCiAKQEAgLTcyLDIyICs2MCwxMyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQog
ICAgIGZsb2F0IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9Ci0gICAgYm9vbCBz
aGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICBib29sIGN0cmxLZXko
KSBjb25zdCB7IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICBib29sIGFsdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWx0S2V5OyB9Ci0gICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRhS2V5OyB9Ci0KKyAgICAKIHByb3RlY3RlZDoKLSAgICBUeXBlIG1fdHlwZTsKICAgICBJbnRQ
b2ludCBtX3Bvc2l0aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgZG91
YmxlIG1fdGltZXN0YW1wOwogICAgIGZsb2F0IG1fZGVsdGFYOwogICAgIGZsb2F0IG1fZGVsdGFZ
OwotICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAgICBib29sIG1f
YWx0S2V5OwotICAgIGJvb2wgbV9tZXRhS2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw4IEBACiAjaWZu
ZGVmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudF9oCiAjZGVmaW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dF9oCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZl
bnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC02NSw0MCArNjYsMTQgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0V2YXNfRXZlbnRfS2V5X1VwIEV2YXNfRQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgewotICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgOiBwdWJsaWMg
UGxhdGZvcm1FdmVudCB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgewotICAgICAg
ICAgICAgLy8gS2V5RG93biBpcyBzZW50IGJ5IHBsYXRmb3JtcyBzdWNoIGFzIE1hYyBPUyBYLCBn
dGsgYW5kIFF0LCBhbmQgaGFzIGluZm9ybWF0aW9uIGFib3V0IGJvdGggcGh5c2ljYWwgcHJlc3Nl
ZCBrZXksIGFuZCBpdHMgdHJhbnNsYXRpb24uCi0gICAgICAgICAgICAvLyBGb3IgRE9NIHByb2Nl
c3NpbmcsIGl0IG5lZWRzIHRvIGJlIGRpc2FtYmlndWF0ZWQgYXMgUmF3S2V5RG93biBvciBDaGFy
IGV2ZW50LgotICAgICAgICAgICAgS2V5RG93biwKLQotICAgICAgICAgICAgLy8gS2V5VXAgaXMg
c2VudCBieSBhbGwgcGxhdGZvcm1zLgotICAgICAgICAgICAgS2V5VXAsCi0KLSAgICAgICAgICAg
IC8vIFRoZXNlIGV2ZW50cyBhcmUgc2VudCBieSBwbGF0Zm9ybXMgc3VjaCBhcyBXaW5kb3dzIGFu
ZCB3eFdpZGdldHMuIFJhd0tleURvd24gb25seSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwaHlz
aWNhbCBrZXksIGFuZCBDaGFyCi0gICAgICAgICAgICAvLyBvbmx5IGhhcyBpbmZvcm1hdGlvbiBh
Ym91dCBhIGNoYXJhY3RlciBpdCB3YXMgdHJhbnNsYXRlZCBpbnRvLgotICAgICAgICAgICAgUmF3
S2V5RG93biwKLSAgICAgICAgICAgIENoYXIKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIE1v
ZGlmaWVyS2V5IHsKLSAgICAgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKLSAgICAgICAgICAgIEN0
cmxLZXkgPSAxIDw8IDEsCi0gICAgICAgICAgICBNZXRhS2V5ID0gMSA8PCAyLAotICAgICAgICAg
ICAgU2hpZnRLZXkgPSAxIDw8IDMKLSAgICAgICAgfTsKLQogICAgICAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoKQotICAgICAgICAgICAgOiBtX3R5cGUoS2V5RG93bikKKyAgICAgICAgICAgIDog
UGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQogICAgICAgICAgICAgLCBtX2F1
dG9SZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKDAp
CiAgICAgICAgICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoMCkKICAgICAgICAgICAgICwg
bV9pc0tleXBhZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAg
ICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkK
LSAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgICAgICAgICAsIG1faXNTeXN0ZW1LZXkoZmFsc2UpCiAjZW5k
aWYKQEAgLTExMCw4ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAg
ICB7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorCiAgICAgICAgIHZvaWQgZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5
cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlKTsgLy8gT25seSB1c2Vk
IG9uIHBsYXRmb3JtcyB0aGF0IG5lZWQgaXQsIGkuZS4gdGhvc2UgdGhhdCBnZW5lcmF0ZSBLZXlE
b3duIGV2ZW50cy4KIAogICAgICAgICAvLyBUZXh0IGFzIGFzIGdlbmVyYXRlZCBieSBwcm9jZXNz
aW5nIGEgdmlydHVhbCBrZXkgY29kZSB3aXRoIGEga2V5Ym9hcmQgbGF5b3V0CkBAIC0xMzksMTYg
KzExMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQo
KSBjb25zdCB7IHJldHVybiBtX2F1dG9SZXBlYXQ7IH0KICAgICAgICAgdm9pZCBzZXRJc0F1dG9S
ZXBlYXQoYm9vbCBpbikgeyBtX2F1dG9SZXBlYXQgPSBpbjsgfQogICAgICAgICBib29sIGlzS2V5
cGFkKCkgY29uc3QgeyByZXR1cm4gbV9pc0tleXBhZDsgfQotICAgICAgICBib29sIHNoaWZ0S2V5
KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgICAgICBib29sIGN0cmxLZXkoKSBj
b25zdCB7IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICAgICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7
IHJldHVybiBtX2FsdEtleTsgfQotICAgICAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVy
biBtX21ldGFLZXk7IH0KLSAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QgewotICAg
ICAgICAgICAgcmV0dXJuIChhbHRLZXkoKSA/IEFsdEtleSA6IDApCi0gICAgICAgICAgICAgICAg
fCAoY3RybEtleSgpID8gQ3RybEtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAobWV0YUtleSgp
ID8gTWV0YUtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAoc2hpZnRLZXkoKSA/IFNoaWZ0S2V5
IDogMCk7Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgYm9vbCBjdXJyZW50Q2Fwc0xvY2tT
dGF0ZSgpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShib29s
JiBzaGlmdEtleSwgYm9vbCYgY3RybEtleSwgYm9vbCYgYWx0S2V5LCBib29sJiBtZXRhS2V5KTsK
QEAgLTE5Myw3ICsxNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIFN0cmluZyBtX3RleHQ7CiAg
ICAgICAgIFN0cmluZyBtX3VubW9kaWZpZWRUZXh0OwogICAgICAgICBTdHJpbmcgbV9rZXlJZGVu
dGlmaWVyOwpAQCAtMjAxLDEwICsxNjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGludCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmlydHVh
bEtleUNvZGU7CiAgICAgICAgIGJvb2wgbV9pc0tleXBhZDsKLSAgICAgICAgYm9vbCBtX3NoaWZ0
S2V5OwotICAgICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAgYm9vbCBtX2FsdEtleTsKLSAg
ICAgICAgYm9vbCBtX21ldGFLZXk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFJldGFp
blB0cjxOU0V2ZW50PiBtX21hY0V2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Nb3VzZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIFBsYXRmb3JtTW91c2VFdmVudF9oCiAKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykK
IHR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEJ1dHRvbiBHZGtFdmVudEJ1dHRvbjsKQEAgLTYxLDE4
ICs2MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgLy8gVGhlc2UgYnV0dG9u
IG51bWJlcnMgbWF0Y2ggdGhlIG9uZXMgdXNlZCBpbiB0aGUgRE9NIEFQSSwgMCB0aHJvdWdoIDIs
IGV4Y2VwdCBmb3IgTm9CdXR0b24gd2hpY2ggaXNuJ3Qgc3BlY2lmaWVkLgogICAgIGVudW0gTW91
c2VCdXR0b24geyBOb0J1dHRvbiA9IC0xLCBMZWZ0QnV0dG9uLCBNaWRkbGVCdXR0b24sIFJpZ2h0
QnV0dG9uIH07Ci0gICAgZW51bSBNb3VzZUV2ZW50VHlwZSB7IE1vdXNlRXZlbnRNb3ZlZCwgTW91
c2VFdmVudFByZXNzZWQsIE1vdXNlRXZlbnRSZWxlYXNlZCwgTW91c2VFdmVudFNjcm9sbCB9Owog
ICAgIAotICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudCB7CisgICAgY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50IDogcHVibGljIFBsYXRmb3JtRXZlbnQgewogICAgIHB1YmxpYzoKICAgICAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50KCkKLSAgICAgICAgICAgIDogbV9idXR0b24oTm9CdXR0b24pCi0g
ICAgICAgICAgICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRNb3ZlZCkKKyAgICAgICAgICAgIDog
UGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKQorICAgICAgICAgICAgLCBt
X2J1dHRvbihOb0J1dHRvbikKICAgICAgICAgICAgICwgbV9jbGlja0NvdW50KDApCi0gICAgICAg
ICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY3RybEtleShmYWxzZSkK
LSAgICAgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShm
YWxzZSkKICAgICAgICAgICAgICwgbV90aW1lc3RhbXAoMCkKICAgICAgICAgICAgICwgbV9tb2Rp
ZmllckZsYWdzKDApCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtODMsMTcgKzc5LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBNb3VzZUJ1dHRvbiBidXR0b24sIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0LCBi
b29sIGN0cmwsIGJvb2wgYWx0LCBib29sIG1ldGEsIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgICAg
ICAgICA6IG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
TW91c2VCdXR0b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wKQorICAgICAg
ICAgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1l
dGFLZXkpCisgICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAs
IG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fYnV0dG9u
KGJ1dHRvbikKLSAgICAgICAgICAgICwgbV9ldmVudFR5cGUoZXZlbnRUeXBlKQogICAgICAgICAg
ICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShz
aGlmdCkKLSAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmwpCi0gICAgICAgICAgICAsIG1fYWx0
S2V5KGFsdCkKLSAgICAgICAgICAgICwgbV9tZXRhS2V5KG1ldGEpCiAgICAgICAgICAgICAsIG1f
dGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtMTAyLDYgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgLCBtX2RpZEFjdGl2YXRlV2ViVmlldyhmYWxzZSkKICNlbmRpZgogICAgICAg
ICB7CisgICAgICAgICAgICAvL0FTU0VSVChpc1BsYXRmb3JtTW91c2VFdmVudFR5cGUodHlwZSkp
OwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvcygpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb247IH0KQEAgLTExNCw3ICsxMDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGludCBtb3ZlbWVudFkoKSBjb25zdCB7IHJldHVybiBtX21vdmVtZW50RGVsdGEu
eSgpOyB9CiAjZW5kaWYKICAgICAgICAgTW91c2VCdXR0b24gYnV0dG9uKCkgY29uc3QgeyByZXR1
cm4gbV9idXR0b247IH0KLSAgICAgICAgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmVudFR5cGU7IH0KICAgICAgICAgaW50IGNsaWNrQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWNrQ291bnQ7IH0KICAgICAgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hpZnRLZXk7IH0KICAgICAgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1
cm4gbV9jdHJsS2V5OyB9CkBAIC0xNDIsNyArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2lmIGRlZmluZWQoX19PQkpDX18pCiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50
ICosIE5TVmlldyAqd2luZG93Vmlldyk7CiAjZW5kaWYKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBi
dXR0b24sIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBi
dXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0
S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpOwogICAgICAg
ICBpbnQgZXZlbnROdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50TnVtYmVyOyB9CkBAIC0x
NzAsMTIgKzE2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSW50UG9pbnQgbV9t
b3ZlbWVudERlbHRhOwogI2VuZGlmCiAgICAgICAgIE1vdXNlQnV0dG9uIG1fYnV0dG9uOwotICAg
ICAgICBNb3VzZUV2ZW50VHlwZSBtX2V2ZW50VHlwZTsKICAgICAgICAgaW50IG1fY2xpY2tDb3Vu
dDsKLSAgICAgICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgICAgICBib29sIG1fY3RybEtleTsKLSAg
ICAgICAgYm9vbCBtX2FsdEtleTsKLSAgICAgICAgYm9vbCBtX21ldGFLZXk7CiAgICAgICAgIGRv
dWJsZSBtX3RpbWVzdGFtcDsgLy8gdW5pdDogc2Vjb25kcwogICAgICAgICB1bnNpZ25lZCBtX21v
ZGlmaWVyRmxhZ3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
V2hlZWxFdmVudC5oCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBQbGF0Zm9ybVdoZWVsRXZlbnRfaAogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAKICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHN0
cnVjdCBfR2RrRXZlbnRTY3JvbGwgR2RrRXZlbnRTY3JvbGw7CkBAIC04NCwxOCArODUsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIFBsYXRmb3Jt
V2hlZWxFdmVudCB7CisgICAgY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50IDogcHVibGljIFBsYXRm
b3JtRXZlbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KCkKLSAg
ICAgICAgICAgIDogbV9kZWx0YVgoMCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQbGF0
Zm9ybUV2ZW50OjpXaGVlbCkKKyAgICAgICAgICAgICwgbV9kZWx0YVgoMCkKICAgICAgICAgICAg
ICwgbV9kZWx0YVkoMCkKICAgICAgICAgICAgICwgbV93aGVlbFRpY2tzWCgwKQogICAgICAgICAg
ICAgLCBtX3doZWVsVGlja3NZKDApCiAgICAgICAgICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xs
QnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9hbHRLZXkoZmFsc2Up
Ci0gICAgICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9kaXJlY3Rp
b25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZP
Uk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcyhmYWxzZSkKQEAgLTEwNywxNyArMTA1LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChJbnRQb2ludCBw
b3NpdGlvbiwgSW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVs
dGFZLCBmbG9hdCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksIFBsYXRmb3JtV2hlZWxF
dmVudEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgICAgICAgICA6IG1fcG9zaXRpb24ocG9z
aXRpb24pCisgICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWws
IHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpCisgICAgICAgICAgICAsIG1fcG9z
aXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9z
aXRpb24pCiAgICAgICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgICAgICwgbV9k
ZWx0YVkoZGVsdGFZKQogICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKHdoZWVsVGlja3NYKQog
ICAgICAgICAgICAgLCBtX3doZWVsVGlja3NZKHdoZWVsVGlja3NZKQogICAgICAgICAgICAgLCBt
X2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0
S2V5KQotICAgICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKLSAgICAgICAgICAgICwgbV9h
bHRLZXkoYWx0S2V5KQotICAgICAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKICAgICAgICAg
ICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAs
IG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKQEAgLTEzOSwxMSArMTM0LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ncmFudWxhcml0eTsgfQogCi0gICAg
ICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgICAg
IGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgICAgICBib29s
IGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9Ci0gICAgICAgIGJvb2wgbWV0YUtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtleTsgfQotCiAgICAgICAgIGludCB4KCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbi54KCk7IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMu
CiAgICAgICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi55KCk7IH0KICAgICAg
ICAgaW50IGdsb2JhbFgoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uLngoKTsgfSAv
LyBTY3JlZW4gY29vcmRpbmF0ZXMuCkBAIC0yMDgsMTAgKzE5OCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgZmxvYXQgbV93aGVlbFRpY2tzWDsKICAgICAgICAgZmxvYXQgbV93aGVl
bFRpY2tzWTsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFudWxh
cml0eTsKLSAgICAgICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgICAgICBib29sIG1fY3RybEtleTsK
LSAgICAgICAgYm9vbCBtX2FsdEtleTsKLSAgICAgICAgYm9vbCBtX21ldGFLZXk7CiAgICAgICAg
IGJvb2wgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2U7CiAjaWYgUExBVEZPUk0oTUFDKSB8
fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgIGJvb2wgbV9oYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JOb25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NzMsNyArNDczLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0Vwog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjp6b29t
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCiB7Ci0gICAgQVNTRVJUKHBnZS50eXBl
KCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpOworICAgIEFTU0VSVChw
Z2UudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXApOwogICAgIC8vIEZJ
WE1FOiBtb2RpZnkgdGhpcyBzbyB3ZSBjYW4gc3RhcnQgZXZlbiBpZiB0aGUgdGltZXIgaXMgYWN0
aXZlLgogICAgIGlmICghbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1f
Y3VycmVudFpvb21TY2FsZSA9IDE7CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBTY3JvbGxBbmlt
YXRvck5vbmU6Onpvb20oY29uc3QgUGxhdAogICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRy
YW5zWCA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueCgpOwogICAgICAgICBt
X3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWSA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBvc2l0
aW9uKCkueSgpOwogI2lmIEVOQUJMRShET1VCTEVfVEFQX0NFTlRFUlMpCi0gICAgICAgIGlmIChw
Z2UudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKSB7CisgICAg
ICAgIGlmIChwZ2UudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXApIHsK
ICAgICAgICAgICAgIC8vIFpvb20gdG8gY2VudHJlIG9mIGRpc3BsYXkuIFBpbmNoLXRvLXpvb20g
bWF5IG5vdCB3YW50IHRoaXMgYmVoYXZpb3VyLgogICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rl
c2lyZWRUcmFuc1ggKz0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkgLyAyIC0gcGdl
Lmdsb2JhbFBvc2l0aW9uKCkueCgpOwogICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRU
cmFuc1kgKz0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpIC8gMiAtIHBnZS5nbG9i
YWxQb3NpdGlvbigpLnkoKTsKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
Tm9uZTo6aGFuZGxlR2VzdHVyZUV2CiB7CiAgICAgVFJBQ0VfRVZFTlQoIlNjcm9sbEFuaW1hdG9y
Tm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50IiwgdGhpcywgMCk7CiAgICAgc3dpdGNoIChwZ2UudHlw
ZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAg
ICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgICAgIHpvb20ocGdl
KTsKICAgICAgICAgYnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRC
bGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDI3LDI1ICs0MjcsMjEgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlR5cAogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleURvd246Ci0gICAgICAgIHJldHVybiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duOwogICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6
OktleVVwOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OktleVVwOwogICAgIGNhc2UgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleUNoYXI6CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICAgICAgcmV0dXJuIFBsYXRm
b3JtRXZlbnQ6OkNoYXI7CiAgICAgfQogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRm
b3JtS2V5Ym9hcmRFdmVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCBldmVu
dCkKLSAgICA6IG1fdHlwZSh0b1dlYkNvcmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKGV2ZW50
LnR5cGUoKSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHRvV2ViQ29yZVBsYXRmb3JtS2V5Ym9hcmRF
dmVudFR5cGUoZXZlbnQudHlwZSgpKSwgZXZlbnQuc2hpZnRBY3RpdmUoKSB8fCAoZXZlbnQuY2hh
cmFjdGVyKCkgPT0gS0VZQ09ERV9CQUNLX1RBQiksIGV2ZW50LmN0cmxBY3RpdmUoKSwgZXZlbnQu
YWx0QWN0aXZlKCksIGZhbHNlKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJG
b3JCbGFja0JlcnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKSkKICAgICAsIG1fYXV0b1Jl
cGVhdChmYWxzZSkKICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2Rl
Rm9yQmxhY2tCZXJyeUNoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkpCiAgICAgLCBtX2lzS2V5
cGFkKGZhbHNlKQotICAgICwgbV9zaGlmdEtleShldmVudC5zaGlmdEFjdGl2ZSgpIHx8IChldmVu
dC5jaGFyYWN0ZXIoKSA9PSBLRVlDT0RFX0JBQ0tfVEFCKSkgLy8gQmFja1RhYiBzaG91bGQgYmUg
dHJlYXRlZCBhcyBTaGlmdCArIFRhYi4KLSAgICAsIG1fY3RybEtleShldmVudC5jdHJsQWN0aXZl
KCkpCi0gICAgLCBtX2FsdEtleShldmVudC5hbHRBY3RpdmUoKSkKLSAgICAsIG1fbWV0YUtleShm
YWxzZSkKICAgICAsIG1fdW5tb2RpZmllZENoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkKIHsK
ICAgICB1bnNpZ25lZCBzaG9ydCBjaGFyYWN0ZXIgPSBhZGp1c3RDaGFyYWN0ZXJGcm9tT1MoZXZl
bnQuY2hhcmFjdGVyKCkpOwpAQCAtNDYxLDE2ICs0NTcsMTYgQEAgYm9vbCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmN1cnJlbnRDYXBzTAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQordm9p
ZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9y
bUV2ZW50OjpUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKIHsKICAg
ICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBD
aGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBB
U1NFUlQobV90eXBlID09IEtleURvd24pOworICAgIEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1F
dmVudDo6S2V5RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAogICAgIGlmIChiYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBSYXdL
ZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewog
ICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0
cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAko
cmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxNyArMTI1
LDE3IEBAIGJvb2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNPdmVyTWkKIAogdm9pZCBH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0g
ICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6VGFwRG93blR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3Jl
ZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJs
S2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9y
bUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93biwgbV9maXJzdFRvdWNo
UG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAu
ZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0K
IAogdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRDbGlja0dlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVz
KQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlRhcFR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hT
Y3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9j
dHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0
Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwLCBtX2ZpcnN0VG91Y2hQ
b3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5m
LCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQog
CiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZERvdWJsZUNsaWNrR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2Vz
dHVyZXMpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1f
Zmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3No
aWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+
YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVU
YXAsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9s
YXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwg
bV9tZXRhS2V5KSk7CiB9CiAKIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJl
cyBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVz
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkK
QEAgLTE1OSwxMiArMTU5LDEyIEBAIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0
dXJlcyAKIAogdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0
dXJlQmVnaW4oY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBn
ZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRv
dWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRL
ZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBl
bmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2lu
LCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRp
bWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkp
KTsKIH0KIAogdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0
dXJlRW5kKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2Vz
dHVyZXMsIGZsb2F0IHhWZWxvY2l0eSwgZmxvYXQgeVZlbG9jaXR5KQogewotICAgIGdlc3R1cmVz
LT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEVuZFR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFz
dFRvdWNoVGltZSwgeFZlbG9jaXR5LCB5VmVsb2NpdHksIG1fc2hpZnRLZXksIG1fY3RybEtleSwg
bV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0
dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCwgdG91Y2hQb2ludC5wb3Mo
KSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCB4VmVsb2NpdHksIHlW
ZWxvY2l0eSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9
CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZVVw
ZGF0ZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1
cmVzKQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6
YXBwZW5kU2MKICAgICBmbG9hdCBkZWx0YVgodG91Y2hQb2ludC5wb3MoKS54KCkgLSBtX2ZpcnN0
VG91Y2hQb3NpdGlvbi54KCkpOwogICAgIGZsb2F0IGRlbHRhWSh0b3VjaFBvaW50LnBvcygpLnko
KSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLnkoKSk7CiAKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBl
LCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRp
bWUsIGRlbHRhWCwgZGVsdGFZLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21l
dGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9p
bnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRL
ZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogICAgIG1fZmlyc3RUb3VjaFBv
c2l0aW9uID0gdG91Y2hQb2ludC5wb3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRF
dmVudENocm9taXVtLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNh
bWJpZ3VhdGUKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCiAgICAgLy8gQ2FuIG9u
bHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2Ug
bGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJUKG1fdHlw
ZSA9PSBLZXlEb3duKTsKLSAgICBBU1NFUlQodHlwZSA9PSBSYXdLZXlEb3duIHx8IHR5cGUgPT0g
Q2hhcik7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsKKyAg
ICBBU1NFUlQodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duIHx8IHR5cGUgPT0gUGxh
dGZvcm1FdmVudDo6Q2hhcik7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBpZiAoYmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWlu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsMjUgKzI5NywyNSBAQCBib29sIFBvcHVwQ29u
dGFpbmVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvCiBib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsK
ICAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKLSAgICBjYXNlIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpUYXBUeXBlOiB7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91
c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRp
b24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0
dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50
LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1w
KCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlm
dEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdl
c3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Ci0gICAgICAg
IFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwg
Z2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxl
YXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVy
ZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0
YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgIGNhc2UgUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVRhcDogeworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92
ZShnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCks
IE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEs
IGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJl
RXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1l
c3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdl
c3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZl
bnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3Rh
bXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVy
ZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5h
bHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgp
KTsKICAgICAgICAgLy8gaGFuZGxlTW91c2VNb3ZlRXZlbnQoZmFrZU1vdXNlTW92ZSk7CiAgICAg
ICAgIGhhbmRsZU1vdXNlRG93bkV2ZW50KGZha2VNb3VzZURvd24pOwogICAgICAgICBoYW5kbGVN
b3VzZVJlbGVhc2VFdmVudChmYWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgorICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTogewogICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2Vz
dHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVF
dmVudC5kZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGdlc3R1cmVF
dmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0
S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOwogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50
KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
Y2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6VGFwRG93blR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Ny
b2xsQmVnaW46CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAg
IGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd246CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cExpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OSwxMiArMTk5LDEyIEBAIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50
KGNvbnN0IFAKICAgICAvLyBXZSB1c2UgUmF3S2V5RG93bi9DaGFyL0tleVVwIGV2ZW50IHNjaGVt
ZSBvbiBhbGwgcGxhdGZvcm1zLAogICAgIC8vIHNvIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hh
ciAobm90IFJhd0tleURvd24pIHR5cGUgZXZlbnQKICAgICAvLyBpcyBjb25zaWRlcmVkIGFzIGNo
YXJhY3RlciB0eXBlIGV2ZW50LgotICAgIHJldHVybiBldmVudC50eXBlKCkgPT0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpDaGFyOworICAgIHJldHVybiBldmVudC50eXBlKCkgPT0gUGxhdGZvcm1F
dmVudDo6Q2hhcjsKIH0KIAogYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZUtleUV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKGV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwKQorICAgIGlmIChldmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6S2V5VXApCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFu
dW1JdGVtcygpICYmIGV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpICE9IFZLRVlfRVNDQVBF
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCShyZXZpc2lvbiAxMDI5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsOSArODgzLDkgQEAgYm9vbCBTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpoYW5kbGVXaAogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6
OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQogewotICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpTY3JvbGxCZWdpblR5cGUpCisgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luKQogICAgICAgICBiZWdpblNjcm9sbEdlc3R1
cmUoKTsKLSAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCkKICAgICAgICAgZW5kU2Nyb2xsR2Vz
dHVyZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDEzICs0MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNf
RXZlbnRfS2V5X0Rvd24qIGV2ZW50KQotICAgIDogbV90eXBlKEtleURvd24pCisgICAgOiBQbGF0
Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sIGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2
ZW50LT5tb2RpZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVu
dC0+bW9kaWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV90ZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0
cmluZykpCiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0
cmluZykpCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNf
a2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21l
dGFLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikp
CiB7CiAgICAgU3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7CiAgICAgbV9rZXlJ
ZGVudGlmaWVyID0ga2V5SWRlbnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpOwpAQCAtNTgs
MTIgKzU0LDggQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogfQog
CiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFz
X0V2ZW50X0tleV9VcCogZXZlbnQpCi0gICAgOiBtX3R5cGUoS2V5VXApCisgICAgOiBQbGF0Zm9y
bUV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleVVwLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZl
bnQtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVy
cywgIk1ldGEiKSkKICAgICAsIG1fdGV4dChTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcp
KQotICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9t
b2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogewog
ICAgIFN0cmluZyBrZXlOYW1lID0gU3RyaW5nKGV2ZW50LT5rZXkpOwogICAgIG1fa2V5SWRlbnRp
ZmllciA9IGtleUlkZW50aWZpZXJGb3JFdmFzS2V5TmFtZShrZXlOYW1lKTsKQEAgLTc5LDcgKzcx
LDcgQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQogICAgIEFTU0VS
VChtX3R5cGUgPT0gS2V5RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAotICAgIGlmICh0eXBl
ID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRU
ZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCShyZXZpc2lvbiAx
MDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Nb3VzZUV2ZW50
RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNDMgKzQ4LDMxIEBAIHZvaWQgUGxhdGZvcm1N
b3VzZUV2ZW50OjpzZXRDbGlja0NvdW50KHUKIH0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0
Zm9ybU1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldmVudCwgSW50UG9p
bnQgcG9zaXRpb24pCi0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCAt
IHBvc2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKKyAgICA6IFBs
YXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCBldmFzX2tleV9tb2RpZmll
cl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19z
ZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZl
bnQtPm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQt
PmNhbnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkp
KQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50
LT5jYW52YXMueSkpCiAgICAgLCBtX2J1dHRvbihNb3VzZUJ1dHRvbihldmVudC0+YnV0dG9uIC0g
MSkpCi0gICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50UHJlc3NlZCkKLSAgICAsIG1fc2hpZnRL
ZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpKQot
ICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2
ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2RpZmll
cl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKICAgICAsIG1fdGltZXN0YW1wKGN1
cnJlbnRUaW1lKCkpCiB7CiAgICAgc2V0Q2xpY2tDb3VudChldmVudC0+ZmxhZ3MpOwogfQogCiBQ
bGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1VwKiBldmVudCwgSW50UG9pbnQgcG9zaXRpb24pCi0gICAgOiBtX3Bvc2l0aW9uKEludFBv
aW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9z
aXRpb24ueSgpKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6TW91c2VSZWxl
YXNlZCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIp
LCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSwg
ZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSwgZXZhc19r
ZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCisgICAgLCBtX3Bv
c2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQtPmNh
bnZhcy55IC0gcG9zaXRpb24ueSgpKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQo
ZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpKQogICAgICwgbV9idXR0b24oTW91c2VC
dXR0b24oZXZlbnQtPmJ1dHRvbiAtIDEpKQotICAgICwgbV9ldmVudFR5cGUoTW91c2VFdmVudFJl
bGVhc2VkKQotICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQt
Pm1vZGlmaWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFz
X2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9t
ZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIp
KQogICAgICwgbV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkKIHsKICAgICBzZXRDbGlja0NvdW50
KGV2ZW50LT5mbGFncyk7CiB9CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIEludFBvaW50IHBvc2l0aW9u
KQotICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54IC0gcG9zaXRp
b24ueCgpLCBldmVudC0+Y3VyLmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKKyAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgZXZhc19rZXlfbW9kaWZpZXJfaXNf
c2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
ZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2
ZW50LT5tb2RpZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5t
b2RpZmllcnMsICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jdXIu
Y2FudmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50LT5jdXIuY2FudmFzLnkgLSBwb3NpdGlvbi55
KCkpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54
LCBldmVudC0+Y3VyLmNhbnZhcy55KSkKICAgICAsIG1fYnV0dG9uKE1vdXNlQnV0dG9uKGV2ZW50
LT5idXR0b25zIC0gMSkpCi0gICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50TW92ZWQpCiAgICAg
LCBtX2NsaWNrQ291bnQoMCkKLSAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNf
c2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9h
bHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkK
LSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVy
cywgIk1ldGEiKSkKICAgICAsIG1fdGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2
ZW50RWZsLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0
MywxMCBAQCBlbnVtIHsKIH07CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQotICAgIDogbV9wb3NpdGlvbihJ
bnRQb2ludChldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50
KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlm
aWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAi
Q29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkFsdCIp
LCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAs
IG1fcG9zaXRpb24oSW50UG9pbnQoZXYtPmNhbnZhcy54LCBldi0+Y2FudmFzLnkpKQogICAgICwg
bV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCiAg
ICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlm
dEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0g
ICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJD
b250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1v
ZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChldi0+bW9kaWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21E
ZXZpY2UoZmFsc2UpCiB7CiAgICAgLy8gQSBuZWdhdGl2ZSB6IHZhbHVlIG1lYW5zIChpbiBFRkwp
IHRoYXQgd2UgYXJlIHNjcm9sbGluZyBkb3duLCBzbyB3ZSBuZWVkCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3Rr
LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Nyw3ICs1NDcs
NyBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFyCiAvLyBLZWVwIHRo
aXMgaW4gc3luYyB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMKIC8v
IFRPRE86IG1fZ2RrRXZlbnRLZXkgc2hvdWxkIGJlIHJlZmNvdW50ZWQKIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKLSAgICA6
IG1fdHlwZSgoZXZlbnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IEtleVVwIDogS2V5RG93
bikKKyAgICA6IFBsYXRmb3JtRXZlbnQoKGV2ZW50LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkg
PyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIChldmVudC0+
c3RhdGUgJiBHREtfU0hJRlRfTUFTSykgfHwgKGV2ZW50LT5rZXl2YWwgPT0gR0RLXzMyNzBfQmFj
a1RhYiksIGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0ssIGV2ZW50LT5zdGF0ZSAmIEdE
S19NT0QxX01BU0ssIGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCiAgICAgLCBtX3RleHQo
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV91bm1vZGlmaWVk
VGV4dChzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCkpCiAgICAgLCBtX2tleUlk
ZW50aWZpZXIoa2V5SWRlbnRpZmllckZvckdka0tleUNvZGUoZXZlbnQtPmtleXZhbCkpCkBAIC01
NTUsMTAgKzU1NSw2IEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUK
ICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yR2RrS2V5Q29k
ZShldmVudC0+a2V5dmFsKSkKICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoZXZlbnQtPmtl
eXZhbCkKICAgICAsIG1faXNLZXlwYWQoZXZlbnQtPmtleXZhbCA+PSBHREtfS1BfU3BhY2UgJiYg
ZXZlbnQtPmtleXZhbCA8PSBHREtfS1BfOSkKLSAgICAsIG1fc2hpZnRLZXkoKGV2ZW50LT5zdGF0
ZSAmIEdES19TSElGVF9NQVNLKSB8fCAoZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFi
KSkKLSAgICAsIG1fY3RybEtleShldmVudC0+c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLKQotICAg
ICwgbV9hbHRLZXkoZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSykKLSAgICAsIG1fbWV0YUtl
eShldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQogICAgICwgbV9nZGtFdmVudEtleShldmVu
dCkKIHsKIH0KQEAgLTU3Miw3ICs1NjgsNyBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
ZGlzYW1iaWd1YXRlCiAgICAgaWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9
PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygp
OwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNl
RXZlbnRHdGsuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSAr
NTEsOSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChHCiAgICAgY2Fz
ZSBHREtfMkJVVFRPTl9QUkVTUzoKICAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgogICAgIGNh
c2UgR0RLX0JVVFRPTl9SRUxFQVNFOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRQ
cmVzc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAg
ICAgICAgIGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1JFTEVBU0UpIHsKLSAgICAgICAg
ICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgbV90eXBl
ID0gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAgICAgIG1fY2xpY2tDb3Vu
dCA9IDA7CiAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9QUkVT
UykKICAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDE7CkBAIC04Nyw3ICs4Nyw3IEBAIFBsYXRm
b3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEcKIAogICAgIHN3aXRjaCAobW90aW9u
LT50eXBlKSB7CiAgICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKLSAgICAgICAgbV9ldmVudFR5
cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQ7CiAgICAgICAgIG1fYnV0dG9uID0gTm9CdXR0b247CiAgICAgICAgIG1fY2xpY2tD
b3VudCA9IDA7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAJKHJldmlzaW9uIDEwMjk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6
UGxhdGZvcm1XaGVlbEV2ZW50KEcKIHsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVsdGEgPSAx
OwogCisgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CisKICAgICBtX2RlbHRhWCA9
IDA7CiAgICAgbV9kZWx0YVkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvS2V5RXZlbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0tleUV2ZW50SU9TLm1tCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvS2V5RXZlbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDE3ICs1MCwx
MyBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChXCiB9CiAKIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KFdlYkV2ZW50ICpldmVudCkK
LSAgICA6IG1fdHlwZShldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXAgPyBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleVVwIDogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIDog
UGxhdGZvcm1FdmVudChldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXAgPyBQbGF0Zm9ybUV2ZW50
OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBX
ZWJFdmVudEZsYWdNYXNrU2hpZnQsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdN
YXNrQ29udHJvbCwgZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5h
dGUsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZCkKICAgICAs
IG1fdGV4dChldmVudC5jaGFyYWN0ZXJzKQogICAgICwgbV91bm1vZGlmaWVkVGV4dChldmVudC5j
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRl
bnRpZmllckZvcktleUV2ZW50KGV2ZW50KSkKICAgICAsIG1fYXV0b1JlcGVhdChldmVudC5pc0tl
eVJlcGVhdGluZykKICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKGV2ZW50LmtleUNvZGUp
CiAgICAgLCBtX2lzS2V5cGFkKGZhbHNlKSAvLyBpUGhvbmUgZG9lcyBub3QgZGlzdGluZ3Vpc2gg
dGhlIG51bXBhZCA8cmRhcjovL3Byb2JsZW0vNzE5MDgzNT4KLSAgICAsIG1fc2hpZnRLZXkoZXZl
bnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tTaGlmdCkKLSAgICAsIG1fY3RybEtl
eShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wpCi0gICAgLCBt
X2FsdEtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSkK
LSAgICAsIG1fbWV0YUtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0Nv
bW1hbmQpCiAgICAgLCBtX0V2ZW50KGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBlID09
IFdlYkV2ZW50S2V5RG93biB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXApOwpAQCAtOTQs
NyArOTAsNyBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAgICAg
aWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpS
YXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0UK
IH0KIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVu
dCAqZXZlbnQpCi0gICAgOiBtX3R5cGUoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24pCisgICAg
OiBQbGF0Zm9ybUV2ZW50KGlzS2V5VXBFdmVudChldmVudCkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlV
cCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hp
ZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZl
bnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZs
YWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAgICAgLCBtX3RleHQodGV4dEZyb21FdmVudChldmVu
dCkpCiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50
KSkKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQp
KQpAQCAtMTk3LDEwICsxOTcsNiBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFCiAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KGV2ZW50KSkKICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoW2V2ZW50IGtleUNv
ZGVdKQogICAgICwgbV9pc0tleXBhZChpc0tleXBhZEV2ZW50KGV2ZW50KSkKLSAgICAsIG1fc2hp
ZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0gICAgLCBtX2N0
cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKLSAgICAsIG1f
YWx0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKLSAgICAs
IG1fbWV0YUtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQogICAg
ICwgbV9tYWNFdmVudChldmVudCkKIHsKICAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9S
ZXR1cm4gLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3Rl
ciBmb3IgRW50ZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1N
b3VzZUV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTExOSw1NyArMTE5LDQ5IEBAIEludFBvaW50IGdsb2JhbFBvaW50Rm9yRXZlbnQoTlNF
dmVudCAqZXYKICAgICB9CiB9CiAKLXN0YXRpYyBNb3VzZUV2ZW50VHlwZSBtb3VzZUV2ZW50Rm9y
TlNFdmVudChOU0V2ZW50KiBldmVudCkgCitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3Vz
ZUV2ZW50Rm9yTlNFdmVudChOU0V2ZW50KiBldmVudCkgCiB7CiAgICAgc3dpdGNoIChbZXZlbnQg
dHlwZV0pIHsKICAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2
ZW50U2Nyb2xsOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VTY3JvbGw7CiAg
ICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6CiAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2Vk
OgogICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKICAgICBjYXNlIE5TTW91c2VNb3ZlZDoK
LSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CiAgICAgY2FzZSBO
U1JpZ2h0TW91c2VEb3duOgogICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgcmV0
dXJuIE1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkOwogICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKICAgICBjYXNlIE5TUmlnaHRNb3Vz
ZVVwOgogICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50
UmVsZWFzZWQ7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgIH0KIH0KIAogUGxhdGZvcm1Nb3Vz
ZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93
VmlldykKLSAgICA6IG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93Vmlldykp
CisgICAgOiBQbGF0Zm9ybUV2ZW50KG1vdXNlRXZlbnRGb3JOU0V2ZW50KGV2ZW50KSwgW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5
TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAgICAsIG1f
cG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93VmlldykpCiAgICAgLCBtX2dsb2Jh
bFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV9idXR0b24obW91
c2VCdXR0b25Gb3JFdmVudChldmVudCkpCi0gICAgLCBtX2V2ZW50VHlwZShtb3VzZUV2ZW50Rm9y
TlNFdmVudChldmVudCkpCiAgICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudEZvckV2ZW50KGV2
ZW50KSkKLSAgICAsIG1fc2hpZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtl
eU1hc2spCi0gICAgLCBtX2N0cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9s
S2V5TWFzaykKLSAgICAsIG1fYWx0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJu
YXRlS2V5TWFzaykKLSAgICAsIG1fbWV0YUtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0Nv
bW1hbmRLZXlNYXNrKQogICAgICwgbV90aW1lc3RhbXAoW2V2ZW50IHRpbWVzdGFtcF0pCiAgICAg
LCBtX21vZGlmaWVyRmxhZ3MoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdKQogICAgICwgbV9ldmVudE51
bWJlcihbZXZlbnQgZXZlbnROdW1iZXJdKQogewogfQogCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBs
YXRmb3JtTW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwg
TW91c2VCdXR0b24gYnV0dG9uLCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCitQbGF0Zm9ybU1v
dXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBp
bnQgZ2xvYmFsWSwgTW91c2VCdXR0b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIp
Ci0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KHgsIHkpKQorICAgIDogUGxhdGZvcm1FdmVudCh0
eXBlLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KQorICAgICwgbV9wb3NpdGlv
bihJbnRQb2ludCh4LCB5KSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZ2xvYmFs
WCwgZ2xvYmFsWSkpCiAgICAgLCBtX2J1dHRvbihidXR0b24pCi0gICAgLCBtX2V2ZW50VHlwZShl
dmVudFR5cGUpCiAgICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAsIG1fc2hpZnRL
ZXkoc2hpZnRLZXkpCi0gICAgLCBtX2N0cmxLZXkoY3RybEtleSkKLSAgICAsIG1fYWx0S2V5KGFs
dEtleSkKLSAgICAsIG1fbWV0YUtleShtZXRhS2V5KQogICAgICwgbV90aW1lc3RhbXAodGltZXN0
YW1wKQogICAgICwgbV9tb2RpZmllckZsYWdzKG1vZGlmaWVyRmxhZ3MpCiAgICAgLCBtX2V2ZW50
TnVtYmVyKGV2ZW50TnVtYmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDMxLDkgKzEwMzEsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2
ZW50CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewotICAgIGlmIChnZXN0dXJlRXZl
bnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCisgICAg
aWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJl
Z2luKQogICAgICAgICBiZWdpblNjcm9sbEdlc3R1cmUoKTsKLSAgICBlbHNlIGlmIChnZXN0dXJl
RXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQorICAg
IGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNj
cm9sbEVuZCkKICAgICAgICAgZW5kU2Nyb2xsR2VzdHVyZSgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQkocmV2aXNpb24gMTAyOTY4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkwLDEzICs5MCwxMCBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2UgcGhhc2VGb3JFCiB9CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50
KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCi0gICAgOiBtX3Bvc2l0aW9uKHBv
aW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0
Zm9ybUV2ZW50OjpXaGVlbCwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ss
IFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmll
ckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlND
b21tYW5kS2V5TWFzaykKKyAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2lu
ZG93VmlldykpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZl
bnQpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAgICAs
IG1fc2hpZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0gICAg
LCBtX2N0cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKLSAg
ICAsIG1fYWx0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykK
LSAgICAsIG1fbWV0YUtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNr
KQogICAgICwgbV9waGFzZShwaGFzZUZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fbW9tZW50dW1Q
aGFzZShtb21lbnR1bVBoYXNlRm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV90aW1lc3RhbXAoW2V2
ZW50IHRpbWVzdGFtcF0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgU3RyaW5nIGtleVRleHRGb3JL
ZXlFdmVudChjb25zdCBRCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudChRS2V5RXZlbnQqIGV2ZW50KQogewogICAgIGNvbnN0IGludCBzdGF0ZSA9IGV2ZW50LT5t
b2RpZmllcnMoKTsKLSAgICBtX3R5cGUgPSAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OktleVJl
bGVhc2UpID8gS2V5VXAgOiBLZXlEb3duOworICAgIG1fdHlwZSA9IChldmVudC0+dHlwZSgpID09
IFFFdmVudDo6S2V5UmVsZWFzZSkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZl
bnQ6OktleURvd247CiAgICAgbV90ZXh0ID0ga2V5VGV4dEZvcktleUV2ZW50KGV2ZW50KTsKICAg
ICBtX3VubW9kaWZpZWRUZXh0ID0gbV90ZXh0OyAvLyBGSVhNRTogbm90IGNvcnJlY3QKICAgICBt
X2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyRm9yUXRLZXlDb2RlKGV2ZW50LT5rZXkoKSk7
CkBAIC02MTQsMTAgKzYxNCwxMCBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFCiB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2
ZW50KFR5cGUgdHlwZSwgYm9vbCkKIHsKICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9t
IEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZv
ciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOworICAg
IEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93bik7CiAgICAgbV90eXBlID0g
dHlwZTsKIAotICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQ
bGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwog
ICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRR
dC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bs
YXRmb3JtTW91c2VFdmVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNDIgKzQzLDQyIEBA
IHN0YXRpYyB2b2lkIG1vdXNlRXZlbnRNb2RpZmllcnNGcm9tUXRLZXkKICAgICBzaGlmdEtleSA9
IGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6OlNoaWZ0TW9kaWZpZXI7CiB9CiAKLXN0YXRpYyB2b2lk
IG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGNvbnN0IFFFdmVudCogZXZl
bnQsIE1vdXNlRXZlbnRUeXBlJiBtb3VzZUV2ZW50VHlwZSwgTW91c2VCdXR0b24mIG1vdXNlQnV0
dG9uKQorc3RhdGljIHZvaWQgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQo
Y29uc3QgUUV2ZW50KiBldmVudCwgUGxhdGZvcm1FdmVudDo6VHlwZSYgbW91c2VFdmVudFR5cGUs
IE1vdXNlQnV0dG9uJiBtb3VzZUJ1dHRvbikKIHsKICAgICBlbnVtIHsgTW91c2VFdmVudCwgR3Jh
cGhpY3NTY2VuZU1vdXNlRXZlbnQgfSBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZTsKICAgICBzd2l0
Y2ggKGV2ZW50LT50eXBlKCkpIHsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxDbGlj
azoKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25QcmVzczoKICAgICAgICAgZnJhbWV3b3Jr
TW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1v
dXNlRXZlbnRQcmVzc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0
dG9uUmVsZWFzZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50
OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAg
bW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFFFdmVudDo6TW91c2VNb3ZlOgogICAgICAgICBmcmFtZXdvcmtNb3Vz
ZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VF
dmVudE1vdmVkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQ7CiAgICAgICAgIGJyZWFrOwogI2lmICFkZWZpbmVkKFFUX05PX0dSQVBISUNTVklFVykK
ICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlRG91YmxlQ2xpY2s6CiAgICAgY2Fz
ZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3VzZVByZXNzOgogICAgICAgICBmcmFtZXdvcmtNb3Vz
ZUV2ZW50VHlwZSA9IEdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50
VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6
OkdyYXBoaWNzU2NlbmVNb3VzZVJlbGVhc2U6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRU
eXBlID0gR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0g
TW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpHcmFw
aGljc1NjZW5lTW91c2VNb3ZlOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IEdy
YXBoaWNzU2NlbmVNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZl
bnRNb3ZlZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNl
RXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAgICAg
ICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtODYsMTIgKzg2LDEyIEBAIHN0YXRpYyB2b2lkIG1vdXNlRXZlbnRU
eXBlQW5kTW91c2VCdXR0b24KICAgICBzd2l0Y2ggKGZyYW1ld29ya01vdXNlRXZlbnRUeXBlKSB7
CiAgICAgY2FzZSBNb3VzZUV2ZW50OiB7CiAgICAgICAgIGNvbnN0IFFNb3VzZUV2ZW50KiBtb3Vz
ZUV2ZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUU1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAg
IG1vdXNlQnV0dG9ucyA9IG1vdXNlRXZlbnRUeXBlID09IE1vdXNlRXZlbnRNb3ZlZCA/IG1vdXNl
RXZlbnQtPmJ1dHRvbnMoKSA6IG1vdXNlRXZlbnQtPmJ1dHRvbigpOworICAgICAgICBtb3VzZUJ1
dHRvbnMgPSBtb3VzZUV2ZW50VHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkID8gbW91
c2VFdmVudC0+YnV0dG9ucygpIDogbW91c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50OiB7CiAgICAgICAgIGNv
bnN0IFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PGNv
bnN0IFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICAgICAgbW91c2VCdXR0
b25zID0gbW91c2VFdmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVkID8gbW91c2VFdmVudC0+YnV0
dG9ucygpIDogbW91c2VFdmVudC0+YnV0dG9uKCk7CisgICAgICAgIG1vdXNlQnV0dG9ucyA9IG1v
dXNlRXZlbnRUeXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgPyBtb3VzZUV2ZW50LT5i
dXR0b25zKCkgOiBtb3VzZUV2ZW50LT5idXR0b24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIH0KQEAgLTExMyw3ICsxMTMsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91
c2VFdmVudChRCiAKICAgICAvLyBGSVhNRTogV2h5IGRvbid0IHdlIGhhbmRsZSBhIGNvbnRleHQg
bWVudSBldmVudCBoZXJlIGFzIHdlIGRvIGluIFBsYXRmb3JtTW91c2VFdmVudChRSW5wdXRFdmVu
dCosIGludCk/CiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjA3Mjg+LgotICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50
KGV2ZW50LCBtX2V2ZW50VHlwZSwgbV9idXR0b24pOworICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91
c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBtX3R5cGUsIG1fYnV0dG9uKTsKICAgICBtX3Bvc2l0
aW9uID0gSW50UG9pbnQoZXZlbnQtPnBvcygpLnRvUG9pbnQoKSk7CiAgICAgbV9nbG9iYWxQb3Np
dGlvbiA9IEludFBvaW50KGV2ZW50LT5zY3JlZW5Qb3MoKSk7CiAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChRCiAjaWZuZGVmIFFUX05P
X0NPTlRFWFRNRU5VCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpDb250ZXh0TWVu
dSkgewogICAgICAgICBpc0NvbnRleHRNZW51RXZlbnQgPSB0cnVlOwotICAgICAgICBtX2V2ZW50
VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVByZXNzZWQ7CiAgICAgICAgIFFDb250ZXh0TWVudUV2ZW50KiBjZSA9IHN0YXRpY19j
YXN0PFFDb250ZXh0TWVudUV2ZW50Kj4oZXZlbnQpOwogICAgICAgICBtX3Bvc2l0aW9uID0gSW50
UG9pbnQoY2UtPnBvcygpKTsKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGNl
LT5nbG9iYWxQb3MoKSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQoUQogICAgIH0KICNlbmRpZgogICAgIGlmICghaXNDb250ZXh0TWVu
dUV2ZW50KSB7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50
KGV2ZW50LCBtX2V2ZW50VHlwZSwgbV9idXR0b24pOworICAgICAgICBtb3VzZUV2ZW50VHlwZUFu
ZE1vdXNlQnV0dG9uRnJvbVFFdmVudChldmVudCwgbV90eXBlLCBtX2J1dHRvbik7CiAgICAgICAg
IFFNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8UU1vdXNlRXZlbnQqPihldmVu
dCk7CiAgICAgICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChtb3VzZUV2ZW50LT5wb3MoKSk7CiAg
ICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChtb3VzZUV2ZW50LT5nbG9iYWxQb3Mo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJ
KHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZl
bnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMCBAQCB2b2lkIFBsYXRmb3Jt
V2hlZWxFdmVudDo6YXBwbHlEZWx0YShpbnQgCiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZv
cm1XaGVlbEV2ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCogZSkKICNpZm5kZWYgUVRfTk9f
V0hFRUxFVkVOVAotICAgIDogbV9wb3NpdGlvbihlLT5wb3MoKS50b1BvaW50KCkpCisgICAgOiBQ
bGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpT
aGlmdE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIsIGUtPm1v
ZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9k
aWZpZXIpCisgICAgLCBtX3Bvc2l0aW9uKGUtPnBvcygpLnRvUG9pbnQoKSkKICAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oZS0+c2NyZWVuUG9zKCkpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpT
aGlmdE1vZGlmaWVyKQotICAgICwgbV9jdHJsS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRy
b2xNb2RpZmllcikKLSAgICAsIG1fYWx0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlm
aWVyKQotICAgICwgbV9tZXRhS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikK
ICAgICAsIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2VuZGlmCiB7CkBA
IC03OCwxMyArNzUsMTAgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQo
UQogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChRV2hlZWxFdmVudCog
ZSkKICNpZm5kZWYgUVRfTk9fV0hFRUxFVkVOVAotICAgIDogbV9wb3NpdGlvbihlLT5wb3MoKSkK
KyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGUtPm1vZGlmaWVycygp
ICYgUXQ6OlNoaWZ0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmll
ciwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6
Ok1ldGFNb2RpZmllcikKKyAgICAsIG1fcG9zaXRpb24oZS0+cG9zKCkpCiAgICAgLCBtX2dsb2Jh
bFBvc2l0aW9uKGUtPmdsb2JhbFBvcygpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCkKLSAgICAsIG1fc2hpZnRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hp
ZnRNb2RpZmllcikKLSAgICAsIG1fY3RybEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9s
TW9kaWZpZXIpCi0gICAgLCBtX2FsdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmll
cikKLSAgICAsIG1fbWV0YUtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCiAg
ICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNlbmRpZgogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCShyZXZpc2lv
biAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOSArMTQyLDkgQEAgc3RhdGljIFN0cmluZyBrZXlJZGVu
dGlmaWVyRm9yV2luZG93c0tleQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVu
dChXUEFSQU0gY29kZSwgTFBBUkFNIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlw
ZSB0eXBlKQorc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChXUEFSQU0gY29kZSwgTFBBUkFNIGtl
eURhdGEsIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBpZiAodHlwZSAhPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24gJiYgdHlwZSAhPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OktleVVwKQorICAgIGlmICh0eXBlICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24g
JiYgdHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgc3dpdGNoIChjb2RlKSB7CkBAIC0xODcsMTggKzE4NywxNCBAQCBzdGF0aWMgYm9vbCBp
c0tleXBhZEV2ZW50KFdQQVJBTSBjb2RlLCBMCiBzdGF0aWMgaW5saW5lIFN0cmluZyBzaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoVUNoYXIgYykgeyByZXR1cm4gU3RyaW5nKCZjLCAxKTsgfQogCiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChIV05ELCBXUEFSQU0gY29k
ZSwgTFBBUkFNIGtleURhdGEsIFR5cGUgdHlwZSwgYm9vbCBzeXN0ZW1LZXkpCi0gICAgOiBtX3R5
cGUodHlwZSkKLSAgICAsIG1fdGV4dCgodHlwZSA9PSBDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0
cmluZyhjb2RlKSA6IFN0cmluZygpKQotICAgICwgbV91bm1vZGlmaWVkVGV4dCgodHlwZSA9PSBD
aGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQotICAgICwgbV9r
ZXlJZGVudGlmaWVyKCh0eXBlID09IENoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9y
V2luZG93c0tleUNvZGUoY29kZSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIEdldEtleVN0
YXRlKFZLX1NISUZUKSAmIEhJR0hfQklUX01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX0NPTlRS
T0wpICYgSElHSF9CSVRfTUFTS19TSE9SVCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJ
VF9NQVNLX1NIT1JULCBmYWxzZSkKKyAgICAsIG1fdGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50
OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQorICAgICwg
bV91bm1vZGlmaWVkVGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNo
YXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQorICAgICwgbV9rZXlJZGVudGlmaWVyKCh0
eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9y
V2luZG93c0tleUNvZGUoY29kZSkpCiAgICAgLCBtX2F1dG9SZXBlYXQoSElXT1JEKGtleURhdGEp
ICYgS0ZfUkVQRUFUKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoKHR5cGUgPT0gUmF3
S2V5RG93biB8fCB0eXBlID09IEtleVVwKSA/IGNvZGUgOiAwKQogICAgICwgbV9uYXRpdmVWaXJ0
dWFsS2V5Q29kZShtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSkKICAgICAsIG1faXNLZXlwYWQoaXNL
ZXlwYWRFdmVudChjb2RlLCBrZXlEYXRhLCB0eXBlKSkKLSAgICAsIG1fc2hpZnRLZXkoR2V0S2V5
U3RhdGUoVktfU0hJRlQpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fY3RybEtleShH
ZXRLZXlTdGF0ZShWS19DT05UUk9MKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX2Fs
dEtleShHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBt
X21ldGFLZXkoZmFsc2UpCiAgICAgLCBtX2lzU3lzdGVtS2V5KHN5c3RlbUtleSkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNl
RXZlbnRXaW4uY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQCBzdGF0aWMgSW50UG9pbnQgZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChICiAgICAgcmV0
dXJuIHBvaW50OwogfQogCi1zdGF0aWMgTW91c2VFdmVudFR5cGUgbWVzc2FnZVRvRXZlbnRUeXBl
KFVJTlQgbWVzc2FnZSkKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1lc3NhZ2VUb0V2ZW50
VHlwZShVSU5UIG1lc3NhZ2UpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7CiAgICAgICAgIGNh
c2UgV01fTEJVVFRPTkRCTENMSzoKQEAgLTU4LDM1ICs1OCwzMyBAQCBzdGF0aWMgTW91c2VFdmVu
dFR5cGUgbWVzc2FnZVRvRXZlbnRUeXBlCiAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRPV046CiAg
ICAgICAgIGNhc2UgV01fUkJVVFRPTkRPV046CiAgICAgICAgIGNhc2UgV01fTUJVVFRPTkRPV046
Ci0gICAgICAgICAgICByZXR1cm4gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogCiAgICAgICAgIGNhc2UgV01fTEJVVFRP
TlVQOgogICAgICAgICBjYXNlIFdNX1JCVVRUT05VUDoKICAgICAgICAgY2FzZSBXTV9NQlVUVE9O
VVA6Ci0gICAgICAgICAgICByZXR1cm4gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAg
cmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAKICNpZiAhT1MoV0lOQ0UpCiAg
ICAgICAgIGNhc2UgV01fTU9VU0VMRUFWRToKICNlbmRpZgogICAgICAgICBjYXNlIFdNX01PVVNF
TU9WRToKLSAgICAgICAgICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKIAogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAvL01vdmUgaXMgcmVs
YXRpdmVseSBoYXJtbGVzcwotICAgICAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAg
ICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgIH0KIH0KKwog
UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1l
c3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0sIGJvb2wgZGlkQWN0aXZhdGVXZWJW
aWV3KQorICAgIDogUGxhdGZvcm1FdmVudChtZXNzYWdlVG9FdmVudFR5cGUobWVzc2FnZSksIHdQ
YXJhbSAmIE1LX1NISUZULCB3UGFyYW0gJiBNS19DT05UUk9MLCBHZXRLZXlTdGF0ZShWS19NRU5V
KSAmIEhJR0hfQklUX01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRf
TUFTS19TSE9SVCkKICAgICA6IG1fcG9zaXRpb24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFy
YW0pKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbkZvckV2ZW50KGhXbmQs
IGxQYXJhbSkpCiAgICAgLCBtX2NsaWNrQ291bnQoMCkKLSAgICAsIG1fc2hpZnRLZXkod1BhcmFt
ICYgTUtfU0hJRlQpCi0gICAgLCBtX2N0cmxLZXkod1BhcmFtICYgTUtfQ09OVFJPTCkKLSAgICAs
IG1fYWx0S2V5KEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAg
ICAsIG1fbWV0YUtleShtX2FsdEtleSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhl
ciBicm93c2VycwogICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZGlkQWN0aXZhdGVXZWJWaWV3
KQotICAgICwgbV9ldmVudFR5cGUobWVzc2FnZVRvRXZlbnRUeXBlKG1lc3NhZ2UpKQorICAgICwg
bV9ldmVudFR5cGUoKQogICAgICwgbV9tb2RpZmllckZsYWdzKHdQYXJhbSkKIHsKICAgICBtX3Rp
bWVzdGFtcCA9IDo6R2V0VGlja0NvdW50KCkqMC4wMDE7IC8vIEdldFRpY2tDb3VudCByZXR1cm5z
IG1pbGxpc2Vjb25kcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZl
bnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVl
bEV2ZW50V2luLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMCArNjYsNyBA
QCBzdGF0aWMgaW50IHZlcnRpY2FsU2Nyb2xsTGluZXMoKQogfQogCiBQbGF0Zm9ybVdoZWVsRXZl
bnQ6OlBsYXRmb3JtV2hlZWxFdmVudChIV05EIGhXbmQsIGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uKQotICAgIDogbV9zaGlmdEtleShmYWxzZSkKLSAg
ICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAgICwgbV9tZXRh
S2V5KGZhbHNlKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURl
dmljZShmYWxzZSkKIHsKICAgICBtX2RlbHRhWCA9IGRlbHRhLndpZHRoKCk7CkBAIC04OCwxMiAr
ODUsOSBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChICiB9CiAKIFBs
YXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQgaFduZCwgV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCBpc01vdXNlSFdoZWVsKQotICAgIDogbV9wb3NpdGlv
bihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBs
YXRmb3JtRXZlbnQ6OldoZWVsLCB3UGFyYW0gJiBNS19TSElGVCwgd1BhcmFtICYgTUtfQ09OVFJP
TCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JULCBHZXRLZXlTdGF0
ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCisgICAgLCBtX3Bvc2l0aW9uKHBvc2l0
aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFs
UG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQotICAgICwgbV9zaGlmdEtleSh3UGFyYW0g
JiBNS19TSElGVCkKLSAgICAsIG1fY3RybEtleSh3UGFyYW0gJiBNS19DT05UUk9MKQotICAgICwg
bV9hbHRLZXkoR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAg
ICwgbV9tZXRhS2V5KG1fYWx0S2V5KSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVy
IGJyb3dzZXJzCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKIHsK
ICAgICAvLyBIb3cgbWFueSBwaXhlbHMgc2hvdWxkIHdlIHNjcm9sbCBwZXIgbGluZT8gIEdlY2tv
IHVzZXMgdGhlIGhlaWdodCBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L0tleWJvYXJkRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzM3LDE0ICszMzcsMTQgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KHVu
cwogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQod3hLZXlFdmVu
dCYgZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09IHd4RVZUX0tFWV9V
UCkKLSAgICAgICAgbV90eXBlID0gS2V5VXA7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6OktleVVwOwogICAgIGVsc2UgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09IHd4RVZUX0tF
WV9ET1dOKQotICAgICAgICBtX3R5cGUgPSBLZXlEb3duOworICAgICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duOwogICAgIGVsc2UgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09
IHd4RVZUX0NIQVIpCi0gICAgICAgIG1fdHlwZSA9IENoYXI7CisgICAgICAgIG1fdHlwZSA9IFBs
YXRmb3JtRXZlbnQ6OkNoYXI7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICBpZiAobV90eXBlICE9IENoYXIpCisgICAgaWYgKG1fdHlwZSAhPSBQbGF0Zm9ybUV2
ZW50OjpDaGFyKQogICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyRm9yV3hL
ZXlDb2RlKGV2ZW50LkdldEtleUNvZGUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vRU5URVIg
aXMgYW4gZWRpdGluZyBjb21tYW5kIHByb2Nlc3NlZCBhcyBhIGNoYXIgKG9ubHkgRW50ZXIgYW5k
IFRhYiBhcmUpCkBAIC0zNzEsOSArMzcxLDkgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0
Zm9ybUtleWJvYXJkRQogdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtl
eURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wpCiB7CiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5
cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1h
dGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlEb3du
KTsKKyAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pOwogICAgIG1f
dHlwZSA9IHR5cGU7Ci0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBl
ID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5n
KCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VFdmVudFd4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZUV2ZW50V3guY3BwCShyZXZp
c2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZUV2ZW50V3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNiArMzMsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCB3eE1v
dXNlRXZlbnQmIGV2ZW50LCBjb25zdCB3eFBvaW50JiBnbG9iYWxQb2ludCwgaW50IGNsaWNrQ291
bnQpCi0gICAgOiBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCi0gICAgLCBtX2dsb2Jh
bFBvc2l0aW9uKGdsb2JhbFBvaW50KQotICAgICwgbV9zaGlmdEtleShldmVudC5TaGlmdERvd24o
KSkKLSAgICAsIG1fY3RybEtleShldmVudC5DbWREb3duKCkgfHwgZXZlbnQuQ29udHJvbERvd24o
KSkKLSAgICAsIG1fYWx0S2V5KGV2ZW50LkFsdERvd24oKSkKLSAgICAsIG1fbWV0YUtleShldmVu
dC5NZXRhRG93bigpKSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVyIGJyb3dzZXJz
CitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlRnJvbU1vdXNlRXZlbnQoY29uc3Qgd3hN
b3VzZUV2ZW50JiBldmVudCkKIHsKICAgICB3eEV2ZW50VHlwZSB0eXBlID0gZXZlbnQuR2V0RXZl
bnRUeXBlKCk7Ci0gICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7Ci0gICAgCi0gICAg
aWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9ET1dOIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RPV04g
fHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9ET1dOKQotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNl
RXZlbnRQcmVzc2VkOwotICAgIAotICAgIGVsc2UgaWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9VUCB8
fCB0eXBlID09IHd4RVZUX01JRERMRV9VUCB8fCB0eXBlID09IHd4RVZUX1JJR0hUX1VQIHx8IAot
ICAgICAgICAgICAgICAgIHR5cGUgPT0gd3hFVlRfTEVGVF9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVW
VF9NSURETEVfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfUklHSFRfRENMSUNLKQotICAgICAgICBt
X2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKIAorICAgIGlmICh0eXBlID09IHd4RVZU
X0xFRlRfRE9XTiB8fCB0eXBlID09IHd4RVZUX01JRERMRV9ET1dOIHx8IHR5cGUgPT0gd3hFVlRf
UklHSFRfRE9XTikKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsK
KyAgICBlbHNlIGlmICh0eXBlID09IHd4RVZUX0xFRlRfVVAgfHwgdHlwZSA9PSB3eEVWVF9NSURE
TEVfVVAgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9VUCB8fCB0eXBlID09IHd4RVZUX0xFRlRfRENM
SUNLIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RDTElDSyB8fCB0eXBlID09IHd4RVZUX1JJR0hU
X0RDTElDSykKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAg
ICAgZWxzZSBpZiAodHlwZSA9PSB3eEVWVF9NT1RJT04pCi0gICAgICAgIG1fZXZlbnRUeXBlID0g
TW91c2VFdmVudE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3Zl
ZDsKKworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOworfQorCitQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50
LCBjb25zdCB3eFBvaW50JiBnbG9iYWxQb2ludCwgaW50IGNsaWNrQ291bnQpCisgICAgOiBQbGF0
Zm9ybUV2ZW50KHR5cGVGcm9tTW91c2VFdmVudChldmVudCksIGV2ZW50LlNoaWZ0RG93bigpLCBl
dmVudC5DbWREb3duKCkgfHwgZXZlbnQuQ29udHJvbERvd24oKSwgZXZlbnQuQWx0RG93bigpLCBl
dmVudC5NZXRhRG93bigpKQorICAgIDogbV9wb3NpdGlvbihldmVudC5HZXRQb3NpdGlvbigpKQor
ICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludCkKK3sKIAogICAgIGlmIChldmVudC5M
ZWZ0SXNEb3duKCkgfHwgZXZlbnQuQnV0dG9uKHd4TU9VU0VfQlROX0xFRlQpKQogICAgICAgICBt
X2J1dHRvbiA9IExlZnRCdXR0b247CkBAIC02MCwxMSArNTksOCBAQCBQbGF0Zm9ybU1vdXNlRXZl
bnQ6OlBsYXRmb3JtTW91c2VFdmVudChjCiAgICAgICAgIG1fYnV0dG9uID0gUmlnaHRCdXR0b247
CiAgICAgZWxzZSBpZiAoZXZlbnQuTWlkZGxlSXNEb3duKCkgfHwgZXZlbnQuQnV0dG9uKHd4TU9V
U0VfQlROX01JRERMRSkpCiAgICAgICAgIG1fYnV0dG9uID0gTWlkZGxlQnV0dG9uOwotICAgIGVs
c2UgaWYgKCFtX2V2ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQpCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotCiAKLSAgICBpZiAobV9ldmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVk
KQorICAgIGlmIChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkKICAgICAgICAg
bV9jbGlja0NvdW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpY2tDb3VudCA9IGNsaWNr
Q291bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRX
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VXaGVl
bEV2ZW50V3guY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywx
MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3Jt
V2hlZWxFdmVudChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCB3eFBvaW50JiBnbG9i
YWxQb2ludCkKLSAgICA6IG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRpb24oKSkKKyAgICA6IFBs
YXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGV2ZW50LlNoaWZ0RG93bigpLCBldmVu
dC5Db250cm9sRG93bigpLCBldmVudC5BbHREb3duKCksIGV2ZW50Lk1ldGFEb3duKCkpCisgICAg
LCBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvaW50KQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCkKLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQuU2hpZnREb3duKCkpCi0gICAgLCBtX2N0cmxLZXko
ZXZlbnQuQ29udHJvbERvd24oKSkKLSAgICAsIG1fYWx0S2V5KGV2ZW50LkFsdERvd24oKSkKLSAg
ICAsIG1fbWV0YUtleShldmVudC5NZXRhRG93bigpKSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0
ZXN0IG90aGVyIGJyb3dzZXJzCiAgICAgLCBtX2RlbHRhWCgwKSAvLyB3eCBkb2Vzbid0IHN1cHBv
cnQgaG9yaXpvbnRhbCBtb3VzZSB3aGVlbCBzY3JvbGxpbmcKICAgICAsIG1fZGVsdGFZKGV2ZW50
LkdldFdoZWVsUm90YXRpb24oKSAvIGV2ZW50LkdldFdoZWVsRGVsdGEoKSkKICAgICAsIG1fd2hl
ZWxUaWNrc1gobV9kZWx0YVgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVn
aW5WaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1Bs
dWdpblZpZXdNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvbWFjL1BsdWdpblZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyNSwxOSArNjI1LDE5
IEBAIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXkKICAgICBFdmVudFJl
Y29yZCByZWNvcmQ7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5
ZG93bkV2ZW50KSB7Ci0gICAgICAgIC8vIFRoaXMgZXZlbnQgaXMgdGhlIHJlc3VsdCBvZiBhIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biB3aGljaAorICAgICAgICAvLyBUaGlzIGV2ZW50
IGlzIHRoZSByZXN1bHQgb2YgYSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duIHdoaWNoCiAgICAgICAg
IC8vIHdhcyBkaXNhbWJpZ3VhdGVkIGludG8gYSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tl
eURvd24uIFNpbmNlCiAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSB0ZXh0
IGhlcmUsIHdlIHJldHVybiwgYW5kIHdhaXQgZm9yIHRoZQogICAgICAgICAvLyBjb3JyZXNwb25k
aW5nIGV2ZW50IGJhc2VkIG9uIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhci4KICAgICAgICAg
cmV0dXJuOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5
cHJlc3NFdmVudCkgewogICAgICAgICAvLyBXaGljaCB3b3VsZCBiZSB0aGlzIG9uZS4gVGhpcyBl
dmVudCB3YXMgZGlzYW1iaWd1YXRlZCBmcm9tIHRoZSBzYW1lCi0gICAgICAgIC8vIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93biwgYnV0IHRvIGEgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpD
aGFyLAorICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCBidXQgdG8gYSBQbGF0Zm9y
bUV2ZW50OjpDaGFyLAogICAgICAgICAvLyB3aGljaCByZXRhaW5zIHRoZSB0ZXh0IGZyb20gdGhl
IG9yaWdpbmFsIGV2ZW50LiBTbywgd2UgY2FuIHNhZmVseSBwYXNzCiAgICAgICAgIC8vIG9uIHRo
ZSBldmVudCBhcyBhIGtleS1kb3duIGV2ZW50IHRvIHRoZSBwbHVnaW4uCiAgICAgICAgIHJlY29y
ZC53aGF0ID0ga2V5RG93bjsKICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmtleXVwRXZlbnQpIHsKLSAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpL
ZXlVcCBldmVudHMgYWx3YXlzIGhhdmUgdGhlIHRleHQsIHNvIG5vdGhpbmcKKyAgICAgICAgLy8g
UGxhdGZvcm1FdmVudDo6S2V5VXAgZXZlbnRzIGFsd2F5cyBoYXZlIHRoZSB0ZXh0LCBzbyBub3Ro
aW5nCiAgICAgICAgIC8vIGZhbmN5IGhlcmUuCiAgICAgICAgIHJlY29yZC53aGF0ID0ga2V5VXA7
CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJl
dmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRab29t
QW5pbWF0b3JUcmFuc2Zvcm0KICAgICB9CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0g
ICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVU
YXBUeXBlLCBJbnRQb2ludCh0eCwgdHkpLCBJbnRQb2ludCh0eCwgdHkpLCAwLCBzY2FsZSwgMC5m
LCAwLCAwLCAwLCAwKTsKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCBwZ2UoUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZURvdWJsZVRhcCwgSW50UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHgsIHR5KSwg
MCwgc2NhbGUsIDAuZiwgMCwgMCwgMCwgMCk7CiAgICAgZG9jdW1lbnQtPnZpZXcoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwZ2UpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oc2NhbGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDIzKQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZl
IFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1N
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudDo6
V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUdl
c3R1cmVFdmVudCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVu
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwog
MjAxMS0xMi0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyB0byB0aGUgdGlsZWQg
Q29yZSBBbmltYXRpb24gZHJhd2luZyBhcmVhCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViRXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDIwICszNCwyNyBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50IDogcHVibGljCiBw
dWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50
JiB3ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgc3dp
dGNoICh3ZWJFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3du
OgotICAgICAgICAgICAgbV9ldmVudFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2ZW50UHJlc3NlZDsK
KyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3Nl
ZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZVVwOgot
ICAgICAgICAgICAgbV9ldmVudFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2ZW50UmVsZWFzZWQ7Cisg
ICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2Vk
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlTW92ZToK
LSAgICAgICAgICAgIG1fZXZlbnRUeXBlID0gV2ViQ29yZTo6TW91c2VFdmVudE1vdmVkOworICAg
ICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAorICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQu
c2hpZnRLZXkoKTsKKyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwor
ICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkg
PSB3ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1Nb3VzZUV2ZW50CiAg
ICAgICAgIHN3aXRjaCAod2ViRXZlbnQuYnV0dG9uKCkpIHsKICAgICAgICAgY2FzZSBXZWJNb3Vz
ZUV2ZW50OjpOb0J1dHRvbjoKICAgICAgICAgICAgIG1fYnV0dG9uID0gV2ViQ29yZTo6Tm9CdXR0
b247CkBAIC02OSwxMCArNzYsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24g
PSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAgICAgICBtX2NsaWNrQ291bnQgPSB3ZWJF
dmVudC5jbGlja0NvdW50KCk7CiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0
YW1wKCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAg
ICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0g
d2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXko
KTsKIAogICAgICAgICBtX21vZGlmaWVyRmxhZ3MgPSAwOwogICAgICAgICBpZiAobV9zaGlmdEtl
eSkKQEAgLTk5LDYgKzEwMiwxNCBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50IDog
cHVibGljCiBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudChjb25zdCBXZWJX
aGVlbEV2ZW50JiB3ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKKyAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CisgICAgICAgIG1fc2hpZnRLZXkg
PSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250
cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7CisgICAgICAg
IG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQbGF0Zm9ybVdo
ZWVsRXZlbnQKICAgICAgICAgbV9wb3NpdGlvbiA9IHdlYkV2ZW50LnBvc2l0aW9uKCk7CiAgICAg
ICAgIG1fZ2xvYmFsUG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAgICAg
ICBtX2RlbHRhWCA9IHdlYkV2ZW50LmRlbHRhKCkud2lkdGgoKTsKQEAgLTEwNiwxMCArMTE3LDYg
QEAgcHVibGljOgogICAgICAgICBtX3doZWVsVGlja3NYID0gd2ViRXZlbnQud2hlZWxUaWNrcygp
LndpZHRoKCk7CiAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSB3ZWJFdmVudC53aGVlbFRpY2tzKCku
aGVpZ2h0KCk7CiAgICAgICAgIG1fZ3JhbnVsYXJpdHkgPSAod2ViRXZlbnQuZ3JhbnVsYXJpdHko
KSA9PSBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSA/IFdlYkNvcmU6OlNj
cm9sbEJ5UGFnZVdoZWVsRXZlbnQgOiBXZWJDb3JlOjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsK
LSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3Ry
bEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVu
dC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOwogICAg
ICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA9IHdlYkV2ZW50LmRpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZSgpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgbV9waGFzZSA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPih3ZWJFdmVudC5w
aGFzZSgpKTsKQEAgLTEyOSwyMiArMTM2LDMwIEBAIGNsYXNzIFdlYktpdDJQbGF0Zm9ybUtleWJv
YXJkRXZlbnQgOiBwdWIKIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gUGxh
dGZvcm1FdmVudAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewogICAgICAgICBj
YXNlIFdlYkV2ZW50OjpLZXlEb3duOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpLZXlEb3duOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZv
cm1FdmVudDo6S2V5RG93bjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2
ZW50OjpLZXlVcDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
S2V5VXA7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpLZXlV
cDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpSYXdLZXlEb3du
OgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3du
OworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UmF3S2V5RG93
bjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpDaGFyOgotICAg
ICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOworICAgICAgICAg
ICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q2hhcjsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KKworICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsK
KyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAgICAgICBtX2Fs
dEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5t
ZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50CiAgICAgICAgIG1f
dGV4dCA9IHdlYkV2ZW50LnRleHQoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IHdlYkV2
ZW50LnVubW9kaWZpZWRUZXh0KCk7CiAgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IHdlYkV2ZW50
LmtleUlkZW50aWZpZXIoKTsKQEAgLTE1MiwxMCArMTY3LDYgQEAgcHVibGljOgogICAgICAgICBt
X25hdGl2ZVZpcnR1YWxLZXlDb2RlID0gd2ViRXZlbnQubmF0aXZlVmlydHVhbEtleUNvZGUoKTsK
ICAgICAgICAgbV9hdXRvUmVwZWF0ID0gd2ViRXZlbnQuaXNBdXRvUmVwZWF0KCk7CiAgICAgICAg
IG1faXNLZXlwYWQgPSB3ZWJFdmVudC5pc0tleXBhZCgpOwotICAgICAgICBtX3NoaWZ0S2V5ID0g
d2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJv
bEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBt
X21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CiAgICAgICAgIAogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIG1faXNTeXN0ZW1LZXkgYXZhaWxh
YmxlIChhbmQgZmFsc2UpIG9uIGFsbCBwbGF0Zm9ybXMKQEAgLTE3NSwyMCArMTg2LDI3IEBAIGNs
YXNzIFdlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudCA6IHB1YmwKIHB1YmxpYzoKICAgICBXZWJL
aXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiB3ZWJFdmVudCkK
ICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgc3dpdGNoICh3ZWJFdmVu
dC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgot
ICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlw
ZTsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVT
Y3JvbGxCZWdpbjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXA6Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZTsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6
OlBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAK
KyAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7CisgICAgICAgIG1fY3Ry
bEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVu
dC5hbHRLZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworCisg
ICAgICAgIC8vIFBsYXRmb3JtR2VzdHVyZUV2ZW50CiAgICAgICAgIG1fcG9zaXRpb24gPSB3ZWJF
dmVudC5wb3NpdGlvbigpOwogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2ViRXZlbnQuZ2xv
YmFsUG9zaXRpb24oKTsKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2LDcgKzcwNiw3IEBA
CiAJCUJDQTBFRjlGMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY5RDEyMzMy
NjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oICovOyB9OwogCQlCQ0EwRUZBMDEy
MzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY5RTEyMzMyNjQyMDA3RDNDRkIg
LyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgKi87IH07CiAJCUJDQTI4NEQ2MTQ5MkYyQzcwMDFG
OTA0MiAvKiBXS0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0EyODRENDE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLm1t
ICovOyB9OwotCQlCQ0EyODRENzE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyODRENTE0OTJG
MkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLmggKi87IH07CisJCUJDQTI4NEQ3MTQ5MkYyQzcw
MDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQTI4NEQ1MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDQTU2
QTFDMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2QTFBMTJGOTAyOEUwMEM1NjZD
NyAvKiBXZWJHcmFwaGljc0NvbnRleHQuaCAqLzsgfTsKIAkJQkNBNTZBMUQxMkY5MDI4RTAwQzU2
NkM3IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E1NkExQjEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3JhcGhp
Y3NDb250ZXh0LmNwcCAqLzsgfTsKIAkJQkNBNTZBNjUxMkY5QzhGOTAwQzU2NkM3IC8qIFdLR3Jh
cGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0E1NkE2MzEyRjlDOEY5MDBDNTY2QzcgLyogV0tHcmFwaGljc0NvbnRleHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpoYW5kbGVLZXlib2FyZEV2ZW4KICAgICAgICAgLy8gRHVyaW5nIFJhd0tleURvd24gZXZl
bnRzIGlmIGFuIGVkaXRvciBjb21tYW5kIHdpbGwgaW5zZXJ0IHRleHQsIGRlZmVyCiAgICAgICAg
IC8vIHRoZSBpbnNlcnRpb24gdW50aWwgdGhlIGtleXByZXNzIGV2ZW50LiBXZSB3YW50IGtleWRv
d24gdG8gYnViYmxlIHVwCiAgICAgICAgIC8vIHRocm91Z2ggdGhlIERPTSBmaXJzdC4KLSAgICAg
ICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJh
d0tleURvd24pIHsKKyAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0
b3JDb21tYW5kcyhmcmFtZSwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLCBmYWxzZSkpCiAgICAgICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEwMjk2OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE4Myw4ICsxMTgzLDggQEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVu
dChjb25zdCBXZWJNbwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtTW91c2VFdmVu
dCA9IHBsYXRmb3JtKG1vdXNlRXZlbnQpOwogCi0gICAgc3dpdGNoIChwbGF0Zm9ybU1vdXNlRXZl
bnQuZXZlbnRUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UHJlc3Nl
ZDoKKyAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChpc0NvbnRleHRDbGljayhwbGF0Zm9ybU1vdXNlRXZlbnQpKQogICAgICAgICAgICAgICAgIHBh
Z2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CkBAIC0xMTk1
LDkgKzExOTUsOSBAQCBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vCiAK
ICAgICAgICAgICAgIHJldHVybiBoYW5kbGVkOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6TW91c2VFdmVudFJlbGVhc2VkOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUmVsZWFzZWQ6CiAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAgICAgICBjYXNl
IFdlYkNvcmU6Ok1vdXNlRXZlbnRNb3ZlZDoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkOgogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91
c2VNb3ZlZChwbGF0Zm9ybU1vdXNlRXZlbnQsIG9ubHlVcGRhdGVTY3JvbGxiYXJzKTsKIAogICAg
ICAgICBkZWZhdWx0OgpAQCAtMTUzMiw3ICsxNTMyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YQogCiAgICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2
ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgewogICAgICAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQgcGxhdGZvcm1FdmVudChwbGF0Zm9ybShldmVudCkpOwotICAgICAgICBwbGF0Zm9y
bUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJh
d0tleURvd24pOworICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVu
dChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQg
OiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1F
dmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpLmdldCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE5MDMsNyArMTkwMyw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxl
RWRpdGluZ0tleWJvYXJkRXZlbnQKIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOwogCi0gICAgaWYg
KGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7
CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikg
ewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91
dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4
ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxl
YXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUu
Zy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2Vu
ZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVy
LCBvciBFbnRlcikuCkBAIC0yMDUxLDcgKzIwNTEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRl
ZChXZWJDb3JlOjpJbnRQb2luCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAgICAg
Ly8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hv
dWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgotICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChh
ZGp1c3RlZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9u
LCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50
VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoYWRqdXN0ZWRDbGllbnRQb3Np
dGlvbiwgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkp
OwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5k
ZWRBdChldmVudCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQko
cmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBX
ZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludAogICAgICAgICAgICAgICAgIGJvb2wg
Y29tbWFuZEV4ZWN1dGVkQnlFZGl0b3IgPSBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpOwogICAgICAg
ICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kRXhlY3V0ZWRCeUVkaXRvcjsKICAg
ICAgICAgICAgICAgICBpZiAoIWNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGJvb2wgcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2aW9yID0gZXZlbnQtPmtleUV2
ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24gJiYgcGVy
Zm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBwZXJmb3JtZWROb25FZGl0aW5nQmVoYXZpb3Ig
PSBldmVudC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24g
JiYgcGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1h
bmROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IHBlcmZvcm1l
ZE5vbkVkaXRpbmdCZWhhdmlvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UgewpAQCAtMjA5LDcgKzIwOSw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQKICAgICAgICAgfQogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGV4dCBpbnNl
cnRpb24gY29tbWFuZHMsIGRlZmF1bHQga2V5ZG93biBoYW5kbGVyIGlzIHRoZSByaWdodCB0aW1l
IHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmRzLgogICAgICAgICAvLyBLZXlwcmVzcyAoQ2hhciBldmVu
dCkgaGFuZGxlciBpcyB0aGUgbGF0ZXN0IG9wcG9ydHVuaXR5IHRvIGV4ZWN1dGUuCi0gICAgICAg
IGlmICghaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkg
PT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSB7CisgICAgICAgIGlmICghaGF2ZVRleHRJ
bnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6Q2hhcikgewogICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkID0gZXhlY3V0ZUtleXByZXNz
Q29tbWFuZHNJbnRlcm5hbChldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLCBldmVudCk7CiAgICAg
ICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmNsZWFyKCk7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwMjMpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2
ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmludGVycHJldEtleUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgor
ICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6a2V5Ym9hcmRTaG9ydGN1dCk6CisgICAgICAgICog
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcik6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1
aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBs
YXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OnRvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50VHlwZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKiB0
ZXN0cy9LZXlib2FyZFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6Omlu
dGVycHJldEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnBy
ZXRPU01vZGlmaWVyS2V5UHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6Omlu
dGVycHJldEN0cmxLZXlQcmVzcyk6CisgICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVzdDo6aW50
ZXJwcmV0VGFiKToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXROZXdM
aW5lKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9Qb3B1cE1l
bnVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6c2ltdWxh
dGVMZWZ0TW91c2VEb3duRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVU
ZXN0OjpzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0Yp
OgorCiAyMDExLTEyLTE1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQ2hyb21pdW0gV2luZG93cyAoVGVzdHMpIGlzIGZhaWxpbmcgdG8gYnVpbGQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCShyZXZp
c2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBAIGNvbnN0IGNoYXIqIEVk
aXRvckNsaWVudEltcGw6OmludGVycHJldEsKICAgICBpZiAoa2V5RXZlbnQtPm1ldGFLZXkoKSkK
ICAgICAgICAgbW9kaWZpZXJzIHw9IE1ldGFLZXk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUo
KSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIGludCBt
YXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldnQtPmtleUNvZGUoKTsKICAgICAgICAgcmV0dXJu
IG1hcEtleSA/IGtleURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOwogICAgIH0KQEAg
LTU2Nyw3ICs1NjcsNyBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmhhbmRsZUVkaXRpbmdLZXli
CiAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KTsKICAgICBF
ZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5k
TmFtZSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdo
IGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdwogICAgICAgICAvLyBjb21tYW5k
cyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUg
dHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhl
ciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDEwMjk2
OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjYsMTMgKzU2NiwxMyBAQCBXZWJTdHJpbmcgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6a2V5Ym9hCiAgICAgICAgIC8vIEZvbGxvdyB0aGUgc2FtZSBvcmRl
ciBhcyBNb3ppbGxhIE1TQUEgaW1wbGVtZW50YXRpb246CiAgICAgICAgIC8vIEN0cmwrQWx0K1No
aWZ0K01ldGEra2V5LiBNU0ROIHN0YXRlcyB0aGF0IGtleWJvYXJkIHNob3J0Y3V0IHN0cmluZ3MK
ICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSBsb2NhbGl6ZWQgYW5kIGRlZmluZXMgdGhlIHNlcGFy
YXRvciBhcyAiKyIuCi0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkN0cmxLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpDdHJs
S2V5KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIkN0cmwrIjsKLSAgICAgICAgaWYg
KG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5KQorICAgICAgICBpZiAo
bW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6QWx0S2V5KQogICAgICAgICAgICAgbW9kaWZpZXJT
dHJpbmcgKz0gIkFsdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6
OlNoaWZ0S2V5KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIlNoaWZ0KyI7Ci0gICAg
ICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Ok1ldGFLZXkpCisgICAg
ICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5KQogICAgICAgICAgICAg
bW9kaWZpZXJTdHJpbmcgKz0gIldpbisiOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2
aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVu
dENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxNSArNzUsMTUgQEAgUGxhdGZv
cm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZQogICAgIHN3aXRjaCAoZS50eXBlKSB7
CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6CiAgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpNb3VzZUxlYXZlOiAgLy8gc3ludGhlc2l6ZSBhIG1vdmUgZXZlbnQKLSAgICAgICAgbV9l
dmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpNb3VzZURvd246Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7Cisg
ICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgIG1fZXZlbnRU
eXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVJlbGVhc2VkOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBAIC0xMDMs
NiArMTAzLDggQEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbAogICAg
IG1fd2hlZWxUaWNrc1kgPSBlLndoZWVsVGlja3NZOwogICAgIG1fZ3JhbnVsYXJpdHkgPSBlLnNj
cm9sbEJ5UGFnZSA/CiAgICAgICAgIFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgOiBTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudDsKKyAgICAKKyAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsK
ICAgICBtX3NoaWZ0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkp
OwogICAgIG1fY3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xL
ZXkpOwogICAgIG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5
KTsKQEAgLTEyMiwxNiArMTI0LDE2IEBAIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxh
dGZvcm1HZXMKIHsKICAgICBzd2l0Y2ggKGUudHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVNjcm9sbEJlZ2luOgotICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVNjcm9sbEVuZDoKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1
cmVTY3JvbGxFbmQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVNjcm9sbFVwZGF0ZToKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlNjcm9sbFVwZGF0ZVR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1
cmVTY3JvbGxVcGRhdGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVRhcDoKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5
cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTUwLDIxICsxNTIsMjEgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdl
cwogCiAvLyBNYWtlUGxhdGZvcm1LZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpUeXBlIHRvUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1dEV2ZW50
OjpUeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdG9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRUeXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleVVwOgotICAgICAgICByZXR1
cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6OktleVVwOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6S2V5RG93bjoKLSAgICAgICAg
cmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6OktleURvd247CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3du
OgotICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duOworICAg
ICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bjsKICAgICBjYXNlIFdlYklucHV0
RXZlbnQ6OkNoYXI6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7
CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpDaGFyOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpLZXlEb3duOworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwog
fQogCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRC
dWlsZGVyKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
MDUsNyArMjIwNSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KAogewog
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBwbWUoY2xpZW50UG9pbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY3JlZW5Qb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRC
dXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQs
IDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZSwgMCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3Vy
Y2VFbmRlZEF0KHBtZSwKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4ob3BlcmF0
aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tleWJvYXJkVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LZXlib2FyZFRl
c3QuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0tleWJvYXJkVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIC8vIEUuZy4sIHNlbmRpbmcgaW4gdGhlIGVudGVyIGtleSBnaXZlcyBiYWNrICJJbnNl
cnROZXdsaW5lIi4KICAgICBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudCgKICAgICAgICAg
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViS2V5Ym9hcmRFdmVudCwKLSAgICAgICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpUeXBlIGtleVR5cGUpCisgICAgICAgIFBsYXRmb3JtRXZlbnQ6OlR5
cGUga2V5VHlwZSkKICAgICB7CiAgICAgICAgIEVkaXRvckNsaWVudEltcGwgZWRpdG9ySW1wbCgw
KTsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlciBldnQod2ViS2V5Ym9hcmRF
dmVudCk7CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViSW5wdXRFdmVudDo6
TW9kaWZpZXJzIG9zTW9kaWZpZXIgPSBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5OwogI2VuZGlm
CiAgICAgICAgIHNldHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCBrZXlDb2RlLCBvc01v
ZGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQs
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHJldHVybiBpbnRl
cnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsK
ICAgICB9CiAKICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCBwcmVzc2lu
ZyBkb3duIGN0cmwrfGtleUNvZGV8LgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQ7CiAgICAgICAgIHNldHVwS2V5
RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCBrZXlDb2RlLCBXZWJJbnB1dEV2ZW50OjpDb250cm9s
S2V5KTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHJldHVybiBpbnRlcnBy
ZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAg
ICB9CiAKICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCB0eXBpbmcgYSB0
YWIuCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV2ViS2V5Ym9h
cmRFdmVudCBrZXlib2FyZEV2ZW50OwogICAgICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9h
cmRFdmVudCwgJ1x0JywgbW9kaWZpZXJzKTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2
ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7CisgICAgICAg
IHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpD
aGFyKTsKICAgICB9CiAKICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCB0
eXBpbmcgYSBuZXdsaW5lLgpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIFdlYktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKICAgICAgICAgc2V0dXBLZXlEb3du
RXZlbnQoJmtleWJvYXJkRXZlbnQsICdccicsIG1vZGlmaWVycyk7Ci0gICAgICAgIHJldHVybiBp
bnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNo
YXIpOworICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxh
dGZvcm1FdmVudDo6Q2hhcik7CiAgICAgfQogCiAgICAgLy8gQSBuYW1lIGZvciAibm8gbW9kaWZp
ZXJzIHNldCIuCkBAIC0xNjksNyArMTY5LDcgQEAgVEVTVF9GKEtleWJvYXJkVGVzdCwgVGVzdEVz
Y2FwZSkKICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwgV2ViQ29yZTo6VktF
WV9FU0NBUEUsIG5vTW9kaWZpZXJzKTsKIAogICAgIGNvbnN0IGNoYXIqIHJlc3VsdCA9IGludGVy
cHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKTsKICAgICBFWFBFQ1RfU1RSRVEoIkNhbmNlbCIsIHJlc3VsdCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAkocmV2
aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVU
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDEzICsyMzUsMTMgQEAgcHJvdGVjdGVkOgog
ICAgIC8vIFNpbXVsYXRlcyBhIG1vdXNlIGV2ZW50IG9uIHRoZSBzZWxlY3QgcG9wdXAuCiAgICAg
dm9pZCBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAg
ICAgewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQs
IExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLAorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUHJlc3NlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgICAgICBtX3dlYlZpZXctPnNlbGVjdFBv
cHVwKCktPmhhbmRsZU1vdXNlRG93bkV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KICAgICB2b2lk
IHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgewot
ICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRC
dXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1v
dXNlRXZlbnQocG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJl
bGVhc2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CiAgICAgICAgIG1fd2ViVmlldy0+c2VsZWN0UG9wdXAo
KS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudCk7CiAgICAgfQpAQCAtMzczLDcg
KzM3Myw3IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBNb3VzZU92ZXJJdGUKICAgICAv
LyBZIG9mIDE4IHRvIGJlIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEgKDEyIGZvbnQgcGx1cyBib3Jk
ZXIgYW5kIG1vcmUgdG8gYmUgc2FmZSkuCiAgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIDE4KTsK
ICAgICAvLyBTaW11bGF0ZSB0aGUgbW91c2UgbW92aW5nIG92ZXIgdGhlIGZpcnN0IGl0ZW0uCi0g
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocm93MVBvaW50LCByb3cxUG9pbnQsIE5v
QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsCisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZl
bnQocm93MVBvaW50LCByb3cxUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAwKTsKICAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1v
dXNlTW92ZUV2ZW50KG1vdXNlRXZlbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFu
ZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorCiAyMDExLTEyLTE1ICBSYXBoYWVsIEt1Ym8gZGEg
Q29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIENsZWFuIHVwIGFu
ZCByZWZhY3RvciB0aGUgbWVtb3J5IGNhY2hlIGZ1bmN0aW9ucyBpbiBld2tfc2V0dGluZ3MuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0
MDMsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvCiAKICAgICBF
ZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnBy
ZXRLZXlFdmVudChldmVudCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24n
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFu
ZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJl
IHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRo
ZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykg
b3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRh
YiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKToK
KwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9i
bGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAyLDcgKzUwMiw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEsK
ICAgICAgICAgLy8gRHVyaW5nIFJhd0tleURvd24gZXZlbnRzIGlmIGFuIGVkaXRvciBjb21tYW5k
IHdpbGwgaW5zZXJ0IHRleHQsIGRlZmVyCiAgICAgICAgIC8vIHRoZSBpbnNlcnRpb24gdW50aWwg
dGhlIGtleXByZXNzIGV2ZW50LiBXZSB3YW50IGtleWRvd24gdG8gYnViYmxlIHVwCiAgICAgICAg
IC8vIHRocm91Z2ggdGhlIERPTSBmaXJzdC4KLSAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5
cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICAgICAgaWYg
KHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZmFsc2Up
KQogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxMDI5
NjgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92
aWV3X3BvcHVwX21lCiAgICAgbG9jYXRpb24uc2hydW5rVG8oSW50UG9pbnQodmlldy0+d2lkdGgo
KSAtIGdDb250ZXh0TWVudU1hcmdpbiwgdmlldy0+aGVpZ2h0KCkgLSBnQ29udGV4dE1lbnVNYXJn
aW4pKTsKIAogICAgIEludFBvaW50IGdsb2JhbFBvaW50KGNvbnZlcnRXaWRnZXRQb2ludFRvU2Ny
ZWVuUG9pbnQod2lkZ2V0LCBsb2NhdGlvbikpOwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVu
dChsb2NhdGlvbiwgZ2xvYmFsUG9pbnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1l
KCkpOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xvYmFsUG9pbnQs
IFJpZ2h0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDAsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKICAgICByZXR1
cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpLCBldmVudCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwMzAyMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1t
OgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJhZ1NvdXJjZUVuZGVkQXQ6b3BlcmF0aW9uOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjdXJyZW50S2V5Ym9h
cmRFdmVudCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9pbnRlcnByZXRLZXlFdmVudDpzYXZp
bmdDb21tYW5kczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAg
ICgtW1dlYlBERlZpZXcgUERGVmlld1dpbGxDbGlja09uTGluazp3aXRoVVJMOl0pOgorCiAyMDEx
LTEyLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBi
dWlsZCBmaXggYWZ0ZXIgcjEwMjg3NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODExLDcgKzgxMSw3IEBAIC0gKHZvaWQpX2Ry
YWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmQKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJ
WE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBi
ZSByZWFsIG9uZXMgaW5zdGVhZC4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoSW50UG9p
bnQod2luZG93TG9jKSwgZ2xvYmFsUG9pbnQod2luZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRn
ZXQoKSB3aW5kb3ddKSwKLSAgICAgICAgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CisgICAgICAgIExlZnRC
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChEcmFnT3BlcmF0aW9uKW9wZXJhdGlv
bik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQko
cmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzczOSw3ICszNzM5LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudAogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAg
ICAgY2FzZSBOU0tleURvd246IHsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRm
b3JtRXZlbnQoZXZlbnQpOwotICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURv
d25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICBwbGF0
Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKTsKICAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50
LCBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIH0KICAgICBjYXNl
IE5TS2V5VXA6CkBAIC01MzgxLDcgKzUzODEsNyBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVu
dDooS2V5Ym9hcmRFdmVuCiAgICAgICAgIH0KICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRl
eHQgaW5zZXJ0aW9uIGNvbW1hbmRzLCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmln
aHQgdGltZSB0byBleGVjdXRlIHRoZSBjb21tYW5kcy4KICAgICAgICAgLy8gS2V5cHJlc3MgKENo
YXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxhdGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgot
ICAgICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+
dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikKKyAgICAgICAgaWYgKCFoYXZl
VGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpDaGFyKQogICAgICAgICAgICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEtleXByZXNzQ29t
bWFuZHNdOwogICAgIH0KICAgICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVy
cyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCShyZXZp
c2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTk2MCw3ICs5NjAsNyBAQCAtICh2b2lkKVBERlZpZXdXaWxsQ2xp
Y2tPbkxpbms6KFBERlZpZXcgCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOU0tl
eURvd246IHsKICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZShuc0V2ZW50KTsK
LSAgICAgICAgICAgIHBlLmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICAgICAgcGUuZGlzYW1iaWd1YXRlS2V5RG93bkV2
ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICAgICAgZXZlbnQgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgdHJ1ZSwgdHJ1ZSwg
MCwKICAgICAgICAgICAgICAgICBwZS5rZXlJZGVudGlmaWVyKCksIHBlLndpbmRvd3NWaXJ0dWFs
S2V5Q29kZSgpLAogICAgICAgICAgICAgICAgIHBlLmN0cmxLZXkoKSwgcGUuYWx0S2V5KCksIHBl
LnNoaWZ0S2V5KCksIHBlLm1ldGFLZXkoKSwgZmFsc2UpOwpJbmRleDogU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwMzAyMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0RyYWdDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0
RHJhZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAy
MDExLTEyLTE0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4K
IAogICAgICAgICBbUXRdIEdldCByaWQgb2YgbGF5ZXJpbmcgdmlvbGF0aW9uIGluIFBsdWdpblZp
ZXdRdApJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0Ns
aWVudFF0LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZQogICAgICAgICBRdDo6
RHJvcEFjdGlvbiBhY3R1YWxEcm9wQWN0aW9uID0gZHJhZy0+ZXhlYyhkcmFnT3BlcmF0aW9uc1Rv
RHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlvbk1hc2spKTsKIAogICAgICAgICAvLyBTZW5kIGRyYWdF
bmQgZXZlbnQKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygp
LT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0
b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwor
ICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbWUobV93ZWJQYWdlLT52aWV3KCktPm1hcEZyb21H
bG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgTGVmdEJ1dHRvbiwgUGxhdGZv
cm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwog
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KG1lLCBkcm9w
QWN0aW9uVG9EcmFnT3BlcmF0aW9uKGFjdHVhbERyb3BBY3Rpb24pKTsKICAgICB9CiAgICAgZnJh
bWUtPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VuZGVkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2
aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIEVkaXRv
ckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAgICAgICAgIHJldHVybjsKIAogICAgIGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V2ZW50ID0gZXZlbnQtPmtleUV2ZW50KCk7Ci0g
ICAgaWYgKCFrZXZlbnQgfHwga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlVcCkKKyAgICBpZiAoIWtldmVudCB8fCBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogc3RhcnQgPSBmcmFtZS0+
c2VsZWN0aW9uKCktPnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpOwpAQCAtNDQxLDcgKzQ0MSw3IEBA
IHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKICAgICAgICAgICAgIC8v
IHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRp
YXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZl
bnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEg
VGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgogICAgICAgICAgICAgaWYgKGNtZCAmJiBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQotICAgICAgICAgICAgICAg
ICYmIGtldmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikK
KyAgICAgICAgICAgICAgICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgbV9wYWdlLT50
cmlnZ2VyQWN0aW9uKGFjdGlvbik7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBFZGl0b3JDbGll
bnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogCiAgICAgICAgICAgICAvLyBUZXh0IGluc2VydGlv
bi4KICAgICAgICAgICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dCA9IGZhbHNlOwotICAgICAgICAg
ICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAm
JiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoa2V2ZW50LT50
eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0
eSgpKSB7CiAKICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGtldmVudC0+YWx0S2V5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJs
ZUJhc2UuY3BwOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NLZXlib2FyZFNob3J0
Y3V0KToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKGdlbmVyYXRlTW91
c2VFdmVudCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjprZXlV
cCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJWaWV3OjprZXlEb3duKToKKyAgICAgICAgKFdlYlZpZXc6OmtleVByZXNzKToKKwog
MjAxMS0xMi0xNCAgSmluZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVt
cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAJKHJldmlzaW9uIDEwMjk2
OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJh
c2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtMzY2LDEzICszNjYsMTMgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZQogICAgICAgICAvLyBGb2xsb3cgdGhl
IHNhbWUgb3JkZXIgYXMgTW96aWxsYSBNU0FBIGltcGxlbWVudGF0aW9uOgogICAgICAgICAvLyBD
dHJsK0FsdCtTaGlmdCtNZXRhK2tleS4gTVNETiBzdGF0ZXMgdGhhdCBrZXlib2FyZCBzaG9ydGN1
dCBzdHJpbmdzCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgbG9jYWxpemVkIGFuZCBkZWZpbmVz
IHRoZSBzZXBhcmF0b3IgYXMgIisiLgotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpDdHJsS2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1F
dmVudDo6Q3RybEtleSkKICAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVycyArPSAiQ3RybCsi
OwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXkp
CisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXkpCiAgICAgICAg
ICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgKz0gIkFsdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJz
ICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVy
cyAmIFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KQogICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZp
ZXJzICs9ICJTaGlmdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpNZXRhS2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6
TWV0YUtleSkKICAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVycyArPSAiV2luKyI7CiAgICAg
fQogICAgICpzaG9ydGN1dCA9IEJTdHJpbmcoU3RyaW5nKGFjY2Vzc0tleU1vZGlmaWVycyArIGFj
Y2Vzc0tleSkpLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3Bw
CShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsOCBAQCBTVERNRVRIT0RJTVBfKFVMT05HKSBX
ZWJEcm9wU291cmNlOjpSZWxlCiAgICAgcmV0dXJuIGM7CiB9CiAKLVBsYXRmb3JtTW91c2VFdmVu
dCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9vbCBpc0RyYWcpIHsKK1Bs
YXRmb3JtTW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9v
bCBpc0RyYWcpCit7CiAgICAgUE9JTlRMIHB0OwogICAgIDo6R2V0Q3Vyc29yUG9zKChMUFBPSU5U
KSZwdCk7CiAgICAgUE9JTlRMIGxvY2FscHQgPSBwdDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBQbGF0
Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlCiAgICAgaWYgKFNVQ0NFRURFRCh3
ZWJWaWV3LT52aWV3V2luZG93KChPTEVfSEFORExFKikmdmlld1dpbmRvdykpKQogICAgICAgICA6
OlNjcmVlblRvQ2xpZW50KHZpZXdXaW5kb3csIChMUFBPSU5UKSZsb2NhbHB0KTsKICAgICByZXR1
cm4gUGxhdGZvcm1Nb3VzZUV2ZW50KEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgSW50
UG9pbnQocHQueCwgcHQueSksCi0gICAgICAgIGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRv
biwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVu
dFRpbWUoKSk7CisgICAgICAgIGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRvbiwgUGxhdGZv
cm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJl
bnRUaW1lKCkpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlDb250aW51
ZURyYWcoQk9PTCBmRXNjYXBlUHJlc3NlZCwgRFdPUkQgZ3JmS2V5U3RhdGUpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTMsNyArMTgxMyw3IEBAIGJvb2wgV2ViVmll
dzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwKIAogYm9vbCBXZWJWaWV3OjprZXlVcChXUEFS
QU0gdmlydHVhbEtleUNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCiB7
Ci0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVh
bEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAsIHN5c3RlbUtl
eURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3cs
IHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5
RG93bik7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBtX2N1cnJlbnRDaGFyYWN0ZXJDb2RlID0gMDsKQEAg
LTE5NTUsNyArMTk1NSw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZl
bnQKIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkg
PT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50
LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJL
aXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBo
b3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Ig
c2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29y
ZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdl
cyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8v
IChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkBAIC0x
OTgzLDcgKzE5ODMsNyBAQCBib29sIFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlD
CiAjZW5kaWYKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVu
dChtX3ZpZXdXaW5kb3csIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3csIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0
Zm9ybUV2ZW50OjpSYXdLZXlEb3duLCBzeXN0ZW1LZXlEb3duKTsKICAgICBib29sIGhhbmRsZWQg
PSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGtleUV2ZW50KTsKIAogICAgIC8vIFRo
ZXNlIGV2ZW50cyBjYW5ub3QgYmUgY2FuY2VsZWQsIGFuZCB3ZSBoYXZlIG5vIGRlZmF1bHQgaGFu
ZGxpbmcgZm9yIHRoZW0uCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBib29sIFdlYlZpZXc6OmtleVBy
ZXNzKFdQQVJBTSBjaGFyQ29kZSwgCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2luZG93LCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpDaGFyLCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2luZG93LCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZv
cm1FdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93bik7CiAgICAgLy8gSUUgZG9lcyBub3QgZGlzcGF0
Y2gga2V5cHJlc3MgZXZlbnQgZm9yIFdNX1NZU0NIQVIuCiAgICAgaWYgKHN5c3RlbUtleURvd24p
CiAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUFjY2Vzc0tleShr
ZXlFdmVudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDIzKQorKysg
U291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2lu
Q0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGlu
Z0tleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6aGFuZGxlS2V5RG93bik6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVLZXlQcmVzcyk6Cisg
ICAgICAgIChXZWJWaWV3OjpoYW5kbGVLZXlVcCk6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAg
PGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51
cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Vmlldy5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIFdlYlZpZXc6Omhh
bmRsZUtleURvd24oV1BBUkFNIHZpcnR1CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlE
YXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOwor
ICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVh
bEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtleURv
d24pOwogICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQo
a2V5RXZlbnQpOwogCiAgICAgLy8gVGhlc2UgZXZlbnRzIGNhbm5vdCBiZSBjYW5jZWxlZCwgYW5k
IHdlIGhhdmUgbm8gZGVmYXVsdCBoYW5kbGluZyBmb3IgdGhlbS4KQEAgLTM3MCw3ICszNzAsNyBA
QCBib29sIFdlYlZpZXc6OmhhbmRsZUtleVByZXNzKFdQQVJBTSBjaGFyCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIGNo
YXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURv
d24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwg
Y2hhckNvZGUsIGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOwog
ICAgIC8vIElFIGRvZXMgbm90IGRpc3BhdGNoIGtleXByZXNzIGV2ZW50IGZvciBXTV9TWVNDSEFS
LgogICAgIGlmIChzeXN0ZW1LZXlEb3duKQogICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVBY2Nlc3NLZXkoa2V5RXZlbnQpOwpAQCAtMzgyLDcgKzM4Miw3IEBAIGJv
b2wgV2ViVmlldzo6aGFuZGxlS2V5UHJlc3MoV1BBUkFNIGNoYXIKIAogYm9vbCBXZWJWaWV3Ojpo
YW5kbGVLZXlVcChXUEFSQU0gdmlydHVhbEtleUNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5
c3RlbUtleURvd24pCiB7Ci0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2lu
ZG93SGFuZGxlLCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2
ZW50KG1fd2luZG93SGFuZGxlLCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVu
dDo6S2V5VXAsIHN5c3RlbUtleURvd24pOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5RXZlbnQpOwpJbmRleDogU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5j
cHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0LDcg
QEAgYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGluZ0tleQogCiAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5
RXZlbnQoZXZlbnQpKTsKIAotICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2
ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRo
YXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVh
dGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhh
bmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxl
dCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhh
dCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgpJbmRleDogU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwMzAyMykKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFd4OjppbnRlcnByZXRLZXlFdmVudCk6CisKIDIwMTEtMTItMTEgIFJvYmluIER1bm4gIDxy
b2JpbkBhbGxkdW5uLmNvbT4KIAogICAgICAgICBBZGQgYSBVUkwgYXJndW1lbnQgdG8gdGhlIHd4
V2ViVmlldyBjb25zdHJ1Y3RvciwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9FZGl0b3JDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkwLDcgKzM5MCw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V3g6OmhhbmRsZUVkaXRpbmdL
ZXlib2EKIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5
cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8v
IFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVj
aWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVk
aXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBX
ZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBj
aGFuZ2VzIGZvY3VzKSBvciBpZiBub3QgdG8gbGV0IGEgQ0hBUiBldmVudCBiZSBnZW5lcmF0ZWQK
ICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVu
dGVyKS4KQEAgLTQwOSw3ICs0MDksNyBAQCBib29sIEVkaXRvckNsaWVudFd4OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hCiAKIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudFd4OjppbnRlcnByZXRLZXlFdmVu
dChjb25zdCBLZXlib2FyZEV2ZW50KiBldnQpCiB7Ci0gICAgQVNTRVJUKGV2dC0+a2V5RXZlbnQo
KS0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biB8fCBldnQtPmtl
eUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpOworICAgIEFT
U0VSVChldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3du
IHx8IGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpOwogCiAg
ICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5kc01hcCA9
IDA7CiAgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleVByZXNzQ29tbWFu
ZHNNYXAgPSAwOwpAQCAtNDMzLDcgKzQzMyw3IEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudFd4
OjppbnRlcnByZXRLZXkKICAgICBpZiAoZXZ0LT5jdHJsS2V5KCkpCiAgICAgICAgIG1vZGlmaWVy
cyB8PSBDdHJsS2V5OwogCi0gICAgaWYgKGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChldnQtPmtleUV2ZW50KCkt
PnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIGludCBtYXBL
ZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldnQtPmtleUNvZGUoKTsKICAgICAgICAgcmV0dXJuIG1h
cEtleSA/IGtleURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119562</attachid>
            <date>2011-12-15 21:45:53 -0800</date>
            <delta_ts>2011-12-15 22:39:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111215214549.patch</filename>
            <type>text/plain</type>
            <size>154512</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRN
ZW51XSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorICAgICAgICAqIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICog
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycyk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL3d4L0V2ZW50SGFuZGxlcld4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Y3RybEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxhdGZvcm1F
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hl
ZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZvck5TRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXlwYWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0eXBl
RnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorCiAyMDExLTEyLTE1ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIHNpemVvZihSZW5kZXJPYmplY3QpIGlzIDMyIGlu
c3RlYWQgb2YgMjQgb24gV2luZG93cwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUyLDYgKzEwNTIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
TG9nZ2luZy5jcHAKICAgICBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKyAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50
LmNwcAogICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKICAgICBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTAyOTY4KQorKysg
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg3
Nyw2ICsyODc3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL05vdEltcGxlbWVudGVkLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtTW91c2VFdmVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTAyOTY4
KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTExNyw2
ICsxMTE3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwIFwKKyAgICBw
bGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcCBcCiAgICAgcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmNwcCBcCiAgICAgcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIFwKICAgICBw
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5n
IGNvcHkpCkBAIC02MDgsOCArNjA4LDggQEAgX19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZs
b2F0c0VmZmZmCiBfX1pON1dlYkNvcmUyMHByb3RvY29sSXNKYXZhU2NyaXB0RVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkK
IF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgotX19aTjdXZWJD
b3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0ZUtleURvd25FdmVudEVOUzBf
NFR5cGVFYgogX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQK
K19fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3du
RXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxv
YWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3Jp
dHlFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5T
dHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGll
bnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1lbnRFeHRl
bnNpb25zMjFzYW1wbGVBbmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0U1ZHU01J
TEVsZW1lbnRFZApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTAyOTY4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsNiArNjk1LDgg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUV2
ZW50LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjY2MzAsNiArMjY2MzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cUGxhdGZvcm1FdmVudC5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFBsYXRmb3JtRXZl
bnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MDcwLDYgKzUwNzAsOCBAQAogCQlC
QzVBODY4NTBDMzM2NzYwMDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVBODY4MjBDMzM2NzYwMDBFRUE2NDkg
LyogRE9NU2VsZWN0aW9uLmggKi87IH07CiAJCUJDNUE4NkI1MEMzMzY3RTgwMEVFQTY0OSAvKiBK
U0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzVBODZCMzBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uY3BwICov
OyB9OwogCQlCQzVBODZCNjBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4NkI0MEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oICovOyB9OworCQlCQzVDNzYyQTE0OTdGRTE0
MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVDNzYyODE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1F
dmVudC5jcHAgKi87IH07CisJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVD
NzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUNGQ0E5MTFGNzkzMzIwMDk5RUQw
OSAvKiBMb2NhbGl6YXRpb25TdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM1Q0ZDQTgxMUY3OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlv
blN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVFQjVEQTBFODFCN0VBMDBC
MjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQzVFQjVERDBFODFCOEREMDBCMjU5NjUgLyogT3V0bGluZVZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVFQjVE
QzBFODFCOEREMDBCMjU5NjUgLyogT3V0bGluZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMzkxLDYgKzEyMzkzLDggQEAKIAkJQkM1
QTg2ODMwQzMzNjc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTVNlbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNUE4NkIzMEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01TZWxlY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVBODZCNDBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01T
ZWxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NU2VsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUM3NjI4MTQ5N0ZFMTQwMEJD
NDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsYXRmb3JtRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDNUNGQ0E4MTFGNzkzMzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRpb25TdHJhdGVn
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGl6YXRpb25TdHJhdGVn
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVFQjVEQTBFODFCN0VBMDBCMjU5
NjUgLyogQm9yZGVyVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQm9y
ZGVyVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0JvcmRlclZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNUVCNURDMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT3V0bGluZVZhbHVlLmg7IHBhdGggPSBz
dHlsZS9PdXRsaW5lVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMjQ0
LDYgKzIwMjQ4LDggQEAKIAkJCQkxQUQ4RjgxQTExQ0FCOUU5MDBFOTNFNTQgLyogUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCAqLywKIAkJCQkxQUQ4RjgxOTExQ0FCOUU5MDBFOTNFNTQgLyogUGxhdGZv
cm1TdHJhdGVnaWVzLmggKi8sCiAJCQkJOTM1QzQ3NkEwOUFDNEQ0RjAwQTZBQUI0IC8qIFBsYXRm
b3JtV2hlZWxFdmVudC5oICovLAorCQkJCUJDNUM3NjI4MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0
Zm9ybUV2ZW50LmNwcCAqLywKKwkJCQlCQzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZv
cm1FdmVudC5oICovLAogCQkJCUJDQkI4QUI0MTNGMUFGQjAwMDczNERGMCAvKiBQT0RBcmVuYS5o
ICovLAogCQkJCUJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovLAog
CQkJCUJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLywKQEAg
LTI0ODU4LDYgKzI0ODY0LDcgQEAKIAkJCQlGMzVBRTVBQzE0OTI1RjVCMDA0RDU3NzYgLyogRE9N
V3JhcHBlclZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2QzE3QTNFMTQ5MUQyRDQwMEQx
MkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5
MzkxMDBGQjVCRDggLyogV2ViVGlsZUNhY2hlTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
NUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUVDRUI2ODE0OTk3OTBEMDBDREQzQTQgLyogRkVDb21wb3NpdGVB
cml0aG1ldGljTkVPTi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkExNDk5NzkwRDAwQ0RE
M0E0IC8qIEZFR2F1c3NpYW5CbHVyTkVPTi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc1MSw2ICsy
Nzc1OCw3IEBACiAJCQkJOEMxMDkxOTgxNDk0RkIxMjAwQjVEM0ZFIC8qIENTU0VsZW1lbnRTdHls
ZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdG
MTdBQyAvKiBLaWxsUmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBGQTQxNDk2
OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVDYWNoZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkM1Qzc2MkExNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlFQ0VCNjcxNDk5NzkwRDAwQ0REM0E0IC8qIEZFQ29tcG9zaXRlQXJpdGhtZXRp
Y05FT04uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNjkxNDk5NzkwRDAwQ0REM0E0IC8q
IEZFR2F1c3NpYW5CbHVyTkVPTi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVDRUI2QjE0OTk3
OTBEMDBDREQzQTQgLyogRkVMaWdodGluZ05FT04uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1OTAsNyArMjU5MCw3IEBAIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVNob3dDb250ZXh0TWVudQogICAgIC8vIFNpbXVsYXRlIGEgY2xpY2sgaW4gdGhlIG1p
ZGRsZSBvZiB0aGUgb2JqZWN0LgogICAgIExheW91dFBvaW50IGNsaWNrUG9pbnQgPSBtX29iamVj
dC0+Y2xpY2tQb2ludCgpOwogICAgIAotICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50
KGNsaWNrUG9pbnQsIGNsaWNrUG9pbnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwg
MSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRm
b3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KGNsaWNrUG9pbnQsIGNsaWNrUG9pbnQsIFJpZ2h0QnV0
dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmIChoYW5k
bGVkKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2hvd0NvbnRleHRNZW51KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4
ICszNCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlVcDoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpLZXlVcDoKICAgICAgICAgICAg
IHJldHVybiBldmVudE5hbWVzKCkua2V5dXBFdmVudDsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OlJhd0tleURvd246CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bjoKICAgICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50Owot
ICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjoKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpDaGFyOgogICAgICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5rZXlw
cmVzc0V2ZW50OwotICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjoK
KyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOgogICAgICAgICAgICAgLy8gVGhl
IGNhbGxlciBzaG91bGQgZGlzYW1iaWd1YXRlIHRoZSBjb21iaW5lZCBldmVudCBpbnRvIFJhd0tl
eURvd24gb3IgQ2hhciBldmVudHMuCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gZXZlbnROYW1lcygpLmtleWRvd25FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmll
dywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgaW50IGRldGFpbCwgUGFzc1JlZlB0
cjxOb2RlPiByZWxhdGVkVGFyZ2V0KQogewotICAgIEFTU0VSVChldmVudC5ldmVudFR5cGUoKSA9
PSBNb3VzZUV2ZW50TW92ZWQgfHwgZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0b24pOworICAgIEFT
U0VSVChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCB8fCBldmVudC5i
dXR0b24oKSAhPSBOb0J1dHRvbik7CiAKICAgICBib29sIGlzQ2FuY2VsYWJsZSA9IGV2ZW50VHlw
ZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZU1vdXNlRXZlCiAgICAgc2hpZnRLZXkg
PSBjdHJsS2V5ID0gYWx0S2V5ID0gbWV0YUtleSA9IGZhbHNlOwogICAgIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtl
eSwgbWV0YUtleSk7CiAgICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChkcmFnRGF0YS0+Y2xp
ZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEtPmdsb2JhbFBvc2l0aW9uKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIHNoaWZ0S2V5
LCBjdHJsS2V5LCBhbHRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0
dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0
S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YUtleSwgY3VycmVudFRpbWUo
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9u
IDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIzMywxOSArMjIzMywxOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
R2VzdHVyZUV2ZW50KGNvCiAgICAgLy8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAogICAgIHN3aXRj
aCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcERvd25UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd246CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsK
KyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA6IHsKICAgICAgICAgLy8gRklYTUU6
IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGltZXMgb25jZSBo
aXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3ZlLgotICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92
ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVF
dmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFL
ZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
VXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigp
LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFt
cCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZl
bnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtl
eSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwor
ICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9z
aXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQu
c2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgp
LCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9u
KCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlm
dEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdl
c3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CiAgICAgICAg
IG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NFdmVu
dChmYWtlTW91c2VEb3duKTsKICAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1v
dXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVNjcm9sbFVwZGF0ZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9
IChmbG9hdClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJl
cGxhY2UgdGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhh
cyBiZWVuIGFkZHJlc3NlZC4KICAgICAgICAgSW50UG9pbnQgcG9pbnQoZ2VzdHVyZUV2ZW50LnBv
c2l0aW9uKCkueCgpLCBnZXN0dXJlRXZlbnQucG9zaXRpb24oKS55KCkpOwpAQCAtMjI1NCw5ICsy
MjU0LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgICAg
ICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlw
ZToKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAg
Y2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKKyAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OiB7CiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICAgICAg
aWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2NCw2ICsyMjY0LDkg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgICAgICB2aWV3
LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAtMjM1Nyw5ICsyMzYwLDkgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50RgogICAgIC8vIFRoaXMgaXMgcmVx
dWlyZWQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogCiAjaWYgT1MoV0lORE9XUykKLSAgICBNb3Vz
ZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgUGxhdGZvcm1F
dmVudDo6VHlwZSBldmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogI2Vs
c2UKLSAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyAg
ICBQbGF0Zm9ybUV2ZW50OjpUeXBlIGV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJl
c3NlZDsKICNlbmRpZgogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9zaXRp
b24sIGdsb2JhbFBvc2l0aW9uLCBSaWdodEJ1dHRvbiwgZXZlbnRUeXBlLCAxLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpjdXJyZW50VGltZSgpKTsKQEAgLTI0MTcsNyArMjQyMCw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW0KICAgICBib29sIG1l
dGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0
ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKICAgICBJbnRQb2ludCBnbG9i
YWxQb2ludCA9IHZpZXctPmNvbnRlbnRzVG9TY3JlZW4oSW50UmVjdCh2aWV3LT53aW5kb3dUb0Nv
bnRlbnRzKG1fY3VycmVudE1vdXNlUG9zaXRpb24pLCBJbnRTaXplKCkpKS5sb2NhdGlvbigpOwot
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlRXZlbnQobV9jdXJyZW50TW91c2VQ
b3NpdGlvbiwgZ2xvYmFsUG9pbnQsIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIHNoaWZ0
S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRm
b3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlRXZlbnQobV9jdXJyZW50TW91c2VQb3NpdGlvbiwg
Z2xvYmFsUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlm
dEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKICAgICBtb3Vz
ZU1vdmVkKGZha2VNb3VzZU1vdmVFdmVudCk7CiB9CiAKQEAgLTI0NzEsOCArMjQ3NCw4IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVBY2Nlc3NLZXkoY29uc3QKICAgICAvLyBJRSBtYXRjaGVz
IGxvd2VyIGFuZCB1cHBlciBjYXNlIGFjY2VzcyBrZXlzIHJlZ2FyZGxlc3Mgb2YgU2hpZnQga2V5
IHN0YXRlIC0gYnV0IGlmIGJvdGggdXBwZXIgYW5kCiAgICAgLy8gbG93ZXIgY2FzZSB2YXJpYW50
cyBhcmUgcHJlc2VudCBpbiBhIGRvY3VtZW50LCB0aGUgY29ycmVjdCBlbGVtZW50IGlzIG1hdGNo
ZWQgYmFzZWQgb24gU2hpZnQga2V5IHN0YXRlLgogICAgIC8vIEZpcmVmb3ggb25seSBtYXRjaGVz
IGFuIGFjY2VzcyBrZXkgaWYgU2hpZnQgaXMgbm90IHByZXNzZWQsIGFuZCBkb2VzIHRoYXQgY2Fz
ZS1pbnNlbnNpdGl2ZWx5LgotICAgIEFTU0VSVCghKGFjY2Vzc0tleU1vZGlmaWVycygpICYgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpTaGlmdEtleSkpOwotICAgIGlmICgoZXZ0Lm1vZGlmaWVycygp
ICYgflBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1vZGlmaWVy
cygpKQorICAgIEFTU0VSVCghKGFjY2Vzc0tleU1vZGlmaWVycygpICYgUGxhdGZvcm1FdmVudDo6
U2hpZnRLZXkpKTsKKyAgICBpZiAoKGV2dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9ybUV2ZW50OjpT
aGlmdEtleSkgIT0gYWNjZXNzS2V5TW9kaWZpZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBTdHJpbmcga2V5ID0gZXZ0LnVubW9kaWZpZWRUZXh0KCk7CiAgICAgRWxlbWVudCogZWxl
bSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUFjY2Vzc0tleShrZXkubG93ZXIo
KSk7CkBAIC0yNTIwLDcgKzI1MjMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29u
c3QgUGxhdGZvCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAg
ICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblBy
b2dyZXNzKSB7CiAgICAgICAgICAgICAvLyBJZiBhIGtleSBpcyBwcmVzc2VkIHdoaWxlIHRoZSBw
YW5TY3JvbGwgaXMgaW4gcHJvZ3Jlc3MgdGhlbiB3ZSB3YW50IHRvIHN0b3AKLSAgICAgICAgICAg
IGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5
RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
UmF3S2V5RG93bikgCisgICAgICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6UmF3S2V5RG93bikgCiAgICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1l
cigpOwogCiAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGluIHBhbnNjcm9sbCBtb2RlLCB3ZSBz
d2FsbG93IHRoZSBrZXkgZXZlbnQKQEAgLTI1NTAsMjUgKzI1NTMsMjUgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIC8vIE9uIFdpbmRvd3MsIFdlYktpdCBl
eHBsaWNpdGx5IGNhbGxzIGhhbmRsZUFjY2Vzc0tleSgpIGluc3RlYWQgb2YgZGlzcGF0Y2hpbmcg
YSBrZXlwcmVzcyBldmVudCBmb3IgV01fU1lTQ0hBUiBtZXNzYWdlcy4KICAgICAvLyBPdGhlciBw
bGF0Zm9ybXMgY3VycmVudGx5IG1hdGNoIGVpdGhlciBNYWMgb3IgV2luZG93cyBiZWhhdmlvciwg
ZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSBzZW5kIGNvbWJpbmVkIEtleURvd24gZXZlbnRzLgog
ICAgIGJvb2wgbWF0Y2hlZEFuQWNjZXNzS2V5ID0gZmFsc2U7Ci0gICAgaWYgKGluaXRpYWxLZXlF
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIGlmIChp
bml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pCiAgICAgICAg
IG1hdGNoZWRBbkFjY2Vzc0tleSA9IGhhbmRsZUFjY2Vzc0tleShpbml0aWFsS2V5RXZlbnQpOwog
CiAgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIGZhaXIgdG8gbGV0IGFuIGlucHV0IG1ldGhvZCBo
YW5kbGUgS2V5VXAgZXZlbnRzIGJlZm9yZSBET00gZGlzcGF0Y2guCi0gICAgaWYgKGluaXRpYWxL
ZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCB8fCBpbml0aWFs
S2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikKKyAgICBpZiAo
aW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCB8fCBpbml0aWFs
S2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgIHJldHVybiAh
bm9kZS0+ZGlzcGF0Y2hLZXlFdmVudChpbml0aWFsS2V5RXZlbnQpOwogCiAgICAgYm9vbCBiYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlID0gbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25R
dWlya3MoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50IGtleURvd25FdmVudCA9IGluaXRpYWxLZXlFdmVudDsgICAgCi0gICAgaWYgKGtleURvd25F
dmVudC50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKQotICAgICAg
ICBrZXlEb3duRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7CisgICAgaWYgKGtl
eURvd25FdmVudC50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAg
a2V5RG93bkV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBSZWZQdHI8S2V5Ym9hcmRF
dmVudD4ga2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsIG1fZnJh
bWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIGlmIChtYXRjaGVkQW5BY2Nlc3NL
ZXkpCiAgICAgICAgIGtleWRvd24tPnNldERlZmF1bHRQcmV2ZW50ZWQodHJ1ZSk7CiAgICAga2V5
ZG93bi0+c2V0VGFyZ2V0KG5vZGUpOwogCi0gICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGluaXRpYWxL
ZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICBu
b2RlLT5kaXNwYXRjaEV2ZW50KGtleWRvd24sIGVjKTsKICAgICAgICAgLy8gSWYgZnJhbWUgY2hh
bmdlZCBhcyBhIHJlc3VsdCBvZiBrZXlkb3duIGRpc3BhdGNoLCB0aGVuIHJldHVybiB0cnVlIHRv
IGF2b2lkIHNlbmRpbmcgYSBzdWJzZXF1ZW50IGtleXByZXNzIG1lc3NhZ2UgdG8gdGhlIG5ldyBm
cmFtZS4KICAgICAgICAgYm9vbCBjaGFuZ2VkRm9jdXNlZEZyYW1lID0gbV9mcmFtZS0+cGFnZSgp
ICYmIG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CkBAIC0yNjA3LDcgKzI2MTAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgfQogCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
IGtleVByZXNzRXZlbnQgPSBpbml0aWFsS2V5RXZlbnQ7Ci0gICAga2V5UHJlc3NFdmVudC5kaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyLCBiYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlKTsKKyAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURv
d25FdmVudChQbGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsK
ICAgICBpZiAoa2V5UHJlc3NFdmVudC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
a2V5ZG93blJlc3VsdDsKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5cHJlc3MgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUoa2V5UHJlc3NFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVm
YXVsdFZpZXcoKSk7CkBAIC0yNzg2LDcgKzI3ODksNyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25l
Qml0U2V0KERyYWdTb3VyY2VBCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlmIChldmVudC5l
dmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuZXZlbnQoKS5ldmVudFR5cGUo
KSAhPSBNb3VzZUV2ZW50TW92ZWQpIHsKKyAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAh
PSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkudHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQpIHsKICAgICAgICAgLy8gSWYgd2UgYWxsb3dlZCB0aGUgb3RoZXIgc2lkZSBvZiB0
aGUgYnJpZGdlIHRvIGhhbmRsZSBhIGRyYWcKICAgICAgICAgLy8gbGFzdCB0aW1lLCB0aGVuIG1f
bW91c2VQcmVzc2VkIG1pZ2h0IHN0aWxsIGJlIHNldC4gU28gd2UKICAgICAgICAgLy8gY2xlYXIg
aXQgbm93IHRvIG1ha2Ugc3VyZSB0aGUgbmV4dCBtb3ZlIGFmdGVyIGEgZHJhZwpAQCAtMjgyMiw3
ICsyODI1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91cwogICAg
IC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0aGUgc2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdh
aXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFuZCBtb3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3
ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVmZiBhbmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3Vy
CiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmIG1fZHJhZ01heVN0YXJ0U2VsZWN0
aW9uSW5zdGVhZCAmJiAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIERyYWdTb3VyY2VBY3Rpb25T
ZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVz
dGFtcCA8IFRleHREcmFnRGVsYXkpIHsKLSAgICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50KCkuZXZl
bnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkKTsKKyAgICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50
KCkudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpOwogICAgICAgICBpZiAoKGRy
YWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CiAgICAgICAg
ICAgICAvLyAuLi4gdW5sZXNzIHRoZSBtb3VzZSBpcyBvdmVyIGFuIGltYWdlLCB0aGVuIHdlIHN0
YXJ0IGRyYWdnaW5nIGp1c3QgdGhlIGltYWdlCiAgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2Ry
YWdUeXBlID0gRHJhZ1NvdXJjZUFjdGlvbkltYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAko
cmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ibGFja2JlcnJ5L0V2ZW50
SGFuZGxlckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRI
YW5kbGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsOSArMTQ4LDkgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdgogdW5zaWduZWQgRXZlbnRIYW5k
bGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewogI2lmIE9TKERBUldJTikKLSAgICByZXR1cm4g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpB
bHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUV2ZW50
OjpBbHRLZXk7CiAjZWxzZQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtl
eTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2VuZGlmCiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
TW91c2VSZWxlYXNlRXZlbnQKIAogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAg
ICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VF
dmVudAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAKIC8vIEdUSysgbXVzdCBzY3JvbGwgaG9yaXpvbnRhbGx5
IGlmIHRoZSBtb3VzZSBwb2ludGVyIGlzIG9uIHRvcCBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzE5LDkgKzcxOSw5IEBAIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZp
ZXIKICAgICAvLyBTbywgd2UgdXNlIENvbnRyb2wgaW4gdGhpcyBjYXNlLCBldmVuIHRob3VnaCBp
dCBjb25mbGljdHMgd2l0aCBFbWFjcy1zdHlsZSBrZXkgYmluZGluZ3MuCiAgICAgLy8gU2VlIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDc+IGZvciBtb3JlIGRl
dGFpbC4KICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlcklu
dGVyZmFjZUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q3RybEtleTsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CiAKLSAgICBy
ZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkgfCBQbGF0Zm9y
bUV2ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZl
bnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZl
bnRIYW5kbGVyUXQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDkgKzEyNCw5IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIHVuc2lnbmVkIEV2ZW50
SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0
dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1F
dmVudDo6QWx0S2V5OwogI2Vsc2UKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpB
bHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbmRpZgogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAJKHJldmlz
aW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
cGFzc1dpZGdldE1vdXNlRG93bkV2CiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5
TW9kaWZpZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7
CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjEsNyArMTIxLDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6
Y3JlYQogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1FdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtRXZlbnRfaAor
I2RlZmluZSBQbGF0Zm9ybUV2ZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQ
bGF0Zm9ybUV2ZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICAvLyBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQKKyAgICAgICAgS2V5RG93biwKKyAgICAgICAgS2V5VXAsCisgICAg
ICAgIFJhd0tleURvd24sCisgICAgICAgIENoYXIsCisKKyAgICAgICAgLy8gUGxhdGZvcm1Nb3Vz
ZUV2ZW50CisgICAgICAgIE1vdXNlTW92ZWQsCisgICAgICAgIE1vdXNlUHJlc3NlZCwKKyAgICAg
ICAgTW91c2VSZWxlYXNlZCwKKyAgICAgICAgTW91c2VTY3JvbGwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgV2hlZWwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xsQmVnaW4sCisg
ICAgICAgIEdlc3R1cmVTY3JvbGxFbmQsCisgICAgICAgIEdlc3R1cmVTY3JvbGxVcGRhdGUsCisg
ICAgICAgIEdlc3R1cmVUYXAsCisgICAgICAgIEdlc3R1cmVUYXBEb3duLAorICAgICAgICBHZXN0
dXJlRG91YmxlVGFwLAorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CisKKworICAgIC8vIEV2ZW50IE1vZGlmaWVycwor
CisgICAgZW51bSBNb2RpZmllcktleSB7CisgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKKyAgICAg
ICAgQ3RybEtleSA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKKyAgICAgICAg
U2hpZnRLZXkgPSAxIDw8IDMKKyAgICB9OworCisgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9
CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9CisKKyAgICB1
bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChhbHRLZXko
KSA/IEFsdEtleSA6IDApCisgICAgICAgICAgICB8IChjdHJsS2V5KCkgPyBDdHJsS2V5IDogMCkK
KyAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1ldGFLZXkgOiAwKQorICAgICAgICAgICAgfCAo
c2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUGxh
dGZvcm1FdmVudChUeXBlIHR5cGUpCisgICAgICAgIDogbV9zaGlmdEtleShmYWxzZSkKKyAgICAg
ICAgLCBtX2N0cmxLZXkoZmFsc2UpCisgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCisgICAgICAg
ICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9
CisKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwgbV9hbHRLZXko
YWx0S2V5KQorICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgICAgICAsIG1fdHlwZSh0
eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fc2hpZnRLZXk7CisgICAgYm9vbCBtX2N0
cmxLZXk7CisgICAgYm9vbCBtX2FsdEtleTsKKyAgICBib29sIG1fbWV0YUtleTsKKyAgICB1bnNp
Z25lZCBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQ
bGF0Zm9ybUV2ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNDIgKzI5
LDMwIEBACiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogCiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQgeworY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQg
OiBwdWJsaWMgUGxhdGZvcm1FdmVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBUeXBlIHsKLSAgICAg
ICAgU2Nyb2xsQmVnaW5UeXBlLAotICAgICAgICBTY3JvbGxFbmRUeXBlLAotICAgICAgICBTY3Jv
bGxVcGRhdGVUeXBlLAotICAgICAgICBUYXBUeXBlLAotICAgICAgICBUYXBEb3duVHlwZSwKLSAg
ICAgICAgRG91YmxlVGFwVHlwZSwKLSAgICB9OwotCiAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQo
KQotICAgICAgICA6IG1fdHlwZShTY3JvbGxCZWdpblR5cGUpCisgICAgICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAgICwgbV90aW1l
c3RhbXAoMCkKKyAgICAgICAgLCBtX2RlbHRhWCgwKQorICAgICAgICAsIG1fZGVsdGFZKDApCiAg
ICAgewogICAgIH0KIAotICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5cGUgdHlwZSwgY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0
IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRlbHRhWCwgY29uc3QgZmxvYXQgZGVsdGFZ
LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkp
Ci0gICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlwZSB0
eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgZG91YmxlIHRpbWVzdGFtcCwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGJvb2wg
c2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAg
ICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFL
ZXkpCiAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgLCBtX2dsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
ICAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCiAgICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQot
ICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5KGN0cmxL
ZXkpCi0gICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtleShtZXRh
S2V5KQogICAgIHsKICAgICB9CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KLQogICAgIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsg
fSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCiAKQEAgLTcyLDIyICs2MCwxMyBAQCBwdWJsaWM6CiAK
ICAgICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQogICAgIGZsb2F0
IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9Ci0gICAgYm9vbCBzaGlmdEtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7
IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx0S2V5OyB9Ci0gICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9
Ci0KKyAgICAKIHByb3RlY3RlZDoKLSAgICBUeXBlIG1fdHlwZTsKICAgICBJbnRQb2ludCBtX3Bv
c2l0aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgZG91YmxlIG1fdGlt
ZXN0YW1wOwogICAgIGZsb2F0IG1fZGVsdGFYOwogICAgIGZsb2F0IG1fZGVsdGFZOwotICAgIGJv
b2wgbV9zaGlmdEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAgICBib29sIG1fYWx0S2V5Owot
ICAgIGJvb2wgbV9tZXRhS2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgJKHJl
dmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw4IEBACiAjaWZuZGVmIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudF9oCiAjZGVmaW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVudF9oCiAKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC02NSw0MCArNjYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X0V2YXNfRXZlbnRfS2V5X1VwIEV2YXNfRQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBj
bGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1F
dmVudCB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgewotICAgICAgICAgICAgLy8g
S2V5RG93biBpcyBzZW50IGJ5IHBsYXRmb3JtcyBzdWNoIGFzIE1hYyBPUyBYLCBndGsgYW5kIFF0
LCBhbmQgaGFzIGluZm9ybWF0aW9uIGFib3V0IGJvdGggcGh5c2ljYWwgcHJlc3NlZCBrZXksIGFu
ZCBpdHMgdHJhbnNsYXRpb24uCi0gICAgICAgICAgICAvLyBGb3IgRE9NIHByb2Nlc3NpbmcsIGl0
IG5lZWRzIHRvIGJlIGRpc2FtYmlndWF0ZWQgYXMgUmF3S2V5RG93biBvciBDaGFyIGV2ZW50Lgot
ICAgICAgICAgICAgS2V5RG93biwKLQotICAgICAgICAgICAgLy8gS2V5VXAgaXMgc2VudCBieSBh
bGwgcGxhdGZvcm1zLgotICAgICAgICAgICAgS2V5VXAsCi0KLSAgICAgICAgICAgIC8vIFRoZXNl
IGV2ZW50cyBhcmUgc2VudCBieSBwbGF0Zm9ybXMgc3VjaCBhcyBXaW5kb3dzIGFuZCB3eFdpZGdl
dHMuIFJhd0tleURvd24gb25seSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwaHlzaWNhbCBrZXks
IGFuZCBDaGFyCi0gICAgICAgICAgICAvLyBvbmx5IGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIGNo
YXJhY3RlciBpdCB3YXMgdHJhbnNsYXRlZCBpbnRvLgotICAgICAgICAgICAgUmF3S2V5RG93biwK
LSAgICAgICAgICAgIENoYXIKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIE1vZGlmaWVyS2V5
IHsKLSAgICAgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKLSAgICAgICAgICAgIEN0cmxLZXkgPSAx
IDw8IDEsCi0gICAgICAgICAgICBNZXRhS2V5ID0gMSA8PCAyLAotICAgICAgICAgICAgU2hpZnRL
ZXkgPSAxIDw8IDMKLSAgICAgICAgfTsKLQogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
KQotICAgICAgICAgICAgOiBtX3R5cGUoS2V5RG93bikKKyAgICAgICAgICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQogICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQo
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAgICAgICAg
ICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoMCkKICAgICAgICAgICAgICwgbV9pc0tleXBh
ZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAgICAgICwg
bV9jdHJsS2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9tZXRhS2V5KGZhbHNlKQogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oQ0hS
T01JVU0pCiAgICAgICAgICAgICAsIG1faXNTeXN0ZW1LZXkoZmFsc2UpCiAjZW5kaWYKQEAgLTEx
MCw4ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorCiAgICAgICAgIHZvaWQgZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUsIGJvb2wg
YmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlKTsgLy8gT25seSB1c2VkIG9uIHBsYXRm
b3JtcyB0aGF0IG5lZWQgaXQsIGkuZS4gdGhvc2UgdGhhdCBnZW5lcmF0ZSBLZXlEb3duIGV2ZW50
cy4KIAogICAgICAgICAvLyBUZXh0IGFzIGFzIGdlbmVyYXRlZCBieSBwcm9jZXNzaW5nIGEgdmly
dHVhbCBrZXkgY29kZSB3aXRoIGEga2V5Ym9hcmQgbGF5b3V0CkBAIC0xMzksMTYgKzExMyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQoKSBjb25zdCB7
IHJldHVybiBtX2F1dG9SZXBlYXQ7IH0KICAgICAgICAgdm9pZCBzZXRJc0F1dG9SZXBlYXQoYm9v
bCBpbikgeyBtX2F1dG9SZXBlYXQgPSBpbjsgfQogICAgICAgICBib29sIGlzS2V5cGFkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0tleXBhZDsgfQotICAgICAgICBib29sIHNoaWZ0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgICAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJl
dHVybiBtX2N0cmxLZXk7IH0KLSAgICAgICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBt
X2FsdEtleTsgfQotICAgICAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFL
ZXk7IH0KLSAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QgewotICAgICAgICAgICAg
cmV0dXJuIChhbHRLZXkoKSA/IEFsdEtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAoY3RybEtl
eSgpID8gQ3RybEtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAobWV0YUtleSgpID8gTWV0YUtl
eSA6IDApCi0gICAgICAgICAgICAgICAgfCAoc2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7Ci0g
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgYm9vbCBjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShib29sJiBzaGlmdEtl
eSwgYm9vbCYgY3RybEtleSwgYm9vbCYgYWx0S2V5LCBib29sJiBtZXRhS2V5KTsKQEAgLTE5Myw3
ICsxNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIFN0cmluZyBtX3RleHQ7CiAgICAgICAgIFN0
cmluZyBtX3VubW9kaWZpZWRUZXh0OwogICAgICAgICBTdHJpbmcgbV9rZXlJZGVudGlmaWVyOwpA
QCAtMjAxLDEwICsxNjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBtX3dp
bmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmlydHVhbEtleUNvZGU7
CiAgICAgICAgIGJvb2wgbV9pc0tleXBhZDsKLSAgICAgICAgYm9vbCBtX3NoaWZ0S2V5OwotICAg
ICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAgYm9vbCBtX2FsdEtleTsKLSAgICAgICAgYm9v
bCBtX21ldGFLZXk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFJldGFpblB0cjxOU0V2
ZW50PiBtX21hY0V2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1Nb3VzZUV2ZW50LmgJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIFBsYXRmb3JtTW91c2VFdmVudF9oCiAKICNpbmNsdWRlICJJbnRQb2ludC5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYg
c3RydWN0IF9HZGtFdmVudEJ1dHRvbiBHZGtFdmVudEJ1dHRvbjsKQEAgLTYxLDE4ICs2MiwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgLy8gVGhlc2UgYnV0dG9uIG51bWJlcnMg
bWF0Y2ggdGhlIG9uZXMgdXNlZCBpbiB0aGUgRE9NIEFQSSwgMCB0aHJvdWdoIDIsIGV4Y2VwdCBm
b3IgTm9CdXR0b24gd2hpY2ggaXNuJ3Qgc3BlY2lmaWVkLgogICAgIGVudW0gTW91c2VCdXR0b24g
eyBOb0J1dHRvbiA9IC0xLCBMZWZ0QnV0dG9uLCBNaWRkbGVCdXR0b24sIFJpZ2h0QnV0dG9uIH07
Ci0gICAgZW51bSBNb3VzZUV2ZW50VHlwZSB7IE1vdXNlRXZlbnRNb3ZlZCwgTW91c2VFdmVudFBy
ZXNzZWQsIE1vdXNlRXZlbnRSZWxlYXNlZCwgTW91c2VFdmVudFNjcm9sbCB9OwogICAgIAotICAg
IGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudCB7CisgICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50
IDogcHVibGljIFBsYXRmb3JtRXZlbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50KCkKLSAgICAgICAgICAgIDogbV9idXR0b24oTm9CdXR0b24pCi0gICAgICAgICAg
ICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRNb3ZlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKQorICAgICAgICAgICAgLCBtX2J1dHRvbihO
b0J1dHRvbikKICAgICAgICAgICAgICwgbV9jbGlja0NvdW50KDApCi0gICAgICAgICAgICAsIG1f
c2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKICAg
ICAgICAgICAgICwgbV90aW1lc3RhbXAoMCkKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdz
KDApCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtODMsMTcgKzc5LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBNb3VzZUJ1dHRvbiBidXR0b24sIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0LCBib29sIGN0cmws
IGJvb2wgYWx0LCBib29sIG1ldGEsIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgICAgICAgICA6IG1f
cG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChjb25zdCBJbnRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgTW91c2VCdXR0
b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wKQorICAgICAgICAgICAgOiBQ
bGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpCisg
ICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fYnV0dG9uKGJ1dHRvbikK
LSAgICAgICAgICAgICwgbV9ldmVudFR5cGUoZXZlbnRUeXBlKQogICAgICAgICAgICAgLCBtX2Ns
aWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdCkKLSAg
ICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmwpCi0gICAgICAgICAgICAsIG1fYWx0S2V5KGFsdCkK
LSAgICAgICAgICAgICwgbV9tZXRhS2V5KG1ldGEpCiAgICAgICAgICAgICAsIG1fdGltZXN0YW1w
KHRpbWVzdGFtcCkKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMTAyLDYgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgLCBtX2RpZEFjdGl2YXRlV2ViVmlldyhmYWxzZSkKICNlbmRpZgogICAgICAgICB7CisgICAg
ICAgICAgICAvL0FTU0VSVChpc1BsYXRmb3JtTW91c2VFdmVudFR5cGUodHlwZSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KQEAgLTExNCw3ICsxMDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGludCBtb3ZlbWVudFkoKSBjb25zdCB7IHJldHVybiBtX21vdmVtZW50RGVsdGEueSgpOyB9CiAj
ZW5kaWYKICAgICAgICAgTW91c2VCdXR0b24gYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0
b247IH0KLSAgICAgICAgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9ldmVudFR5cGU7IH0KICAgICAgICAgaW50IGNsaWNrQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWNrQ291bnQ7IH0KICAgICAgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hpZnRLZXk7IH0KICAgICAgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJs
S2V5OyB9CkBAIC0xNDIsNyArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIGRlZmlu
ZWQoX19PQkpDX18pCiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICosIE5TVmll
dyAqd2luZG93Vmlldyk7CiAjZW5kaWYKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4
LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIE1v
dXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4
LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIFBs
YXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBj
bGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpOwogICAgICAgICBpbnQgZXZl
bnROdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50TnVtYmVyOyB9CkBAIC0xNzAsMTIgKzE2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSW50UG9pbnQgbV9tb3ZlbWVudERl
bHRhOwogI2VuZGlmCiAgICAgICAgIE1vdXNlQnV0dG9uIG1fYnV0dG9uOwotICAgICAgICBNb3Vz
ZUV2ZW50VHlwZSBtX2V2ZW50VHlwZTsKICAgICAgICAgaW50IG1fY2xpY2tDb3VudDsKLSAgICAg
ICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAgYm9v
bCBtX2FsdEtleTsKLSAgICAgICAgYm9vbCBtX21ldGFLZXk7CiAgICAgICAgIGRvdWJsZSBtX3Rp
bWVzdGFtcDsgLy8gdW5pdDogc2Vjb25kcwogICAgICAgICB1bnNpZ25lZCBtX21vZGlmaWVyRmxh
Z3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQ
bGF0Zm9ybVdoZWVsRXZlbnRfaAogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUV2ZW50LmgiCiAKICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHN0cnVjdCBfR2Rr
RXZlbnRTY3JvbGwgR2RrRXZlbnRTY3JvbGw7CkBAIC04NCwxOCArODUsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVu
dCB7CisgICAgY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50IDogcHVibGljIFBsYXRmb3JtRXZlbnQg
ewogICAgIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KCkKLSAgICAgICAgICAg
IDogbV9kZWx0YVgoMCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpXaGVlbCkKKyAgICAgICAgICAgICwgbV9kZWx0YVgoMCkKICAgICAgICAgICAgICwgbV9kZWx0
YVkoMCkKICAgICAgICAgICAgICwgbV93aGVlbFRpY2tzWCgwKQogICAgICAgICAgICAgLCBtX3do
ZWVsVGlja3NZKDApCiAgICAgICAgICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdo
ZWVsRXZlbnQpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAgICAs
IG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAg
ICAgICAsIG1fbWV0YUtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9kaXJlY3Rpb25JbnZlcnRl
ZEZyb21EZXZpY2UoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01J
VU0pICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcyhmYWxzZSkKQEAgLTEwNywxNyArMTA1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfQogCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChJbnRQb2ludCBwb3NpdGlvbiwg
SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9h
dCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0
S2V5LCBib29sIG1ldGFLZXkpCi0gICAgICAgICAgICA6IG1fcG9zaXRpb24ocG9zaXRpb24pCisg
ICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIHNoaWZ0S2V5
LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpCisgICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9z
aXRpb24pCiAgICAgICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAg
ICAgICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgICAgICwgbV9kZWx0YVkoZGVs
dGFZKQogICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKHdoZWVsVGlja3NYKQogICAgICAgICAg
ICAgLCBtX3doZWVsVGlja3NZKHdoZWVsVGlja3NZKQogICAgICAgICAgICAgLCBtX2dyYW51bGFy
aXR5KGdyYW51bGFyaXR5KQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQotICAg
ICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKLSAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0
S2V5KQotICAgICAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKICAgICAgICAgICAgICwgbV9k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAsIG1faGFzUHJl
Y2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKQEAgLTEzOSwxMSArMTM0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ncmFudWxhcml0eTsgfQogCi0gICAgICAgIGJvb2wg
c2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgICAgIGJvb2wgY3Ry
bEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgICAgICBib29sIGFsdEtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9Ci0gICAgICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWV0YUtleTsgfQotCiAgICAgICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbi54KCk7IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgICAg
IGludCB5KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi55KCk7IH0KICAgICAgICAgaW50IGds
b2JhbFgoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uLngoKTsgfSAvLyBTY3JlZW4g
Y29vcmRpbmF0ZXMuCkBAIC0yMDgsMTAgKzE5OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgbV93aGVlbFRpY2tzWDsKICAgICAgICAgZmxvYXQgbV93aGVlbFRpY2tzWTsK
ICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFudWxhcml0eTsKLSAg
ICAgICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAg
Ym9vbCBtX2FsdEtleTsKLSAgICAgICAgYm9vbCBtX21ldGFLZXk7CiAgICAgICAgIGJvb2wgbV9k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2U7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZP
Uk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgIGJvb2wgbV9oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNyArNDcz
LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0VwogI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCiB7Ci0gICAgQVNTRVJUKHBnZS50eXBlKCkgPT0gUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpOworICAgIEFTU0VSVChwZ2UudHlwZSgp
ID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXApOwogICAgIC8vIEZJWE1FOiBtb2Rp
ZnkgdGhpcyBzbyB3ZSBjYW4gc3RhcnQgZXZlbiBpZiB0aGUgdGltZXIgaXMgYWN0aXZlLgogICAg
IGlmICghbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fY3VycmVudFpv
b21TY2FsZSA9IDE7CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
Onpvb20oY29uc3QgUGxhdAogICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWCA9ICgx
IC0gc2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueCgpOwogICAgICAgICBtX3pvb21EYXRh
Lm1fZGVzaXJlZFRyYW5zWSA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueSgp
OwogI2lmIEVOQUJMRShET1VCTEVfVEFQX0NFTlRFUlMpCi0gICAgICAgIGlmIChwZ2UudHlwZSgp
ID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKSB7CisgICAgICAgIGlmIChw
Z2UudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXApIHsKICAgICAgICAg
ICAgIC8vIFpvb20gdG8gY2VudHJlIG9mIGRpc3BsYXkuIFBpbmNoLXRvLXpvb20gbWF5IG5vdCB3
YW50IHRoaXMgYmVoYXZpb3VyLgogICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFu
c1ggKz0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkgLyAyIC0gcGdlLmdsb2JhbFBv
c2l0aW9uKCkueCgpOwogICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1kgKz0g
bV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpIC8gMiAtIHBnZS5nbG9iYWxQb3NpdGlv
bigpLnkoKTsKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6aGFu
ZGxlR2VzdHVyZUV2CiB7CiAgICAgVFJBQ0VfRVZFTlQoIlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFu
ZGxlR2VzdHVyZUV2ZW50IiwgdGhpcywgMCk7CiAgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7Ci0g
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgICAgIHpvb20ocGdlKTsKICAgICAg
ICAgYnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxh
dGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5
LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDI1ICs0MjcsMjEgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlR5cAogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OktleWJvYXJkRXZlbnQ6OktleURvd246Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleURvd247CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
OwogICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleVVwOgot
ICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtRXZlbnQ6OktleVVwOwogICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OktleWJvYXJkRXZlbnQ6OktleUNoYXI6CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
OkNoYXI7CiAgICAgfQogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCBldmVudCkKLSAgICA6
IG1fdHlwZSh0b1dlYkNvcmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSkp
CisgICAgOiBQbGF0Zm9ybUV2ZW50KHRvV2ViQ29yZVBsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUo
ZXZlbnQudHlwZSgpKSwgZXZlbnQuc2hpZnRBY3RpdmUoKSB8fCAoZXZlbnQuY2hhcmFjdGVyKCkg
PT0gS0VZQ09ERV9CQUNLX1RBQiksIGV2ZW50LmN0cmxBY3RpdmUoKSwgZXZlbnQuYWx0QWN0aXZl
KCksIGZhbHNlKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JCbGFja0Jl
cnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKSkKICAgICAsIG1fYXV0b1JlcGVhdChmYWxz
ZSkKICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yQmxhY2tC
ZXJyeUNoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkpCiAgICAgLCBtX2lzS2V5cGFkKGZhbHNl
KQotICAgICwgbV9zaGlmdEtleShldmVudC5zaGlmdEFjdGl2ZSgpIHx8IChldmVudC5jaGFyYWN0
ZXIoKSA9PSBLRVlDT0RFX0JBQ0tfVEFCKSkgLy8gQmFja1RhYiBzaG91bGQgYmUgdHJlYXRlZCBh
cyBTaGlmdCArIFRhYi4KLSAgICAsIG1fY3RybEtleShldmVudC5jdHJsQWN0aXZlKCkpCi0gICAg
LCBtX2FsdEtleShldmVudC5hbHRBY3RpdmUoKSkKLSAgICAsIG1fbWV0YUtleShmYWxzZSkKICAg
ICAsIG1fdW5tb2RpZmllZENoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkKIHsKICAgICB1bnNp
Z25lZCBzaG9ydCBjaGFyYWN0ZXIgPSBhZGp1c3RDaGFyYWN0ZXJGcm9tT1MoZXZlbnQuY2hhcmFj
dGVyKCkpOwpAQCAtNDYxLDE2ICs0NTcsMTYgQEAgYm9vbCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmN1cnJlbnRDYXBzTAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQordm9pZCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpU
eXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKIHsKICAgICAvLyBDYW4g
b25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3
ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBBU1NFUlQobV90
eXBlID09IEtleURvd24pOworICAgIEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6S2V5
RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAogICAgIGlmIChiYWNrd2FyZENvbXBhdGliaWxp
dHlNb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBSYXdLZXlEb3duKSB7
CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICBt
X3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOwog
ICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0
dXJlUmVjb2duaXplckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxNyArMTI1LDE3IEBAIGJv
b2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNPdmVyTWkKIAogdm9pZCBHZXN0dXJlUmVj
b2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVy
ZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFw
RG93blR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlv
biwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2Fs
dEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVF
dmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93biwgbV9maXJzdFRvdWNoUG9zaXRpb24s
IG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBt
X3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAogdm9pZCBH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRDbGlja0dlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQogewotICAg
IGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlRhcFR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3Np
dGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBt
X2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1
cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwg
bV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1f
c2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7
Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3Vj
aFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXAsIG1fZmly
c3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hU
aW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CiB9CiAKIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKQEAgLTE1OSwx
MiArMTU5LDEyIEBAIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyAKIAog
dm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4o
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
IHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQu
c2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3Ry
bEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZv
cm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luLCB0b3VjaFBv
aW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwg
MC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAog
dm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMsIGZs
b2F0IHhWZWxvY2l0eSwgZmxvYXQgeVZlbG9jaXR5KQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQo
UGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUs
IHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGlt
ZSwgeFZlbG9jaXR5LCB5VmVsb2NpdHksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXks
IG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQo
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQ
b2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCB4VmVsb2NpdHksIHlWZWxvY2l0eSwg
bV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQpAQCAt
MTcyLDcgKzE3Miw3IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2MK
ICAgICBmbG9hdCBkZWx0YVgodG91Y2hQb2ludC5wb3MoKS54KCkgLSBtX2ZpcnN0VG91Y2hQb3Np
dGlvbi54KCkpOwogICAgIGZsb2F0IGRlbHRhWSh0b3VjaFBvaW50LnBvcygpLnkoKSAtIG1fZmly
c3RUb3VjaFBvc2l0aW9uLnkoKSk7CiAKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlLCB0b3VjaFBv
aW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRh
WCwgZGVsdGFZLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsK
KyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxVcGRhdGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVu
UG9zKCksIG1fbGFzdFRvdWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3Ry
bEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0g
dG91Y2hQb2ludC5wb3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9t
aXVtLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw4ICs0OCw4IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdl
IHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZv
cm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlE
b3duKTsKLSAgICBBU1NFUlQodHlwZSA9PSBSYXdLZXlEb3duIHx8IHR5cGUgPT0gQ2hhcik7Cisg
ICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsKKyAgICBBU1NFUlQo
dHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duIHx8IHR5cGUgPT0gUGxhdGZvcm1FdmVu
dDo6Q2hhcik7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBpZiAoYmFja3dhcmRDb21wYXRpYmls
aXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMTAyOTY4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTcsMjUgKzI5NywyNSBAQCBib29sIFBvcHVwQ29udGFpbmVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvCiBib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBzd2l0
Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpUYXBUeXBlOiB7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9C
dXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQu
c2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgp
LCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRp
b24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZl
bnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBn
ZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVu
dC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2
ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0
cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBn
ZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVRhcDogeworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVF
dmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0
S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7
CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1cmVFdmVudC5w
b3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxh
dGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVu
dC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5
KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Cisg
ICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRp
b24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNo
aWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwg
Z2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKICAgICAg
ICAgLy8gaGFuZGxlTW91c2VNb3ZlRXZlbnQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRs
ZU1vdXNlRG93bkV2ZW50KGZha2VNb3VzZURvd24pOwogICAgICAgICBoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChmYWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgorICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTogewogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQg
c3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50
Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRl
bHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5kZWx0
YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGdlc3R1cmVFdmVudC5zaGlm
dEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdl
c3R1cmVFdmVudC5tZXRhS2V5KCkpOwogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRp
Y1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
VGFwRG93blR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46
CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd246CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cExpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTGlzdEJveC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
OSwxMiArMTk5LDEyIEBAIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50KGNvbnN0IFAK
ICAgICAvLyBXZSB1c2UgUmF3S2V5RG93bi9DaGFyL0tleVVwIGV2ZW50IHNjaGVtZSBvbiBhbGwg
cGxhdGZvcm1zLAogICAgIC8vIHNvIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciAobm90IFJh
d0tleURvd24pIHR5cGUgZXZlbnQKICAgICAvLyBpcyBjb25zaWRlcmVkIGFzIGNoYXJhY3RlciB0
eXBlIGV2ZW50LgotICAgIHJldHVybiBldmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpDaGFyOworICAgIHJldHVybiBldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hh
cjsKIH0KIAogYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OktleVVwKQorICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1F
dmVudDo6S2V5VXApCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFudW1JdGVtcygp
ICYmIGV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpICE9IFZLRVlfRVNDQVBFKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxBbmltYXRvckNocm9taXVtTWFjLm1tCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04ODMsOSArODgzLDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpoYW5kbGVXaAogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewot
ICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3Jv
bGxCZWdpblR5cGUpCisgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVNjcm9sbEJlZ2luKQogICAgICAgICBiZWdpblNjcm9sbEdlc3R1cmUoKTsKLSAg
ICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpT
Y3JvbGxFbmRUeXBlKQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCkKICAgICAgICAgZW5kU2Nyb2xsR2VzdHVyZSgpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2
ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDEzICs0MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5
X0Rvd24qIGV2ZW50KQotICAgIDogbV90eXBlKEtleURvd24pCisgICAgOiBQbGF0Zm9ybUV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZp
ZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAi
TWV0YSIpKQogICAgICwgbV90ZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZykpCiAg
ICAgLCBtX3VubW9kaWZpZWRUZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZykpCi0g
ICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZl
bnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlm
aWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiB7CiAgICAg
U3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7CiAgICAgbV9rZXlJZGVudGlmaWVy
ID0ga2V5SWRlbnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpOwpAQCAtNTgsMTIgKzU0LDgg
QEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogfQogCiBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tl
eV9VcCogZXZlbnQpCi0gICAgOiBtX3R5cGUoS2V5VXApCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBs
YXRmb3JtRXZlbnQ6OktleVVwLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywg
IkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEi
KSkKICAgICAsIG1fdGV4dChTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpKQotICAgICwg
bV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNo
aWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5t
b2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogewogICAgIFN0cmlu
ZyBrZXlOYW1lID0gU3RyaW5nKGV2ZW50LT5rZXkpOwogICAgIG1fa2V5SWRlbnRpZmllciA9IGtl
eUlkZW50aWZpZXJGb3JFdmFzS2V5TmFtZShrZXlOYW1lKTsKQEAgLTc5LDcgKzcxLDcgQEAgdm9p
ZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQogICAgIEFTU0VSVChtX3R5cGUg
PT0gS2V5RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAotICAgIGlmICh0eXBlID09IFJhd0tl
eURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3Ry
aW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Q
bGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Nb3VzZUV2ZW50RWZsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNDMgKzQ4LDMxIEBAIHZvaWQgUGxhdGZvcm1Nb3VzZUV2ZW50
OjpzZXRDbGlja0NvdW50KHUKIH0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldmVudCwgSW50UG9pbnQgcG9zaXRp
b24pCi0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9u
LngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKKyAgICA6IFBsYXRmb3JtRXZl
bnQoUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
ZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVu
dC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQt
Pm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54
IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQogICAgICwg
bV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMu
eSkpCiAgICAgLCBtX2J1dHRvbihNb3VzZUJ1dHRvbihldmVudC0+YnV0dG9uIC0gMSkpCi0gICAg
LCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50UHJlc3NlZCkKLSAgICAsIG1fc2hpZnRLZXkoZXZhc19r
ZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpKQotICAgICwgbV9j
dHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJv
bCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
ZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKICAgICAsIG1fdGltZXN0YW1wKGN1cnJlbnRUaW1l
KCkpCiB7CiAgICAgc2V0Q2xpY2tDb3VudChldmVudC0+ZmxhZ3MpOwogfQogCiBQbGF0Zm9ybU1v
dXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBl
dmVudCwgSW50UG9pbnQgcG9zaXRpb24pCi0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50
LT5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24ueSgp
KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpLCBldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSwgZXZhc19rZXlf
bW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9kaWZp
ZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKElu
dFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0g
cG9zaXRpb24ueSgpKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNh
bnZhcy54LCBldmVudC0+Y2FudmFzLnkpKQogICAgICwgbV9idXR0b24oTW91c2VCdXR0b24oZXZl
bnQtPmJ1dHRvbiAtIDEpKQotICAgICwgbV9ldmVudFR5cGUoTW91c2VFdmVudFJlbGVhc2VkKQot
ICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVy
cywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2
ZW50LT5tb2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2Rp
Zmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogICAgICwg
bV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkKIHsKICAgICBzZXRDbGlja0NvdW50KGV2ZW50LT5m
bGFncyk7CiB9CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIEludFBvaW50IHBvc2l0aW9uKQotICAgIDog
bV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54IC0gcG9zaXRpb24ueCgpLCBl
dmVudC0+Y3VyLmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQo
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50
LT5tb2RpZmllcnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMs
ICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLngg
LSBwb3NpdGlvbi54KCksIGV2ZW50LT5jdXIuY2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQogICAg
ICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54LCBldmVudC0+
Y3VyLmNhbnZhcy55KSkKICAgICAsIG1fYnV0dG9uKE1vdXNlQnV0dG9uKGV2ZW50LT5idXR0b25z
IC0gMSkpCi0gICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50TW92ZWQpCiAgICAgLCBtX2NsaWNr
Q291bnQoMCkKLSAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50
LT5tb2RpZmllcnMsICJTaGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVy
X2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1f
bWV0YUtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEi
KSkKICAgICAsIG1fdGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiB7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNw
cAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtV2hlZWxFdmVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMCBAQCBl
bnVtIHsKIH07CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQotICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChl
di0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OldoZWVsLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIlNo
aWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQ29udHJvbCIp
LCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRp
b24oSW50UG9pbnQoZXYtPmNhbnZhcy54LCBldi0+Y2FudmFzLnkpKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihJbnRQb2ludChldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCiAgICAgLCBtX2dy
YW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShldmFz
X2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0
cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJDb250cm9sIikp
Ci0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywg
IkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9k
aWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFs
c2UpCiB7CiAgICAgLy8gQSBuZWdhdGl2ZSB6IHZhbHVlIG1lYW5zIChpbiBFRkwpIHRoYXQgd2Ug
YXJlIHNjcm9sbGluZyBkb3duLCBzbyB3ZSBuZWVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAkocmV2
aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCBTdHJp
bmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFyCiAvLyBLZWVwIHRoaXMgaW4gc3lu
YyB3aXRoIHRoZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMKIC8vIFRPRE86IG1f
Z2RrRXZlbnRLZXkgc2hvdWxkIGJlIHJlZmNvdW50ZWQKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKLSAgICA6IG1fdHlwZSgo
ZXZlbnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IEtleVVwIDogS2V5RG93bikKKyAgICA6
IFBsYXRmb3JtRXZlbnQoKGV2ZW50LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkgPyBQbGF0Zm9y
bUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIChldmVudC0+c3RhdGUgJiBH
REtfU0hJRlRfTUFTSykgfHwgKGV2ZW50LT5rZXl2YWwgPT0gR0RLXzMyNzBfQmFja1RhYiksIGV2
ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0ssIGV2ZW50LT5zdGF0ZSAmIEdES19NT0QxX01B
U0ssIGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCiAgICAgLCBtX3RleHQoc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV91bm1vZGlmaWVkVGV4dChzaW5n
bGVDaGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCkpCiAgICAgLCBtX2tleUlkZW50aWZpZXIo
a2V5SWRlbnRpZmllckZvckdka0tleUNvZGUoZXZlbnQtPmtleXZhbCkpCkBAIC01NTUsMTAgKzU1
NSw2IEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKICAgICAsIG1f
d2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yR2RrS2V5Q29kZShldmVudC0+
a2V5dmFsKSkKICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoZXZlbnQtPmtleXZhbCkKICAg
ICAsIG1faXNLZXlwYWQoZXZlbnQtPmtleXZhbCA+PSBHREtfS1BfU3BhY2UgJiYgZXZlbnQtPmtl
eXZhbCA8PSBHREtfS1BfOSkKLSAgICAsIG1fc2hpZnRLZXkoKGV2ZW50LT5zdGF0ZSAmIEdES19T
SElGVF9NQVNLKSB8fCAoZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFiKSkKLSAgICAs
IG1fY3RybEtleShldmVudC0+c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLKQotICAgICwgbV9hbHRL
ZXkoZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSykKLSAgICAsIG1fbWV0YUtleShldmVudC0+
c3RhdGUgJiBHREtfTUVUQV9NQVNLKQogICAgICwgbV9nZGtFdmVudEtleShldmVudCkKIHsKIH0K
QEAgLTU3Miw3ICs1NjgsNyBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1
YXRlCiAgICAgaWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAg
ICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsu
Y3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsOSBAQCBQ
bGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChHCiAgICAgY2FzZSBHREtfMkJV
VFRPTl9QUkVTUzoKICAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgogICAgIGNhc2UgR0RLX0JV
VFRPTl9SRUxFQVNFOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOwor
ICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAgICAgICAgIGlm
IChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1JFTEVBU0UpIHsKLSAgICAgICAgICAgIG1fZXZl
bnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgbV90eXBlID0gUGxhdGZv
cm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7CiAg
ICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9QUkVTUykKICAgICAg
ICAgICAgIG1fY2xpY2tDb3VudCA9IDE7CkBAIC04Nyw3ICs4Nyw3IEBAIFBsYXRmb3JtTW91c2VF
dmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEcKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7
CiAgICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3Vz
ZUV2ZW50TW92ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7
CiAgICAgICAgIG1fYnV0dG9uID0gTm9CdXR0b247CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7
CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRm
b3JtV2hlZWxFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KEcKIHsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVsdGEgPSAxOwogCisgICAg
bV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CisKICAgICBtX2RlbHRhWCA9IDA7CiAgICAg
bV9kZWx0YVkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5RXZl
bnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tleUV2
ZW50SU9TLm1tCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvS2V5RXZlbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDE3ICs1MCwxMyBAQCBzdGF0
aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChXCiB9CiAKIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KFdlYkV2ZW50ICpldmVudCkKLSAgICA6IG1f
dHlwZShldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXAgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OktleVVwIDogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIDogUGxhdGZvcm1F
dmVudChldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXAgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6
IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZs
YWdNYXNrU2hpZnQsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29udHJv
bCwgZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5hdGUsIGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZCkKICAgICAsIG1fdGV4dChl
dmVudC5jaGFyYWN0ZXJzKQogICAgICwgbV91bm1vZGlmaWVkVGV4dChldmVudC5jaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllckZv
cktleUV2ZW50KGV2ZW50KSkKICAgICAsIG1fYXV0b1JlcGVhdChldmVudC5pc0tleVJlcGVhdGlu
ZykKICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKGV2ZW50LmtleUNvZGUpCiAgICAgLCBt
X2lzS2V5cGFkKGZhbHNlKSAvLyBpUGhvbmUgZG9lcyBub3QgZGlzdGluZ3Vpc2ggdGhlIG51bXBh
ZCA8cmRhcjovL3Byb2JsZW0vNzE5MDgzNT4KLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQubW9kaWZp
ZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tTaGlmdCkKLSAgICAsIG1fY3RybEtleShldmVudC5t
b2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wpCi0gICAgLCBtX2FsdEtleShl
dmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSkKLSAgICAsIG1f
bWV0YUtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQpCiAg
ICAgLCBtX0V2ZW50KGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBlID09IFdlYkV2ZW50
S2V5RG93biB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXApOwpAQCAtOTQsNyArOTAsNyBA
QCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAgICAgaWYgKGJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0eXBlID09
IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3du
KSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0
ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LZXlFdmVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvS2V5RXZlbnRNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4
OSw3IEBAIHN0YXRpYyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0UKIH0KIAogUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQp
Ci0gICAgOiBtX3R5cGUoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6S2V5VXAgOiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24pCisgICAgOiBQbGF0Zm9y
bUV2ZW50KGlzS2V5VXBFdmVudChldmVudCkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRm
b3JtRXZlbnQ6OktleURvd24sIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNr
LCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5T
Q29tbWFuZEtleU1hc2spCiAgICAgLCBtX3RleHQodGV4dEZyb21FdmVudChldmVudCkpCiAgICAg
LCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KSkKICAgICAs
IG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQpKQpAQCAtMTk3
LDEwICsxOTcsNiBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiAg
ICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGV2
ZW50KSkKICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoW2V2ZW50IGtleUNvZGVdKQogICAg
ICwgbV9pc0tleXBhZChpc0tleXBhZEV2ZW50KGV2ZW50KSkKLSAgICAsIG1fc2hpZnRLZXkoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0gICAgLCBtX2N0cmxLZXkoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKLSAgICAsIG1fYWx0S2V5KFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKLSAgICAsIG1fbWV0YUtl
eShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQogICAgICwgbV9tYWNF
dmVudChldmVudCkKIHsKICAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4gLS0g
d2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3IgRW50
ZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bU1vdXNlRXZlbnRNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEx
OSw1NyArMTE5LDQ5IEBAIEludFBvaW50IGdsb2JhbFBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXYK
ICAgICB9CiB9CiAKLXN0YXRpYyBNb3VzZUV2ZW50VHlwZSBtb3VzZUV2ZW50Rm9yTlNFdmVudChO
U0V2ZW50KiBldmVudCkgCitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3VzZUV2ZW50Rm9y
TlNFdmVudChOU0V2ZW50KiBldmVudCkgCiB7CiAgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsK
ICAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50U2Nyb2xs
OworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VTY3JvbGw7CiAgICAgY2FzZSBO
U0xlZnRNb3VzZURyYWdnZWQ6CiAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgogICAgIGNh
c2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKICAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAg
cmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQ7CiAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CiAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEb3duOgogICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgcmV0dXJuIE1vdXNl
RXZlbnRQcmVzc2VkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2Vk
OwogICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgogICAg
IGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50UmVsZWFzZWQ7
CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgIH0KIH0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLSAg
ICA6IG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93VmlldykpCisgICAgOiBQ
bGF0Zm9ybUV2ZW50KG1vdXNlRXZlbnRGb3JOU0V2ZW50KGV2ZW50KSwgW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJv
bEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAgICAsIG1fcG9zaXRpb24o
cG9pbnRGb3JFdmVudChldmVudCwgd2luZG93VmlldykpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV9idXR0b24obW91c2VCdXR0b25G
b3JFdmVudChldmVudCkpCi0gICAgLCBtX2V2ZW50VHlwZShtb3VzZUV2ZW50Rm9yTlNFdmVudChl
dmVudCkpCiAgICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudEZvckV2ZW50KGV2ZW50KSkKLSAg
ICAsIG1fc2hpZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0g
ICAgLCBtX2N0cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykK
LSAgICAsIG1fYWx0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFz
aykKLSAgICAsIG1fbWV0YUtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlN
YXNrKQogICAgICwgbV90aW1lc3RhbXAoW2V2ZW50IHRpbWVzdGFtcF0pCiAgICAgLCBtX21vZGlm
aWVyRmxhZ3MoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdKQogICAgICwgbV9ldmVudE51bWJlcihbZXZl
bnQgZXZlbnROdW1iZXJdKQogewogfQogCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91
c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0
b24gYnV0dG9uLCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCitQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFs
WSwgTW91c2VCdXR0b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpCi0gICAgOiBt
X3Bvc2l0aW9uKEludFBvaW50KHgsIHkpKQorICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBzaGlm
dEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KQorICAgICwgbV9wb3NpdGlvbihJbnRQb2lu
dCh4LCB5KSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZ2xvYmFsWCwgZ2xvYmFs
WSkpCiAgICAgLCBtX2J1dHRvbihidXR0b24pCi0gICAgLCBtX2V2ZW50VHlwZShldmVudFR5cGUp
CiAgICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAsIG1fc2hpZnRLZXkoc2hpZnRL
ZXkpCi0gICAgLCBtX2N0cmxLZXkoY3RybEtleSkKLSAgICAsIG1fYWx0S2V5KGFsdEtleSkKLSAg
ICAsIG1fbWV0YUtleShtZXRhS2V5KQogICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQogICAg
ICwgbV9tb2RpZmllckZsYWdzKG1vZGlmaWVyRmxhZ3MpCiAgICAgLCBtX2V2ZW50TnVtYmVyKGV2
ZW50TnVtYmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMxLDkg
KzEwMzEsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50CiAKIHZv
aWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewotICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgp
ID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCisgICAgaWYgKGdlc3R1
cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luKQogICAg
ICAgICBiZWdpblNjcm9sbEdlc3R1cmUoKTsKLSAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlw
ZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQorICAgIGVsc2UgaWYg
KGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCkK
ICAgICAgICAgZW5kU2Nyb2xsR2VzdHVyZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkwLDEzICs5MCwxMCBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2VG
b3JFCiB9CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQq
IGV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCi0gICAgOiBtX3Bvc2l0aW9uKHBvaW50Rm9yRXZl
bnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpXaGVlbCwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5
TWFzaykKKyAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93Vmlldykp
CiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpKQogICAg
ICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAgICAsIG1fc2hpZnRL
ZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0gICAgLCBtX2N0cmxL
ZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKLSAgICAsIG1fYWx0
S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKLSAgICAsIG1f
bWV0YUtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQogICAgICwg
bV9waGFzZShwaGFzZUZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fbW9tZW50dW1QaGFzZShtb21l
bnR1bVBoYXNlRm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV90aW1lc3RhbXAoW2V2ZW50IHRpbWVz
dGFtcF0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxh
dGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgU3RyaW5nIGtleVRleHRGb3JLZXlFdmVudChj
b25zdCBRCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChRS2V5
RXZlbnQqIGV2ZW50KQogewogICAgIGNvbnN0IGludCBzdGF0ZSA9IGV2ZW50LT5tb2RpZmllcnMo
KTsKLSAgICBtX3R5cGUgPSAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OktleVJlbGVhc2UpID8g
S2V5VXAgOiBLZXlEb3duOworICAgIG1fdHlwZSA9IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6
S2V5UmVsZWFzZSkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURv
d247CiAgICAgbV90ZXh0ID0ga2V5VGV4dEZvcktleUV2ZW50KGV2ZW50KTsKICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gbV90ZXh0OyAvLyBGSVhNRTogbm90IGNvcnJlY3QKICAgICBtX2tleUlkZW50
aWZpZXIgPSBrZXlJZGVudGlmaWVyRm9yUXRLZXlDb2RlKGV2ZW50LT5rZXkoKSk7CkBAIC02MTQs
MTAgKzYxNCwxMCBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiB2
b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUg
dHlwZSwgYm9vbCkKIHsKICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24g
dG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBj
b252ZXJzaW9ucy4KLSAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOworICAgIEFTU0VSVCht
X3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAot
ICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2
ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBt
X3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHAJKHJl
dmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91
c2VFdmVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNDIgKzQzLDQyIEBAIHN0YXRpYyB2
b2lkIG1vdXNlRXZlbnRNb2RpZmllcnNGcm9tUXRLZXkKICAgICBzaGlmdEtleSA9IGtleWJvYXJk
TW9kaWZpZXJzICYgUXQ6OlNoaWZ0TW9kaWZpZXI7CiB9CiAKLXN0YXRpYyB2b2lkIG1vdXNlRXZl
bnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQsIE1vdXNl
RXZlbnRUeXBlJiBtb3VzZUV2ZW50VHlwZSwgTW91c2VCdXR0b24mIG1vdXNlQnV0dG9uKQorc3Rh
dGljIHZvaWQgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoY29uc3QgUUV2
ZW50KiBldmVudCwgUGxhdGZvcm1FdmVudDo6VHlwZSYgbW91c2VFdmVudFR5cGUsIE1vdXNlQnV0
dG9uJiBtb3VzZUJ1dHRvbikKIHsKICAgICBlbnVtIHsgTW91c2VFdmVudCwgR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQgfSBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZTsKICAgICBzd2l0Y2ggKGV2ZW50
LT50eXBlKCkpIHsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxDbGljazoKICAgICBj
YXNlIFFFdmVudDo6TW91c2VCdXR0b25QcmVzczoKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVu
dFR5cGUgPSBNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRQ
cmVzc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJl
c3NlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFz
ZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50OwotICAgICAg
ICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgbW91c2VFdmVu
dFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFFFdmVudDo6TW91c2VNb3ZlOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlw
ZSA9IE1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVk
OworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAg
ICAgICAgIGJyZWFrOwogI2lmICFkZWZpbmVkKFFUX05PX0dSQVBISUNTVklFVykKICAgICBjYXNl
IFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlRG91YmxlQ2xpY2s6CiAgICAgY2FzZSBRRXZlbnQ6
OkdyYXBoaWNzU2NlbmVNb3VzZVByZXNzOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlw
ZSA9IEdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1v
dXNlRXZlbnRQcmVzc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNz
U2NlbmVNb3VzZVJlbGVhc2U6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gR3Jh
cGhpY3NTY2VuZU1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVu
dFJlbGVhc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
UmVsZWFzZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5l
TW91c2VNb3ZlOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IEdyYXBoaWNzU2Nl
bmVNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsK
KyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAg
ICAgICBicmVhazsKICNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnQ7Ci0g
ICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAgICAgICBtb3VzZUV2
ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtODYsMTIgKzg2LDEyIEBAIHN0YXRpYyB2b2lkIG1vdXNlRXZlbnRUeXBlQW5kTW91
c2VCdXR0b24KICAgICBzd2l0Y2ggKGZyYW1ld29ya01vdXNlRXZlbnRUeXBlKSB7CiAgICAgY2Fz
ZSBNb3VzZUV2ZW50OiB7CiAgICAgICAgIGNvbnN0IFFNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgUU1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAgIG1vdXNlQnV0
dG9ucyA9IG1vdXNlRXZlbnRUeXBlID09IE1vdXNlRXZlbnRNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1
dHRvbnMoKSA6IG1vdXNlRXZlbnQtPmJ1dHRvbigpOworICAgICAgICBtb3VzZUJ1dHRvbnMgPSBt
b3VzZUV2ZW50VHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkID8gbW91c2VFdmVudC0+
YnV0dG9ucygpIDogbW91c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50OiB7CiAgICAgICAgIGNvbnN0IFFHcmFw
aGljc1NjZW5lTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFFHcmFw
aGljc1NjZW5lTW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICAgICAgbW91c2VCdXR0b25zID0gbW91
c2VFdmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9ucygpIDog
bW91c2VFdmVudC0+YnV0dG9uKCk7CisgICAgICAgIG1vdXNlQnV0dG9ucyA9IG1vdXNlRXZlbnRU
eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25zKCkg
OiBtb3VzZUV2ZW50LT5idXR0b24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAg
LTExMyw3ICsxMTMsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChR
CiAKICAgICAvLyBGSVhNRTogV2h5IGRvbid0IHdlIGhhbmRsZSBhIGNvbnRleHQgbWVudSBldmVu
dCBoZXJlIGFzIHdlIGRvIGluIFBsYXRmb3JtTW91c2VFdmVudChRSW5wdXRFdmVudCosIGludCk/
CiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA3
Mjg+LgotICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBt
X2V2ZW50VHlwZSwgbV9idXR0b24pOworICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25G
cm9tUUV2ZW50KGV2ZW50LCBtX3R5cGUsIG1fYnV0dG9uKTsKICAgICBtX3Bvc2l0aW9uID0gSW50
UG9pbnQoZXZlbnQtPnBvcygpLnRvUG9pbnQoKSk7CiAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IElu
dFBvaW50KGV2ZW50LT5zY3JlZW5Qb3MoKSk7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChRCiAjaWZuZGVmIFFUX05PX0NPTlRFWFRN
RU5VCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpDb250ZXh0TWVudSkgewogICAg
ICAgICBpc0NvbnRleHRNZW51RXZlbnQgPSB0cnVlOwotICAgICAgICBtX2V2ZW50VHlwZSA9IE1v
dXNlRXZlbnRQcmVzc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVBy
ZXNzZWQ7CiAgICAgICAgIFFDb250ZXh0TWVudUV2ZW50KiBjZSA9IHN0YXRpY19jYXN0PFFDb250
ZXh0TWVudUV2ZW50Kj4oZXZlbnQpOwogICAgICAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoY2Ut
PnBvcygpKTsKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGNlLT5nbG9iYWxQ
b3MoKSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoUQogICAgIH0KICNlbmRpZgogICAgIGlmICghaXNDb250ZXh0TWVudUV2ZW50KSB7
Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBt
X2V2ZW50VHlwZSwgbV9idXR0b24pOworICAgICAgICBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0
dG9uRnJvbVFFdmVudChldmVudCwgbV90eXBlLCBtX2J1dHRvbik7CiAgICAgICAgIFFNb3VzZUV2
ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8UU1vdXNlRXZlbnQqPihldmVudCk7CiAgICAg
ICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChtb3VzZUV2ZW50LT5wb3MoKSk7CiAgICAgICAgIG1f
Z2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChtb3VzZUV2ZW50LT5nbG9iYWxQb3MoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJKHJldmlzaW9u
IDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMCBAQCB2b2lkIFBsYXRmb3JtV2hlZWxFdmVu
dDo6YXBwbHlEZWx0YShpbnQgCiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2
ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCogZSkKICNpZm5kZWYgUVRfTk9fV0hFRUxFVkVO
VAotICAgIDogbV9wb3NpdGlvbihlLT5wb3MoKS50b1BvaW50KCkpCisgICAgOiBQbGF0Zm9ybUV2
ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlm
aWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIsIGUtPm1vZGlmaWVycygp
ICYgUXQ6OkFsdE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCisg
ICAgLCBtX3Bvc2l0aW9uKGUtPnBvcygpLnRvUG9pbnQoKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZS0+c2NyZWVuUG9zKCkpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVl
bEV2ZW50KQotICAgICwgbV9zaGlmdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlm
aWVyKQotICAgICwgbV9jdHJsS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmll
cikKLSAgICAsIG1fYWx0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVyKQotICAg
ICwgbV9tZXRhS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikKICAgICAsIG1f
ZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2VuZGlmCiB7CkBAIC03OCwxMyAr
NzUsMTAgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoUQogCiBQbGF0
Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChRV2hlZWxFdmVudCogZSkKICNpZm5k
ZWYgUVRfTk9fV0hFRUxFVkVOVAotICAgIDogbV9wb3NpdGlvbihlLT5wb3MoKSkKKyAgICA6IFBs
YXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGUtPm1vZGlmaWVycygpICYgUXQ6OlNo
aWZ0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllciwgZS0+bW9k
aWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2Rp
ZmllcikKKyAgICAsIG1fcG9zaXRpb24oZS0+cG9zKCkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGUtPmdsb2JhbFBvcygpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxF
dmVudCkKLSAgICAsIG1fc2hpZnRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmll
cikKLSAgICAsIG1fY3RybEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIp
Ci0gICAgLCBtX2FsdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllcikKLSAgICAs
IG1fbWV0YUtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCiAgICAgLCBtX2Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNlbmRpZgogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCShyZXZpc2lvbiAxMDI5Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDIsOSArMTQyLDkgQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9y
V2luZG93c0tleQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChXUEFSQU0g
Y29kZSwgTFBBUkFNIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBlKQor
c3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChXUEFSQU0gY29kZSwgTFBBUkFNIGtleURhdGEsIFBs
YXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlJhd0tleURvd24gJiYgdHlwZSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eVVwKQorICAgIGlmICh0eXBlICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gJiYgdHlwZSAh
PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dp
dGNoIChjb2RlKSB7CkBAIC0xODcsMTggKzE4NywxNCBAQCBzdGF0aWMgYm9vbCBpc0tleXBhZEV2
ZW50KFdQQVJBTSBjb2RlLCBMCiBzdGF0aWMgaW5saW5lIFN0cmluZyBzaW5nbGVDaGFyYWN0ZXJT
dHJpbmcoVUNoYXIgYykgeyByZXR1cm4gU3RyaW5nKCZjLCAxKTsgfQogCiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChIV05ELCBXUEFSQU0gY29kZSwgTFBBUkFN
IGtleURhdGEsIFR5cGUgdHlwZSwgYm9vbCBzeXN0ZW1LZXkpCi0gICAgOiBtX3R5cGUodHlwZSkK
LSAgICAsIG1fdGV4dCgodHlwZSA9PSBDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2Rl
KSA6IFN0cmluZygpKQotICAgICwgbV91bm1vZGlmaWVkVGV4dCgodHlwZSA9PSBDaGFyKSA/IHNp
bmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQotICAgICwgbV9rZXlJZGVudGlm
aWVyKCh0eXBlID09IENoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tl
eUNvZGUoY29kZSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIEdldEtleVN0YXRlKFZLX1NI
SUZUKSAmIEhJR0hfQklUX01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX0NPTlRST0wpICYgSElH
SF9CSVRfTUFTS19TSE9SVCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NI
T1JULCBmYWxzZSkKKyAgICAsIG1fdGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/
IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQorICAgICwgbV91bm1vZGlm
aWVkVGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0
cmluZyhjb2RlKSA6IFN0cmluZygpKQorICAgICwgbV9rZXlJZGVudGlmaWVyKCh0eXBlID09IFBs
YXRmb3JtRXZlbnQ6OkNoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tl
eUNvZGUoY29kZSkpCiAgICAgLCBtX2F1dG9SZXBlYXQoSElXT1JEKGtleURhdGEpICYgS0ZfUkVQ
RUFUKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoKHR5cGUgPT0gUmF3S2V5RG93biB8
fCB0eXBlID09IEtleVVwKSA/IGNvZGUgOiAwKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29k
ZShtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSkKICAgICAsIG1faXNLZXlwYWQoaXNLZXlwYWRFdmVu
dChjb2RlLCBrZXlEYXRhLCB0eXBlKSkKLSAgICAsIG1fc2hpZnRLZXkoR2V0S2V5U3RhdGUoVktf
U0hJRlQpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fY3RybEtleShHZXRLZXlTdGF0
ZShWS19DT05UUk9MKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX2FsdEtleShHZXRL
ZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX21ldGFLZXko
ZmFsc2UpCiAgICAgLCBtX2lzU3lzdGVtS2V5KHN5c3RlbUtleSkKIHsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4u
Y3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxh
dGZvcm1Nb3VzZUV2ZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBz
dGF0aWMgSW50UG9pbnQgZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChICiAgICAgcmV0dXJuIHBvaW50
OwogfQogCi1zdGF0aWMgTW91c2VFdmVudFR5cGUgbWVzc2FnZVRvRXZlbnRUeXBlKFVJTlQgbWVz
c2FnZSkKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1lc3NhZ2VUb0V2ZW50VHlwZShVSU5U
IG1lc3NhZ2UpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7CiAgICAgICAgIGNhc2UgV01fTEJV
VFRPTkRCTENMSzoKQEAgLTU4LDM1ICs1OCwzMyBAQCBzdGF0aWMgTW91c2VFdmVudFR5cGUgbWVz
c2FnZVRvRXZlbnRUeXBlCiAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRPV046CiAgICAgICAgIGNh
c2UgV01fUkJVVFRPTkRPV046CiAgICAgICAgIGNhc2UgV01fTUJVVFRPTkRPV046Ci0gICAgICAg
ICAgICByZXR1cm4gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxhdGZv
cm1FdmVudDo6TW91c2VQcmVzc2VkOwogCiAgICAgICAgIGNhc2UgV01fTEJVVFRPTlVQOgogICAg
ICAgICBjYXNlIFdNX1JCVVRUT05VUDoKICAgICAgICAgY2FzZSBXTV9NQlVUVE9OVVA6Ci0gICAg
ICAgICAgICByZXR1cm4gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAKICNpZiAhT1MoV0lOQ0UpCiAgICAgICAgIGNh
c2UgV01fTU9VU0VMRUFWRToKICNlbmRpZgogICAgICAgICBjYXNlIFdNX01PVVNFTU9WRToKLSAg
ICAgICAgICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAvL01vdmUgaXMgcmVsYXRpdmVseSBo
YXJtbGVzcwotICAgICAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgIH0KIH0KKwogUGxhdGZvcm1N
b3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0sIGJvb2wgZGlkQWN0aXZhdGVXZWJWaWV3KQorICAg
IDogUGxhdGZvcm1FdmVudChtZXNzYWdlVG9FdmVudFR5cGUobWVzc2FnZSksIHdQYXJhbSAmIE1L
X1NISUZULCB3UGFyYW0gJiBNS19DT05UUk9MLCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hf
QklUX01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9S
VCkKICAgICA6IG1fcG9zaXRpb24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQogICAg
ICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkp
CiAgICAgLCBtX2NsaWNrQ291bnQoMCkKLSAgICAsIG1fc2hpZnRLZXkod1BhcmFtICYgTUtfU0hJ
RlQpCi0gICAgLCBtX2N0cmxLZXkod1BhcmFtICYgTUtfQ09OVFJPTCkKLSAgICAsIG1fYWx0S2V5
KEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fbWV0
YUtleShtX2FsdEtleSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2Vy
cwogICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZGlkQWN0aXZhdGVXZWJWaWV3KQotICAgICwg
bV9ldmVudFR5cGUobWVzc2FnZVRvRXZlbnRUeXBlKG1lc3NhZ2UpKQorICAgICwgbV9ldmVudFR5
cGUoKQogICAgICwgbV9tb2RpZmllckZsYWdzKHdQYXJhbSkKIHsKICAgICBtX3RpbWVzdGFtcCA9
IDo6R2V0VGlja0NvdW50KCkqMC4wMDE7IC8vIEdldFRpY2tDb3VudCByZXR1cm5zIG1pbGxpc2Vj
b25kcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2lu
LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1do
ZWVsRXZlbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMCArNjYsNyBAQCBzdGF0aWMg
aW50IHZlcnRpY2FsU2Nyb2xsTGluZXMoKQogfQogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRm
b3JtV2hlZWxFdmVudChIV05EIGhXbmQsIGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2F0aW9uKQotICAgIDogbV9zaGlmdEtleShmYWxzZSkKLSAgICAsIG1fY3Ry
bEtleShmYWxzZSkKLSAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAgICwgbV9tZXRhS2V5KGZhbHNl
KQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxz
ZSkKIHsKICAgICBtX2RlbHRhWCA9IGRlbHRhLndpZHRoKCk7CkBAIC04OCwxMiArODUsOSBAQCBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChICiB9CiAKIFBsYXRmb3JtV2hl
ZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQgaFduZCwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSwgYm9vbCBpc01vdXNlSFdoZWVsKQotICAgIDogbV9wb3NpdGlvbihwb3NpdGlv
bkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZl
bnQ6OldoZWVsLCB3UGFyYW0gJiBNS19TSElGVCwgd1BhcmFtICYgTUtfQ09OVFJPTCwgR2V0S2V5
U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JULCBHZXRLZXlTdGF0ZShWS19NRU5V
KSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCisgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZl
bnQoaFduZCwgbFBhcmFtKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb25G
b3JFdmVudChoV25kLCBsUGFyYW0pKQotICAgICwgbV9zaGlmdEtleSh3UGFyYW0gJiBNS19TSElG
VCkKLSAgICAsIG1fY3RybEtleSh3UGFyYW0gJiBNS19DT05UUk9MKQotICAgICwgbV9hbHRLZXko
R2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9tZXRh
S2V5KG1fYWx0S2V5KSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVyIGJyb3dzZXJz
CiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKIHsKICAgICAvLyBI
b3cgbWFueSBwaXhlbHMgc2hvdWxkIHdlIHNjcm9sbCBwZXIgbGluZT8gIEdlY2tvIHVzZXMgdGhl
IGhlaWdodCBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0tleWJvYXJk
RXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvS2V5
Ym9hcmRFdmVudFd4LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDE0ICsz
MzcsMTQgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KHVucwogUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQod3hLZXlFdmVudCYgZXZlbnQp
CiB7CiAgICAgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09IHd4RVZUX0tFWV9VUCkKLSAgICAg
ICAgbV90eXBlID0gS2V5VXA7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6OktleVVw
OwogICAgIGVsc2UgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09IHd4RVZUX0tFWV9ET1dOKQot
ICAgICAgICBtX3R5cGUgPSBLZXlEb3duOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duOwogICAgIGVsc2UgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09IHd4RVZUX0NI
QVIpCi0gICAgICAgIG1fdHlwZSA9IENoYXI7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6OkNoYXI7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBp
ZiAobV90eXBlICE9IENoYXIpCisgICAgaWYgKG1fdHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpDaGFy
KQogICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyRm9yV3hLZXlDb2RlKGV2
ZW50LkdldEtleUNvZGUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vRU5URVIgaXMgYW4gZWRp
dGluZyBjb21tYW5kIHByb2Nlc3NlZCBhcyBhIGNoYXIgKG9ubHkgRW50ZXIgYW5kIFRhYiBhcmUp
CkBAIC0zNzEsOSArMzcxLDkgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJv
YXJkRQogdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVu
dChUeXBlIHR5cGUsIGJvb2wpCiB7CiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBL
ZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Ig
b3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlEb3duKTsKKyAgICBB
U1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pOwogICAgIG1fdHlwZSA9IHR5
cGU7Ci0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAg
ICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VFdmVudFd4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZUV2ZW50V3guY3BwCShyZXZpc2lvbiAxMDI5
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZUV2ZW50V3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywyNiArMzMsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
bGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCB3eE1vdXNlRXZlbnQm
IGV2ZW50LCBjb25zdCB3eFBvaW50JiBnbG9iYWxQb2ludCwgaW50IGNsaWNrQ291bnQpCi0gICAg
OiBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCi0gICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvaW50KQotICAgICwgbV9zaGlmdEtleShldmVudC5TaGlmdERvd24oKSkKLSAgICAs
IG1fY3RybEtleShldmVudC5DbWREb3duKCkgfHwgZXZlbnQuQ29udHJvbERvd24oKSkKLSAgICAs
IG1fYWx0S2V5KGV2ZW50LkFsdERvd24oKSkKLSAgICAsIG1fbWV0YUtleShldmVudC5NZXRhRG93
bigpKSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVyIGJyb3dzZXJzCitzdGF0aWMg
UGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlRnJvbU1vdXNlRXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50
JiBldmVudCkKIHsKICAgICB3eEV2ZW50VHlwZSB0eXBlID0gZXZlbnQuR2V0RXZlbnRUeXBlKCk7
Ci0gICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7Ci0gICAgCi0gICAgaWYgKHR5cGUg
PT0gd3hFVlRfTEVGVF9ET1dOIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RPV04gfHwgdHlwZSA9
PSB3eEVWVF9SSUdIVF9ET1dOKQotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVz
c2VkOwotICAgIAotICAgIGVsc2UgaWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9VUCB8fCB0eXBlID09
IHd4RVZUX01JRERMRV9VUCB8fCB0eXBlID09IHd4RVZUX1JJR0hUX1VQIHx8IAotICAgICAgICAg
ICAgICAgIHR5cGUgPT0gd3hFVlRfTEVGVF9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVWVF9NSURETEVf
RENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfUklHSFRfRENMSUNLKQotICAgICAgICBtX2V2ZW50VHlw
ZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKIAorICAgIGlmICh0eXBlID09IHd4RVZUX0xFRlRfRE9X
TiB8fCB0eXBlID09IHd4RVZUX01JRERMRV9ET1dOIHx8IHR5cGUgPT0gd3hFVlRfUklHSFRfRE9X
TikKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKKyAgICBlbHNl
IGlmICh0eXBlID09IHd4RVZUX0xFRlRfVVAgfHwgdHlwZSA9PSB3eEVWVF9NSURETEVfVVAgfHwg
dHlwZSA9PSB3eEVWVF9SSUdIVF9VUCB8fCB0eXBlID09IHd4RVZUX0xFRlRfRENMSUNLIHx8IHR5
cGUgPT0gd3hFVlRfTUlERExFX0RDTElDSyB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RDTElDSykK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgZWxzZSBp
ZiAodHlwZSA9PSB3eEVWVF9NT1RJT04pCi0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVu
dE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKKworICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOworfQorCitQbGF0Zm9ybU1vdXNlRXZl
bnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCB3
eFBvaW50JiBnbG9iYWxQb2ludCwgaW50IGNsaWNrQ291bnQpCisgICAgOiBQbGF0Zm9ybUV2ZW50
KHR5cGVGcm9tTW91c2VFdmVudChldmVudCksIGV2ZW50LlNoaWZ0RG93bigpLCBldmVudC5DbWRE
b3duKCkgfHwgZXZlbnQuQ29udHJvbERvd24oKSwgZXZlbnQuQWx0RG93bigpLCBldmVudC5NZXRh
RG93bigpKQorICAgIDogbV9wb3NpdGlvbihldmVudC5HZXRQb3NpdGlvbigpKQorICAgICwgbV9n
bG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludCkKK3sKIAogICAgIGlmIChldmVudC5MZWZ0SXNEb3du
KCkgfHwgZXZlbnQuQnV0dG9uKHd4TU9VU0VfQlROX0xFRlQpKQogICAgICAgICBtX2J1dHRvbiA9
IExlZnRCdXR0b247CkBAIC02MCwxMSArNTksOCBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRm
b3JtTW91c2VFdmVudChjCiAgICAgICAgIG1fYnV0dG9uID0gUmlnaHRCdXR0b247CiAgICAgZWxz
ZSBpZiAoZXZlbnQuTWlkZGxlSXNEb3duKCkgfHwgZXZlbnQuQnV0dG9uKHd4TU9VU0VfQlROX01J
RERMRSkpCiAgICAgICAgIG1fYnV0dG9uID0gTWlkZGxlQnV0dG9uOwotICAgIGVsc2UgaWYgKCFt
X2V2ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQpCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotCiAKLSAgICBpZiAobV9ldmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVkKQorICAgIGlm
IChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkKICAgICAgICAgbV9jbGlja0Nv
dW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpY2tDb3VudCA9IGNsaWNrQ291bnQ7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VXaGVlbEV2ZW50V3gu
Y3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3Vz
ZVdoZWVsRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVu
dChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCB3eFBvaW50JiBnbG9iYWxQb2ludCkK
LSAgICA6IG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRpb24oKSkKKyAgICA6IFBsYXRmb3JtRXZl
bnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGV2ZW50LlNoaWZ0RG93bigpLCBldmVudC5Db250cm9s
RG93bigpLCBldmVudC5BbHREb3duKCksIGV2ZW50Lk1ldGFEb3duKCkpCisgICAgLCBtX3Bvc2l0
aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBv
aW50KQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAgICAs
IG1fc2hpZnRLZXkoZXZlbnQuU2hpZnREb3duKCkpCi0gICAgLCBtX2N0cmxLZXkoZXZlbnQuQ29u
dHJvbERvd24oKSkKLSAgICAsIG1fYWx0S2V5KGV2ZW50LkFsdERvd24oKSkKLSAgICAsIG1fbWV0
YUtleShldmVudC5NZXRhRG93bigpKSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVy
IGJyb3dzZXJzCiAgICAgLCBtX2RlbHRhWCgwKSAvLyB3eCBkb2Vzbid0IHN1cHBvcnQgaG9yaXpv
bnRhbCBtb3VzZSB3aGVlbCBzY3JvbGxpbmcKICAgICAsIG1fZGVsdGFZKGV2ZW50LkdldFdoZWVs
Um90YXRpb24oKSAvIGV2ZW50LkdldFdoZWVsRGVsdGEoKSkKICAgICAsIG1fd2hlZWxUaWNrc1go
bV9kZWx0YVgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdN
YWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1Bs
dWdpblZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyNSwxOSArNjI1LDE5IEBAIHZvaWQg
UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXkKICAgICBFdmVudFJlY29yZCByZWNv
cmQ7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50
KSB7Ci0gICAgICAgIC8vIFRoaXMgZXZlbnQgaXMgdGhlIHJlc3VsdCBvZiBhIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6S2V5RG93biB3aGljaAorICAgICAgICAvLyBUaGlzIGV2ZW50IGlzIHRoZSBy
ZXN1bHQgb2YgYSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duIHdoaWNoCiAgICAgICAgIC8vIHdhcyBk
aXNhbWJpZ3VhdGVkIGludG8gYSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24uIFNp
bmNlCiAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSB0ZXh0IGhlcmUsIHdl
IHJldHVybiwgYW5kIHdhaXQgZm9yIHRoZQogICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGV2ZW50
IGJhc2VkIG9uIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhci4KICAgICAgICAgcmV0dXJuOwog
ICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVu
dCkgewogICAgICAgICAvLyBXaGljaCB3b3VsZCBiZSB0aGlzIG9uZS4gVGhpcyBldmVudCB3YXMg
ZGlzYW1iaWd1YXRlZCBmcm9tIHRoZSBzYW1lCi0gICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6S2V5RG93biwgYnV0IHRvIGEgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyLAorICAg
ICAgICAvLyBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCBidXQgdG8gYSBQbGF0Zm9ybUV2ZW50OjpD
aGFyLAogICAgICAgICAvLyB3aGljaCByZXRhaW5zIHRoZSB0ZXh0IGZyb20gdGhlIG9yaWdpbmFs
IGV2ZW50LiBTbywgd2UgY2FuIHNhZmVseSBwYXNzCiAgICAgICAgIC8vIG9uIHRoZSBldmVudCBh
cyBhIGtleS1kb3duIGV2ZW50IHRvIHRoZSBwbHVnaW4uCiAgICAgICAgIHJlY29yZC53aGF0ID0g
a2V5RG93bjsKICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eXVwRXZlbnQpIHsKLSAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCBldmVu
dHMgYWx3YXlzIGhhdmUgdGhlIHRleHQsIHNvIG5vdGhpbmcKKyAgICAgICAgLy8gUGxhdGZvcm1F
dmVudDo6S2V5VXAgZXZlbnRzIGFsd2F5cyBoYXZlIHRoZSB0ZXh0LCBzbyBub3RoaW5nCiAgICAg
ICAgIC8vIGZhbmN5IGhlcmUuCiAgICAgICAgIHJlY29yZC53aGF0ID0ga2V5VXA7CiAgICAgfSBl
bHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDEw
Mjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JU
cmFuc2Zvcm0KICAgICB9CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgUGxhdGZv
cm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBJ
bnRQb2ludCh0eCwgdHkpLCBJbnRQb2ludCh0eCwgdHkpLCAwLCBzY2FsZSwgMC5mLCAwLCAwLCAw
LCAwKTsKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCBwZ2UoUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZURvdWJsZVRhcCwgSW50UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHgsIHR5KSwgMCwgc2NhbGUs
IDAuZiwgMCwgMCwgMCwgMCk7CiAgICAgZG9jdW1lbnQtPnZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwZ2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oc2NhbGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDIzKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTIt
MTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3Jt
RXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudDo6V2ViS2l0MlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVu
dCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5p
dGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwogMjAxMS0xMi0x
NSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyB0byB0aGUgdGlsZWQgQ29yZSBBbmlt
YXRpb24gZHJhd2luZyBhcmVhCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRD
b252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZl
bnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIwICszNCwy
NyBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50IDogcHVibGljCiBwdWJsaWM6CiAg
ICAgV2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiB3ZWJFdmVu
dCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgc3dpdGNoICh3ZWJF
dmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgotICAgICAg
ICAgICAgbV9ldmVudFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2ZW50UHJlc3NlZDsKKyAgICAgICAg
ICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZVVwOgotICAgICAgICAg
ICAgbV9ldmVudFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgICAg
ICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlTW92ZToKLSAgICAgICAg
ICAgIG1fZXZlbnRUeXBlID0gV2ViQ29yZTo6TW91c2VFdmVudE1vdmVkOworICAgICAgICAgICAg
bV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KIAorICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXko
KTsKKyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAgICAgICBt
X2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVu
dC5tZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1Nb3VzZUV2ZW50CiAgICAgICAgIHN3
aXRjaCAod2ViRXZlbnQuYnV0dG9uKCkpIHsKICAgICAgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpO
b0J1dHRvbjoKICAgICAgICAgICAgIG1fYnV0dG9uID0gV2ViQ29yZTo6Tm9CdXR0b247CkBAIC02
OSwxMCArNzYsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSB3ZWJFdmVu
dC5nbG9iYWxQb3NpdGlvbigpOwogICAgICAgICBtX2NsaWNrQ291bnQgPSB3ZWJFdmVudC5jbGlj
a0NvdW50KCk7CiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7Ci0g
ICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxL
ZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQu
YWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKIAogICAg
ICAgICBtX21vZGlmaWVyRmxhZ3MgPSAwOwogICAgICAgICBpZiAobV9zaGlmdEtleSkKQEAgLTk5
LDYgKzEwMiwxNCBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50IDogcHVibGljCiBw
dWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50
JiB3ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKKyAgICAgICAgbV90
eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CisgICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVu
dC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7
CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7CisgICAgICAgIG1fbWV0YUtl
eSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQK
ICAgICAgICAgbV9wb3NpdGlvbiA9IHdlYkV2ZW50LnBvc2l0aW9uKCk7CiAgICAgICAgIG1fZ2xv
YmFsUG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAgICAgICBtX2RlbHRh
WCA9IHdlYkV2ZW50LmRlbHRhKCkud2lkdGgoKTsKQEAgLTEwNiwxMCArMTE3LDYgQEAgcHVibGlj
OgogICAgICAgICBtX3doZWVsVGlja3NYID0gd2ViRXZlbnQud2hlZWxUaWNrcygpLndpZHRoKCk7
CiAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSB3ZWJFdmVudC53aGVlbFRpY2tzKCkuaGVpZ2h0KCk7
CiAgICAgICAgIG1fZ3JhbnVsYXJpdHkgPSAod2ViRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBXZWJX
aGVlbEV2ZW50OjpTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSA/IFdlYkNvcmU6OlNjcm9sbEJ5UGFn
ZVdoZWVsRXZlbnQgOiBXZWJDb3JlOjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsKLSAgICAgICAg
bV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdl
YkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXko
KTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOwogICAgICAgICBtX2Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZSA9IHdlYkV2ZW50LmRpcmVjdGlvbkludmVydGVkRnJv
bURldmljZSgpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgbV9waGFzZSA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPih3ZWJFdmVudC5waGFzZSgpKTsK
QEAgLTEyOSwyMiArMTM2LDMwIEBAIGNsYXNzIFdlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
OiBwdWIKIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVu
dAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkV2
ZW50OjpLZXlEb3duOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlEb3duOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6
S2V5RG93bjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpLZXlV
cDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA7Cisg
ICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpLZXlVcDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpSYXdLZXlEb3duOgotICAgICAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duOworICAgICAg
ICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpDaGFyOgotICAgICAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOworICAgICAgICAgICAgbV90eXBl
ID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q2hhcjsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KKworICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKKyAgICAgICAg
bV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAgICAgICBtX2FsdEtleSA9IHdl
YkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7
CisKKyAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50CiAgICAgICAgIG1fdGV4dCA9IHdl
YkV2ZW50LnRleHQoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IHdlYkV2ZW50LnVubW9k
aWZpZWRUZXh0KCk7CiAgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IHdlYkV2ZW50LmtleUlkZW50
aWZpZXIoKTsKQEAgLTE1MiwxMCArMTY3LDYgQEAgcHVibGljOgogICAgICAgICBtX25hdGl2ZVZp
cnR1YWxLZXlDb2RlID0gd2ViRXZlbnQubmF0aXZlVmlydHVhbEtleUNvZGUoKTsKICAgICAgICAg
bV9hdXRvUmVwZWF0ID0gd2ViRXZlbnQuaXNBdXRvUmVwZWF0KCk7CiAgICAgICAgIG1faXNLZXlw
YWQgPSB3ZWJFdmVudC5pc0tleXBhZCgpOwotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQu
c2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwot
ICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX21ldGFLZXkg
PSB3ZWJFdmVudC5tZXRhS2V5KCk7CiAgICAgICAgIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIG1faXNTeXN0ZW1LZXkgYXZhaWxhYmxlIChhbmQg
ZmFsc2UpIG9uIGFsbCBwbGF0Zm9ybXMKQEAgLTE3NSwyMCArMTg2LDI3IEBAIGNsYXNzIFdlYktp
dDJQbGF0Zm9ybUdlc3R1cmVFdmVudCA6IHB1YmwKIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZv
cm1HZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiB3ZWJFdmVudCkKICAgICB7Cisg
ICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkp
IHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgotICAgICAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZTsKKyAgICAg
ICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdp
bjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpHZXN0dXJlU2Ny
b2xsRW5kOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEVuZFR5cGU7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZl
bnQ6Okdlc3R1cmVTaW5nbGVUYXA6Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6VGFwVHlwZTsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6Okdlc3R1cmVUYXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKKyAgICAgICAg
bV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7CisgICAgICAgIG1fY3RybEtleSA9IHdl
YkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXko
KTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworCisgICAgICAgIC8v
IFBsYXRmb3JtR2VzdHVyZUV2ZW50CiAgICAgICAgIG1fcG9zaXRpb24gPSB3ZWJFdmVudC5wb3Np
dGlvbigpOwogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2ViRXZlbnQuZ2xvYmFsUG9zaXRp
b24oKTsKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2LDcgKzcwNiw3IEBACiAJCUJDQTBF
RjlGMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY5RDEyMzMyNjQyMDA3RDND
RkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oICovOyB9OwogCQlCQ0EwRUZBMDEyMzMyNjQyMDA3
RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY5RTEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRp
dENvbW1hbmRQcm94eS5jcHAgKi87IH07CiAJCUJDQTI4NEQ2MTQ5MkYyQzcwMDFGOTA0MiAvKiBX
S0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0EyODRENDE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLm1tICovOyB9Owot
CQlCQ0EyODRENzE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyODRENTE0OTJGMkM3MDAxRjkw
NDIgLyogV0tDb25uZWN0aW9uLmggKi87IH07CisJCUJDQTI4NEQ3MTQ5MkYyQzcwMDFGOTA0MiAv
KiBXS0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQTI4NEQ1MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDQTU2QTFDMTJGOTAy
OEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2QTFBMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJH
cmFwaGljc0NvbnRleHQuaCAqLzsgfTsKIAkJQkNBNTZBMUQxMkY5MDI4RTAwQzU2NkM3IC8qIFdl
YkdyYXBoaWNzQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0E1NkExQjEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3JhcGhpY3NDb250ZXh0
LmNwcCAqLzsgfTsKIAkJQkNBNTZBNjUxMkY5QzhGOTAwQzU2NkM3IC8qIFdLR3JhcGhpY3NDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E1
NkE2MzEyRjlDOEY5MDBDNTY2QzcgLyogV0tHcmFwaGljc0NvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9X
ZWJFZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5k
bGVLZXlib2FyZEV2ZW4KICAgICAgICAgLy8gRHVyaW5nIFJhd0tleURvd24gZXZlbnRzIGlmIGFu
IGVkaXRvciBjb21tYW5kIHdpbGwgaW5zZXJ0IHRleHQsIGRlZmVyCiAgICAgICAgIC8vIHRoZSBp
bnNlcnRpb24gdW50aWwgdGhlIGtleXByZXNzIGV2ZW50LiBXZSB3YW50IGtleWRvd24gdG8gYnVi
YmxlIHVwCiAgICAgICAgIC8vIHRocm91Z2ggdGhlIERPTSBmaXJzdC4KLSAgICAgICAgaWYgKHBs
YXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24p
IHsKKyAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpS
YXdLZXlEb3duKSB7CiAgICAgICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5k
cyhmcmFtZSwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLCBmYWxzZSkpCiAgICAgICAgICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE4Myw4ICsxMTgzLDggQEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBX
ZWJNbwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtTW91c2VFdmVudCA9IHBsYXRm
b3JtKG1vdXNlRXZlbnQpOwogCi0gICAgc3dpdGNoIChwbGF0Zm9ybU1vdXNlRXZlbnQuZXZlbnRU
eXBlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UHJlc3NlZDoKKyAgICBz
d2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZVByZXNzZWQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpc0NvbnRl
eHRDbGljayhwbGF0Zm9ybU1vdXNlRXZlbnQpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmNvbnRl
eHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CkBAIC0xMTk1LDkgKzExOTUs
OSBAQCBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vCiAKICAgICAgICAg
ICAgIHJldHVybiBoYW5kbGVkOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6TW91
c2VFdmVudFJlbGVhc2VkOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFz
ZWQ6CiAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3Vz
ZVJlbGVhc2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAgICAgICBjYXNlIFdlYkNvcmU6
Ok1vdXNlRXZlbnRNb3ZlZDoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVk
OgogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3ZlZChw
bGF0Zm9ybU1vdXNlRXZlbnQsIG9ubHlVcGRhdGVTY3JvbGxiYXJzKTsKIAogICAgICAgICBkZWZh
dWx0OgpAQCAtMTUzMiw3ICsxNTMyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMo
Ym9vbCBmb3J3YQogCiAgICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2ZW50LnR5cGUo
KSA9PSBXZWJFdmVudDo6S2V5RG93bikgewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
cGxhdGZvcm1FdmVudChwbGF0Zm9ybShldmVudCkpOwotICAgICAgICBwbGF0Zm9ybUV2ZW50LmRp
c2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24p
OworICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0Rp
cmVjdGlvbkJhY2t3YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZnJh
bWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE5MDMsNyArMTkwMyw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tl
eWJvYXJkRXZlbnQKIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOwogCi0gICAgaWYgKGtleUV2ZW50
LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYg
KGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAg
ICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRv
IGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZp
YSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVw
b24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRo
YXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAg
ICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRl
cikuCkBAIC0yMDUxLDcgKzIwNTEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3Jl
OjpJbnRQb2luCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6
IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJl
YWwgb25lcyBpbnN0ZWFkLgotICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChhZGp1c3RlZENs
aWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBNb3VzZUV2
ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsK
KyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoYWRqdXN0ZWRDbGllbnRQb3NpdGlvbiwgYWRq
dXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3Zl
ZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwogICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChldmVu
dCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBXZWJQYWdlOjpl
eGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludAogICAgICAgICAgICAgICAgIGJvb2wgY29tbWFuZEV4
ZWN1dGVkQnlFZGl0b3IgPSBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpOwogICAgICAgICAgICAgICAg
IGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kRXhlY3V0ZWRCeUVkaXRvcjsKICAgICAgICAgICAg
ICAgICBpZiAoIWNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJvb2wgcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2aW9yID0gZXZlbnQtPmtleUV2ZW50KCktPnR5
cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24gJiYgcGVyZm9ybU5vbkVk
aXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgYm9vbCBwZXJmb3JtZWROb25FZGl0aW5nQmVoYXZpb3IgPSBldmVudC0+
a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gJiYgcGVyZm9y
bU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKTsK
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IHBlcmZvcm1lZE5vbkVkaXRp
bmdCZWhhdmlvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAt
MjA5LDcgKzIwOSw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQK
ICAgICAgICAgfQogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGV4dCBpbnNlcnRpb24gY29t
bWFuZHMsIGRlZmF1bHQga2V5ZG93biBoYW5kbGVyIGlzIHRoZSByaWdodCB0aW1lIHRvIGV4ZWN1
dGUgdGhlIGNvbW1hbmRzLgogICAgICAgICAvLyBLZXlwcmVzcyAoQ2hhciBldmVudCkgaGFuZGxl
ciBpcyB0aGUgbGF0ZXN0IG9wcG9ydHVuaXR5IHRvIGV4ZWN1dGUuCi0gICAgICAgIGlmICghaGF2
ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpDaGFyKSB7CisgICAgICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25D
b21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikg
ewogICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkID0gZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJ
bnRlcm5hbChldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLCBldmVudCk7CiAgICAgICAgICAgICBl
dmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmNsZWFyKCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDExLTEy
LTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9y
bUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudEltcGw6OmludGVycHJldEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
RWRpdG9yQ2xpZW50SW1wbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAgICAq
IHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6a2V5Ym9hcmRTaG9ydGN1dCk6CisgICAgICAgICogc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Nb3VzZUV2
ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2Vz
dHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OnRvUGxhdGZvcm1LZXlib2FyZEV2
ZW50VHlwZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKiB0ZXN0cy9LZXli
b2FyZFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6OmludGVycHJldEtl
eUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXRPU01vZGlm
aWVyS2V5UHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6OmludGVycHJldEN0
cmxLZXlQcmVzcyk6CisgICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVzdDo6aW50ZXJwcmV0VGFi
KToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXROZXdMaW5lKToKKyAg
ICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9Qb3B1cE1lbnVUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6c2ltdWxhdGVMZWZ0TW91
c2VEb3duRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0OjpzaW11
bGF0ZUxlZnRNb3VzZVVwRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDEx
LTEyLTE1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21p
dW0gV2luZG93cyAoVGVzdHMpIGlzIGZhaWxpbmcgdG8gYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMDI5
NjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVu
dEltcGw6OmludGVycHJldEsKICAgICBpZiAoa2V5RXZlbnQtPm1ldGFLZXkoKSkKICAgICAgICAg
bW9kaWZpZXJzIHw9IE1ldGFLZXk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIGludCBtYXBLZXkgPSBt
b2RpZmllcnMgPDwgMTYgfCBldnQtPmtleUNvZGUoKTsKICAgICAgICAgcmV0dXJuIG1hcEtleSA/
IGtleURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOwogICAgIH0KQEAgLTU2Nyw3ICs1
NjcsNyBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmhhbmRsZUVkaXRpbmdLZXliCiAgICAgU3Ry
aW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KTsKICAgICBFZGl0b3I6OkNv
bW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSk7CiAK
LSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tl
eURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0
aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdwogICAgICAgICAvLyBjb21tYW5kcyB0aGF0IGp1
c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwK
ICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUg
dGhlbSBpbW1lZGlhdGVseQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjYsMTMgKzU2NiwxMyBAQCBXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdDo6a2V5Ym9hCiAgICAgICAgIC8vIEZvbGxvdyB0aGUgc2FtZSBvcmRlciBhcyBNb3pp
bGxhIE1TQUEgaW1wbGVtZW50YXRpb246CiAgICAgICAgIC8vIEN0cmwrQWx0K1NoaWZ0K01ldGEr
a2V5LiBNU0ROIHN0YXRlcyB0aGF0IGtleWJvYXJkIHNob3J0Y3V0IHN0cmluZ3MKICAgICAgICAg
Ly8gc2hvdWxkIG5vdCBiZSBsb2NhbGl6ZWQgYW5kIGRlZmluZXMgdGhlIHNlcGFyYXRvciBhcyAi
KyIuCi0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxL
ZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5KQogICAg
ICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIkN0cmwrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVy
cyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5KQorICAgICAgICBpZiAobW9kaWZpZXJz
ICYgUGxhdGZvcm1FdmVudDo6QWx0S2V5KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0g
IkFsdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpT
aGlmdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5
KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIlNoaWZ0KyI7Ci0gICAgICAgIGlmICht
b2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Ok1ldGFLZXkpCisgICAgICAgIGlmICht
b2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5KQogICAgICAgICAgICAgbW9kaWZpZXJT
dHJpbmcgKz0gIldpbisiOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMTAy
OTY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxNSArNzUsMTUgQEAgUGxhdGZvcm1Nb3VzZUV2
ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZQogICAgIHN3aXRjaCAoZS50eXBlKSB7CiAgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3Vz
ZUxlYXZlOiAgLy8gc3ludGhlc2l6ZSBhIG1vdmUgZXZlbnQKLSAgICAgICAgbV9ldmVudFR5cGUg
PSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZURv
d246Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgIG1f
dHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91
c2VFdmVudFJlbGVhc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJl
bGVhc2VkOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBAIC0xMDMsNiArMTAzLDgg
QEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbAogICAgIG1fd2hlZWxU
aWNrc1kgPSBlLndoZWVsVGlja3NZOwogICAgIG1fZ3JhbnVsYXJpdHkgPSBlLnNjcm9sbEJ5UGFn
ZSA/CiAgICAgICAgIFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgOiBTY3JvbGxCeVBpeGVsV2hlZWxF
dmVudDsKKyAgICAKKyAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKICAgICBtX3No
aWZ0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpOwogICAgIG1f
Y3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwogICAg
IG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKQEAgLTEy
MiwxNiArMTI0LDE2IEBAIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXMK
IHsKICAgICBzd2l0Y2ggKGUudHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEJlZ2luOgotICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Ny
b2xsQmVnaW5UeXBlOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Ny
b2xsQmVnaW47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEVuZDoKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEVuZFR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxF
bmQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bFVwZGF0ZToKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVw
ZGF0ZVR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxV
cGRhdGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRh
cDoKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU7CisgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTUwLDIxICsx
NTIsMjEgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlcwogCiAvLyBN
YWtlUGxhdGZvcm1LZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpUeXBlIHRvUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1dEV2ZW50OjpUeXBlIHR5
cGUpCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRUeXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleVVwOgotICAgICAgICByZXR1cm4gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Oktl
eVVwOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6S2V5RG93bjoKLSAgICAgICAgcmV0dXJuIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZl
bnQ6OktleURvd247CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOgotICAgICAg
ICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duOworICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bjsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNo
YXI6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpDaGFyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlEb3duOworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogfQogCiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmIGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMDUsNyArMjIw
NSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KAogewogICAgIFBsYXRm
b3JtTW91c2VFdmVudCBwbWUoY2xpZW50UG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzY3JlZW5Qb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sIE1v
dXNlRXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgMCk7CiAg
ICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0
KHBtZSwKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9uKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LZXlib2FyZFRlc3QuY3BwCShy
ZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tleWJvYXJk
VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIC8v
IEUuZy4sIHNlbmRpbmcgaW4gdGhlIGVudGVyIGtleSBnaXZlcyBiYWNrICJJbnNlcnROZXdsaW5l
Ii4KICAgICBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudCgKICAgICAgICAgY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgd2ViS2V5Ym9hcmRFdmVudCwKLSAgICAgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpUeXBlIGtleVR5cGUpCisgICAgICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUga2V5VHlw
ZSkKICAgICB7CiAgICAgICAgIEVkaXRvckNsaWVudEltcGwgZWRpdG9ySW1wbCgwKTsKICAgICAg
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlciBldnQod2ViS2V5Ym9hcmRFdmVudCk7CkBA
IC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViSW5wdXRFdmVudDo6TW9kaWZpZXJz
IG9zTW9kaWZpZXIgPSBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5OwogI2VuZGlmCiAgICAgICAg
IHNldHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCBrZXlDb2RlLCBvc01vZGlmaWVyKTsK
LSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlF
dmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICB9CiAK
ICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCBwcmVzc2luZyBkb3duIGN0
cmwrfGtleUNvZGV8LgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBX
ZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQ7CiAgICAgICAgIHNldHVwS2V5RG93bkV2ZW50
KCZrZXlib2FyZEV2ZW50LCBrZXlDb2RlLCBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKLSAg
ICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVu
dChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICB9CiAKICAg
ICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCB0eXBpbmcgYSB0YWIuCkBAIC0x
MDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV2ViS2V5Ym9hcmRFdmVudCBr
ZXlib2FyZEV2ZW50OwogICAgICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwg
J1x0JywgbW9kaWZpZXJzKTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJv
YXJkRXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7CisgICAgICAgIHJldHVybiBp
bnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpDaGFyKTsKICAg
ICB9CiAKICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCB0eXBpbmcgYSBu
ZXdsaW5lLgpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYktl
eWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKICAgICAgICAgc2V0dXBLZXlEb3duRXZlbnQoJmtl
eWJvYXJkRXZlbnQsICdccicsIG1vZGlmaWVycyk7Ci0gICAgICAgIHJldHVybiBpbnRlcnByZXRL
ZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpOworICAg
ICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1FdmVu
dDo6Q2hhcik7CiAgICAgfQogCiAgICAgLy8gQSBuYW1lIGZvciAibm8gbW9kaWZpZXJzIHNldCIu
CkBAIC0xNjksNyArMTY5LDcgQEAgVEVTVF9GKEtleWJvYXJkVGVzdCwgVGVzdEVzY2FwZSkKICAg
ICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwgV2ViQ29yZTo6VktFWV9FU0NBUEUs
IG5vTW9kaWZpZXJzKTsKIAogICAgIGNvbnN0IGNoYXIqIHJlc3VsdCA9IGludGVycHJldEtleUV2
ZW50KGtleWJvYXJkRXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsK
ICAgICBFWFBFQ1RfU1RSRVEoIkNhbmNlbCIsIHJlc3VsdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAkocmV2aXNpb24gMTAy
OTY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM1LDEzICsyMzUsMTMgQEAgcHJvdGVjdGVkOgogICAgIC8vIFNp
bXVsYXRlcyBhIG1vdXNlIGV2ZW50IG9uIHRoZSBzZWxlY3QgcG9wdXAuCiAgICAgdm9pZCBzaW11
bGF0ZUxlZnRNb3VzZURvd25FdmVudChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgewotICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0
b24sIE1vdXNlRXZlbnRQcmVzc2VkLAorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VF
dmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3Nl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIDApOwogICAgICAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhh
bmRsZU1vdXNlRG93bkV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KICAgICB2b2lkIHNpbXVsYXRl
TGVmdE1vdXNlVXBFdmVudChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgewotICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0b24sIE1v
dXNlRXZlbnRSZWxlYXNlZCwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQo
cG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgMCk7CiAgICAgICAgIG1fd2ViVmlldy0+c2VsZWN0UG9wdXAoKS0+aGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudCk7CiAgICAgfQpAQCAtMzczLDcgKzM3Myw3IEBA
IFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBNb3VzZU92ZXJJdGUKICAgICAvLyBZIG9mIDE4
IHRvIGJlIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEgKDEyIGZvbnQgcGx1cyBib3JkZXIgYW5kIG1v
cmUgdG8gYmUgc2FmZSkuCiAgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIDE4KTsKICAgICAvLyBT
aW11bGF0ZSB0aGUgbW91c2UgbW92aW5nIG92ZXIgdGhlIGZpcnN0IGl0ZW0uCi0gICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocm93MVBvaW50LCByb3cxUG9pbnQsIE5vQnV0dG9uLCBN
b3VzZUV2ZW50TW92ZWQsCisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocm93MVBv
aW50LCByb3cxUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAwKTsKICAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlTW92ZUV2
ZW50KG1vdXNlRXZlbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwMjMp
CisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGlu
Z0tleWJvYXJkRXZlbnQpOgorCiAyMDExLTEyLTE1ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxr
dWJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIENsZWFuIHVwIGFuZCByZWZhY3Rv
ciB0aGUgbWVtb3J5IGNhY2hlIGZ1bmN0aW9ucyBpbiBld2tfc2V0dGluZ3MuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBi
b29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvCiAKICAgICBFZGl0b3I6OkNv
bW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVu
dChldmVudCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVu
b3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBq
dXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQs
CiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxl
IHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEg
a2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGlu
c2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKToKKwogMjAxMS0x
Mi0xNCAgSmluZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5p
bmcgdHdvIHBvcHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDcgKzUw
Miw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEsKICAgICAgICAg
Ly8gRHVyaW5nIFJhd0tleURvd24gZXZlbnRzIGlmIGFuIGVkaXRvciBjb21tYW5kIHdpbGwgaW5z
ZXJ0IHRleHQsIGRlZmVyCiAgICAgICAgIC8vIHRoZSBpbnNlcnRpb24gdW50aWwgdGhlIGtleXBy
ZXNzIGV2ZW50LiBXZSB3YW50IGtleWRvd24gdG8gYnViYmxlIHVwCiAgICAgICAgIC8vIHRocm91
Z2ggdGhlIERPTSBmaXJzdC4KLSAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICAgICAgaWYgKHBsYXRmb3Jt
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgICAg
ICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZmFsc2UpKQogICAgICAg
ICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3BvcHVw
X21lCiAgICAgbG9jYXRpb24uc2hydW5rVG8oSW50UG9pbnQodmlldy0+d2lkdGgoKSAtIGdDb250
ZXh0TWVudU1hcmdpbiwgdmlldy0+aGVpZ2h0KCkgLSBnQ29udGV4dE1lbnVNYXJnaW4pKTsKIAog
ICAgIEludFBvaW50IGdsb2JhbFBvaW50KGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQo
d2lkZ2V0LCBsb2NhdGlvbikpOwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlv
biwgZ2xvYmFsUG9pbnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworICAg
IFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xvYmFsUG9pbnQsIFJpZ2h0QnV0
dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKICAgICByZXR1cm4gd2Via2l0
X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdFQktJVF9XRUJfVklFVyh3aWRn
ZXQpLCBldmVudCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyMykK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfZHJhZ1NvdXJjZUVuZGVkQXQ6b3BlcmF0aW9uOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjdXJyZW50S2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9pbnRlcnByZXRLZXlFdmVudDpzYXZpbmdDb21tYW5k
czpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBE
RlZpZXcgUERGVmlld1dpbGxDbGlja09uTGluazp3aXRoVVJMOl0pOgorCiAyMDExLTEyLTE0ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXgg
YWZ0ZXIgcjEwMjg3NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQko
cmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtODExLDcgKzgxMSw3IEBAIC0gKHZvaWQpX2RyYWdTb3VyY2VF
bmRlZEF0OihOU1BvaW50KXdpbmQKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBUaGVz
ZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9u
ZXMgaW5zdGVhZC4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoSW50UG9pbnQod2luZG93
TG9jKSwgZ2xvYmFsUG9pbnQod2luZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5k
b3ddKSwKLSAgICAgICAgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CisgICAgICAgIExlZnRCdXR0b24sIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBj
dXJyZW50VGltZSgpKTsKICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
ZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbik7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzczOSw3ICszNzM5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9h
cmRFdmVudD4gY3VycmVudAogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAgICAgY2FzZSBO
U0tleURvd246IHsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQo
ZXZlbnQpOwotICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICBwbGF0Zm9ybUV2ZW50
LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAg
ICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3JlRnJh
bWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIH0KICAgICBjYXNlIE5TS2V5VXA6
CkBAIC01MzgxLDcgKzUzODEsNyBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooS2V5Ym9h
cmRFdmVuCiAgICAgICAgIH0KICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0
aW9uIGNvbW1hbmRzLCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0
byBleGVjdXRlIHRoZSBjb21tYW5kcy4KICAgICAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQp
IGhhbmRsZXIgaXMgdGhlIGxhdGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgotICAgICAgICBp
ZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikKKyAgICAgICAgaWYgKCFoYXZlVGV4dEluc2Vy
dGlvbkNvbW1hbmRzIHx8IHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpD
aGFyKQogICAgICAgICAgICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEtleXByZXNzQ29tbWFuZHNdOwog
ICAgIH0KICAgICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCShyZXZpc2lvbiAxMDI5
NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTk2MCw3ICs5NjAsNyBAQCAtICh2b2lkKVBERlZpZXdXaWxsQ2xpY2tPbkxpbms6
KFBERlZpZXcgCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOU0tleURvd246IHsK
ICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZShuc0V2ZW50KTsKLSAgICAgICAg
ICAgIHBlLmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJh
d0tleURvd24pOworICAgICAgICAgICAgcGUuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICAgICAgZXZlbnQgPSBLZXlib2FyZEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgdHJ1ZSwgdHJ1ZSwgMCwKICAgICAg
ICAgICAgICAgICBwZS5rZXlJZGVudGlmaWVyKCksIHBlLndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgp
LAogICAgICAgICAgICAgICAgIHBlLmN0cmxLZXkoKSwgcGUuYWx0S2V5KCksIHBlLnNoaWZ0S2V5
KCksIHBlLm1ldGFLZXkoKSwgZmFsc2UpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEw
MzAyMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDExLTEyLTE0
ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAg
ICBbUXRdIEdldCByaWQgb2YgbGF5ZXJpbmcgdmlvbGF0aW9uIGluIFBsdWdpblZpZXdRdApJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNw
cAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBE
cmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZQogICAgICAgICBRdDo6RHJvcEFjdGlv
biBhY3R1YWxEcm9wQWN0aW9uID0gZHJhZy0+ZXhlYyhkcmFnT3BlcmF0aW9uc1RvRHJvcEFjdGlv
bnMoZHJhZ09wZXJhdGlvbk1hc2spKTsKIAogICAgICAgICAvLyBTZW5kIGRyYWdFbmQgZXZlbnQK
LSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygpLT5tYXBGcm9t
R2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0b24sIE1vdXNl
RXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgbWUobV93ZWJQYWdlLT52aWV3KCktPm1hcEZyb21HbG9iYWwoUUN1
cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgICAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KG1lLCBkcm9wQWN0aW9uVG9E
cmFnT3BlcmF0aW9uKGFjdHVhbERyb3BBY3Rpb24pKTsKICAgICB9CiAgICAgZnJhbWUtPnBhZ2Uo
KS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VuZGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTAy
OTY4KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0
OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCoga2V2ZW50ID0gZXZlbnQtPmtleUV2ZW50KCk7Ci0gICAgaWYgKCFr
ZXZlbnQgfHwga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCkK
KyAgICBpZiAoIWtldmVudCB8fCBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlV
cCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9u
KCktPnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKICAgICAgICAgICAgIC8vIHNvIHdlIGxl
YXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUu
Zy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2Vu
ZXJhdGVkCiAgICAgICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJh
Y3Rlciwgb3IgRW50ZXIpLgogICAgICAgICAgICAgaWYgKGNtZCAmJiBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQotICAgICAgICAgICAgICAgICYmIGtldmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAg
ICAgICAgICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgbV9wYWdlLT50cmlnZ2VyQWN0
aW9uKGFjdGlvbik7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFu
ZGxlS2V5Ym9hcmRFdmVudAogCiAgICAgICAgICAgICAvLyBUZXh0IGluc2VydGlvbi4KICAgICAg
ICAgICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKGtl
dmVudC0+dHlwZSgpICE9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiAha2V2ZW50
LT50ZXh0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkgIT0g
UGxhdGZvcm1FdmVudDo6S2V5RG93biAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7CiAK
ICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGtldmVudC0+YWx0S2V5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuY3Bw
OgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NLZXlib2FyZFNob3J0Y3V0KToKKyAg
ICAgICAgKiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKGdlbmVyYXRlTW91c2VFdmVudCk6
CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjprZXlVcCk6CisgICAg
ICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJW
aWV3OjprZXlEb3duKToKKyAgICAgICAgKFdlYlZpZXc6OmtleVByZXNzKToKKwogMjAxMS0xMi0x
NCAgSmluZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcg
dHdvIHBvcHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJhc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVy
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtMzY2LDEzICszNjYsMTMgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZQogICAgICAgICAvLyBGb2xsb3cgdGhlIHNhbWUgb3Jk
ZXIgYXMgTW96aWxsYSBNU0FBIGltcGxlbWVudGF0aW9uOgogICAgICAgICAvLyBDdHJsK0FsdCtT
aGlmdCtNZXRhK2tleS4gTVNETiBzdGF0ZXMgdGhhdCBrZXlib2FyZCBzaG9ydGN1dCBzdHJpbmdz
CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgbG9jYWxpemVkIGFuZCBkZWZpbmVzIHRoZSBzZXBh
cmF0b3IgYXMgIisiLgotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpDdHJsS2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6Q3Ry
bEtleSkKICAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVycyArPSAiQ3RybCsiOwotICAgICAg
ICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXkpCisgICAgICAg
IGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXkpCiAgICAgICAgICAgICBhY2Nl
c3NLZXlNb2RpZmllcnMgKz0gIkFsdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRm
b3JtRXZlbnQ6OlNoaWZ0S2V5KQogICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJT
aGlmdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpN
ZXRhS2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6TWV0YUtleSkK
ICAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVycyArPSAiV2luKyI7CiAgICAgfQogICAgICpz
aG9ydGN1dCA9IEJTdHJpbmcoU3RyaW5nKGFjY2Vzc0tleU1vZGlmaWVycyArIGFjY2Vzc0tleSkp
LnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lv
biAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNyArOTMsOCBAQCBTVERNRVRIT0RJTVBfKFVMT05HKSBXZWJEcm9wU291
cmNlOjpSZWxlCiAgICAgcmV0dXJuIGM7CiB9CiAKLVBsYXRmb3JtTW91c2VFdmVudCBnZW5lcmF0
ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9vbCBpc0RyYWcpIHsKK1BsYXRmb3JtTW91
c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9vbCBpc0RyYWcp
Cit7CiAgICAgUE9JTlRMIHB0OwogICAgIDo6R2V0Q3Vyc29yUG9zKChMUFBPSU5UKSZwdCk7CiAg
ICAgUE9JTlRMIGxvY2FscHQgPSBwdDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBQbGF0Zm9ybU1vdXNl
RXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlCiAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT52
aWV3V2luZG93KChPTEVfSEFORExFKikmdmlld1dpbmRvdykpKQogICAgICAgICA6OlNjcmVlblRv
Q2xpZW50KHZpZXdXaW5kb3csIChMUFBPSU5UKSZsb2NhbHB0KTsKICAgICByZXR1cm4gUGxhdGZv
cm1Nb3VzZUV2ZW50KEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgSW50UG9pbnQocHQu
eCwgcHQueSksCi0gICAgICAgIGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRvbiwgTW91c2VF
dmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7
CisgICAgICAgIGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkp
OwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlDb250aW51ZURyYWcoQk9P
TCBmRXNjYXBlUHJlc3NlZCwgRFdPUkQgZ3JmS2V5U3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MTMsNyArMTgxMyw3IEBAIGJvb2wgV2ViVmlldzo6ZXhlY0Nv
bW1hbmQoV1BBUkFNIHdQYXJhbSwKIAogYm9vbCBXZWJWaWV3OjprZXlVcChXUEFSQU0gdmlydHVh
bEtleUNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCiB7Ci0gICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtleUNvZGUs
IGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAsIHN5c3RlbUtleURvd24pOwor
ICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3csIHZpcnR1YWxL
ZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7CiAK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBtX2N1cnJlbnRDaGFyYWN0ZXJDb2RlID0gMDsKQEAgLTE5NTUsNyAr
MTk1NSw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQKIAogICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVy
cHJldEtleUV2ZW50KGV2dCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24n
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFu
ZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJl
IHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRo
ZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykg
b3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRh
YiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkBAIC0xOTgzLDcgKzE5
ODMsNyBAQCBib29sIFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDCiAjZW5kaWYK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdX
aW5kb3csIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJh
d0tleURvd24sIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlF
dmVudChtX3ZpZXdXaW5kb3csIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duLCBzeXN0ZW1LZXlEb3duKTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGtleUV2ZW50KTsKIAogICAgIC8vIFRoZXNlIGV2ZW50
cyBjYW5ub3QgYmUgY2FuY2VsZWQsIGFuZCB3ZSBoYXZlIG5vIGRlZmF1bHQgaGFuZGxpbmcgZm9y
IHRoZW0uCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBib29sIFdlYlZpZXc6OmtleVByZXNzKFdQQVJB
TSBjaGFyQ29kZSwgCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
a2V5RXZlbnQobV92aWV3V2luZG93LCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpDaGFyLCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
a2V5RXZlbnQobV92aWV3V2luZG93LCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6
Q2hhciwgc3lzdGVtS2V5RG93bik7CiAgICAgLy8gSUUgZG9lcyBub3QgZGlzcGF0Y2gga2V5cHJl
c3MgZXZlbnQgZm9yIFdNX1NZU0NIQVIuCiAgICAgaWYgKHN5c3RlbUtleURvd24pCiAgICAgICAg
IHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUFjY2Vzc0tleShrZXlFdmVudCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDIzKQorKysgU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
MS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxh
dGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGluZ0tleWJvYXJk
RXZlbnQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxl
S2V5RG93bik6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVLZXlQcmVzcyk6CisgICAgICAgIChX
ZWJWaWV3OjpoYW5kbGVLZXlVcCk6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNw
YXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAJ
KHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUtleURv
d24oV1BBUkFNIHZpcnR1CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOworICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUs
IGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOwogICAg
IGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5RXZlbnQp
OwogCiAgICAgLy8gVGhlc2UgZXZlbnRzIGNhbm5vdCBiZSBjYW5jZWxlZCwgYW5kIHdlIGhhdmUg
bm8gZGVmYXVsdCBoYW5kbGluZyBmb3IgdGhlbS4KQEAgLTM3MCw3ICszNzAsNyBAQCBib29sIFdl
YlZpZXc6OmhhbmRsZUtleVByZXNzKFdQQVJBTSBjaGFyCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIGNoYXJDb2RlLCBr
ZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOworICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgY2hhckNvZGUs
IGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOwogICAgIC8vIElF
IGRvZXMgbm90IGRpc3BhdGNoIGtleXByZXNzIGV2ZW50IGZvciBXTV9TWVNDSEFSLgogICAgIGlm
IChzeXN0ZW1LZXlEb3duKQogICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
YW5kbGVBY2Nlc3NLZXkoa2V5RXZlbnQpOwpAQCAtMzgyLDcgKzM4Miw3IEBAIGJvb2wgV2ViVmll
dzo6aGFuZGxlS2V5UHJlc3MoV1BBUkFNIGNoYXIKIAogYm9vbCBXZWJWaWV3OjpoYW5kbGVLZXlV
cChXUEFSQU0gdmlydHVhbEtleUNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURv
d24pCiB7Ci0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxl
LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCwg
c3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2lu
ZG93SGFuZGxlLCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6S2V5VXAs
IHN5c3RlbUtleURvd24pOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+a2V5RXZlbnQoa2V5RXZlbnQpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHJldmlz
aW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0LDcgQEAgYm9vbCBF
ZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGluZ0tleQogCiAgICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZl
bnQpKTsKIAotICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UmF3S2V5RG93bikgeworICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2gg
aW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBp
bnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAg
ICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVt
IGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXBy
ZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRz
IGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwMzAyMykKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9y
Q2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmhhbmRsZUVk
aXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4Ojpp
bnRlcnByZXRLZXlFdmVudCk6CisKIDIwMTEtMTItMTEgIFJvYmluIER1bm4gIDxyb2JpbkBhbGxk
dW5uLmNvbT4KIAogICAgICAgICBBZGQgYSBVUkwgYXJndW1lbnQgdG8gdGhlIHd4V2ViVmlldyBj
b25zdHJ1Y3RvciwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JD
bGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0VkaXRvckNsaWVudFd4LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkw
LDcgKzM5MCw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V3g6OmhhbmRsZUVkaXRpbmdLZXlib2EKIAog
ICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBk
b2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBj
b21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91
bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRv
IGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZv
Y3VzKSBvciBpZiBub3QgdG8gbGV0IGEgQ0hBUiBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAg
Ly8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KQEAg
LTQwOSw3ICs0MDksNyBAQCBib29sIEVkaXRvckNsaWVudFd4OjpoYW5kbGVFZGl0aW5nS2V5Ym9h
CiAKIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudFd4OjppbnRlcnByZXRLZXlFdmVudChjb25zdCBL
ZXlib2FyZEV2ZW50KiBldnQpCiB7Ci0gICAgQVNTRVJUKGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgp
ID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biB8fCBldnQtPmtleUV2ZW50KCkt
PnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpOworICAgIEFTU0VSVChldnQt
PmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duIHx8IGV2dC0+
a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpOwogCiAgICAgc3RhdGlj
IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5kc01hcCA9IDA7CiAgICAg
c3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleVByZXNzQ29tbWFuZHNNYXAgPSAw
OwpAQCAtNDMzLDcgKzQzMyw3IEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudFd4OjppbnRlcnBy
ZXRLZXkKICAgICBpZiAoZXZ0LT5jdHJsS2V5KCkpCiAgICAgICAgIG1vZGlmaWVycyB8PSBDdHJs
S2V5OwogCi0gICAgaWYgKGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIGludCBtYXBLZXkgPSBtb2Rp
ZmllcnMgPDwgMTYgfCBldnQtPmtleUNvZGUoKTsKICAgICAgICAgcmV0dXJuIG1hcEtleSA/IGtl
eURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119569</attachid>
            <date>2011-12-15 22:39:59 -0800</date>
            <delta_ts>2011-12-15 22:54:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111215223955.patch</filename>
            <type>text/plain</type>
            <size>154610</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRN
ZW51XSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorICAgICAgICAqIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICog
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycyk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL3d4L0V2ZW50SGFuZGxlcld4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Y3RybEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxhdGZvcm1F
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hl
ZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZvck5TRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXlwYWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0eXBl
RnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorCiAyMDExLTEyLTE1ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIHNpemVvZihSZW5kZXJPYmplY3QpIGlzIDMyIGlu
c3RlYWQgb2YgMjQgb24gV2luZG93cwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUyLDYgKzEwNTIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
TG9nZ2luZy5jcHAKICAgICBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKyAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50
LmNwcAogICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKICAgICBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTAyOTY4KQorKysg
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg3
Nyw2ICsyODc3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL05vdEltcGxlbWVudGVkLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtTW91c2VFdmVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTAyOTY4
KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTExNyw2
ICsxMTE3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwIFwKKyAgICBw
bGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcCBcCiAgICAgcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmNwcCBcCiAgICAgcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIFwKICAgICBw
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5n
IGNvcHkpCkBAIC02MDgsOCArNjA4LDggQEAgX19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZs
b2F0c0VmZmZmCiBfX1pON1dlYkNvcmUyMHByb3RvY29sSXNKYXZhU2NyaXB0RVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkK
IF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgotX19aTjdXZWJD
b3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0ZUtleURvd25FdmVudEVOUzBf
NFR5cGVFYgogX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQK
K19fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3du
RXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxv
YWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3Jp
dHlFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5T
dHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGll
bnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1lbnRFeHRl
bnNpb25zMjFzYW1wbGVBbmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0U1ZHU01J
TEVsZW1lbnRFZApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTAyOTY4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsNiArNjk1LDgg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUV2
ZW50LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjY2MzAsNiArMjY2MzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cUGxhdGZvcm1FdmVudC5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFBsYXRmb3JtRXZl
bnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MDcwLDYgKzUwNzAsOCBAQAogCQlC
QzVBODY4NTBDMzM2NzYwMDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVBODY4MjBDMzM2NzYwMDBFRUE2NDkg
LyogRE9NU2VsZWN0aW9uLmggKi87IH07CiAJCUJDNUE4NkI1MEMzMzY3RTgwMEVFQTY0OSAvKiBK
U0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzVBODZCMzBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uY3BwICov
OyB9OwogCQlCQzVBODZCNjBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4NkI0MEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oICovOyB9OworCQlCQzVDNzYyQTE0OTdGRTE0
MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVDNzYyODE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1F
dmVudC5jcHAgKi87IH07CisJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVD
NzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUNGQ0E5MTFGNzkzMzIwMDk5RUQw
OSAvKiBMb2NhbGl6YXRpb25TdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM1Q0ZDQTgxMUY3OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlv
blN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVFQjVEQTBFODFCN0VBMDBC
MjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQzVFQjVERDBFODFCOEREMDBCMjU5NjUgLyogT3V0bGluZVZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVFQjVE
QzBFODFCOEREMDBCMjU5NjUgLyogT3V0bGluZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMzkxLDYgKzEyMzkzLDggQEAKIAkJQkM1
QTg2ODMwQzMzNjc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTVNlbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNUE4NkIzMEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01TZWxlY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVBODZCNDBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01T
ZWxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NU2VsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUM3NjI4MTQ5N0ZFMTQwMEJD
NDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsYXRmb3JtRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDNUNGQ0E4MTFGNzkzMzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRpb25TdHJhdGVn
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGl6YXRpb25TdHJhdGVn
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVFQjVEQTBFODFCN0VBMDBCMjU5
NjUgLyogQm9yZGVyVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQm9y
ZGVyVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0JvcmRlclZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNUVCNURDMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT3V0bGluZVZhbHVlLmg7IHBhdGggPSBz
dHlsZS9PdXRsaW5lVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMjQ0
LDYgKzIwMjQ4LDggQEAKIAkJCQkxQUQ4RjgxQTExQ0FCOUU5MDBFOTNFNTQgLyogUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCAqLywKIAkJCQkxQUQ4RjgxOTExQ0FCOUU5MDBFOTNFNTQgLyogUGxhdGZv
cm1TdHJhdGVnaWVzLmggKi8sCiAJCQkJOTM1QzQ3NkEwOUFDNEQ0RjAwQTZBQUI0IC8qIFBsYXRm
b3JtV2hlZWxFdmVudC5oICovLAorCQkJCUJDNUM3NjI4MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0
Zm9ybUV2ZW50LmNwcCAqLywKKwkJCQlCQzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZv
cm1FdmVudC5oICovLAogCQkJCUJDQkI4QUI0MTNGMUFGQjAwMDczNERGMCAvKiBQT0RBcmVuYS5o
ICovLAogCQkJCUJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovLAog
CQkJCUJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLywKQEAg
LTI0ODU4LDYgKzI0ODY0LDcgQEAKIAkJCQlGMzVBRTVBQzE0OTI1RjVCMDA0RDU3NzYgLyogRE9N
V3JhcHBlclZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2QzE3QTNFMTQ5MUQyRDQwMEQx
MkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5
MzkxMDBGQjVCRDggLyogV2ViVGlsZUNhY2hlTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
NUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUVDRUI2ODE0OTk3OTBEMDBDREQzQTQgLyogRkVDb21wb3NpdGVB
cml0aG1ldGljTkVPTi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkExNDk5NzkwRDAwQ0RE
M0E0IC8qIEZFR2F1c3NpYW5CbHVyTkVPTi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc1MSw2ICsy
Nzc1OCw3IEBACiAJCQkJOEMxMDkxOTgxNDk0RkIxMjAwQjVEM0ZFIC8qIENTU0VsZW1lbnRTdHls
ZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdG
MTdBQyAvKiBLaWxsUmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBGQTQxNDk2
OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVDYWNoZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkM1Qzc2MkExNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlFQ0VCNjcxNDk5NzkwRDAwQ0REM0E0IC8qIEZFQ29tcG9zaXRlQXJpdGhtZXRp
Y05FT04uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNjkxNDk5NzkwRDAwQ0REM0E0IC8q
IEZFR2F1c3NpYW5CbHVyTkVPTi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVDRUI2QjE0OTk3
OTBEMDBDREQzQTQgLyogRkVMaWdodGluZ05FT04uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1OTAsNyArMjU5MCw3IEBAIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVNob3dDb250ZXh0TWVudQogICAgIC8vIFNpbXVsYXRlIGEgY2xpY2sgaW4gdGhlIG1p
ZGRsZSBvZiB0aGUgb2JqZWN0LgogICAgIExheW91dFBvaW50IGNsaWNrUG9pbnQgPSBtX29iamVj
dC0+Y2xpY2tQb2ludCgpOwogICAgIAotICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50
KGNsaWNrUG9pbnQsIGNsaWNrUG9pbnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwg
MSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRm
b3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KGNsaWNrUG9pbnQsIGNsaWNrUG9pbnQsIFJpZ2h0QnV0
dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmIChoYW5k
bGVkKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2hvd0NvbnRleHRNZW51KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4
ICszNCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlVcDoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpLZXlVcDoKICAgICAgICAgICAg
IHJldHVybiBldmVudE5hbWVzKCkua2V5dXBFdmVudDsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OlJhd0tleURvd246CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bjoKICAgICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50Owot
ICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjoKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpDaGFyOgogICAgICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5rZXlw
cmVzc0V2ZW50OwotICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjoK
KyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOgogICAgICAgICAgICAgLy8gVGhl
IGNhbGxlciBzaG91bGQgZGlzYW1iaWd1YXRlIHRoZSBjb21iaW5lZCBldmVudCBpbnRvIFJhd0tl
eURvd24gb3IgQ2hhciBldmVudHMuCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gZXZlbnROYW1lcygpLmtleWRvd25FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmll
dywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgaW50IGRldGFpbCwgUGFzc1JlZlB0
cjxOb2RlPiByZWxhdGVkVGFyZ2V0KQogewotICAgIEFTU0VSVChldmVudC5ldmVudFR5cGUoKSA9
PSBNb3VzZUV2ZW50TW92ZWQgfHwgZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0b24pOworICAgIEFT
U0VSVChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCB8fCBldmVudC5i
dXR0b24oKSAhPSBOb0J1dHRvbik7CiAKICAgICBib29sIGlzQ2FuY2VsYWJsZSA9IGV2ZW50VHlw
ZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZU1vdXNlRXZlCiAgICAgc2hpZnRLZXkg
PSBjdHJsS2V5ID0gYWx0S2V5ID0gbWV0YUtleSA9IGZhbHNlOwogICAgIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtl
eSwgbWV0YUtleSk7CiAgICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChkcmFnRGF0YS0+Y2xp
ZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEtPmdsb2JhbFBvc2l0aW9uKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIHNoaWZ0S2V5
LCBjdHJsS2V5LCBhbHRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0
dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0
S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YUtleSwgY3VycmVudFRpbWUo
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9u
IDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIzMywxOSArMjIzMywxOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
R2VzdHVyZUV2ZW50KGNvCiAgICAgLy8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAogICAgIHN3aXRj
aCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcERvd25UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd246CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsK
KyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA6IHsKICAgICAgICAgLy8gRklYTUU6
IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGltZXMgb25jZSBo
aXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3ZlLgotICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92
ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVF
dmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFL
ZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
VXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigp
LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFt
cCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZl
bnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtl
eSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwor
ICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9z
aXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQu
c2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgp
LCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9u
KCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlm
dEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdl
c3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CiAgICAgICAg
IG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NFdmVu
dChmYWtlTW91c2VEb3duKTsKICAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1v
dXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVNjcm9sbFVwZGF0ZTogewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9
IChmbG9hdClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJl
cGxhY2UgdGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhh
cyBiZWVuIGFkZHJlc3NlZC4KICAgICAgICAgSW50UG9pbnQgcG9pbnQoZ2VzdHVyZUV2ZW50LnBv
c2l0aW9uKCkueCgpLCBnZXN0dXJlRXZlbnQucG9zaXRpb24oKS55KCkpOwpAQCAtMjI1NCw5ICsy
MjU0LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgICAg
ICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlw
ZToKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAg
Y2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKKyAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OiB7CiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICAgICAg
aWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2NCw2ICsyMjY0LDkg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgICAgICB2aWV3
LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAtMjM1Nyw5ICsyMzYwLDkgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50RgogICAgIC8vIFRoaXMgaXMgcmVx
dWlyZWQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogCiAjaWYgT1MoV0lORE9XUykKLSAgICBNb3Vz
ZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgUGxhdGZvcm1F
dmVudDo6VHlwZSBldmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogI2Vs
c2UKLSAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyAg
ICBQbGF0Zm9ybUV2ZW50OjpUeXBlIGV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJl
c3NlZDsKICNlbmRpZgogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9zaXRp
b24sIGdsb2JhbFBvc2l0aW9uLCBSaWdodEJ1dHRvbiwgZXZlbnRUeXBlLCAxLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpjdXJyZW50VGltZSgpKTsKQEAgLTI0MTcsNyArMjQyMCw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW0KICAgICBib29sIG1l
dGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0
ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKICAgICBJbnRQb2ludCBnbG9i
YWxQb2ludCA9IHZpZXctPmNvbnRlbnRzVG9TY3JlZW4oSW50UmVjdCh2aWV3LT53aW5kb3dUb0Nv
bnRlbnRzKG1fY3VycmVudE1vdXNlUG9zaXRpb24pLCBJbnRTaXplKCkpKS5sb2NhdGlvbigpOwot
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlRXZlbnQobV9jdXJyZW50TW91c2VQ
b3NpdGlvbiwgZ2xvYmFsUG9pbnQsIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIHNoaWZ0
S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRm
b3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlRXZlbnQobV9jdXJyZW50TW91c2VQb3NpdGlvbiwg
Z2xvYmFsUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlm
dEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKICAgICBtb3Vz
ZU1vdmVkKGZha2VNb3VzZU1vdmVFdmVudCk7CiB9CiAKQEAgLTI0NzEsOCArMjQ3NCw4IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVBY2Nlc3NLZXkoY29uc3QKICAgICAvLyBJRSBtYXRjaGVz
IGxvd2VyIGFuZCB1cHBlciBjYXNlIGFjY2VzcyBrZXlzIHJlZ2FyZGxlc3Mgb2YgU2hpZnQga2V5
IHN0YXRlIC0gYnV0IGlmIGJvdGggdXBwZXIgYW5kCiAgICAgLy8gbG93ZXIgY2FzZSB2YXJpYW50
cyBhcmUgcHJlc2VudCBpbiBhIGRvY3VtZW50LCB0aGUgY29ycmVjdCBlbGVtZW50IGlzIG1hdGNo
ZWQgYmFzZWQgb24gU2hpZnQga2V5IHN0YXRlLgogICAgIC8vIEZpcmVmb3ggb25seSBtYXRjaGVz
IGFuIGFjY2VzcyBrZXkgaWYgU2hpZnQgaXMgbm90IHByZXNzZWQsIGFuZCBkb2VzIHRoYXQgY2Fz
ZS1pbnNlbnNpdGl2ZWx5LgotICAgIEFTU0VSVCghKGFjY2Vzc0tleU1vZGlmaWVycygpICYgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpTaGlmdEtleSkpOwotICAgIGlmICgoZXZ0Lm1vZGlmaWVycygp
ICYgflBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1vZGlmaWVy
cygpKQorICAgIEFTU0VSVCghKGFjY2Vzc0tleU1vZGlmaWVycygpICYgUGxhdGZvcm1FdmVudDo6
U2hpZnRLZXkpKTsKKyAgICBpZiAoKGV2dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9ybUV2ZW50OjpT
aGlmdEtleSkgIT0gYWNjZXNzS2V5TW9kaWZpZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBTdHJpbmcga2V5ID0gZXZ0LnVubW9kaWZpZWRUZXh0KCk7CiAgICAgRWxlbWVudCogZWxl
bSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUFjY2Vzc0tleShrZXkubG93ZXIo
KSk7CkBAIC0yNTIwLDcgKzI1MjMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29u
c3QgUGxhdGZvCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAg
ICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblBy
b2dyZXNzKSB7CiAgICAgICAgICAgICAvLyBJZiBhIGtleSBpcyBwcmVzc2VkIHdoaWxlIHRoZSBw
YW5TY3JvbGwgaXMgaW4gcHJvZ3Jlc3MgdGhlbiB3ZSB3YW50IHRvIHN0b3AKLSAgICAgICAgICAg
IGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5
RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
UmF3S2V5RG93bikgCisgICAgICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6UmF3S2V5RG93bikgCiAgICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1l
cigpOwogCiAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGluIHBhbnNjcm9sbCBtb2RlLCB3ZSBz
d2FsbG93IHRoZSBrZXkgZXZlbnQKQEAgLTI1NTAsMjUgKzI1NTMsMjUgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIC8vIE9uIFdpbmRvd3MsIFdlYktpdCBl
eHBsaWNpdGx5IGNhbGxzIGhhbmRsZUFjY2Vzc0tleSgpIGluc3RlYWQgb2YgZGlzcGF0Y2hpbmcg
YSBrZXlwcmVzcyBldmVudCBmb3IgV01fU1lTQ0hBUiBtZXNzYWdlcy4KICAgICAvLyBPdGhlciBw
bGF0Zm9ybXMgY3VycmVudGx5IG1hdGNoIGVpdGhlciBNYWMgb3IgV2luZG93cyBiZWhhdmlvciwg
ZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSBzZW5kIGNvbWJpbmVkIEtleURvd24gZXZlbnRzLgog
ICAgIGJvb2wgbWF0Y2hlZEFuQWNjZXNzS2V5ID0gZmFsc2U7Ci0gICAgaWYgKGluaXRpYWxLZXlF
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIGlmIChp
bml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pCiAgICAgICAg
IG1hdGNoZWRBbkFjY2Vzc0tleSA9IGhhbmRsZUFjY2Vzc0tleShpbml0aWFsS2V5RXZlbnQpOwog
CiAgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIGZhaXIgdG8gbGV0IGFuIGlucHV0IG1ldGhvZCBo
YW5kbGUgS2V5VXAgZXZlbnRzIGJlZm9yZSBET00gZGlzcGF0Y2guCi0gICAgaWYgKGluaXRpYWxL
ZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCB8fCBpbml0aWFs
S2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikKKyAgICBpZiAo
aW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCB8fCBpbml0aWFs
S2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgIHJldHVybiAh
bm9kZS0+ZGlzcGF0Y2hLZXlFdmVudChpbml0aWFsS2V5RXZlbnQpOwogCiAgICAgYm9vbCBiYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlID0gbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25R
dWlya3MoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50IGtleURvd25FdmVudCA9IGluaXRpYWxLZXlFdmVudDsgICAgCi0gICAgaWYgKGtleURvd25F
dmVudC50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKQotICAgICAg
ICBrZXlEb3duRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7CisgICAgaWYgKGtl
eURvd25FdmVudC50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAg
a2V5RG93bkV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBSZWZQdHI8S2V5Ym9hcmRF
dmVudD4ga2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsIG1fZnJh
bWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIGlmIChtYXRjaGVkQW5BY2Nlc3NL
ZXkpCiAgICAgICAgIGtleWRvd24tPnNldERlZmF1bHRQcmV2ZW50ZWQodHJ1ZSk7CiAgICAga2V5
ZG93bi0+c2V0VGFyZ2V0KG5vZGUpOwogCi0gICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGluaXRpYWxL
ZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICBu
b2RlLT5kaXNwYXRjaEV2ZW50KGtleWRvd24sIGVjKTsKICAgICAgICAgLy8gSWYgZnJhbWUgY2hh
bmdlZCBhcyBhIHJlc3VsdCBvZiBrZXlkb3duIGRpc3BhdGNoLCB0aGVuIHJldHVybiB0cnVlIHRv
IGF2b2lkIHNlbmRpbmcgYSBzdWJzZXF1ZW50IGtleXByZXNzIG1lc3NhZ2UgdG8gdGhlIG5ldyBm
cmFtZS4KICAgICAgICAgYm9vbCBjaGFuZ2VkRm9jdXNlZEZyYW1lID0gbV9mcmFtZS0+cGFnZSgp
ICYmIG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CkBAIC0yNjA3LDcgKzI2MTAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgfQogCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
IGtleVByZXNzRXZlbnQgPSBpbml0aWFsS2V5RXZlbnQ7Ci0gICAga2V5UHJlc3NFdmVudC5kaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyLCBiYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlKTsKKyAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURv
d25FdmVudChQbGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsK
ICAgICBpZiAoa2V5UHJlc3NFdmVudC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
a2V5ZG93blJlc3VsdDsKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5cHJlc3MgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUoa2V5UHJlc3NFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVm
YXVsdFZpZXcoKSk7CkBAIC0yNzg2LDcgKzI3ODksNyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25l
Qml0U2V0KERyYWdTb3VyY2VBCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlmIChldmVudC5l
dmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuZXZlbnQoKS5ldmVudFR5cGUo
KSAhPSBNb3VzZUV2ZW50TW92ZWQpIHsKKyAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAh
PSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkudHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQpIHsKICAgICAgICAgLy8gSWYgd2UgYWxsb3dlZCB0aGUgb3RoZXIgc2lkZSBvZiB0
aGUgYnJpZGdlIHRvIGhhbmRsZSBhIGRyYWcKICAgICAgICAgLy8gbGFzdCB0aW1lLCB0aGVuIG1f
bW91c2VQcmVzc2VkIG1pZ2h0IHN0aWxsIGJlIHNldC4gU28gd2UKICAgICAgICAgLy8gY2xlYXIg
aXQgbm93IHRvIG1ha2Ugc3VyZSB0aGUgbmV4dCBtb3ZlIGFmdGVyIGEgZHJhZwpAQCAtMjgyMiw3
ICsyODI1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91cwogICAg
IC8vIEZvciBkcmFncyBzdGFydGluZyBpbiB0aGUgc2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdh
aXQgYmV0d2VlbiB0aGUgbW91c2Vkb3duIGFuZCBtb3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3
ZSBiYWlsIG9uIHRoZSBkcmFnZ2luZyBzdHVmZiBhbmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3Vy
CiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmIG1fZHJhZ01heVN0YXJ0U2VsZWN0
aW9uSW5zdGVhZCAmJiAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIERyYWdTb3VyY2VBY3Rpb25T
ZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVz
dGFtcCA8IFRleHREcmFnRGVsYXkpIHsKLSAgICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50KCkuZXZl
bnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkKTsKKyAgICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50
KCkudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpOwogICAgICAgICBpZiAoKGRy
YWdTdGF0ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CiAgICAgICAg
ICAgICAvLyAuLi4gdW5sZXNzIHRoZSBtb3VzZSBpcyBvdmVyIGFuIGltYWdlLCB0aGVuIHdlIHN0
YXJ0IGRyYWdnaW5nIGp1c3QgdGhlIGltYWdlCiAgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2Ry
YWdUeXBlID0gRHJhZ1NvdXJjZUFjdGlvbkltYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAko
cmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ibGFja2JlcnJ5L0V2ZW50
SGFuZGxlckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRI
YW5kbGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsOSArMTQ4LDkgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdgogdW5zaWduZWQgRXZlbnRIYW5k
bGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewogI2lmIE9TKERBUldJTikKLSAgICByZXR1cm4g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpB
bHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUV2ZW50
OjpBbHRLZXk7CiAjZWxzZQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtl
eTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2VuZGlmCiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
TW91c2VSZWxlYXNlRXZlbnQKIAogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAg
ICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VF
dmVudAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAKIC8vIEdUSysgbXVzdCBzY3JvbGwgaG9yaXpvbnRhbGx5
IGlmIHRoZSBtb3VzZSBwb2ludGVyIGlzIG9uIHRvcCBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzE5LDkgKzcxOSw5IEBAIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZp
ZXIKICAgICAvLyBTbywgd2UgdXNlIENvbnRyb2wgaW4gdGhpcyBjYXNlLCBldmVuIHRob3VnaCBp
dCBjb25mbGljdHMgd2l0aCBFbWFjcy1zdHlsZSBrZXkgYmluZGluZ3MuCiAgICAgLy8gU2VlIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDc+IGZvciBtb3JlIGRl
dGFpbC4KICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlcklu
dGVyZmFjZUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q3RybEtleTsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CiAKLSAgICBy
ZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkgfCBQbGF0Zm9y
bUV2ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZl
bnRIYW5kbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZl
bnRIYW5kbGVyUXQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L3F0L0V2ZW50SGFuZGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDkgKzEyNCw5IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIHVuc2lnbmVkIEV2ZW50
SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0
dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1F
dmVudDo6QWx0S2V5OwogI2Vsc2UKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpB
bHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbmRpZgogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAJKHJldmlz
aW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
cGFzc1dpZGdldE1vdXNlRG93bkV2CiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5
TW9kaWZpZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7
CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjEsNyArMTIxLDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6
Y3JlYQogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1FdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtRXZlbnRfaAor
I2RlZmluZSBQbGF0Zm9ybUV2ZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQ
bGF0Zm9ybUV2ZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICAvLyBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQKKyAgICAgICAgS2V5RG93biwKKyAgICAgICAgS2V5VXAsCisgICAg
ICAgIFJhd0tleURvd24sCisgICAgICAgIENoYXIsCisKKyAgICAgICAgLy8gUGxhdGZvcm1Nb3Vz
ZUV2ZW50CisgICAgICAgIE1vdXNlTW92ZWQsCisgICAgICAgIE1vdXNlUHJlc3NlZCwKKyAgICAg
ICAgTW91c2VSZWxlYXNlZCwKKyAgICAgICAgTW91c2VTY3JvbGwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgV2hlZWwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xsQmVnaW4sCisg
ICAgICAgIEdlc3R1cmVTY3JvbGxFbmQsCisgICAgICAgIEdlc3R1cmVTY3JvbGxVcGRhdGUsCisg
ICAgICAgIEdlc3R1cmVUYXAsCisgICAgICAgIEdlc3R1cmVUYXBEb3duLAorICAgICAgICBHZXN0
dXJlRG91YmxlVGFwLAorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CisKKworICAgIC8vIEV2ZW50IE1vZGlmaWVycwor
CisgICAgZW51bSBNb2RpZmllcktleSB7CisgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKKyAgICAg
ICAgQ3RybEtleSA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKKyAgICAgICAg
U2hpZnRLZXkgPSAxIDw8IDMKKyAgICB9OworCisgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9
CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9CisKKyAgICB1
bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChhbHRLZXko
KSA/IEFsdEtleSA6IDApCisgICAgICAgICAgICB8IChjdHJsS2V5KCkgPyBDdHJsS2V5IDogMCkK
KyAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1ldGFLZXkgOiAwKQorICAgICAgICAgICAgfCAo
c2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUGxh
dGZvcm1FdmVudChUeXBlIHR5cGUpCisgICAgICAgIDogbV9zaGlmdEtleShmYWxzZSkKKyAgICAg
ICAgLCBtX2N0cmxLZXkoZmFsc2UpCisgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCisgICAgICAg
ICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9
CisKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwgbV9hbHRLZXko
YWx0S2V5KQorICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgICAgICAsIG1fdHlwZSh0
eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fc2hpZnRLZXk7CisgICAgYm9vbCBtX2N0
cmxLZXk7CisgICAgYm9vbCBtX2FsdEtleTsKKyAgICBib29sIG1fbWV0YUtleTsKKyAgICB1bnNp
Z25lZCBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQ
bGF0Zm9ybUV2ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNDIgKzI5
LDMwIEBACiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogCiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQgeworY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQg
OiBwdWJsaWMgUGxhdGZvcm1FdmVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBUeXBlIHsKLSAgICAg
ICAgU2Nyb2xsQmVnaW5UeXBlLAotICAgICAgICBTY3JvbGxFbmRUeXBlLAotICAgICAgICBTY3Jv
bGxVcGRhdGVUeXBlLAotICAgICAgICBUYXBUeXBlLAotICAgICAgICBUYXBEb3duVHlwZSwKLSAg
ICAgICAgRG91YmxlVGFwVHlwZSwKLSAgICB9OwotCiAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQo
KQotICAgICAgICA6IG1fdHlwZShTY3JvbGxCZWdpblR5cGUpCisgICAgICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAgICwgbV90aW1l
c3RhbXAoMCkKKyAgICAgICAgLCBtX2RlbHRhWCgwKQorICAgICAgICAsIG1fZGVsdGFZKDApCiAg
ICAgewogICAgIH0KIAotICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5cGUgdHlwZSwgY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0
IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRlbHRhWCwgY29uc3QgZmxvYXQgZGVsdGFZ
LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkp
Ci0gICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlwZSB0
eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgZG91YmxlIHRpbWVzdGFtcCwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGJvb2wg
c2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAg
ICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFL
ZXkpCiAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgLCBtX2dsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
ICAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCiAgICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQot
ICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5KGN0cmxL
ZXkpCi0gICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtleShtZXRh
S2V5KQogICAgIHsKICAgICB9CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KLQogICAgIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsg
fSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCiAKQEAgLTcyLDIyICs2MCwxMyBAQCBwdWJsaWM6CiAK
ICAgICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQogICAgIGZsb2F0
IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9Ci0gICAgYm9vbCBzaGlmdEtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7
IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx0S2V5OyB9Ci0gICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9
Ci0KKyAgICAKIHByb3RlY3RlZDoKLSAgICBUeXBlIG1fdHlwZTsKICAgICBJbnRQb2ludCBtX3Bv
c2l0aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgZG91YmxlIG1fdGlt
ZXN0YW1wOwogICAgIGZsb2F0IG1fZGVsdGFYOwogICAgIGZsb2F0IG1fZGVsdGFZOwotICAgIGJv
b2wgbV9zaGlmdEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAgICBib29sIG1fYWx0S2V5Owot
ICAgIGJvb2wgbV9tZXRhS2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgJKHJl
dmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw4IEBACiAjaWZuZGVmIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudF9oCiAjZGVmaW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVudF9oCiAKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC02NSw0MCArNjYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X0V2YXNfRXZlbnRfS2V5X1VwIEV2YXNfRQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBj
bGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1F
dmVudCB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgewotICAgICAgICAgICAgLy8g
S2V5RG93biBpcyBzZW50IGJ5IHBsYXRmb3JtcyBzdWNoIGFzIE1hYyBPUyBYLCBndGsgYW5kIFF0
LCBhbmQgaGFzIGluZm9ybWF0aW9uIGFib3V0IGJvdGggcGh5c2ljYWwgcHJlc3NlZCBrZXksIGFu
ZCBpdHMgdHJhbnNsYXRpb24uCi0gICAgICAgICAgICAvLyBGb3IgRE9NIHByb2Nlc3NpbmcsIGl0
IG5lZWRzIHRvIGJlIGRpc2FtYmlndWF0ZWQgYXMgUmF3S2V5RG93biBvciBDaGFyIGV2ZW50Lgot
ICAgICAgICAgICAgS2V5RG93biwKLQotICAgICAgICAgICAgLy8gS2V5VXAgaXMgc2VudCBieSBh
bGwgcGxhdGZvcm1zLgotICAgICAgICAgICAgS2V5VXAsCi0KLSAgICAgICAgICAgIC8vIFRoZXNl
IGV2ZW50cyBhcmUgc2VudCBieSBwbGF0Zm9ybXMgc3VjaCBhcyBXaW5kb3dzIGFuZCB3eFdpZGdl
dHMuIFJhd0tleURvd24gb25seSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwaHlzaWNhbCBrZXks
IGFuZCBDaGFyCi0gICAgICAgICAgICAvLyBvbmx5IGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIGNo
YXJhY3RlciBpdCB3YXMgdHJhbnNsYXRlZCBpbnRvLgotICAgICAgICAgICAgUmF3S2V5RG93biwK
LSAgICAgICAgICAgIENoYXIKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIE1vZGlmaWVyS2V5
IHsKLSAgICAgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKLSAgICAgICAgICAgIEN0cmxLZXkgPSAx
IDw8IDEsCi0gICAgICAgICAgICBNZXRhS2V5ID0gMSA8PCAyLAotICAgICAgICAgICAgU2hpZnRL
ZXkgPSAxIDw8IDMKLSAgICAgICAgfTsKLQogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
KQotICAgICAgICAgICAgOiBtX3R5cGUoS2V5RG93bikKKyAgICAgICAgICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQogICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQo
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAgICAgICAg
ICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoMCkKICAgICAgICAgICAgICwgbV9pc0tleXBh
ZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAgICAgICwg
bV9jdHJsS2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9tZXRhS2V5KGZhbHNlKQogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oQ0hS
T01JVU0pCiAgICAgICAgICAgICAsIG1faXNTeXN0ZW1LZXkoZmFsc2UpCiAjZW5kaWYKQEAgLTEx
MCw4ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorCiAgICAgICAgIHZvaWQgZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUsIGJvb2wg
YmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlKTsgLy8gT25seSB1c2VkIG9uIHBsYXRm
b3JtcyB0aGF0IG5lZWQgaXQsIGkuZS4gdGhvc2UgdGhhdCBnZW5lcmF0ZSBLZXlEb3duIGV2ZW50
cy4KIAogICAgICAgICAvLyBUZXh0IGFzIGFzIGdlbmVyYXRlZCBieSBwcm9jZXNzaW5nIGEgdmly
dHVhbCBrZXkgY29kZSB3aXRoIGEga2V5Ym9hcmQgbGF5b3V0CkBAIC0xMzksMTYgKzExMyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQoKSBjb25zdCB7
IHJldHVybiBtX2F1dG9SZXBlYXQ7IH0KICAgICAgICAgdm9pZCBzZXRJc0F1dG9SZXBlYXQoYm9v
bCBpbikgeyBtX2F1dG9SZXBlYXQgPSBpbjsgfQogICAgICAgICBib29sIGlzS2V5cGFkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0tleXBhZDsgfQotICAgICAgICBib29sIHNoaWZ0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgICAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJl
dHVybiBtX2N0cmxLZXk7IH0KLSAgICAgICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBt
X2FsdEtleTsgfQotICAgICAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFL
ZXk7IH0KLSAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QgewotICAgICAgICAgICAg
cmV0dXJuIChhbHRLZXkoKSA/IEFsdEtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAoY3RybEtl
eSgpID8gQ3RybEtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAobWV0YUtleSgpID8gTWV0YUtl
eSA6IDApCi0gICAgICAgICAgICAgICAgfCAoc2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7Ci0g
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgYm9vbCBjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShib29sJiBzaGlmdEtl
eSwgYm9vbCYgY3RybEtleSwgYm9vbCYgYWx0S2V5LCBib29sJiBtZXRhS2V5KTsKQEAgLTE5Myw3
ICsxNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIFN0cmluZyBtX3RleHQ7CiAgICAgICAgIFN0
cmluZyBtX3VubW9kaWZpZWRUZXh0OwogICAgICAgICBTdHJpbmcgbV9rZXlJZGVudGlmaWVyOwpA
QCAtMjAxLDEwICsxNjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBtX3dp
bmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmlydHVhbEtleUNvZGU7
CiAgICAgICAgIGJvb2wgbV9pc0tleXBhZDsKLSAgICAgICAgYm9vbCBtX3NoaWZ0S2V5OwotICAg
ICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAgYm9vbCBtX2FsdEtleTsKLSAgICAgICAgYm9v
bCBtX21ldGFLZXk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFJldGFpblB0cjxOU0V2
ZW50PiBtX21hY0V2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1Nb3VzZUV2ZW50LmgJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIFBsYXRmb3JtTW91c2VFdmVudF9oCiAKICNpbmNsdWRlICJJbnRQb2ludC5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYg
c3RydWN0IF9HZGtFdmVudEJ1dHRvbiBHZGtFdmVudEJ1dHRvbjsKQEAgLTYxLDE4ICs2MiwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgLy8gVGhlc2UgYnV0dG9uIG51bWJlcnMg
bWF0Y2ggdGhlIG9uZXMgdXNlZCBpbiB0aGUgRE9NIEFQSSwgMCB0aHJvdWdoIDIsIGV4Y2VwdCBm
b3IgTm9CdXR0b24gd2hpY2ggaXNuJ3Qgc3BlY2lmaWVkLgogICAgIGVudW0gTW91c2VCdXR0b24g
eyBOb0J1dHRvbiA9IC0xLCBMZWZ0QnV0dG9uLCBNaWRkbGVCdXR0b24sIFJpZ2h0QnV0dG9uIH07
Ci0gICAgZW51bSBNb3VzZUV2ZW50VHlwZSB7IE1vdXNlRXZlbnRNb3ZlZCwgTW91c2VFdmVudFBy
ZXNzZWQsIE1vdXNlRXZlbnRSZWxlYXNlZCwgTW91c2VFdmVudFNjcm9sbCB9OwogICAgIAotICAg
IGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudCB7CisgICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50
IDogcHVibGljIFBsYXRmb3JtRXZlbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50KCkKLSAgICAgICAgICAgIDogbV9idXR0b24oTm9CdXR0b24pCi0gICAgICAgICAg
ICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRNb3ZlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKQorICAgICAgICAgICAgLCBtX2J1dHRvbihO
b0J1dHRvbikKICAgICAgICAgICAgICwgbV9jbGlja0NvdW50KDApCi0gICAgICAgICAgICAsIG1f
c2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKICAg
ICAgICAgICAgICwgbV90aW1lc3RhbXAoMCkKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdz
KDApCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtODMsMTcgKzc5LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBNb3VzZUJ1dHRvbiBidXR0b24sIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0LCBib29sIGN0cmws
IGJvb2wgYWx0LCBib29sIG1ldGEsIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgICAgICAgICA6IG1f
cG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChjb25zdCBJbnRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgTW91c2VCdXR0
b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wKQorICAgICAgICAgICAgOiBQ
bGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpCisg
ICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fYnV0dG9uKGJ1dHRvbikK
LSAgICAgICAgICAgICwgbV9ldmVudFR5cGUoZXZlbnRUeXBlKQogICAgICAgICAgICAgLCBtX2Ns
aWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdCkKLSAg
ICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmwpCi0gICAgICAgICAgICAsIG1fYWx0S2V5KGFsdCkK
LSAgICAgICAgICAgICwgbV9tZXRhS2V5KG1ldGEpCiAgICAgICAgICAgICAsIG1fdGltZXN0YW1w
KHRpbWVzdGFtcCkKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMTAyLDYgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgLCBtX2RpZEFjdGl2YXRlV2ViVmlldyhmYWxzZSkKICNlbmRpZgogICAgICAgICB7CisgICAg
ICAgICAgICAvL0FTU0VSVChpc1BsYXRmb3JtTW91c2VFdmVudFR5cGUodHlwZSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgY29uc3QgSW50UG9pbnQmIHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KQEAgLTExNCw3ICsxMDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGludCBtb3ZlbWVudFkoKSBjb25zdCB7IHJldHVybiBtX21vdmVtZW50RGVsdGEueSgpOyB9CiAj
ZW5kaWYKICAgICAgICAgTW91c2VCdXR0b24gYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0
b247IH0KLSAgICAgICAgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9ldmVudFR5cGU7IH0KICAgICAgICAgaW50IGNsaWNrQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWNrQ291bnQ7IH0KICAgICAgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hpZnRLZXk7IH0KICAgICAgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJs
S2V5OyB9CkBAIC0xNDIsNyArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIGRlZmlu
ZWQoX19PQkpDX18pCiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICosIE5TVmll
dyAqd2luZG93Vmlldyk7CiAjZW5kaWYKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4
LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIE1v
dXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4
LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIFBs
YXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBj
bGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpOwogICAgICAgICBpbnQgZXZl
bnROdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50TnVtYmVyOyB9CkBAIC0xNzAsMTIgKzE2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSW50UG9pbnQgbV9tb3ZlbWVudERl
bHRhOwogI2VuZGlmCiAgICAgICAgIE1vdXNlQnV0dG9uIG1fYnV0dG9uOwotICAgICAgICBNb3Vz
ZUV2ZW50VHlwZSBtX2V2ZW50VHlwZTsKICAgICAgICAgaW50IG1fY2xpY2tDb3VudDsKLSAgICAg
ICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAgYm9v
bCBtX2FsdEtleTsKLSAgICAgICAgYm9vbCBtX21ldGFLZXk7CiAgICAgICAgIGRvdWJsZSBtX3Rp
bWVzdGFtcDsgLy8gdW5pdDogc2Vjb25kcwogICAgICAgICB1bnNpZ25lZCBtX21vZGlmaWVyRmxh
Z3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQ
bGF0Zm9ybVdoZWVsRXZlbnRfaAogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUV2ZW50LmgiCiAKICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHN0cnVjdCBfR2Rr
RXZlbnRTY3JvbGwgR2RrRXZlbnRTY3JvbGw7CkBAIC04NCwxOCArODUsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVu
dCB7CisgICAgY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50IDogcHVibGljIFBsYXRmb3JtRXZlbnQg
ewogICAgIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KCkKLSAgICAgICAgICAg
IDogbV9kZWx0YVgoMCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpXaGVlbCkKKyAgICAgICAgICAgICwgbV9kZWx0YVgoMCkKICAgICAgICAgICAgICwgbV9kZWx0
YVkoMCkKICAgICAgICAgICAgICwgbV93aGVlbFRpY2tzWCgwKQogICAgICAgICAgICAgLCBtX3do
ZWVsVGlja3NZKDApCiAgICAgICAgICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdo
ZWVsRXZlbnQpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAgICAs
IG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAg
ICAgICAsIG1fbWV0YUtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9kaXJlY3Rpb25JbnZlcnRl
ZEZyb21EZXZpY2UoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01J
VU0pICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcyhmYWxzZSkKQEAgLTEwNywxNyArMTA1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfQogCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChJbnRQb2ludCBwb3NpdGlvbiwg
SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9h
dCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0
S2V5LCBib29sIG1ldGFLZXkpCi0gICAgICAgICAgICA6IG1fcG9zaXRpb24ocG9zaXRpb24pCisg
ICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIHNoaWZ0S2V5
LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpCisgICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9z
aXRpb24pCiAgICAgICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAg
ICAgICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgICAgICwgbV9kZWx0YVkoZGVs
dGFZKQogICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKHdoZWVsVGlja3NYKQogICAgICAgICAg
ICAgLCBtX3doZWVsVGlja3NZKHdoZWVsVGlja3NZKQogICAgICAgICAgICAgLCBtX2dyYW51bGFy
aXR5KGdyYW51bGFyaXR5KQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQotICAg
ICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKLSAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0
S2V5KQotICAgICAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKICAgICAgICAgICAgICwgbV9k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAsIG1faGFzUHJl
Y2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKQEAgLTEzOSwxMSArMTM0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ncmFudWxhcml0eTsgfQogCi0gICAgICAgIGJvb2wg
c2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgICAgIGJvb2wgY3Ry
bEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgICAgICBib29sIGFsdEtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9Ci0gICAgICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWV0YUtleTsgfQotCiAgICAgICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbi54KCk7IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgICAg
IGludCB5KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi55KCk7IH0KICAgICAgICAgaW50IGds
b2JhbFgoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uLngoKTsgfSAvLyBTY3JlZW4g
Y29vcmRpbmF0ZXMuCkBAIC0yMDgsMTAgKzE5OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgbV93aGVlbFRpY2tzWDsKICAgICAgICAgZmxvYXQgbV93aGVlbFRpY2tzWTsK
ICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFudWxhcml0eTsKLSAg
ICAgICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAg
Ym9vbCBtX2FsdEtleTsKLSAgICAgICAgYm9vbCBtX21ldGFLZXk7CiAgICAgICAgIGJvb2wgbV9k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2U7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZP
Uk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgIGJvb2wgbV9oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNyArNDcz
LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0VwogI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCiB7Ci0gICAgQVNTRVJUKHBnZS50eXBlKCkgPT0gUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpOworICAgIEFTU0VSVChwZ2UudHlwZSgp
ID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXApOwogICAgIC8vIEZJWE1FOiBtb2Rp
ZnkgdGhpcyBzbyB3ZSBjYW4gc3RhcnQgZXZlbiBpZiB0aGUgdGltZXIgaXMgYWN0aXZlLgogICAg
IGlmICghbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fY3VycmVudFpv
b21TY2FsZSA9IDE7CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
Onpvb20oY29uc3QgUGxhdAogICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWCA9ICgx
IC0gc2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueCgpOwogICAgICAgICBtX3pvb21EYXRh
Lm1fZGVzaXJlZFRyYW5zWSA9ICgxIC0gc2NhbGUpICogcGdlLmdsb2JhbFBvc2l0aW9uKCkueSgp
OwogI2lmIEVOQUJMRShET1VCTEVfVEFQX0NFTlRFUlMpCi0gICAgICAgIGlmIChwZ2UudHlwZSgp
ID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKSB7CisgICAgICAgIGlmIChw
Z2UudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXApIHsKICAgICAgICAg
ICAgIC8vIFpvb20gdG8gY2VudHJlIG9mIGRpc3BsYXkuIFBpbmNoLXRvLXpvb20gbWF5IG5vdCB3
YW50IHRoaXMgYmVoYXZpb3VyLgogICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFu
c1ggKz0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkgLyAyIC0gcGdlLmdsb2JhbFBv
c2l0aW9uKCkueCgpOwogICAgICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1kgKz0g
bV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpIC8gMiAtIHBnZS5nbG9iYWxQb3NpdGlv
bigpLnkoKTsKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6aGFu
ZGxlR2VzdHVyZUV2CiB7CiAgICAgVFJBQ0VfRVZFTlQoIlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFu
ZGxlR2VzdHVyZUV2ZW50IiwgdGhpcywgMCk7CiAgICAgc3dpdGNoIChwZ2UudHlwZSgpKSB7Ci0g
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgICAgIHpvb20ocGdlKTsKICAgICAg
ICAgYnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxh
dGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5
LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI3LDI1ICs0MjcsMjEgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlR5cAogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OktleWJvYXJkRXZlbnQ6OktleURvd246Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleURvd247CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
OwogICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleVVwOgot
ICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtRXZlbnQ6OktleVVwOwogICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OktleWJvYXJkRXZlbnQ6OktleUNoYXI6CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
OkNoYXI7CiAgICAgfQogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCBldmVudCkKLSAgICA6
IG1fdHlwZSh0b1dlYkNvcmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSkp
CisgICAgOiBQbGF0Zm9ybUV2ZW50KHRvV2ViQ29yZVBsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUo
ZXZlbnQudHlwZSgpKSwgZXZlbnQuc2hpZnRBY3RpdmUoKSB8fCAoZXZlbnQuY2hhcmFjdGVyKCkg
PT0gS0VZQ09ERV9CQUNLX1RBQiksIGV2ZW50LmN0cmxBY3RpdmUoKSwgZXZlbnQuYWx0QWN0aXZl
KCksIGZhbHNlKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JCbGFja0Jl
cnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKSkKICAgICAsIG1fYXV0b1JlcGVhdChmYWxz
ZSkKICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yQmxhY2tC
ZXJyeUNoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkpCiAgICAgLCBtX2lzS2V5cGFkKGZhbHNl
KQotICAgICwgbV9zaGlmdEtleShldmVudC5zaGlmdEFjdGl2ZSgpIHx8IChldmVudC5jaGFyYWN0
ZXIoKSA9PSBLRVlDT0RFX0JBQ0tfVEFCKSkgLy8gQmFja1RhYiBzaG91bGQgYmUgdHJlYXRlZCBh
cyBTaGlmdCArIFRhYi4KLSAgICAsIG1fY3RybEtleShldmVudC5jdHJsQWN0aXZlKCkpCi0gICAg
LCBtX2FsdEtleShldmVudC5hbHRBY3RpdmUoKSkKLSAgICAsIG1fbWV0YUtleShmYWxzZSkKICAg
ICAsIG1fdW5tb2RpZmllZENoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkKIHsKICAgICB1bnNp
Z25lZCBzaG9ydCBjaGFyYWN0ZXIgPSBhZGp1c3RDaGFyYWN0ZXJGcm9tT1MoZXZlbnQuY2hhcmFj
dGVyKCkpOwpAQCAtNDYxLDE2ICs0NTcsMTYgQEAgYm9vbCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmN1cnJlbnRDYXBzTAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQordm9pZCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpU
eXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKIHsKICAgICAvLyBDYW4g
b25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3
ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBBU1NFUlQobV90
eXBlID09IEtleURvd24pOworICAgIEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6S2V5
RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAogICAgIGlmIChiYWNrd2FyZENvbXBhdGliaWxp
dHlNb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBSYXdLZXlEb3duKSB7
CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICBt
X3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOwog
ICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0
dXJlUmVjb2duaXplckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxNyArMTI1LDE3IEBAIGJv
b2wgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6aXNPdmVyTWkKIAogdm9pZCBHZXN0dXJlUmVj
b2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVy
ZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFw
RG93blR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlv
biwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2Fs
dEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVF
dmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93biwgbV9maXJzdFRvdWNoUG9zaXRpb24s
IG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBt
X3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAogdm9pZCBH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRDbGlja0dlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQogewotICAg
IGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlRhcFR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3Np
dGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBt
X2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1
cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwg
bV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1f
c2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7
Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3Vj
aFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXAsIG1fZmly
c3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hU
aW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CiB9CiAKIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKQEAgLTE1OSwx
MiArMTU5LDEyIEBAIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyAKIAog
dm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlQmVnaW4o
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
IHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQu
c2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3Ry
bEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZv
cm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luLCB0b3VjaFBv
aW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwg
MC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAog
dm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMsIGZs
b2F0IHhWZWxvY2l0eSwgZmxvYXQgeVZlbG9jaXR5KQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQo
UGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUs
IHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGlt
ZSwgeFZlbG9jaXR5LCB5VmVsb2NpdHksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXks
IG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQo
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQ
b2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCB4VmVsb2NpdHksIHlWZWxvY2l0eSwg
bV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZVVwZGF0ZShjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQpAQCAt
MTcyLDcgKzE3Miw3IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2MK
ICAgICBmbG9hdCBkZWx0YVgodG91Y2hQb2ludC5wb3MoKS54KCkgLSBtX2ZpcnN0VG91Y2hQb3Np
dGlvbi54KCkpOwogICAgIGZsb2F0IGRlbHRhWSh0b3VjaFBvaW50LnBvcygpLnkoKSAtIG1fZmly
c3RUb3VjaFBvc2l0aW9uLnkoKSk7CiAKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlLCB0b3VjaFBv
aW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRh
WCwgZGVsdGFZLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsK
KyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxVcGRhdGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVu
UG9zKCksIG1fbGFzdFRvdWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3Ry
bEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0g
dG91Y2hQb2ludC5wb3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9t
aXVtLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw4ICs0OCw4IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdl
IHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZv
cm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlE
b3duKTsKLSAgICBBU1NFUlQodHlwZSA9PSBSYXdLZXlEb3duIHx8IHR5cGUgPT0gQ2hhcik7Cisg
ICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsKKyAgICBBU1NFUlQo
dHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duIHx8IHR5cGUgPT0gUGxhdGZvcm1FdmVu
dDo6Q2hhcik7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBpZiAoYmFja3dhcmRDb21wYXRpYmls
aXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMTAyOTY4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTcsMjYgKzI5NywyOCBAQCBib29sIFBvcHVwQ29udGFpbmVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvCiBib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBzd2l0
Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpUYXBUeXBlOiB7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9C
dXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQu
c2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgp
LCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRp
b24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZl
bnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBn
ZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVu
dC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2
ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0
cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBn
ZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVRhcDogeworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVF
dmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0
S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7
CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1cmVFdmVudC5w
b3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxh
dGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVu
dC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5
KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Cisg
ICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRp
b24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNo
aWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwg
Z2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKICAgICAg
ICAgLy8gaGFuZGxlTW91c2VNb3ZlRXZlbnQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRs
ZU1vdXNlRG93bkV2ZW50KGZha2VNb3VzZURvd24pOwogICAgICAgICBoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChmYWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgorICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTogewogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQg
c3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50
Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRl
bHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5kZWx0
YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGdlc3R1cmVFdmVudC5zaGlm
dEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdl
c3R1cmVFdmVudC5tZXRhS2V5KCkpOwogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRp
Y1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
VGFwRG93blR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46
CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd246CiAgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3gu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TGlzdEJveC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSwxMiArMTk5
LDEyIEBAIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50KGNvbnN0IFAKICAgICAvLyBX
ZSB1c2UgUmF3S2V5RG93bi9DaGFyL0tleVVwIGV2ZW50IHNjaGVtZSBvbiBhbGwgcGxhdGZvcm1z
LAogICAgIC8vIHNvIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciAobm90IFJhd0tleURvd24p
IHR5cGUgZXZlbnQKICAgICAvLyBpcyBjb25zaWRlcmVkIGFzIGNoYXJhY3RlciB0eXBlIGV2ZW50
LgotICAgIHJldHVybiBldmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFy
OworICAgIHJldHVybiBldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcjsKIH0KIAog
Ym9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OktleVVwKQorICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5
VXApCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFudW1JdGVtcygpICYmIGV2ZW50
LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpICE9IFZLRVlfRVNDQVBFKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjLm1tCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04ODMsOSArODgzLDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpoYW5k
bGVXaAogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewotICAgIGlmIChn
ZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5
cGUpCisgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbEJlZ2luKQogICAgICAgICBiZWdpblNjcm9sbEdlc3R1cmUoKTsKLSAgICBlbHNlIGlm
IChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRU
eXBlKQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVNjcm9sbEVuZCkKICAgICAgICAgZW5kU2Nyb2xsR2VzdHVyZSgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXli
b2FyZEV2ZW50RWZsLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDEzICs0MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2
ZW50KQotICAgIDogbV90eXBlKEtleURvd24pCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJD
b250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0
IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQog
ICAgICwgbV90ZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZykpCiAgICAgLCBtX3Vu
bW9kaWZpZWRUZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZykpCi0gICAgLCBtX3No
aWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQi
KSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiB7CiAgICAgU3RyaW5nIGtl
eU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7CiAgICAgbV9rZXlJZGVudGlmaWVyID0ga2V5SWRl
bnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpOwpAQCAtNTgsMTIgKzU0LDggQEAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogfQogCiBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXZl
bnQpCi0gICAgOiBtX3R5cGUoS2V5VXApCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleVVwLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNo
aWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJv
bCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpLCBl
dmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKICAgICAs
IG1fdGV4dChTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpKQotICAgICwgbV9zaGlmdEtl
eShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0g
ICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMs
ICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZl
bnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVy
X2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogewogICAgIFN0cmluZyBrZXlOYW1l
ID0gU3RyaW5nKGV2ZW50LT5rZXkpOwogICAgIG1fa2V5SWRlbnRpZmllciA9IGtleUlkZW50aWZp
ZXJGb3JFdmFzS2V5TmFtZShrZXlOYW1lKTsKQEAgLTc5LDcgKzcxLDcgQEAgdm9pZCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQogICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93
bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAotICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsK
KyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIG1f
dGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAg
ICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybU1v
dXNlRXZlbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Nb3VzZUV2ZW50RWZsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNDMgKzQ4LDMxIEBAIHZvaWQgUGxhdGZvcm1Nb3VzZUV2ZW50OjpzZXRDbGlj
a0NvdW50KHUKIH0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldmVudCwgSW50UG9pbnQgcG9zaXRpb24pCi0gICAg
OiBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZl
bnQtPmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZv
cm1FdmVudDo6TW91c2VQcmVzc2VkLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZp
ZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVy
cywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1l
dGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRp
b24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSkpCiAgICAg
LCBtX2J1dHRvbihNb3VzZUJ1dHRvbihldmVudC0+YnV0dG9uIC0gMSkpCi0gICAgLCBtX2V2ZW50
VHlwZShNb3VzZUV2ZW50UHJlc3NlZCkKLSAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZp
ZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAg
ICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJB
bHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIk1ldGEiKSkKICAgICAsIG1fdGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiB7CiAg
ICAgc2V0Q2xpY2tDb3VudChldmVudC0+ZmxhZ3MpOwogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldmVudCwgSW50
UG9pbnQgcG9zaXRpb24pCi0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMu
eCAtIHBvc2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKKyAgICA6
IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmll
cl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KGV2
ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24u
eSgpKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBl
dmVudC0+Y2FudmFzLnkpKQogICAgICwgbV9idXR0b24oTW91c2VCdXR0b24oZXZlbnQtPmJ1dHRv
biAtIDEpKQotICAgICwgbV9ldmVudFR5cGUoTW91c2VFdmVudFJlbGVhc2VkKQotICAgICwgbV9z
aGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0
IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9pc19z
ZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21v
ZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV90aW1lc3Rh
bXAoY3VycmVudFRpbWUoKSkKIHsKICAgICBzZXRDbGlja0NvdW50KGV2ZW50LT5mbGFncyk7CiB9
CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfTW92ZSogZXZlbnQsIEludFBvaW50IHBvc2l0aW9uKQotICAgIDogbV9wb3NpdGlv
bihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y3Vy
LmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1F
dmVudDo6TW91c2VNb3ZlZCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmll
cnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywg
IkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJB
bHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikp
CisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLnggLSBwb3NpdGlv
bi54KCksIGV2ZW50LT5jdXIuY2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQogICAgICwgbV9nbG9i
YWxQb3NpdGlvbihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54LCBldmVudC0+Y3VyLmNhbnZh
cy55KSkKICAgICAsIG1fYnV0dG9uKE1vdXNlQnV0dG9uKGV2ZW50LT5idXR0b25zIC0gMSkpCi0g
ICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50TW92ZWQpCiAgICAgLCBtX2NsaWNrQ291bnQoMCkK
LSAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmll
cnMsICJTaGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChl
dmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShl
dmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKICAgICAs
IG1fdGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAkocmV2aXNp
b24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxF
dmVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0MywxMCBAQCBlbnVtIHsKIH07
CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfV2hlZWwqIGV2KQotICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChldi0+Y2FudmFz
LngsIGV2LT5jYW52YXMueSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Oldo
ZWVsLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmll
cl9pc19zZXQoZXYtPm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9p
bnQoZXYtPmNhbnZhcy54LCBldi0+Y2FudmFzLnkpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJ
bnRQb2ludChldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCiAgICAgLCBtX2dyYW51bGFyaXR5
KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2Rp
Zmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBt
X2FsdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkFsdCIpKQot
ICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAi
TWV0YSIpKQogICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiB7CiAg
ICAgLy8gQSBuZWdhdGl2ZSB6IHZhbHVlIG1lYW5zIChpbiBFRkwpIHRoYXQgd2UgYXJlIHNjcm9s
bGluZyBkb3duLCBzbyB3ZSBuZWVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAkocmV2aXNpb24gMTAy
OTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCBTdHJpbmcgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFyCiAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHRo
ZSBvdGhlciBwbGF0Zm9ybSBldmVudCBjb25zdHJ1Y3RvcnMKIC8vIFRPRE86IG1fZ2RrRXZlbnRL
ZXkgc2hvdWxkIGJlIHJlZmNvdW50ZWQKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKLSAgICA6IG1fdHlwZSgoZXZlbnQtPnR5
cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IEtleVVwIDogS2V5RG93bikKKyAgICA6IFBsYXRmb3Jt
RXZlbnQoKGV2ZW50LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkgPyBQbGF0Zm9ybUV2ZW50OjpL
ZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIChldmVudC0+c3RhdGUgJiBHREtfU0hJRlRf
TUFTSykgfHwgKGV2ZW50LT5rZXl2YWwgPT0gR0RLXzMyNzBfQmFja1RhYiksIGV2ZW50LT5zdGF0
ZSAmIEdES19DT05UUk9MX01BU0ssIGV2ZW50LT5zdGF0ZSAmIEdES19NT0QxX01BU0ssIGV2ZW50
LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCiAgICAgLCBtX3RleHQoc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV91bm1vZGlmaWVkVGV4dChzaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCkpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRp
ZmllckZvckdka0tleUNvZGUoZXZlbnQtPmtleXZhbCkpCkBAIC01NTUsMTAgKzU1NSw2IEBAIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKICAgICAsIG1fd2luZG93c1Zp
cnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkK
ICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoZXZlbnQtPmtleXZhbCkKICAgICAsIG1faXNL
ZXlwYWQoZXZlbnQtPmtleXZhbCA+PSBHREtfS1BfU3BhY2UgJiYgZXZlbnQtPmtleXZhbCA8PSBH
REtfS1BfOSkKLSAgICAsIG1fc2hpZnRLZXkoKGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNL
KSB8fCAoZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFiKSkKLSAgICAsIG1fY3RybEtl
eShldmVudC0+c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLKQotICAgICwgbV9hbHRLZXkoZXZlbnQt
PnN0YXRlICYgR0RLX01PRDFfTUFTSykKLSAgICAsIG1fbWV0YUtleShldmVudC0+c3RhdGUgJiBH
REtfTUVUQV9NQVNLKQogICAgICwgbV9nZGtFdmVudEtleShldmVudCkKIHsKIH0KQEAgLTU3Miw3
ICs1NjgsNyBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAgICAg
aWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpS
YXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCShyZXZp
c2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3Vz
ZUV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsOSBAQCBQbGF0Zm9ybU1v
dXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChHCiAgICAgY2FzZSBHREtfMkJVVFRPTl9QUkVT
UzoKICAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgogICAgIGNhc2UgR0RLX0JVVFRPTl9SRUxF
QVNFOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAgICAgICAgIGlmIChldmVudC0+
dHlwZSA9PSBHREtfQlVUVE9OX1JFTEVBU0UpIHsKLSAgICAgICAgICAgIG1fZXZlbnRUeXBlID0g
TW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6
TW91c2VSZWxlYXNlZDsKICAgICAgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7CiAgICAgICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9QUkVTUykKICAgICAgICAgICAgIG1f
Y2xpY2tDb3VudCA9IDE7CkBAIC04Nyw3ICs4Nyw3IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxh
dGZvcm1Nb3VzZUV2ZW50KEcKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7CiAgICAgY2Fz
ZSBHREtfTU9USU9OX05PVElGWToKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92
ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAg
IG1fYnV0dG9uID0gTm9CdXR0b247CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxF
dmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtV2hlZWxFdmVudEd0ay5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw4IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50
KEcKIHsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVsdGEgPSAxOwogCisgICAgbV90eXBlID0g
UGxhdGZvcm1FdmVudDo6V2hlZWw7CisKICAgICBtX2RlbHRhWCA9IDA7CiAgICAgbV9kZWx0YVkg
PSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5RXZlbnRJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tleUV2ZW50SU9TLm1t
CShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5RXZl
bnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDE3ICs1MCwxMyBAQCBzdGF0aWMgU3RyaW5n
IGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChXCiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFdlYkV2ZW50ICpldmVudCkKLSAgICA6IG1fdHlwZShldmVu
dC50eXBlID09IFdlYkV2ZW50S2V5VXAgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwIDog
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIDogUGxhdGZvcm1FdmVudChldmVu
dC50eXBlID09IFdlYkV2ZW50S2V5VXAgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sIGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrU2hp
ZnQsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29udHJvbCwgZXZlbnQu
bW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5hdGUsIGV2ZW50Lm1vZGlmaWVy
RmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZCkKICAgICAsIG1fdGV4dChldmVudC5jaGFy
YWN0ZXJzKQogICAgICwgbV91bm1vZGlmaWVkVGV4dChldmVudC5jaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllckZvcktleUV2ZW50
KGV2ZW50KSkKICAgICAsIG1fYXV0b1JlcGVhdChldmVudC5pc0tleVJlcGVhdGluZykKICAgICAs
IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKGV2ZW50LmtleUNvZGUpCiAgICAgLCBtX2lzS2V5cGFk
KGZhbHNlKSAvLyBpUGhvbmUgZG9lcyBub3QgZGlzdGluZ3Vpc2ggdGhlIG51bXBhZCA8cmRhcjov
L3Byb2JsZW0vNzE5MDgzNT4KLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQubW9kaWZpZXJGbGFncyAm
IFdlYkV2ZW50RmxhZ01hc2tTaGlmdCkKLSAgICAsIG1fY3RybEtleShldmVudC5tb2RpZmllckZs
YWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wpCi0gICAgLCBtX2FsdEtleShldmVudC5tb2Rp
ZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSkKLSAgICAsIG1fbWV0YUtleShl
dmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQpCiAgICAgLCBtX0V2
ZW50KGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBlID09IFdlYkV2ZW50S2V5RG93biB8
fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXApOwpAQCAtOTQsNyArOTAsNyBAQCB2b2lkIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAgICAgaWYgKGJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0eXBlID09IFJhd0tleURv
d24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAg
ICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5n
KCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlF
dmVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5
RXZlbnRNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LZXlFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0
YXRpYyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0UKIH0KIAogUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQpCi0gICAgOiBt
X3R5cGUoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAg
OiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24pCisgICAgOiBQbGF0Zm9ybUV2ZW50KGlz
S2V5VXBFdmVudChldmVudCkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6
OktleURvd24sIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10g
JiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtl
eU1hc2spCiAgICAgLCBtX3RleHQodGV4dEZyb21FdmVudChldmVudCkpCiAgICAgLCBtX3VubW9k
aWZpZWRUZXh0KHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KSkKICAgICAsIG1fa2V5SWRl
bnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQpKQpAQCAtMTk3LDEwICsxOTcs
NiBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiAgICAgLCBtX3dp
bmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGV2ZW50KSkKICAg
ICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoW2V2ZW50IGtleUNvZGVdKQogICAgICwgbV9pc0tl
eXBhZChpc0tleXBhZEV2ZW50KGV2ZW50KSkKLSAgICAsIG1fc2hpZnRLZXkoW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0gICAgLCBtX2N0cmxLZXkoW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKLSAgICAsIG1fYWx0S2V5KFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKLSAgICAsIG1fbWV0YUtleShbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQogICAgICwgbV9tYWNFdmVudChldmVu
dCkKIHsKICAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4gLS0gd2UgZG9uJ3Qg
d2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3IgRW50ZXIuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZl
bnRNYWMubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTExOSw1NyArMTE5
LDQ5IEBAIEludFBvaW50IGdsb2JhbFBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXYKICAgICB9CiB9
CiAKLXN0YXRpYyBNb3VzZUV2ZW50VHlwZSBtb3VzZUV2ZW50Rm9yTlNFdmVudChOU0V2ZW50KiBl
dmVudCkgCitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3VzZUV2ZW50Rm9yTlNFdmVudChO
U0V2ZW50KiBldmVudCkgCiB7CiAgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICBjYXNl
IE5TU2Nyb2xsV2hlZWw6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50U2Nyb2xsOworICAgICAg
ICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VTY3JvbGw7CiAgICAgY2FzZSBOU0xlZnRNb3Vz
ZURyYWdnZWQ6CiAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgogICAgIGNhc2UgTlNPdGhl
ck1vdXNlRHJhZ2dlZDoKICAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgcmV0dXJuIE1v
dXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7
CiAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CiAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgog
ICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRQcmVz
c2VkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogICAgIGNh
c2UgTlNMZWZ0TW91c2VVcDoKICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgogICAgIGNhc2UgTlNP
dGhlck1vdXNlVXA6Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50
OjpNb3VzZU1vdmVkOwogICAgIH0KIH0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLSAgICA6IG1fcG9z
aXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93VmlldykpCisgICAgOiBQbGF0Zm9ybUV2
ZW50KG1vdXNlRXZlbnRGb3JOU0V2ZW50KGV2ZW50KSwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYg
TlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ss
IFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JF
dmVudChldmVudCwgd2luZG93VmlldykpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBv
aW50Rm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV9idXR0b24obW91c2VCdXR0b25Gb3JFdmVudChl
dmVudCkpCi0gICAgLCBtX2V2ZW50VHlwZShtb3VzZUV2ZW50Rm9yTlNFdmVudChldmVudCkpCiAg
ICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudEZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fc2hp
ZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0gICAgLCBtX2N0
cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKLSAgICAsIG1f
YWx0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKLSAgICAs
IG1fbWV0YUtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQogICAg
ICwgbV90aW1lc3RhbXAoW2V2ZW50IHRpbWVzdGFtcF0pCiAgICAgLCBtX21vZGlmaWVyRmxhZ3Mo
W2V2ZW50IG1vZGlmaWVyRmxhZ3NdKQogICAgICwgbV9ldmVudE51bWJlcihbZXZlbnQgZXZlbnRO
dW1iZXJdKQogewogfQogCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChp
bnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24gYnV0dG9u
LCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCitQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3Jt
TW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VC
dXR0b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpCi0gICAgOiBtX3Bvc2l0aW9u
KEludFBvaW50KHgsIHkpKQorICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBzaGlmdEtleSwgY3Ry
bEtleSwgYWx0S2V5LCBtZXRhS2V5KQorICAgICwgbV9wb3NpdGlvbihJbnRQb2ludCh4LCB5KSkK
ICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZ2xvYmFsWCwgZ2xvYmFsWSkpCiAgICAg
LCBtX2J1dHRvbihidXR0b24pCi0gICAgLCBtX2V2ZW50VHlwZShldmVudFR5cGUpCiAgICAgLCBt
X2NsaWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAg
LCBtX2N0cmxLZXkoY3RybEtleSkKLSAgICAsIG1fYWx0S2V5KGFsdEtleSkKLSAgICAsIG1fbWV0
YUtleShtZXRhS2V5KQogICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQogICAgICwgbV9tb2Rp
ZmllckZsYWdzKG1vZGlmaWVyRmxhZ3MpCiAgICAgLCBtX2V2ZW50TnVtYmVyKGV2ZW50TnVtYmVy
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMxLDkgKzEwMzEsOSBA
QCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50CiAKIHZvaWQgU2Nyb2xs
QW5pbWF0b3JNYWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCYgZ2VzdHVyZUV2ZW50KQogewotICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCisgICAgaWYgKGdlc3R1cmVFdmVudC50
eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luKQogICAgICAgICBiZWdp
blNjcm9sbEdlc3R1cmUoKTsKLSAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQorICAgIGVsc2UgaWYgKGdlc3R1cmVF
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCkKICAgICAgICAg
ZW5kU2Nyb2xsR2VzdHVyZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2hlZWxFdmVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2hlZWxFdmVudE1hYy5tbQkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwLDEz
ICs5MCwxMCBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2VGb3JFCiB9CiAK
IFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50LCBO
U1ZpZXcgKndpbmRvd1ZpZXcpCi0gICAgOiBtX3Bvc2l0aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQs
IHdpbmRvd1ZpZXcpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwg
W2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmllckZs
YWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJu
YXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAg
ICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93VmlldykpCiAgICAgLCBt
X2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV9ncmFu
dWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAgICAsIG1fc2hpZnRLZXkoW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0gICAgLCBtX2N0cmxLZXkoW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKLSAgICAsIG1fYWx0S2V5KFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKLSAgICAsIG1fbWV0YUtleShb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQogICAgICwgbV9waGFzZShw
aGFzZUZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fbW9tZW50dW1QaGFzZShtb21lbnR1bVBoYXNl
Rm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV90aW1lc3RhbXAoW2V2ZW50IHRpbWVzdGFtcF0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1LZXli
b2FyZEV2ZW50UXQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5
Niw3ICs1OTYsNyBAQCBzdGF0aWMgU3RyaW5nIGtleVRleHRGb3JLZXlFdmVudChjb25zdCBRCiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChRS2V5RXZlbnQqIGV2
ZW50KQogewogICAgIGNvbnN0IGludCBzdGF0ZSA9IGV2ZW50LT5tb2RpZmllcnMoKTsKLSAgICBt
X3R5cGUgPSAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OktleVJlbGVhc2UpID8gS2V5VXAgOiBL
ZXlEb3duOworICAgIG1fdHlwZSA9IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6S2V5UmVsZWFz
ZSkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd247CiAgICAg
bV90ZXh0ID0ga2V5VGV4dEZvcktleUV2ZW50KGV2ZW50KTsKICAgICBtX3VubW9kaWZpZWRUZXh0
ID0gbV90ZXh0OyAvLyBGSVhNRTogbm90IGNvcnJlY3QKICAgICBtX2tleUlkZW50aWZpZXIgPSBr
ZXlJZGVudGlmaWVyRm9yUXRLZXlDb2RlKGV2ZW50LT5rZXkoKSk7CkBAIC02MTQsMTAgKzYxNCwx
MCBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiB2b2lkIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9v
bCkKIHsKICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5
RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9u
cy4KLSAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOworICAgIEFTU0VSVChtX3R5cGUgPT0g
UGxhdGZvcm1FdmVudDo6S2V5RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKIAotICAgIGlmICh0
eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZp
ZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHAJKHJldmlzaW9uIDEw
Mjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNDIgKzQzLDQyIEBAIHN0YXRpYyB2b2lkIG1vdXNl
RXZlbnRNb2RpZmllcnNGcm9tUXRLZXkKICAgICBzaGlmdEtleSA9IGtleWJvYXJkTW9kaWZpZXJz
ICYgUXQ6OlNoaWZ0TW9kaWZpZXI7CiB9CiAKLXN0YXRpYyB2b2lkIG1vdXNlRXZlbnRUeXBlQW5k
TW91c2VCdXR0b25Gcm9tUUV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQsIE1vdXNlRXZlbnRUeXBl
JiBtb3VzZUV2ZW50VHlwZSwgTW91c2VCdXR0b24mIG1vdXNlQnV0dG9uKQorc3RhdGljIHZvaWQg
bW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoY29uc3QgUUV2ZW50KiBldmVu
dCwgUGxhdGZvcm1FdmVudDo6VHlwZSYgbW91c2VFdmVudFR5cGUsIE1vdXNlQnV0dG9uJiBtb3Vz
ZUJ1dHRvbikKIHsKICAgICBlbnVtIHsgTW91c2VFdmVudCwgR3JhcGhpY3NTY2VuZU1vdXNlRXZl
bnQgfSBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZTsKICAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKCkp
IHsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxDbGljazoKICAgICBjYXNlIFFFdmVu
dDo6TW91c2VCdXR0b25QcmVzczoKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBN
b3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOwor
ICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKICAgICAg
ICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2
ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFFF
dmVudDo6TW91c2VNb3ZlOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNl
RXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAgICAg
ICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgIGJy
ZWFrOwogI2lmICFkZWZpbmVkKFFUX05PX0dSQVBISUNTVklFVykKICAgICBjYXNlIFFFdmVudDo6
R3JhcGhpY3NTY2VuZU1vdXNlRG91YmxlQ2xpY2s6CiAgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNz
U2NlbmVNb3VzZVByZXNzOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IEdyYXBo
aWNzU2NlbmVNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRQ
cmVzc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJl
c3NlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3Vz
ZVJlbGVhc2U6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2Vk
OworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5lTW91c2VNb3Zl
OgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IEdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAg
bW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAgICBicmVh
azsKICNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnQ7Ci0gICAgICAgIG1v
dXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
ODYsMTIgKzg2LDEyIEBAIHN0YXRpYyB2b2lkIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b24K
ICAgICBzd2l0Y2ggKGZyYW1ld29ya01vdXNlRXZlbnRUeXBlKSB7CiAgICAgY2FzZSBNb3VzZUV2
ZW50OiB7CiAgICAgICAgIGNvbnN0IFFNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUU1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAgIG1vdXNlQnV0dG9ucyA9IG1v
dXNlRXZlbnRUeXBlID09IE1vdXNlRXZlbnRNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSA6
IG1vdXNlRXZlbnQtPmJ1dHRvbigpOworICAgICAgICBtb3VzZUJ1dHRvbnMgPSBtb3VzZUV2ZW50
VHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9ucygp
IDogbW91c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IEdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50OiB7CiAgICAgICAgIGNvbnN0IFFHcmFwaGljc1NjZW5l
TW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFFHcmFwaGljc1NjZW5l
TW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICAgICAgbW91c2VCdXR0b25zID0gbW91c2VFdmVudFR5
cGUgPT0gTW91c2VFdmVudE1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9ucygpIDogbW91c2VFdmVu
dC0+YnV0dG9uKCk7CisgICAgICAgIG1vdXNlQnV0dG9ucyA9IG1vdXNlRXZlbnRUeXBlID09IFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25zKCkgOiBtb3VzZUV2
ZW50LT5idXR0b24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAgLTExMyw3ICsx
MTMsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChRCiAKICAgICAv
LyBGSVhNRTogV2h5IGRvbid0IHdlIGhhbmRsZSBhIGNvbnRleHQgbWVudSBldmVudCBoZXJlIGFz
IHdlIGRvIGluIFBsYXRmb3JtTW91c2VFdmVudChRSW5wdXRFdmVudCosIGludCk/CiAgICAgLy8g
U2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA3Mjg+LgotICAg
IG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBtX2V2ZW50VHlw
ZSwgbV9idXR0b24pOworICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50
KGV2ZW50LCBtX3R5cGUsIG1fYnV0dG9uKTsKICAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoZXZl
bnQtPnBvcygpLnRvUG9pbnQoKSk7CiAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGV2
ZW50LT5zY3JlZW5Qb3MoKSk7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBQbGF0Zm9ybU1vdXNlRXZl
bnQ6OlBsYXRmb3JtTW91c2VFdmVudChRCiAjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpDb250ZXh0TWVudSkgewogICAgICAgICBpc0Nv
bnRleHRNZW51RXZlbnQgPSB0cnVlOwotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRQ
cmVzc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAg
ICAgICAgIFFDb250ZXh0TWVudUV2ZW50KiBjZSA9IHN0YXRpY19jYXN0PFFDb250ZXh0TWVudUV2
ZW50Kj4oZXZlbnQpOwogICAgICAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoY2UtPnBvcygpKTsK
ICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGNlLT5nbG9iYWxQb3MoKSk7CkBA
IC0xMzgsNyArMTM4LDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQo
UQogICAgIH0KICNlbmRpZgogICAgIGlmICghaXNDb250ZXh0TWVudUV2ZW50KSB7Ci0gICAgICAg
IG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBtX2V2ZW50VHlw
ZSwgbV9idXR0b24pOworICAgICAgICBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFF
dmVudChldmVudCwgbV90eXBlLCBtX2J1dHRvbik7CiAgICAgICAgIFFNb3VzZUV2ZW50KiBtb3Vz
ZUV2ZW50ID0gc3RhdGljX2Nhc3Q8UU1vdXNlRXZlbnQqPihldmVudCk7CiAgICAgICAgIG1fcG9z
aXRpb24gPSBJbnRQb2ludChtb3VzZUV2ZW50LT5wb3MoKSk7CiAgICAgICAgIG1fZ2xvYmFsUG9z
aXRpb24gPSBJbnRQb2ludChtb3VzZUV2ZW50LT5nbG9iYWxQb3MoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJKHJldmlzaW9uIDEwMjk2OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDEzICs1OSwxMCBAQCB2b2lkIFBsYXRmb3JtV2hlZWxFdmVudDo6YXBwbHlE
ZWx0YShpbnQgCiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KFFHcmFw
aGljc1NjZW5lV2hlZWxFdmVudCogZSkKICNpZm5kZWYgUVRfTk9fV0hFRUxFVkVOVAotICAgIDog
bV9wb3NpdGlvbihlLT5wb3MoKS50b1BvaW50KCkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRm
b3JtRXZlbnQ6OldoZWVsLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlmaWVyLCBlLT5t
b2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6OkFs
dE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCisgICAgLCBtX3Bv
c2l0aW9uKGUtPnBvcygpLnRvUG9pbnQoKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZS0+c2Ny
ZWVuUG9zKCkpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQot
ICAgICwgbV9zaGlmdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlmaWVyKQotICAg
ICwgbV9jdHJsS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKLSAgICAs
IG1fYWx0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVyKQotICAgICwgbV9tZXRh
S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikKICAgICAsIG1fZGlyZWN0aW9u
SW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2VuZGlmCiB7CkBAIC03OCwxMyArNzUsMTAgQEAg
UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoUQogCiBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChRV2hlZWxFdmVudCogZSkKICNpZm5kZWYgUVRfTk9f
V0hFRUxFVkVOVAotICAgIDogbV9wb3NpdGlvbihlLT5wb3MoKSkKKyAgICA6IFBsYXRmb3JtRXZl
bnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGUtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0TW9kaWZp
ZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllciwgZS0+bW9kaWZpZXJzKCkg
JiBRdDo6QWx0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikKKyAg
ICAsIG1fcG9zaXRpb24oZS0+cG9zKCkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGUtPmdsb2Jh
bFBvcygpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAg
ICAsIG1fc2hpZnRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcikKLSAgICAs
IG1fY3RybEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIpCi0gICAgLCBt
X2FsdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllcikKLSAgICAsIG1fbWV0YUtl
eShlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCiAgICAgLCBtX2RpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZShmYWxzZSkKICNlbmRpZgogewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsOSArMTQyLDkgQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tl
eQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChXUEFSQU0gY29kZSwgTFBB
UkFNIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBlKQorc3RhdGljIGJv
b2wgaXNLZXlwYWRFdmVudChXUEFSQU0gY29kZSwgTFBBUkFNIGtleURhdGEsIFBsYXRmb3JtRXZl
bnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlJhd0tleURvd24gJiYgdHlwZSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwKQorICAg
IGlmICh0eXBlICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gJiYgdHlwZSAhPSBQbGF0Zm9y
bUV2ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChjb2Rl
KSB7CkBAIC0xODcsMTggKzE4NywxNCBAQCBzdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KFdQQVJB
TSBjb2RlLCBMCiBzdGF0aWMgaW5saW5lIFN0cmluZyBzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVUNo
YXIgYykgeyByZXR1cm4gU3RyaW5nKCZjLCAxKTsgfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChIV05ELCBXUEFSQU0gY29kZSwgTFBBUkFNIGtleURhdGEs
IFR5cGUgdHlwZSwgYm9vbCBzeXN0ZW1LZXkpCi0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1f
dGV4dCgodHlwZSA9PSBDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmlu
ZygpKQotICAgICwgbV91bm1vZGlmaWVkVGV4dCgodHlwZSA9PSBDaGFyKSA/IHNpbmdsZUNoYXJh
Y3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQotICAgICwgbV9rZXlJZGVudGlmaWVyKCh0eXBl
ID09IENoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tleUNvZGUoY29k
ZSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIEdldEtleVN0YXRlKFZLX1NISUZUKSAmIEhJ
R0hfQklUX01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX0NPTlRST0wpICYgSElHSF9CSVRfTUFT
S19TSE9SVCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JULCBmYWxz
ZSkKKyAgICAsIG1fdGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNo
YXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQorICAgICwgbV91bm1vZGlmaWVkVGV4dCgo
dHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2Rl
KSA6IFN0cmluZygpKQorICAgICwgbV9rZXlJZGVudGlmaWVyKCh0eXBlID09IFBsYXRmb3JtRXZl
bnQ6OkNoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tleUNvZGUoY29k
ZSkpCiAgICAgLCBtX2F1dG9SZXBlYXQoSElXT1JEKGtleURhdGEpICYgS0ZfUkVQRUFUKQogICAg
ICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09
IEtleVVwKSA/IGNvZGUgOiAwKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShtX3dpbmRv
d3NWaXJ0dWFsS2V5Q29kZSkKICAgICAsIG1faXNLZXlwYWQoaXNLZXlwYWRFdmVudChjb2RlLCBr
ZXlEYXRhLCB0eXBlKSkKLSAgICAsIG1fc2hpZnRLZXkoR2V0S2V5U3RhdGUoVktfU0hJRlQpICYg
SElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fY3RybEtleShHZXRLZXlTdGF0ZShWS19DT05U
Uk9MKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX2FsdEtleShHZXRLZXlTdGF0ZShW
S19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX21ldGFLZXkoZmFsc2UpCiAg
ICAgLCBtX2lzU3lzdGVtS2V5KHN5c3RlbUtleSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwCShyZXZp
c2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3Vz
ZUV2ZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgSW50
UG9pbnQgZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChICiAgICAgcmV0dXJuIHBvaW50OwogfQogCi1z
dGF0aWMgTW91c2VFdmVudFR5cGUgbWVzc2FnZVRvRXZlbnRUeXBlKFVJTlQgbWVzc2FnZSkKK3N0
YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1lc3NhZ2VUb0V2ZW50VHlwZShVSU5UIG1lc3NhZ2Up
CiB7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7CiAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRCTENM
SzoKQEAgLTU4LDM1ICs1OCwzMyBAQCBzdGF0aWMgTW91c2VFdmVudFR5cGUgbWVzc2FnZVRvRXZl
bnRUeXBlCiAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRPV046CiAgICAgICAgIGNhc2UgV01fUkJV
VFRPTkRPV046CiAgICAgICAgIGNhc2UgV01fTUJVVFRPTkRPV046Ci0gICAgICAgICAgICByZXR1
cm4gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkOwogCiAgICAgICAgIGNhc2UgV01fTEJVVFRPTlVQOgogICAgICAgICBjYXNl
IFdNX1JCVVRUT05VUDoKICAgICAgICAgY2FzZSBXTV9NQlVUVE9OVVA6Ci0gICAgICAgICAgICBy
ZXR1cm4gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUmVsZWFzZWQ7CiAKICNpZiAhT1MoV0lOQ0UpCiAgICAgICAgIGNhc2UgV01fTU9V
U0VMRUFWRToKICNlbmRpZgogICAgICAgICBjYXNlIFdNX01PVVNFTU9WRToKLSAgICAgICAgICAg
IHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6TW91c2VNb3ZlZDsKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAvL01vdmUgaXMgcmVsYXRpdmVseSBoYXJtbGVzcwot
ICAgICAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgICAgIHJldHVybiBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgIH0KIH0KKwogUGxhdGZvcm1Nb3VzZUV2ZW50
OjpQbGF0Zm9ybU1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFy
YW0sIExQQVJBTSBsUGFyYW0sIGJvb2wgZGlkQWN0aXZhdGVXZWJWaWV3KQotICAgIDogbV9wb3Np
dGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50
KG1lc3NhZ2VUb0V2ZW50VHlwZShtZXNzYWdlKSwgd1BhcmFtICYgTUtfU0hJRlQsIHdQYXJhbSAm
IE1LX0NPTlRST0wsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCwg
R2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQorICAgICwgbV9wb3Np
dGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0
aW9uKGdsb2JhbFBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKICAgICAsIG1fY2xpY2tD
b3VudCgwKQotICAgICwgbV9zaGlmdEtleSh3UGFyYW0gJiBNS19TSElGVCkKLSAgICAsIG1fY3Ry
bEtleSh3UGFyYW0gJiBNS19DT05UUk9MKQotICAgICwgbV9hbHRLZXkoR2V0S2V5U3RhdGUoVktf
TUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9tZXRhS2V5KG1fYWx0S2V5KSAv
LyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVyIGJyb3dzZXJzCiAgICAgLCBtX2RpZEFj
dGl2YXRlV2ViVmlldyhkaWRBY3RpdmF0ZVdlYlZpZXcpCi0gICAgLCBtX2V2ZW50VHlwZShtZXNz
YWdlVG9FdmVudFR5cGUobWVzc2FnZSkpCisgICAgLCBtX2V2ZW50VHlwZSgpCiAgICAgLCBtX21v
ZGlmaWVyRmxhZ3Mod1BhcmFtKQogewogICAgIG1fdGltZXN0YW1wID0gOjpHZXRUaWNrQ291bnQo
KSowLjAwMTsgLy8gR2V0VGlja0NvdW50IHJldHVybnMgbWlsbGlzZWNvbmRzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCShyZXZpc2lvbiAx
MDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDEwICs2Niw3IEBAIHN0YXRpYyBpbnQgdmVydGljYWxTY3Jv
bGxMaW5lcygpCiB9CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEhX
TkQgaFduZCwgY29uc3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRp
b24pCi0gICAgOiBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAg
ICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgOiBQbGF0Zm9y
bUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK
ICAgICAsIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogewogICAgIG1fZGVs
dGFYID0gZGVsdGEud2lkdGgoKTsKQEAgLTg4LDEyICs4NSw5IEBAIFBsYXRmb3JtV2hlZWxFdmVu
dDo6UGxhdGZvcm1XaGVlbEV2ZW50KEgKIH0KIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoSFdORCBoV25kLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLCBib29s
IGlzTW91c2VIV2hlZWwpCi0gICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwg
bFBhcmFtKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIHdQYXJh
bSAmIE1LX1NISUZULCB3UGFyYW0gJiBNS19DT05UUk9MLCBHZXRLZXlTdGF0ZShWS19NRU5VKSAm
IEhJR0hfQklUX01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFT
S19TSE9SVCkKKyAgICAsIG1fcG9zaXRpb24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0p
KQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQ
YXJhbSkpCi0gICAgLCBtX3NoaWZ0S2V5KHdQYXJhbSAmIE1LX1NISUZUKQotICAgICwgbV9jdHJs
S2V5KHdQYXJhbSAmIE1LX0NPTlRST0wpCi0gICAgLCBtX2FsdEtleShHZXRLZXlTdGF0ZShWS19N
RU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX21ldGFLZXkobV9hbHRLZXkpIC8v
IEZJWE1FOiBXZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKICAgICAsIG1fZGlyZWN0
aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogewogICAgIC8vIEhvdyBtYW55IHBpeGVscyBz
aG91bGQgd2Ugc2Nyb2xsIHBlciBsaW5lPyAgR2Vja28gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3Bw
CShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9LZXlib2Fy
ZEV2ZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsMTQgKzMzNywxNCBAQCBzdGF0aWMg
aW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQodW5zCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCh3eEtleUV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZl
bnQuR2V0RXZlbnRUeXBlKCkgPT0gd3hFVlRfS0VZX1VQKQotICAgICAgICBtX3R5cGUgPSBLZXlV
cDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgZWxzZSBpZiAo
ZXZlbnQuR2V0RXZlbnRUeXBlKCkgPT0gd3hFVlRfS0VZX0RPV04pCi0gICAgICAgIG1fdHlwZSA9
IEtleURvd247CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6OktleURvd247CiAgICAg
ZWxzZSBpZiAoZXZlbnQuR2V0RXZlbnRUeXBlKCkgPT0gd3hFVlRfQ0hBUikKLSAgICAgICAgbV90
eXBlID0gQ2hhcjsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6Q2hhcjsKICAgICBl
bHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGlmIChtX3R5cGUgIT0gQ2hh
cikKKyAgICBpZiAobV90eXBlICE9IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgIG1fa2V5
SWRlbnRpZmllciA9IGtleUlkZW50aWZpZXJGb3JXeEtleUNvZGUoZXZlbnQuR2V0S2V5Q29kZSgp
KTsKICAgICBlbHNlIHsKICAgICAgICAgLy9FTlRFUiBpcyBhbiBlZGl0aW5nIGNvbW1hbmQgcHJv
Y2Vzc2VkIGFzIGEgY2hhciAob25seSBFbnRlciBhbmQgVGFiIGFyZSkKQEAgLTM3MSw5ICszNzEs
OSBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiB2b2lkIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9v
bCkKIHsKICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5
RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9u
cy4KLSAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOworICAgIEFTU0VSVChtX3R5cGUgPT0g
UGxhdGZvcm1FdmVudDo6S2V5RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKLSAgICBpZiAodHlw
ZSA9PSBSYXdLZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5
RG93bikgewogICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVk
VGV4dCA9IFN0cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93eC9Nb3VzZUV2ZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDI2ICszMywyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBsYXRmb3JtTW91c2VFdmVu
dDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0IHd4TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHd4
UG9pbnQmIGdsb2JhbFBvaW50LCBpbnQgY2xpY2tDb3VudCkKLSAgICA6IG1fcG9zaXRpb24oZXZl
bnQuR2V0UG9zaXRpb24oKSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnQpCi0g
ICAgLCBtX3NoaWZ0S2V5KGV2ZW50LlNoaWZ0RG93bigpKQotICAgICwgbV9jdHJsS2V5KGV2ZW50
LkNtZERvd24oKSB8fCBldmVudC5Db250cm9sRG93bigpKQotICAgICwgbV9hbHRLZXkoZXZlbnQu
QWx0RG93bigpKQotICAgICwgbV9tZXRhS2V5KGV2ZW50Lk1ldGFEb3duKCkpIC8vIEZJWE1FOiBX
ZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpU
eXBlIHR5cGVGcm9tTW91c2VFdmVudChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50KQogewogICAg
IHd4RXZlbnRUeXBlIHR5cGUgPSBldmVudC5HZXRFdmVudFR5cGUoKTsKLSAgICBtX2V2ZW50VHlw
ZSA9IE1vdXNlRXZlbnRNb3ZlZDsKLSAgICAKLSAgICBpZiAodHlwZSA9PSB3eEVWVF9MRUZUX0RP
V04gfHwgdHlwZSA9PSB3eEVWVF9NSURETEVfRE9XTiB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RP
V04pCi0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7Ci0gICAgCi0gICAg
ZWxzZSBpZiAodHlwZSA9PSB3eEVWVF9MRUZUX1VQIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX1VQ
IHx8IHR5cGUgPT0gd3hFVlRfUklHSFRfVVAgfHwgCi0gICAgICAgICAgICAgICAgdHlwZSA9PSB3
eEVWVF9MRUZUX0RDTElDSyB8fCB0eXBlID09IHd4RVZUX01JRERMRV9EQ0xJQ0sgfHwgdHlwZSA9
PSB3eEVWVF9SSUdIVF9EQ0xJQ0spCi0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFJl
bGVhc2VkOwogCisgICAgaWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9ET1dOIHx8IHR5cGUgPT0gd3hF
VlRfTUlERExFX0RPV04gfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9ET1dOKQorICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOworICAgIGVsc2UgaWYgKHR5cGUgPT0gd3hF
VlRfTEVGVF9VUCB8fCB0eXBlID09IHd4RVZUX01JRERMRV9VUCB8fCB0eXBlID09IHd4RVZUX1JJ
R0hUX1VQIHx8IHR5cGUgPT0gd3hFVlRfTEVGVF9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVWVF9NSURE
TEVfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfUklHSFRfRENMSUNLKQorICAgICAgICByZXR1cm4g
UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICBlbHNlIGlmICh0eXBlID09IHd4RVZU
X01PVElPTikKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOworCisgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQ7Cit9CisKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50KGNvbnN0IHd4TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHd4UG9pbnQmIGdsb2JhbFBv
aW50LCBpbnQgY2xpY2tDb3VudCkKKyAgICA6IFBsYXRmb3JtRXZlbnQodHlwZUZyb21Nb3VzZUV2
ZW50KGV2ZW50KSwgZXZlbnQuU2hpZnREb3duKCksIGV2ZW50LkNtZERvd24oKSB8fCBldmVudC5D
b250cm9sRG93bigpLCBldmVudC5BbHREb3duKCksIGV2ZW50Lk1ldGFEb3duKCkpCisgICAgOiBt
X3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCisgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGds
b2JhbFBvaW50KQorewogCiAgICAgaWYgKGV2ZW50LkxlZnRJc0Rvd24oKSB8fCBldmVudC5CdXR0
b24od3hNT1VTRV9CVE5fTEVGVCkpCiAgICAgICAgIG1fYnV0dG9uID0gTGVmdEJ1dHRvbjsKQEAg
LTYwLDExICs1OSw4IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGMK
ICAgICAgICAgbV9idXR0b24gPSBSaWdodEJ1dHRvbjsKICAgICBlbHNlIGlmIChldmVudC5NaWRk
bGVJc0Rvd24oKSB8fCBldmVudC5CdXR0b24od3hNT1VTRV9CVE5fTUlERExFKSkKICAgICAgICAg
bV9idXR0b24gPSBNaWRkbGVCdXR0b247Ci0gICAgZWxzZSBpZiAoIW1fZXZlbnRUeXBlID09IE1v
dXNlRXZlbnRNb3ZlZCkKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KIAotICAgIGlm
IChtX2V2ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQpCisgICAgaWYgKG1fdHlwZSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKQogICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwogICAgIGVs
c2UKICAgICAgICAgbV9jbGlja0NvdW50ID0gY2xpY2tDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAJKHJldmlzaW9uIDEw
Mjk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0IHd4TW91c2VF
dmVudCYgZXZlbnQsIGNvbnN0IHd4UG9pbnQmIGdsb2JhbFBvaW50KQotICAgIDogbV9wb3NpdGlv
bihldmVudC5HZXRQb3NpdGlvbigpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpXaGVlbCwgZXZlbnQuU2hpZnREb3duKCksIGV2ZW50LkNvbnRyb2xEb3duKCksIGV2ZW50LkFs
dERvd24oKSwgZXZlbnQuTWV0YURvd24oKSkKKyAgICAsIG1fcG9zaXRpb24oZXZlbnQuR2V0UG9z
aXRpb24oKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnQpCiAgICAgLCBtX2dy
YW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShldmVu
dC5TaGlmdERvd24oKSkKLSAgICAsIG1fY3RybEtleShldmVudC5Db250cm9sRG93bigpKQotICAg
ICwgbV9hbHRLZXkoZXZlbnQuQWx0RG93bigpKQotICAgICwgbV9tZXRhS2V5KGV2ZW50Lk1ldGFE
b3duKCkpIC8vIEZJWE1FOiBXZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKICAgICAs
IG1fZGVsdGFYKDApIC8vIHd4IGRvZXNuJ3Qgc3VwcG9ydCBob3Jpem9udGFsIG1vdXNlIHdoZWVs
IHNjcm9sbGluZwogICAgICwgbV9kZWx0YVkoZXZlbnQuR2V0V2hlZWxSb3RhdGlvbigpIC8gZXZl
bnQuR2V0V2hlZWxEZWx0YSgpKQogICAgICwgbV93aGVlbFRpY2tzWChtX2RlbHRhWCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQkocmV2aXNpb24g
MTAyOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjI1LDE5ICs2MjUsMTkgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleQogICAgIEV2ZW50UmVjb3JkIHJlY29yZDsKIAogICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKLSAgICAgICAgLy8g
VGhpcyBldmVudCBpcyB0aGUgcmVzdWx0IG9mIGEgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlE
b3duIHdoaWNoCisgICAgICAgIC8vIFRoaXMgZXZlbnQgaXMgdGhlIHJlc3VsdCBvZiBhIFBsYXRm
b3JtRXZlbnQ6OktleURvd24gd2hpY2gKICAgICAgICAgLy8gd2FzIGRpc2FtYmlndWF0ZWQgaW50
byBhIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bi4gU2luY2UKICAgICAgICAgLy8g
d2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHRleHQgaGVyZSwgd2UgcmV0dXJuLCBhbmQgd2Fp
dCBmb3IgdGhlCiAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgZXZlbnQgYmFzZWQgb24gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpDaGFyLgogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7CiAgICAgICAgIC8v
IFdoaWNoIHdvdWxkIGJlIHRoaXMgb25lLiBUaGlzIGV2ZW50IHdhcyBkaXNhbWJpZ3VhdGVkIGZy
b20gdGhlIHNhbWUKLSAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duLCBi
dXQgdG8gYSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIsCisgICAgICAgIC8vIFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sIGJ1dCB0byBhIFBsYXRmb3JtRXZlbnQ6OkNoYXIsCiAgICAgICAgIC8v
IHdoaWNoIHJldGFpbnMgdGhlIHRleHQgZnJvbSB0aGUgb3JpZ2luYWwgZXZlbnQuIFNvLCB3ZSBj
YW4gc2FmZWx5IHBhc3MKICAgICAgICAgLy8gb24gdGhlIGV2ZW50IGFzIGEga2V5LWRvd24gZXZl
bnQgdG8gdGhlIHBsdWdpbi4KICAgICAgICAgcmVjb3JkLndoYXQgPSBrZXlEb3duOwogICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5dXBFdmVudCkgewotICAg
ICAgICAvLyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwIGV2ZW50cyBhbHdheXMgaGF2ZSB0
aGUgdGV4dCwgc28gbm90aGluZworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCBldmVu
dHMgYWx3YXlzIGhhdmUgdGhlIHRleHQsIHNvIG5vdGhpbmcKICAgICAgICAgLy8gZmFuY3kgaGVy
ZS4KICAgICAgICAgcmVjb3JkLndoYXQgPSBrZXlVcDsKICAgICB9IGVsc2UgewpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNyAr
MzU1LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybQogICAgIH0K
IAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCBw
Z2UoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUsIEludFBvaW50KHR4LCB0eSks
IEludFBvaW50KHR4LCB0eSksIDAsIHNjYWxlLCAwLmYsIDAsIDAsIDAsIDApOworICAgIFBsYXRm
b3JtR2VzdHVyZUV2ZW50IHBnZShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwLCBJbnRQ
b2ludCh0eCwgdHkpLCBJbnRQb2ludCh0eCwgdHkpLCAwLCBzY2FsZSwgMC5mLCAwLCAwLCAwLCAw
KTsKICAgICBkb2N1bWVudC0+dmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
R2VzdHVyZUV2ZW50KHBnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzY2FsZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0
Zm9ybU1vdXNlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6V2ViS2l0
MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZU1vdXNl
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYWdFbmRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVj
dXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorCiAyMDExLTEyLTE1ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nIHRvIHRoZSB0aWxlZCBDb3JlIEFuaW1hdGlvbiBkcmF3aW5nIGFy
ZWEKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3Bw
CShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252
ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjAgKzM0LDI3IEBAIGNsYXNzIFdlYktp
dDJQbGF0Zm9ybU1vdXNlRXZlbnQgOiBwdWJsaWMKIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZv
cm1Nb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAg
ICAgLy8gUGxhdGZvcm1FdmVudAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewog
ICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZURvd246Ci0gICAgICAgICAgICBtX2V2ZW50VHlw
ZSA9IFdlYkNvcmU6Ok1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICAgICAgbV90eXBlID0gV2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgICAgICBtX2V2ZW50VHlwZSA9
IFdlYkNvcmU6Ok1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VNb3ZlOgotICAgICAgICAgICAgbV9ldmVudFR5cGUg
PSBXZWJDb3JlOjpNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
CisgICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0
cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZl
bnQuYWx0S2V5KCk7CisgICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKwor
ICAgICAgICAvLyBQbGF0Zm9ybU1vdXNlRXZlbnQKICAgICAgICAgc3dpdGNoICh3ZWJFdmVudC5i
dXR0b24oKSkgewogICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgogICAgICAg
ICAgICAgbV9idXR0b24gPSBXZWJDb3JlOjpOb0J1dHRvbjsKQEAgLTY5LDEwICs3Niw2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCk7CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsKICAgICAg
ICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKLSAgICAgICAgbV9zaGlmdEtl
eSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNv
bnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAg
ICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOwogCiAgICAgICAgIG1fbW9kaWZpZXJG
bGFncyA9IDA7CiAgICAgICAgIGlmIChtX3NoaWZ0S2V5KQpAQCAtOTksNiArMTAyLDE0IEBAIGNs
YXNzIFdlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQgOiBwdWJsaWMKIHB1YmxpYzoKICAgICBXZWJL
aXQyUGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdlYkV2ZW50KQogICAg
IHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2
ZW50OjpXaGVlbDsKKyAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Cisg
ICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRL
ZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0
YUtleSgpOworCisgICAgICAgIC8vIFBsYXRmb3JtV2hlZWxFdmVudAogICAgICAgICBtX3Bvc2l0
aW9uID0gd2ViRXZlbnQucG9zaXRpb24oKTsKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IHdl
YkV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fZGVsdGFYID0gd2ViRXZlbnQuZGVs
dGEoKS53aWR0aCgpOwpAQCAtMTA2LDEwICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2hl
ZWxUaWNrc1ggPSB3ZWJFdmVudC53aGVlbFRpY2tzKCkud2lkdGgoKTsKICAgICAgICAgbV93aGVl
bFRpY2tzWSA9IHdlYkV2ZW50LndoZWVsVGlja3MoKS5oZWlnaHQoKTsKICAgICAgICAgbV9ncmFu
dWxhcml0eSA9ICh3ZWJFdmVudC5ncmFudWxhcml0eSgpID09IFdlYldoZWVsRXZlbnQ6OlNjcm9s
bEJ5UGFnZVdoZWVsRXZlbnQpID8gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlV2hlZWxFdmVudCA6IFdl
YkNvcmU6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OwotICAgICAgICBtX3NoaWZ0S2V5ID0gd2Vi
RXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtl
eSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX21l
dGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CiAgICAgICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlID0gd2ViRXZlbnQuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCk7CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2U+KHdlYkV2ZW50LnBoYXNlKCkpOwpAQCAtMTI5LDIyICsxMzYs
MzAgQEAgY2xhc3MgV2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCA6IHB1YgogcHVibGljOgog
ICAgIFdlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
d2ViRXZlbnQpCiAgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAgIHN3aXRj
aCAod2ViRXZlbnQudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OktleURvd246Ci0g
ICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAg
ICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OktleVVwOgotICAgICAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgICAgIG1fdHlw
ZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OktleVVwOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV2ViRXZlbnQ6OlJhd0tleURvd246Ci0gICAgICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd247CisgICAgICAgICAgICBtX3R5cGUgPSBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV2ViRXZlbnQ6OkNoYXI6Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpDaGFyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAgICAgIG1f
c2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJF
dmVudC5jb250cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7
CisgICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQKICAgICAgICAgbV90ZXh0ID0gd2ViRXZlbnQudGV4dCgpOwog
ICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gd2ViRXZlbnQudW5tb2RpZmllZFRleHQoKTsKICAg
ICAgICAgbV9rZXlJZGVudGlmaWVyID0gd2ViRXZlbnQua2V5SWRlbnRpZmllcigpOwpAQCAtMTUy
LDEwICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSB3
ZWJFdmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpOwogICAgICAgICBtX2F1dG9SZXBlYXQgPSB3
ZWJFdmVudC5pc0F1dG9SZXBlYXQoKTsKICAgICAgICAgbV9pc0tleXBhZCA9IHdlYkV2ZW50Lmlz
S2V5cGFkKCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAg
ICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5
ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFL
ZXkoKTsKICAgICAgICAgCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIG1ha2UgbV9pc1N5c3RlbUtleSBhdmFpbGFibGUgKGFuZCBmYWxzZSkgb24gYWxsIHBs
YXRmb3JtcwpAQCAtMTc1LDIwICsxODYsMjcgQEAgY2xhc3MgV2ViS2l0MlBsYXRmb3JtR2VzdHVy
ZUV2ZW50IDogcHVibAogcHVibGljOgogICAgIFdlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudChj
b25zdCBXZWJHZXN0dXJlRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gUGxhdGZv
cm1FdmVudAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewogICAgICAgICBjYXNl
IFdlYkV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICAgICAgbV90eXBlID0g
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgICAg
ICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZTsKKyAgICAg
ICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNpbmds
ZVRhcDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBl
OworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2VzdHVyZVRh
cDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAorICAgICAgICBtX3NoaWZ0S2V5ID0gd2Vi
RXZlbnQuc2hpZnRLZXkoKTsKKyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtl
eSgpOworICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21l
dGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1HZXN0dXJl
RXZlbnQKICAgICAgICAgbV9wb3NpdGlvbiA9IHdlYkV2ZW50LnBvc2l0aW9uKCk7CiAgICAgICAg
IG1fZ2xvYmFsUG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAgICAgICBt
X3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTAyOTY4
KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC03MDYsNyArNzA2LDcgQEAKIAkJQkNBMEVGOUYxMjMzMjY0MjAwN0Qz
Q0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjlEMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29t
bWFuZFByb3h5LmggKi87IH07CiAJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0
Q29tbWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQTBFRjlFMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNw
cCAqLzsgfTsKIAkJQkNBMjg0RDYxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI4NEQ0MTQ5
MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24ubW0gKi87IH07Ci0JCUJDQTI4NEQ3MTQ5MkYy
QzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI4NEQ1MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rp
b24uaCAqLzsgfTsKKwkJQkNBMjg0RDcxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMjg0RDUx
NDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkNBNTZBMUMxMkY5MDI4RTAwQzU2NkM3IC8qIFdl
YkdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNBNTZBMUExMkY5MDI4RTAwQzU2NkM3IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5o
ICovOyB9OwogCQlCQ0E1NkExRDEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3JhcGhpY3NDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2
QTFCMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQuY3BwICovOyB9OwogCQlC
Q0E1NkE2NTEyRjlDOEY5MDBDNTY2QzcgLyogV0tHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2QTYzMTJGOUM4RjkwMEM1
NjZDNyAvKiBXS0dyYXBoaWNzQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0
ay5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgwLDcgKzgwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbgog
ICAgICAgICAvLyBEdXJpbmcgUmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQg
d2lsbCBpbnNlcnQgdGV4dCwgZGVmZXIKICAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0
aGUga2V5cHJlc3MgZXZlbnQuIFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAKICAgICAgICAg
Ly8gdGhyb3VnaCB0aGUgRE9NIGZpcnN0LgotICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlw
ZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgICAgICBpZiAo
cGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAg
ICAgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5n
RWRpdG9yQ29tbWFuZHMsIGZhbHNlKSkKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgzLDggKzExODMs
OCBAQCBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vCiAKICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1Nb3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VFdmVudCk7
CiAKLSAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC5ldmVudFR5cGUoKSkgewotICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRQcmVzc2VkOgorICAgIHN3aXRjaCAocGxhdGZvcm1N
b3VzZUV2ZW50LnR5cGUoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJl
c3NlZDoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzQ29udGV4dENsaWNrKHBsYXRmb3Jt
TW91c2VFdmVudCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVy
KCktPmNsZWFyQ29udGV4dE1lbnUoKTsKQEAgLTExOTUsOSArMTE5NSw5IEBAIHN0YXRpYyBib29s
IGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW8KIAogICAgICAgICAgICAgcmV0dXJuIGhhbmRs
ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UmVsZWFzZWQ6
CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDoKICAgICAgICAgICAg
IHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBs
YXRmb3JtTW91c2VFdmVudCk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudE1vdmVk
OgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKHBsYXRmb3JtTW91c2VFdmVu
dCwgb25seVVwZGF0ZVNjcm9sbGJhcnMpOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNTMyLDcg
KzE1MzIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhCiAKICAg
ICBpZiAoaXNLZXlib2FyZEV2ZW50VmFsaWQgJiYgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpL
ZXlEb3duKSB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50KHBs
YXRmb3JtKGV2ZW50KSk7Ci0gICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93
bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHBsYXRm
b3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pOwogICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMo
Zm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQs
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+
ZGVmYXVsdFZpZXcoKSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwMyw3
ICsxOTAzLDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudAogCiAg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50
ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vz
bid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21t
YW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQg
YmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVp
dGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3Vz
KSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gKGUuZy4g
VGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KQEAgLTIwNTEsNyAr
MjA1MSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW4KICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2Ug
bW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQu
Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFk
anVzdGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRmb3JtTW91
c2VFdmVudCBldmVudChhZGp1c3RlZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0
aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlv
bilvcGVyYXRpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIFdlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0Nv
bW1hbmRzSW50CiAgICAgICAgICAgICAgICAgYm9vbCBjb21tYW5kRXhlY3V0ZWRCeUVkaXRvciA9
IGNvbW1hbmQuZXhlY3V0ZShldmVudCk7CiAgICAgICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVk
IHw9IGNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yOwogICAgICAgICAgICAgICAgIGlmICghY29tbWFu
ZEV4ZWN1dGVkQnlFZGl0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBwZXJmb3JtZWRO
b25FZGl0aW5nQmVoYXZpb3IgPSBldmVudC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biAmJiBwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9y
U2VsZWN0b3IoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpOworICAgICAgICAgICAgICAgICAgICBi
b29sIHBlcmZvcm1lZE5vbkVkaXRpbmdCZWhhdmlvciA9IGV2ZW50LT5rZXlFdmVudCgpLT50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biAmJiBwZXJmb3JtTm9uRWRpdGluZ0JlaGF2
aW9yRm9yU2VsZWN0b3IoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpOwogICAgICAgICAgICAgICAg
ICAgICBldmVudFdhc0hhbmRsZWQgfD0gcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2aW9yOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yMDksNyArMjA5LDcgQEAg
Ym9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudAogICAgICAgICB9CiAgICAg
ICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBr
ZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMu
CiAgICAgICAgIC8vIEtleXByZXNzIChDaGFyIGV2ZW50KSBoYW5kbGVyIGlzIHRoZSBsYXRlc3Qg
b3Bwb3J0dW5pdHkgdG8gZXhlY3V0ZS4KLSAgICAgICAgaWYgKCFoYXZlVGV4dEluc2VydGlvbkNv
bW1hbmRzIHx8IHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OkNoYXIpIHsKKyAgICAgICAgaWYgKCFoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBsYXRm
b3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSB7CiAgICAgICAgICAgICBl
dmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGV2ZW50LT5r
ZXlwcmVzc0NvbW1hbmRzKCksIGV2ZW50KTsKICAgICAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0Nv
bW1hbmRzKCkuY2xlYXIoKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwMzAyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2
ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1w
bDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBs
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogc3JjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
OjprZXlib2FyZFNob3J0Y3V0KToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQbGF0
Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
KToKKyAgICAgICAgKFdlYktpdDo6dG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAqIHRlc3RzL0tleWJvYXJkVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVzdDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6OmludGVycHJldE9TTW9kaWZpZXJLZXlQcmVzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVzdDo6aW50ZXJwcmV0Q3RybEtleVByZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXRUYWIpOgorICAgICAgICAoV2Vi
S2l0OjpLZXlib2FyZFRlc3Q6OmludGVycHJldE5ld0xpbmUpOgorICAgICAgICAoV2ViS2l0OjpU
RVNUX0YpOgorICAgICAgICAqIHRlc3RzL1BvcHVwTWVudVRlc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0OjpzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVwTWVudVRlc3Q6OnNpbXVsYXRlTGVmdE1vdXNlVXBF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTEtMTItMTUgIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBXaW5kb3dzIChUZXN0
cykgaXMgZmFpbGluZyB0byBidWlsZApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NDQsNyArNTQ0LDcgQEAgY29uc3QgY2hhciogRWRpdG9yQ2xpZW50SW1wbDo6aW50ZXJwcmV0
SwogICAgIGlmIChrZXlFdmVudC0+bWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMgfD0gTWV0
YUtleTsKIAotICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UmF3S2V5RG93bikgeworICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8
IGV2dC0+a2V5Q29kZSgpOwogICAgICAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRz
TWFwLT5nZXQobWFwS2V5KSA6IDA7CiAgICAgfQpAQCAtNTY3LDcgKzU2Nyw3IEBAIGJvb2wgRWRp
dG9yQ2xpZW50SW1wbDo6aGFuZGxlRWRpdGluZ0tleWIKICAgICBTdHJpbmcgY29tbWFuZE5hbWUg
PSBpbnRlcnByZXRLZXlFdmVudChldnQpOwogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0g
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKTsKIAotICAgIGlmIChrZXlFdmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlm
IChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0
byBkZWNpZGUgaG93CiAgICAgICAgIC8vIGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBp
ZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3
ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
NiwxMyArNTY2LDEzIEBAIFdlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjprZXlib2EK
ICAgICAgICAgLy8gRm9sbG93IHRoZSBzYW1lIG9yZGVyIGFzIE1vemlsbGEgTVNBQSBpbXBsZW1l
bnRhdGlvbjoKICAgICAgICAgLy8gQ3RybCtBbHQrU2hpZnQrTWV0YStrZXkuIE1TRE4gc3RhdGVz
IHRoYXQga2V5Ym9hcmQgc2hvcnRjdXQgc3RyaW5ncwogICAgICAgICAvLyBzaG91bGQgbm90IGJl
IGxvY2FsaXplZCBhbmQgZGVmaW5lcyB0aGUgc2VwYXJhdG9yIGFzICIrIi4KLSAgICAgICAgaWYg
KG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleSkKKyAgICAgICAgaWYg
KG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkpCiAgICAgICAgICAgICBtb2RpZmll
clN0cmluZyArPSAiQ3RybCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpBbHRLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50
OjpBbHRLZXkpCiAgICAgICAgICAgICBtb2RpZmllclN0cmluZyArPSAiQWx0KyI7Ci0gICAgICAg
IGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlNoaWZ0S2V5KQorICAgICAg
ICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpCiAgICAgICAgICAgICBt
b2RpZmllclN0cmluZyArPSAiU2hpZnQrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6TWV0YUtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRm
b3JtRXZlbnQ6Ok1ldGFLZXkpCiAgICAgICAgICAgICBtb2RpZmllclN0cmluZyArPSAiV2luKyI7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50
Q29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDE1ICs3NSwxNSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQbGF0
Zm9ybU1vdXNlCiAgICAgc3dpdGNoIChlLnR5cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Ok1vdXNlTW92ZToKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTGVhdmU6ICAvLyBzeW50
aGVzaXplIGEgbW92ZSBldmVudAotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3Zl
ZDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAgbV9l
dmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6TW91c2VVcDoKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7
CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAg
IGJyZWFrOwogCiAgICAgZGVmYXVsdDoKQEAgLTEwMyw2ICsxMDMsOCBAQCBQbGF0Zm9ybVdoZWVs
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsCiAgICAgbV93aGVlbFRpY2tzWSA9IGUud2hlZWxU
aWNrc1k7CiAgICAgbV9ncmFudWxhcml0eSA9IGUuc2Nyb2xsQnlQYWdlID8KICAgICAgICAgU2Ny
b2xsQnlQYWdlV2hlZWxFdmVudCA6IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OworICAgIAorICAg
IG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOwogICAgIG1fc2hpZnRLZXkgPSAoZS5tb2Rp
ZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7CiAgICAgbV9jdHJsS2V5ID0gKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7CiAgICAgbV9hbHRLZXkgPSAoZS5t
b2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkpOwpAQCAtMTIyLDE2ICsxMjQsMTYgQEAg
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlcwogewogICAgIHN3aXRjaCAo
ZS50eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46Ci0g
ICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7Cisg
ICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgotICAg
ICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZTsKKyAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgotICAgICAg
ICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTsKKyAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgotICAgICAgICBtX3R5
cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZTsKKyAgICAgICAgbV90eXBlID0gUGxh
dGZvcm1FdmVudDo6R2VzdHVyZVRhcDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNTAsMjEgKzE1MiwyMSBAQCBQbGF0Zm9y
bUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzCiAKIC8vIE1ha2VQbGF0Zm9ybUtleWJv
YXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotc3RhdGljIGlubGluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRUeXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKK3N0YXRpYyBpbmxp
bmUgUGxhdGZvcm1FdmVudDo6VHlwZSB0b1BsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUoV2ViSW5w
dXRFdmVudDo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6S2V5VXA6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OktleVVwOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpLZXlEb3duOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpLZXlEb3duOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKICAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6OlJhd0tleURvd246Ci0gICAgICAgIHJldHVybiBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd247CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKLSAgICAgICAgcmV0
dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6OkNoYXI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAg
cmV0dXJuIFBsYXRmb3JtRXZlbnQ6OktleURvd247CiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYgZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwNSw3ICsyMjA1LDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQoCiB7CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBt
ZShjbGllbnRQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlblBvaW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAwKTsKICAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQocG1lLAogICAgICAgICBz
dGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihvcGVyYXRpb24pKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvS2V5Ym9hcmRUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAJKHJldmlzaW9uIDEwMjk2OCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvS2V5Ym9hcmRUZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gRS5nLiwgc2VuZGluZyBp
biB0aGUgZW50ZXIga2V5IGdpdmVzIGJhY2sgIkluc2VydE5ld2xpbmUiLgogICAgIGNvbnN0IGNo
YXIqIGludGVycHJldEtleUV2ZW50KAogICAgICAgICBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3
ZWJLZXlib2FyZEV2ZW50LAotICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUga2V5
VHlwZSkKKyAgICAgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBrZXlUeXBlKQogICAgIHsKICAgICAg
ICAgRWRpdG9yQ2xpZW50SW1wbCBlZGl0b3JJbXBsKDApOwogICAgICAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnRCdWlsZGVyIGV2dCh3ZWJLZXlib2FyZEV2ZW50KTsKQEAgLTg1LDcgKzg1LDcgQEAg
cHVibGljOgogICAgICAgICBXZWJJbnB1dEV2ZW50OjpNb2RpZmllcnMgb3NNb2RpZmllciA9IFdl
YklucHV0RXZlbnQ6OkNvbnRyb2xLZXk7CiAjZW5kaWYKICAgICAgICAgc2V0dXBLZXlEb3duRXZl
bnQoJmtleWJvYXJkRXZlbnQsIGtleUNvZGUsIG9zTW9kaWZpZXIpOwotICAgICAgICByZXR1cm4g
aW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpS
YXdLZXlEb3duKTsKKyAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZl
bnQsIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgIH0KIAogICAgIC8vIExpa2UgaW50
ZXJwcmV0S2V5RXZlbnQsIGJ1dCB3aXRoIHByZXNzaW5nIGRvd24gY3RybCt8a2V5Q29kZXwuCkBA
IC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYktleWJvYXJkRXZlbnQg
a2V5Ym9hcmRFdmVudDsKICAgICAgICAgc2V0dXBLZXlEb3duRXZlbnQoJmtleWJvYXJkRXZlbnQs
IGtleUNvZGUsIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwotICAgICAgICByZXR1cm4gaW50
ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdL
ZXlEb3duKTsKKyAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQs
IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgIH0KIAogICAgIC8vIExpa2UgaW50ZXJw
cmV0S2V5RXZlbnQsIGJ1dCB3aXRoIHR5cGluZyBhIHRhYi4KQEAgLTEwMSw3ICsxMDEsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQ7CiAg
ICAgICAgIHNldHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCAnXHQnLCBtb2RpZmllcnMp
OwotICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpDaGFyKTsKKyAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50
KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtRXZlbnQ6OkNoYXIpOwogICAgIH0KIAogICAgIC8vIExp
a2UgaW50ZXJwcmV0S2V5RXZlbnQsIGJ1dCB3aXRoIHR5cGluZyBhIG5ld2xpbmUuCkBAIC0xMDks
NyArMTA5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV2ViS2V5Ym9hcmRFdmVudCBrZXli
b2FyZEV2ZW50OwogICAgICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwgJ1xy
JywgbW9kaWZpZXJzKTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJk
RXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7CisgICAgICAgIHJldHVybiBpbnRl
cnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpDaGFyKTsKICAgICB9
CiAKICAgICAvLyBBIG5hbWUgZm9yICJubyBtb2RpZmllcnMgc2V0Ii4KQEAgLTE2OSw3ICsxNjks
NyBAQCBURVNUX0YoS2V5Ym9hcmRUZXN0LCBUZXN0RXNjYXBlKQogICAgIHNldHVwS2V5RG93bkV2
ZW50KCZrZXlib2FyZEV2ZW50LCBXZWJDb3JlOjpWS0VZX0VTQ0FQRSwgbm9Nb2RpZmllcnMpOwog
CiAgICAgY29uc3QgY2hhciogcmVzdWx0ID0gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgIEVYUEVDVF9TVFJF
USgiQ2FuY2VsIiwgcmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzUsMTMgKzIzNSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2ltdWxhdGVzIGEgbW91c2Ug
ZXZlbnQgb24gdGhlIHNlbGVjdCBwb3B1cC4KICAgICB2b2lkIHNpbXVsYXRlTGVmdE1vdXNlRG93
bkV2ZW50KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICB7Ci0gICAgICAgIFBsYXRmb3JtTW91
c2VFdmVudCBtb3VzZUV2ZW50KHBvaW50LCBwb2ludCwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFBy
ZXNzZWQsCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvaW50LCBwb2lu
dCwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
MCk7CiAgICAgICAgIG1fd2ViVmlldy0+c2VsZWN0UG9wdXAoKS0+aGFuZGxlTW91c2VEb3duRXZl
bnQobW91c2VFdmVudCk7CiAgICAgfQogICAgIHZvaWQgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50
KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICB7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBtb3VzZUV2ZW50KHBvaW50LCBwb2ludCwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJlbGVhc2Vk
LAorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExl
ZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsK
ICAgICAgICAgbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChtb3VzZUV2ZW50KTsKICAgICB9CkBAIC0zNzMsNyArMzczLDcgQEAgVEVTVF9GKFNlbGVjdFBv
cHVwTWVudVRlc3QsIE1vdXNlT3Zlckl0ZQogICAgIC8vIFkgb2YgMTggdG8gYmUgb24gdGhlIGl0
ZW0gYXQgaW5kZXggMSAoMTIgZm9udCBwbHVzIGJvcmRlciBhbmQgbW9yZSB0byBiZSBzYWZlKS4K
ICAgICBJbnRQb2ludCByb3cxUG9pbnQoMiwgMTgpOwogICAgIC8vIFNpbXVsYXRlIHRoZSBtb3Vz
ZSBtb3Zpbmcgb3ZlciB0aGUgZmlyc3QgaXRlbS4KLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91
c2VFdmVudChyb3cxUG9pbnQsIHJvdzFQb2ludCwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwK
KyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChyb3cxUG9pbnQsIHJvdzFQb2ludCwg
Tm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgIG1f
d2ViVmlldy0+c2VsZWN0UG9wdXAoKS0+aGFuZGxlTW91c2VNb3ZlRXZlbnQobW91c2VFdmVudCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyMykKKysrIFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTEy
LTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9y
bUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CisKIDIwMTEtMTItMTUgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1v
Ymk+CiAKICAgICAgICAgW0VGTF0gQ2xlYW4gdXAgYW5kIHJlZmFjdG9yIHRoZSBtZW1vcnkgY2Fj
aGUgZnVuY3Rpb25zIGluIGV3a19zZXR0aW5ncy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTAy
OTY4KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50
RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym8KIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0g
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKLSAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURv
d24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQg
aWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28g
d2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVs
eSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBi
ZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFy
YWN0ZXIsIG9yIEVudGVyKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyMykK
KysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRsZXIpOgorCiAyMDExLTEyLTE0ICBKaW5nIFpoYW8g
IDxqaW5nemhhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlbmluZyB0d28gcG9wdXAgbWVu
dXMgYnkgZGlzcGF0Y2hFdmVudCgpIG1ha2VzIHByb2JsZW1zLgpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZp
c2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBFZGl0
b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoSwogICAgICAgICAvLyBEdXJpbmcgUmF3S2V5
RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwgZGVmZXIK
ICAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQuIFdlIHdh
bnQga2V5ZG93biB0byBidWJibGUgdXAKICAgICAgICAgLy8gdGhyb3VnaCB0aGUgRE9NIGZpcnN0
LgotICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93bikgeworICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09
IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgICAgIGlmIChleGVjdXRlUGVu
ZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBmYWxzZSkpCiAgICAgICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDcgKzQyNyw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWUKICAgICBsb2NhdGlv
bi5zaHJ1bmtUbyhJbnRQb2ludCh2aWV3LT53aWR0aCgpIC0gZ0NvbnRleHRNZW51TWFyZ2luLCB2
aWV3LT5oZWlnaHQoKSAtIGdDb250ZXh0TWVudU1hcmdpbikpOwogCiAgICAgSW50UG9pbnQgZ2xv
YmFsUG9pbnQoY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludCh3aWRnZXQsIGxvY2F0aW9u
KSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9iYWxQb2ludCwg
UmlnaHRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9iYWxQb2ludCwgUmlnaHRCdXR0b24sIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGd0a19nZXRf
Y3VycmVudF9ldmVudF90aW1lKCkpOwogICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2Fy
ZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCksIGV2ZW50KTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDIzKQorKysgU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTIt
MTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3Jt
RXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9k
cmFnU291cmNlRW5kZWRBdDpvcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKGN1cnJlbnRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgX2ludGVycHJldEtleUV2ZW50OnNhdmluZ0NvbW1hbmRzOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2ls
bENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisKIDIwMTEtMTItMTQgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFjIGJ1aWxkIGZpeCBhZnRlciByMTAyODc0LgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxMDI5Njgp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04MTEsNyArODExLDcgQEAgLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQp
d2luZAogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlm
aWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgogICAg
IFBsYXRmb3JtTW91c2VFdmVudCBldmVudChJbnRQb2ludCh3aW5kb3dMb2MpLCBnbG9iYWxQb2lu
dCh3aW5kb3dMb2MsIFt2aWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10pLAotICAgICAgICBM
ZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBjdXJyZW50VGltZSgpKTsKKyAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwog
ICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRB
dChldmVudCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzM5LDcgKzM3MzksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50
CiAgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICBjYXNlIE5TS2V5RG93bjogewogICAg
ICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChldmVudCk7Ci0gICAgICAg
IHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5
RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICByZXR1cm4gS2V5
Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+
ZGVmYXVsdFZpZXcoKSk7CiAgICAgfQogICAgIGNhc2UgTlNLZXlVcDoKQEAgLTUzODEsNyArNTM4
MSw3IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihLZXlib2FyZEV2ZW4KICAgICAgICAg
fQogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGV4dCBpbnNlcnRpb24gY29tbWFuZHMsIGRl
ZmF1bHQga2V5ZG93biBoYW5kbGVyIGlzIHRoZSByaWdodCB0aW1lIHRvIGV4ZWN1dGUgdGhlIGNv
bW1hbmRzLgogICAgICAgICAvLyBLZXlwcmVzcyAoQ2hhciBldmVudCkgaGFuZGxlciBpcyB0aGUg
bGF0ZXN0IG9wcG9ydHVuaXR5IHRvIGV4ZWN1dGUuCi0gICAgICAgIGlmICghaGF2ZVRleHRJbnNl
cnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpDaGFyKQorICAgICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwg
cGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgICAg
ICBbc2VsZiBfZXhlY3V0ZVNhdmVkS2V5cHJlc3NDb21tYW5kc107CiAgICAgfQogICAgIF9wcml2
YXRlLT5pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0JKHJldmlzaW9uIDEwMjk2OCkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYwLDcg
Kzk2MCw3IEBAIC0gKHZvaWQpUERGVmlld1dpbGxDbGlja09uTGluazooUERGVmlldyAKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5TS2V5RG93bjogewogICAgICAgICAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50IHBlKG5zRXZlbnQpOwotICAgICAgICAgICAgcGUuZGlzYW1iaWd1
YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAg
ICAgICAgICBwZS5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5
RG93bik7CiAgICAgICAgICAgICBldmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkua2V5ZG93bkV2ZW50LCB0cnVlLCB0cnVlLCAwLAogICAgICAgICAgICAgICAgIHBlLmtl
eUlkZW50aWZpZXIoKSwgcGUud2luZG93c1ZpcnR1YWxLZXlDb2RlKCksCiAgICAgICAgICAgICAg
ICAgcGUuY3RybEtleSgpLCBwZS5hbHRLZXkoKSwgcGUuc2hpZnRLZXkoKSwgcGUubWV0YUtleSgp
LCBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDIzKQorKysgU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxh
dGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTEtMTItMTQgIFRvciBBcm5lIFZlc3Ri
w7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gR2V0IHJpZCBv
ZiBsYXllcmluZyB2aW9sYXRpb24gaW4gUGx1Z2luVmlld1F0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMDI5
NjgpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIERyYWdDbGllbnRRdDo6c3Rh
cnREcmFnKERyYWdJbWFnZVJlCiAgICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjdHVhbERyb3BBY3Rp
b24gPSBkcmFnLT5leGVjKGRyYWdPcGVyYXRpb25zVG9Ecm9wQWN0aW9ucyhkcmFnT3BlcmF0aW9u
TWFzaykpOwogCiAgICAgICAgIC8vIFNlbmQgZHJhZ0VuZCBldmVudAotICAgICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgbWUobV93ZWJQYWdlLT52aWV3KCktPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6
cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBtZShtX3dlYlBhZ2UtPnZpZXcoKS0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFD
dXJzb3I6OnBvcygpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQobWUsIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oYWN0
dWFsRHJvcEFjdGlvbikpOwogICAgIH0KICAgICBmcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxl
cigpLT5kcmFnRW5kZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
KiBrZXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKTsKLSAgICBpZiAoIWtldmVudCB8fCBrZXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwKQorICAgIGlmICgha2V2ZW50
IHx8IGtldmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleVVwKQogICAgICAgICByZXR1
cm47CiAKICAgICBOb2RlKiBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5jb250
YWluZXJOb2RlKCk7CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFu
ZGxlS2V5Ym9hcmRFdmVudAogICAgICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJD
b3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFu
Z2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAg
ICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlciku
CiAgICAgICAgICAgICBpZiAoY21kICYmIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjbWQpLmlz
VGV4dEluc2VydGlvbigpCi0gICAgICAgICAgICAgICAgJiYga2V2ZW50LT50eXBlKCkgPT0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKQorICAgICAgICAgICAgICAgICYmIGtldmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKQEAg
LTQ2NCw3ICs0NjQsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50
CiAKICAgICAgICAgICAgIC8vIFRleHQgaW5zZXJ0aW9uLgogICAgICAgICAgICAgYm9vbCBzaG91
bGRJbnNlcnRUZXh0ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkgIT0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKIAogICAgICAgICAgICAgICAg
IGlmIChrZXZlbnQtPmN0cmxLZXkoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50
LT5hbHRLZXkoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyMykKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2
ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBY2Nlc3NpYmxlQmFzZS5jcHA6CisgICAgICAgIChBY2Nl
c3NpYmxlQmFzZTo6Z2V0X2FjY0tleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAqIFdlYkRyb3BT
b3VyY2UuY3BwOgorICAgICAgICAoZ2VuZXJhdGVNb3VzZUV2ZW50KToKKyAgICAgICAgKiBXZWJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmtleVVwKToKKyAgICAgICAgKFdlYlZpZXc6Omhh
bmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmtleURvd24pOgor
ICAgICAgICAoV2ViVmlldzo6a2V5UHJlc3MpOgorCiAyMDExLTEyLTE0ICBKaW5nIFpoYW8gIDxq
aW5nemhhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlbmluZyB0d28gcG9wdXAgbWVudXMg
YnkgZGlzcGF0Y2hFdmVudCgpIG1ha2VzIHByb2JsZW1zLgpJbmRleDogU291cmNlL1dlYktpdC93
aW4vQWNjZXNzaWJsZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0Fj
Y2Vzc2libGVCYXNlLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysgU291cmNlL1dlYktpdC93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVFbGVtZW50QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SFRNTElucHV0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJGcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3
Lmg+CkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vz
c2libGVCYXNlCiAgICAgICAgIC8vIEZvbGxvdyB0aGUgc2FtZSBvcmRlciBhcyBNb3ppbGxhIE1T
QUEgaW1wbGVtZW50YXRpb246CiAgICAgICAgIC8vIEN0cmwrQWx0K1NoaWZ0K01ldGEra2V5LiBN
U0ROIHN0YXRlcyB0aGF0IGtleWJvYXJkIHNob3J0Y3V0IHN0cmluZ3MKICAgICAgICAgLy8gc2hv
dWxkIG5vdCBiZSBsb2NhbGl6ZWQgYW5kIGRlZmluZXMgdGhlIHNlcGFyYXRvciBhcyAiKyIuCi0g
ICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXkpCisg
ICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5KQogICAgICAgICAg
ICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJDdHJsKyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMg
JiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAm
IFBsYXRmb3JtRXZlbnQ6OkFsdEtleSkKICAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVycyAr
PSAiQWx0KyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlNoaWZ0S2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6U2hpZnRL
ZXkpCiAgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgKz0gIlNoaWZ0KyI7Ci0gICAgICAg
IGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Ok1ldGFLZXkpCisgICAgICAg
IGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5KQogICAgICAgICAgICAgYWNj
ZXNzS2V5TW9kaWZpZXJzICs9ICJXaW4rIjsKICAgICB9CiAgICAgKnNob3J0Y3V0ID0gQlN0cmlu
ZyhTdHJpbmcoYWNjZXNzS2V5TW9kaWZpZXJzICsgYWNjZXNzS2V5KSkucmVsZWFzZSgpOwpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHJldmlzaW9uIDEwMjk2OCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3
ICs5Myw4IEBAIFNURE1FVEhPRElNUF8oVUxPTkcpIFdlYkRyb3BTb3VyY2U6OlJlbGUKICAgICBy
ZXR1cm4gYzsKIH0KIAotUGxhdGZvcm1Nb3VzZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZWJW
aWV3KiB3ZWJWaWV3LCBib29sIGlzRHJhZykgeworUGxhdGZvcm1Nb3VzZUV2ZW50IGdlbmVyYXRl
TW91c2VFdmVudChXZWJWaWV3KiB3ZWJWaWV3LCBib29sIGlzRHJhZykKK3sKICAgICBQT0lOVEwg
cHQ7CiAgICAgOjpHZXRDdXJzb3JQb3MoKExQUE9JTlQpJnB0KTsKICAgICBQT0lOVEwgbG9jYWxw
dCA9IHB0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIFBsYXRmb3JtTW91c2VFdmVudCBnZW5lcmF0ZU1v
dXNlRXZlbnQoV2UKICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnZpZXdXaW5kb3coKE9MRV9I
QU5ETEUqKSZ2aWV3V2luZG93KSkpCiAgICAgICAgIDo6U2NyZWVuVG9DbGllbnQodmlld1dpbmRv
dywgKExQUE9JTlQpJmxvY2FscHQpOwogICAgIHJldHVybiBQbGF0Zm9ybU1vdXNlRXZlbnQoSW50
UG9pbnQobG9jYWxwdC54LCBsb2NhbHB0LnkpLCBJbnRQb2ludChwdC54LCBwdC55KSwKLSAgICAg
ICAgaXNEcmFnID8gTGVmdEJ1dHRvbiA6IE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsKKyAgICAgICAgaXNEcmFn
ID8gTGVmdEJ1dHRvbiA6IE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CiB9CiAKIFNURE1FVEhP
RElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUNvbnRpbnVlRHJhZyhCT09MIGZFc2NhcGVQcmVzc2Vk
LCBEV09SRCBncmZLZXlTdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAx
MDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgxMyw3ICsxODEzLDcgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1Bh
cmFtLAogCiBib29sIFdlYlZpZXc6OmtleVVwKFdQQVJBTSB2aXJ0dWFsS2V5Q29kZSwgTFBBUkFN
IGtleURhdGEsIGJvb2wgc3lzdGVtS2V5RG93bikKIHsKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQga2V5RXZlbnQobV92aWV3V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtleUNvZGUsIGtleURhdGEs
IFBsYXRmb3JtRXZlbnQ6OktleVVwLCBzeXN0ZW1LZXlEb3duKTsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IG1fY3VycmVudENoYXJhY3RlckNvZGUgPSAwOwpAQCAtMTk1NSw3ICsxOTU1LDcgQEAgYm9vbCBX
ZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudAogCiAgICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0
KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGlu
Zm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5z
ZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAg
ICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBp
bW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVz
cyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBh
IFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KQEAgLTE5ODMsNyArMTk4Myw3IEBAIGJvb2wgV2Vi
Vmlldzo6a2V5RG93bihXUEFSQU0gdmlydHVhbEtleUMKICNlbmRpZgogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0g
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtl
eUNvZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biwgc3lzdGVt
S2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRv
dywgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24sIHN5
c3RlbUtleURvd24pOwogICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
a2V5RXZlbnQoa2V5RXZlbnQpOwogCiAgICAgLy8gVGhlc2UgZXZlbnRzIGNhbm5vdCBiZSBjYW5j
ZWxlZCwgYW5kIHdlIGhhdmUgbm8gZGVmYXVsdCBoYW5kbGluZyBmb3IgdGhlbS4KQEAgLTIwNTUs
NyArMjA1NSw3IEBAIGJvb2wgV2ViVmlldzo6a2V5UHJlc3MoV1BBUkFNIGNoYXJDb2RlLCAKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdX
aW5kb3csIGNoYXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIsIHN5
c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdX
aW5kb3csIGNoYXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpDaGFyLCBzeXN0ZW1LZXlE
b3duKTsKICAgICAvLyBJRSBkb2VzIG5vdCBkaXNwYXRjaCBrZXlwcmVzcyBldmVudCBmb3IgV01f
U1lTQ0hBUi4KICAgICBpZiAoc3lzdGVtS2V5RG93bikKICAgICAgICAgcmV0dXJuIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlQWNjZXNzS2V5KGtleUV2ZW50KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwMjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTEyLTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJh
c2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVLZXlEb3duKToKKyAgICAg
ICAgKFdlYlZpZXc6OmhhbmRsZUtleVByZXNzKToKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUtl
eVVwKToKKwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtl
cyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTAyOTY4
KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQ4LDcgKzM0OCw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlS2V5RG93bihXUEFSQU0gdmlydHUK
IHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dp
bmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UmF3S2V5RG93biwgc3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZv
cm1FdmVudDo6UmF3S2V5RG93biwgc3lzdGVtS2V5RG93bik7CiAgICAgYm9vbCBoYW5kbGVkID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChrZXlFdmVudCk7CiAKICAgICAvLyBUaGVz
ZSBldmVudHMgY2Fubm90IGJlIGNhbmNlbGVkLCBhbmQgd2UgaGF2ZSBubyBkZWZhdWx0IGhhbmRs
aW5nIGZvciB0aGVtLgpAQCAtMzcwLDcgKzM3MCw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlS2V5
UHJlc3MoV1BBUkFNIGNoYXIKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgY2hhckNvZGUsIGtleURhdGEsIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZv
cm1FdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93bik7CiAgICAgLy8gSUUgZG9lcyBub3QgZGlzcGF0
Y2gga2V5cHJlc3MgZXZlbnQgZm9yIFdNX1NZU0NIQVIuCiAgICAgaWYgKHN5c3RlbUtleURvd24p
CiAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUFjY2Vzc0tleShr
ZXlFdmVudCk7CkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVLZXlQcmVz
cyhXUEFSQU0gY2hhcgogCiBib29sIFdlYlZpZXc6OmhhbmRsZUtleVVwKFdQQVJBTSB2aXJ0dWFs
S2V5Q29kZSwgTFBBUkFNIGtleURhdGEsIGJvb2wgc3lzdGVtS2V5RG93bikKIHsKLSAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIHZpcnR1YWxLZXlDb2Rl
LCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwLCBzeXN0ZW1LZXlEb3duKTsK
KyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIHZpcnR1
YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7
CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVu
dChrZXlFdmVudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gMTAyOTY4KQorKysg
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4NCw3ICszODQsNyBAQCBib29sIEVkaXRvckNsaWVudFdpbkNF
OjpoYW5kbGVFZGl0aW5nS2V5CiAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOwogCi0gICAgaWYg
KGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7
CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikg
ewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91
dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4
ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxl
YXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUu
Zy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2Vu
ZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVy
LCBvciBFbnRlcikuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDIzKQorKysgU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUg
UGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmludGVycHJldEtleUV2ZW50
KToKKwogMjAxMS0xMi0xMSAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgogCiAgICAg
ICAgIEFkZCBhIFVSTCBhcmd1bWVudCB0byB0aGUgd3hXZWJWaWV3IGNvbnN0cnVjdG9yLApJbmRl
eDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3gu
Y3BwCShyZXZpc2lvbiAxMDI5NjgpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9v
bCBFZGl0b3JDbGllbnRXeDo6aGFuZGxlRWRpdGluZ0tleWJvYQogCiAgICAgRWRpdG9yOjpDb21t
YW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQo
ZXZlbnQpKTsKIAotICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91
Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVz
dCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAog
ICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0
aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGlmIG5vdCB0
byBsZXQgYSBDSEFSIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhh
dCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgpAQCAtNDA5LDcgKzQwOSw3IEBA
IGJvb2wgRWRpdG9yQ2xpZW50V3g6OmhhbmRsZUVkaXRpbmdLZXlib2EKIAogY29uc3QgY2hhciog
RWRpdG9yQ2xpZW50V3g6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2
dCkKIHsKLSAgICBBU1NFUlQoZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpSYXdLZXlEb3duIHx8IGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7CisgICAgQVNTRVJUKGV2dC0+a2V5RXZlbnQoKS0+dHlw
ZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gfHwgZXZ0LT5rZXlFdmVudCgpLT50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcik7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNv
bnN0IGNoYXIqPioga2V5RG93bkNvbW1hbmRzTWFwID0gMDsKICAgICBzdGF0aWMgSGFzaE1hcDxp
bnQsIGNvbnN0IGNoYXIqPioga2V5UHJlc3NDb21tYW5kc01hcCA9IDA7CkBAIC00MzMsNyArNDMz
LDcgQEAgY29uc3QgY2hhciogRWRpdG9yQ2xpZW50V3g6OmludGVycHJldEtleQogICAgIGlmIChl
dnQtPmN0cmxLZXkoKSkKICAgICAgICAgbW9kaWZpZXJzIHw9IEN0cmxLZXk7CiAKLSAgICBpZiAo
ZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlE
b3duKSB7CisgICAgaWYgKGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIHsKICAgICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2
dC0+a2V5Q29kZSgpOwogICAgICAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFw
LT5nZXQobWFwS2V5KSA6IDA7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119571</attachid>
            <date>2011-12-15 22:54:51 -0800</date>
            <delta_ts>2011-12-16 09:48:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111215225447.patch</filename>
            <type>text/plain</type>
            <size>154642</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRN
ZW51XSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorICAgICAgICAqIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICog
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycyk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL3d4L0V2ZW50SGFuZGxlcld4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Y3RybEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxhdGZvcm1F
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hl
ZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZvck5TRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXlwYWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0eXBl
RnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorCiAyMDExLTEyLTE1ICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbG91dCByMTAyODI1IGJl
Y2F1c2UgaXQgZGlkbid0IGltcHJvdmUgcGVyZm9ybWFuY2UuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNTQsNiArMTA1NCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCiAgICAgcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorICAgIHBsYXRmb3Jt
L1BsYXRmb3JtRXZlbnQuY3BwCiAgICAgcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
LmNwcAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAogICAgIHBsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC0yODc5LDYgKzI4NzksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2
ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTE4LDYgKzExMTgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lv
bi5jcHAgXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwIFwKICAgICBwbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIFwKICAgICBwbGF0Zm9ybS9TY2hlbWVSZWdpc3Ry
eS5jcHAgXAogICAgIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYwNyw4ICs2MDcsOCBAQCBfX1pON1dlYkNvcmUyMG1h
a2VSR0JBMzJGcm9tRmxvYXRzRWZmZmYKIF9fWk43V2ViQ29yZTIwcHJvdG9jb2xJc0phdmFTY3Jp
cHRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjEx
aXRlbUF0SW5kZXhFaQogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFs
bEV2Ci1fX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVudDI0ZGlzYW1iaWd1YXRlS2V5
RG93bkV2ZW50RU5TMF80VHlwZUViCiBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEMxRVA3TlNFdmVudAorX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2Ft
YmlndWF0ZUtleURvd25FdmVudEVOU18xM1BsYXRmb3JtRXZlbnQ0VHlwZUViCiBfX1pON1dlYkNv
cmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNv
dXJjZUxvYWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRz
Y2hlZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQogX19aTjdXZWJDb3JlMjFT
VkdEb2N1bWVudEV4dGVuc2lvbnMyMXNhbXBsZUFuaW1hdGlvbkF0VGltZUVSS04zV1RGNlN0cmlu
Z0VQTlNfMTRTVkdTTUlMRWxlbWVudEVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAx
MDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTY5NSw2ICs2OTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL1BsYXRmb3JtRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUV2
ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgnLApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwMzAy
NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjYzMCw2ICsyNjYzMCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQbGF0Zm9ybUV2ZW50LmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cUGxhdGZvcm1FdmVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUwNzIsNiAr
NTA3Miw4IEBACiAJCUJDNUE4Njg1MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4NjgyMEMz
MzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uaCAqLzsgfTsKIAkJQkM1QTg2QjUwQzMzNjdF
ODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4NkIzMEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNl
bGVjdGlvbi5jcHAgKi87IH07CiAJCUJDNUE4NkI2MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNl
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM1QTg2QjQwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmggKi87IH07CisJCUJD
NUM3NjJBMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUM3NjI4MTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLzsgfTsKKwkJQkM1Qzc2MkIxNDk3RkUxNDAwQkM0Nzc1
IC8qIFBsYXRmb3JtRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM1Q0ZDQTkx
MUY3OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlvblN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVDRkNBODExRjc5MzMyMDA5OUVEMDkg
LyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzVFQjVEQjBFODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUVC
NURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUVCNUREMEU4MUI4REQwMEIyNTk2NSAv
KiBPdXRsaW5lVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNUVCNURDMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIzOTcsNiArMTIz
OTksOCBAQAogCQlCQzVBODY4MzBDMzM2NzYwMDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NU2VsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM1QTg2QjMwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVNlbGVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUE4NkI0MEMzMzY3RTgwMEVF
QTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNET01TZWxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1Qzc2
MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1Q0ZDQTgxMUY3OTMzMjAwOTlFRDA5IC8qIExvY2Fs
aXphdGlvblN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2Fs
aXphdGlvblN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUVCNURB
MEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCb3JkZXJWYWx1ZS5oOyBwYXRoID0gc3R5bGUvQm9yZGVyVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RUI1REMwRTgxQjhERDAwQjI1OTY1IC8qIE91
dGxpbmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPdXRsaW5lVmFs
dWUuaDsgcGF0aCA9IHN0eWxlL091dGxpbmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjAyNTQsNiArMjAyNTgsOCBAQAogCQkJCTFBRDhGODFBMTFDQUI5RTkwMEU5M0U1
NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwICovLAogCQkJCTFBRDhGODE5MTFDQUI5RTkwMEU5
M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLywKIAkJCQk5MzVDNDc2QTA5QUM0RDRGMDBB
NkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggKi8sCisJCQkJQkM1Qzc2MjgxNDk3RkUxNDAw
QkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwICovLAorCQkJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJD
NDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8sCiAJCQkJQkNCQjhBQjQxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREFyZW5hLmggKi8sCiAJCQkJQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYwIC8qIFBPRElu
dGVydmFsLmggKi8sCiAJCQkJQkNCQjhBQjYxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFs
VHJlZS5oICovLApAQCAtMjQ4NzMsNiArMjQ4NzksNyBAQAogCQkJCUYzNUFFNUFDMTQ5MjVGNUIw
MDRENTc3NiAvKiBET01XcmFwcGVyVmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZDMTdB
M0UxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTgwRkEzMTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxlQ2FjaGVMYXllci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkM1Qzc2MkIxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNTgwRkFGMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25V
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjY4MTQ5OTc5MEQwMENERDNBNCAv
KiBGRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI2
QTE0OTk3OTBEMDBDREQzQTQgLyogRkVHYXVzc2lhbkJsdXJORU9OLmggaW4gSGVhZGVycyAqLywK
QEAgLTI3NzY2LDYgKzI3NzczLDcgQEAKIAkJCQk4QzEwOTE5ODE0OTRGQjEyMDBCNUQzRkUgLyog
Q1NTRWxlbWVudFN0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMwNkU0
RTYxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjU4MEZBNDE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGlsZUNhY2hlTGF5ZXIubW0gaW4gU291
cmNlcyAqLywKKwkJCQlCQzVDNzYyQTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVDRUI2NzE0OTk3OTBEMDBDREQzQTQgLyogRkVDb21w
b3NpdGVBcml0aG1ldGljTkVPTi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVDRUI2OTE0OTk3
OTBEMDBDREQzQTQgLyogRkVHYXVzc2lhbkJsdXJORU9OLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ5RUNFQjZCMTQ5OTc5MEQwMENERDNBNCAvKiBGRUxpZ2h0aW5nTkVPTi5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiAx
MDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU5MCw3ICsyNTkwLDcgQEAg
LSAodm9pZClhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRNZW51CiAgICAgLy8gU2ltdWxhdGUgYSBj
bGljayBpbiB0aGUgbWlkZGxlIG9mIHRoZSBvYmplY3QuCiAgICAgTGF5b3V0UG9pbnQgY2xpY2tQ
b2ludCA9IG1fb2JqZWN0LT5jbGlja1BvaW50KCk7CiAgICAgCi0gICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1vdXNlRXZlbnQoY2xpY2tQb2ludCwgY2xpY2tQb2ludCwgUmlnaHRCdXR0b24sIE1vdXNl
RXZlbnRQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUo
KSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQoY2xpY2tQb2ludCwgY2xpY2tQ
b2ludCwgUmlnaHRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwogICAgIGJvb2wgaGFuZGxlZCA9
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQobW91c2VFdmVudCk7
CiAgICAgaWYgKGhhbmRsZWQpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5zaG93Q29udGV4dE1l
bnUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDEw
MzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBl
KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6
OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OktleVVwOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OktleVVw
OgogICAgICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50OwotICAgICAgICBj
YXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bjoKKyAgICAgICAgY2FzZSBQbGF0
Zm9ybUV2ZW50OjpSYXdLZXlEb3duOgogICAgICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5r
ZXlkb3duRXZlbnQ7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOgor
ICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OkNoYXI6CiAgICAgICAgICAgICByZXR1cm4gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQ7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpLZXlEb3duOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OktleURvd246CiAgICAg
ICAgICAgICAvLyBUaGUgY2FsbGVyIHNob3VsZCBkaXNhbWJpZ3VhdGUgdGhlIGNvbWJpbmVkIGV2
ZW50IGludG8gUmF3S2V5RG93biBvciBDaGFyIGV2ZW50cy4KICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8QWJz
dHJhY3RWaWV3PiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0
YWlsLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRUYXJnZXQpCiB7Ci0gICAgQVNTRVJUKGV2ZW50
LmV2ZW50VHlwZSgpID09IE1vdXNlRXZlbnRNb3ZlZCB8fCBldmVudC5idXR0b24oKSAhPSBOb0J1
dHRvbik7CisgICAgQVNTRVJUKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkIHx8IGV2ZW50LmJ1dHRvbigpICE9IE5vQnV0dG9uKTsKIAogICAgIGJvb2wgaXNDYW5jZWxh
YmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OSw3ICs3OSw3IEBAIHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY3JlYXRlTW91c2VFdmUK
ICAgICBzaGlmdEtleSA9IGN0cmxLZXkgPSBhbHRLZXkgPSBtZXRhS2V5ID0gZmFsc2U7CiAgICAg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwg
Y3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKICAgICByZXR1cm4gUGxhdGZvcm1Nb3VzZUV2ZW50
KGRyYWdEYXRhLT5jbGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS0+Z2xvYmFsUG9zaXRpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3Zl
ZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNoaWZ0S2V5
LCBjdHJsS2V5LCBhbHRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhS2V5
LCBjdXJyZW50VGltZSgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMzLDE5ICsyMjMzLDE5IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY28KICAgICAvLyBlbmQgZ2VzdHVyZSBhcyB3ZWxs
LgogCiAgICAgc3dpdGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlVGFwRG93bjoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6VGFwVHlwZTogeworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcDogewogICAg
ICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIG5vdCBoaXQgdGVzdCBtdWx0aXBs
ZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhhcyBiZWVuIGNvcnJlY3RlZCBhcyBzdWdnZXN0ZWQg
YWJvdmUuCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVF
dmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24s
IE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRL
ZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0
dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwg
Z2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVz
c2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJl
RXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRh
S2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmds
b2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
TW92ZShnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAvKiBjbGlja0NvdW50ICov
IDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0
dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50
aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVm
dEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEs
IGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJl
RXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1l
c3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0
b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFt
cCgpKTsKICAgICAgICAgbW91c2VNb3ZlZChmYWtlTW91c2VNb3ZlKTsKICAgICAgICAgaGFuZGxl
TW91c2VQcmVzc0V2ZW50KGZha2VNb3VzZURvd24pOwogICAgICAgICBoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChmYWtlTW91c2VVcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CisgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOiB7CiAgICAgICAgIGNvbnN0IGZsb2F0
IHRpY2tEaXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwogICAgICAg
ICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0gaW1wbGVtZW50YXRpb24gb25jZSB0aGUg
YWJvdmUgZml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgogICAgICAgICBJbnRQb2ludCBwb2ludChn
ZXN0dXJlRXZlbnQucG9zaXRpb24oKS54KCksIGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLnkoKSk7
CkBAIC0yMjU0LDkgKzIyNTQsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2
ZW50KGNvCiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpEb3VibGVUYXBUeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJl
Z2luVHlwZToKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgor
ICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVTY3JvbGxFbmQ6IHsKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmll
dygpOwogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
MjY0LDYgKzIyNjQsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNv
CiAgICAgICAgIHZpZXctPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC0yMzU3LDkg
KzIzNjAsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGCiAgICAg
Ly8gVGhpcyBpcyByZXF1aXJlZCBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCiAKICNpZiBPUyhXSU5E
T1dTKQotICAgIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsK
KyAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIGV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
UmVsZWFzZWQ7CiAjZWxzZQotICAgIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSA9IE1vdXNlRXZl
bnRQcmVzc2VkOworICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZlbnRUeXBlID0gUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkOwogI2VuZGlmCiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91
c2VFdmVudChwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIFJpZ2h0QnV0dG9uLCBldmVudFR5cGUs
IDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOwpAQCAt
MjQxNyw3ICsyNDIwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRp
bQogICAgIGJvb2wgbWV0YUtleTsKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJl
bnRNb2RpZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpOwogICAg
IEludFBvaW50IGdsb2JhbFBvaW50ID0gdmlldy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KHZp
ZXctPndpbmRvd1RvQ29udGVudHMobV9jdXJyZW50TW91c2VQb3NpdGlvbiksIEludFNpemUoKSkp
LmxvY2F0aW9uKCk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmVFdmVudCht
X2N1cnJlbnRNb3VzZVBvc2l0aW9uLCBnbG9iYWxQb2ludCwgTm9CdXR0b24sIE1vdXNlRXZlbnRN
b3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgY3VycmVudFRpbWUo
KSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmVFdmVudChtX2N1cnJlbnRN
b3VzZVBvc2l0aW9uLCBnbG9iYWxQb2ludCwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIGN1cnJlbnRUaW1l
KCkpOwogICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZUV2ZW50KTsKIH0KIApAQCAtMjQ3MSw4
ICsyNDc0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleShjb25zdAogICAg
IC8vIElFIG1hdGNoZXMgbG93ZXIgYW5kIHVwcGVyIGNhc2UgYWNjZXNzIGtleXMgcmVnYXJkbGVz
cyBvZiBTaGlmdCBrZXkgc3RhdGUgLSBidXQgaWYgYm90aCB1cHBlciBhbmQKICAgICAvLyBsb3dl
ciBjYXNlIHZhcmlhbnRzIGFyZSBwcmVzZW50IGluIGEgZG9jdW1lbnQsIHRoZSBjb3JyZWN0IGVs
ZW1lbnQgaXMgbWF0Y2hlZCBiYXNlZCBvbiBTaGlmdCBrZXkgc3RhdGUuCiAgICAgLy8gRmlyZWZv
eCBvbmx5IG1hdGNoZXMgYW4gYWNjZXNzIGtleSBpZiBTaGlmdCBpcyBub3QgcHJlc3NlZCwgYW5k
IGRvZXMgdGhhdCBjYXNlLWluc2Vuc2l0aXZlbHkuCi0gICAgQVNTRVJUKCEoYWNjZXNzS2V5TW9k
aWZpZXJzKCkgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlNoaWZ0S2V5KSk7Ci0gICAgaWYgKChl
dnQubW9kaWZpZXJzKCkgJiB+UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpTaGlmdEtleSkgIT0gYWNj
ZXNzS2V5TW9kaWZpZXJzKCkpCisgICAgQVNTRVJUKCEoYWNjZXNzS2V5TW9kaWZpZXJzKCkgJiBQ
bGF0Zm9ybUV2ZW50OjpTaGlmdEtleSkpOworICAgIGlmICgoZXZ0Lm1vZGlmaWVycygpICYgflBs
YXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KSAhPSBhY2Nlc3NLZXlNb2RpZmllcnMoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIFN0cmluZyBrZXkgPSBldnQudW5tb2RpZmllZFRleHQoKTsKICAg
ICBFbGVtZW50KiBlbGVtID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5QWNjZXNz
S2V5KGtleS5sb3dlcigpKTsKQEAgLTI1MjAsNyArMjUyMyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjprZXlFdmVudChjb25zdCBQbGF0Zm8KICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKSkgewogICAgICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5t
X3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsKICAgICAgICAgICAgIC8vIElmIGEga2V5IGlzIHByZXNz
ZWQgd2hpbGUgdGhlIHBhblNjcm9sbCBpcyBpbiBwcm9ncmVzcyB0aGVuIHdlIHdhbnQgdG8gc3Rv
cAotICAgICAgICAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpLZXlEb3duIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSAKKyAgICAgICAgICAgIGlmIChpbml0aWFsS2V5RXZl
bnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24gfHwgaW5pdGlhbEtleUV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSAKICAgICAgICAgICAgICAgICBzdG9w
QXV0b3Njcm9sbFRpbWVyKCk7CiAKICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUgaW4gcGFuc2Ny
b2xsIG1vZGUsIHdlIHN3YWxsb3cgdGhlIGtleSBldmVudApAQCAtMjU1MCwyNSArMjU1MywyNSBA
QCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgLy8gT24gV2lu
ZG93cywgV2ViS2l0IGV4cGxpY2l0bHkgY2FsbHMgaGFuZGxlQWNjZXNzS2V5KCkgaW5zdGVhZCBv
ZiBkaXNwYXRjaGluZyBhIGtleXByZXNzIGV2ZW50IGZvciBXTV9TWVNDSEFSIG1lc3NhZ2VzLgog
ICAgIC8vIE90aGVyIHBsYXRmb3JtcyBjdXJyZW50bHkgbWF0Y2ggZWl0aGVyIE1hYyBvciBXaW5k
b3dzIGJlaGF2aW9yLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5IHNlbmQgY29tYmluZWQgS2V5
RG93biBldmVudHMuCiAgICAgYm9vbCBtYXRjaGVkQW5BY2Nlc3NLZXkgPSBmYWxzZTsKLSAgICBp
ZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURv
d24pCisgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5
RG93bikKICAgICAgICAgbWF0Y2hlZEFuQWNjZXNzS2V5ID0gaGFuZGxlQWNjZXNzS2V5KGluaXRp
YWxLZXlFdmVudCk7CiAKICAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgZmFpciB0byBsZXQgYW4g
aW5wdXQgbWV0aG9kIGhhbmRsZSBLZXlVcCBldmVudHMgYmVmb3JlIERPTSBkaXNwYXRjaC4KLSAg
ICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eVVwIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpD
aGFyKQorICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Oktl
eVVwIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikKICAg
ICAgICAgcmV0dXJuICFub2RlLT5kaXNwYXRjaEtleUV2ZW50KGluaXRpYWxLZXlFdmVudCk7CiAK
ICAgICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBuZWVkc0tleWJvYXJkRXZlbnRE
aXNhbWJpZ3VhdGlvblF1aXJrcygpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQga2V5RG93bkV2ZW50ID0gaW5pdGlhbEtleUV2ZW50OyAgICAKLSAg
ICBpZiAoa2V5RG93bkV2ZW50LnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tl
eURvd24pCi0gICAgICAgIGtleURvd25FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
KTsKKyAgICBpZiAoa2V5RG93bkV2ZW50LnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKQorICAgICAgICBrZXlEb3duRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpOwogICAgIFJl
ZlB0cjxLZXlib2FyZEV2ZW50PiBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleURv
d25FdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgaWYgKG1h
dGNoZWRBbkFjY2Vzc0tleSkKICAgICAgICAga2V5ZG93bi0+c2V0RGVmYXVsdFByZXZlbnRlZCh0
cnVlKTsKICAgICBrZXlkb3duLT5zZXRUYXJnZXQobm9kZSk7CiAKLSAgICBpZiAoaW5pdGlhbEtl
eUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAg
ICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3du
KSB7CiAgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoa2V5ZG93biwgZWMpOwogICAgICAgICAv
LyBJZiBmcmFtZSBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9mIGtleWRvd24gZGlzcGF0Y2gsIHRoZW4g
cmV0dXJuIHRydWUgdG8gYXZvaWQgc2VuZGluZyBhIHN1YnNlcXVlbnQga2V5cHJlc3MgbWVzc2Fn
ZSB0byB0aGUgbmV3IGZyYW1lLgogICAgICAgICBib29sIGNoYW5nZWRGb2N1c2VkRnJhbWUgPSBt
X2ZyYW1lLT5wYWdlKCkgJiYgbV9mcmFtZSAhPSBtX2ZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTI2MDcsNyArMjYxMCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm8KICAgICB9CiAKICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQga2V5UHJlc3NFdmVudCA9IGluaXRpYWxLZXlFdmVudDsKLSAgICBrZXlQ
cmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OkNoYXIsIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpOworICAgIGtleVByZXNzRXZlbnQuZGlz
YW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OkNoYXIsIGJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUpOwogICAgIGlmIChrZXlQcmVzc0V2ZW50LnRleHQoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBrZXlkb3duUmVzdWx0OwogICAgIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBr
ZXlwcmVzcyA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlQcmVzc0V2ZW50LCBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKQEAgLTI3ODYsNyArMjc4OSw3IEBAIHN0YXRpYyBi
b29sIEV4YWN0bHlPbmVCaXRTZXQoRHJhZ1NvdXJjZUEKIAogYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0g
ICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5ldmVu
dCgpLmV2ZW50VHlwZSgpICE9IE1vdXNlRXZlbnRNb3ZlZCkgeworICAgIGlmIChldmVudC5ldmVu
dCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuZXZlbnQoKS50eXBlKCkgIT0gUGxh
dGZvcm1FdmVudDo6TW91c2VNb3ZlZCkgewogICAgICAgICAvLyBJZiB3ZSBhbGxvd2VkIHRoZSBv
dGhlciBzaWRlIG9mIHRoZSBicmlkZ2UgdG8gaGFuZGxlIGEgZHJhZwogICAgICAgICAvLyBsYXN0
IHRpbWUsIHRoZW4gbV9tb3VzZVByZXNzZWQgbWlnaHQgc3RpbGwgYmUgc2V0LiBTbyB3ZQogICAg
ICAgICAvLyBjbGVhciBpdCBub3cgdG8gbWFrZSBzdXJlIHRoZSBuZXh0IG1vdmUgYWZ0ZXIgYSBk
cmFnCkBAIC0yODIyLDcgKzI4MjUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhj
b25zdCBNb3VzCiAgICAgLy8gRm9yIGRyYWdzIHN0YXJ0aW5nIGluIHRoZSBzZWxlY3Rpb24sIHRo
ZSB1c2VyIG11c3Qgd2FpdCBiZXR3ZWVuIHRoZSBtb3VzZWRvd24gYW5kIG1vdXNlZHJhZywKICAg
ICAvLyBvciBlbHNlIHdlIGJhaWwgb24gdGhlIGRyYWdnaW5nIHN0dWZmIGFuZCBhbGxvdyBzZWxl
Y3Rpb24gdG8gb2NjdXIKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgbV9kcmFn
TWF5U3RhcnRTZWxlY3Rpb25JbnN0ZWFkICYmIChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYgRHJh
Z1NvdXJjZUFjdGlvblNlbGVjdGlvbikgJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1f
bW91c2VEb3duVGltZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgewotICAgICAgICBBU1NFUlQoZXZl
bnQuZXZlbnQoKS5ldmVudFR5cGUoKSA9PSBNb3VzZUV2ZW50TW92ZWQpOworICAgICAgICBBU1NF
UlQoZXZlbnQuZXZlbnQoKS50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCk7CiAg
ICAgICAgIGlmICgoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSAmIERyYWdTb3VyY2VBY3Rpb25JbWFn
ZSkpIHsKICAgICAgICAgICAgIC8vIC4uLiB1bmxlc3MgdGhlIG1vdXNlIGlzIG92ZXIgYW4gaW1h
Z2UsIHRoZW4gd2Ugc3RhcnQgZHJhZ2dpbmcganVzdCB0aGUgaW1hZ2UKICAgICAgICAgICAgIGRy
YWdTdGF0ZSgpLm1fZHJhZ1R5cGUgPSBEcmFnU291cmNlQWN0aW9uSW1hZ2U7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2JsYWNrYmVycnkvRXZlbnRIYW5kbGVyQmxhY2tCZXJyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJs
YWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2Js
YWNrYmVycnkvRXZlbnRIYW5kbGVyQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnRhYnNUb0FsbEZvcm1Db250cm9scwogCiB1
bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50
OjpBbHRLZXk7CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50VmlldygpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxl
ckNocm9taXVtLmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9j
aHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw5
ICsxNDgsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1dpZGdldE1vdXNlRG93bkV2CiB1bnNp
Z25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7CiAjaWYgT1MoREFSV0lO
KQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6Q3RybEtleSB8
IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbHNlCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwu
Y3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9FdmVudEhh
bmRsZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDYgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudAogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6
OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAJKHJldmlzaW9u
IDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFz
c01vdXNlUmVsZWFzZUV2ZW50CiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9k
aWZpZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7Cisg
ICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogLy8gR1RLKyBtdXN0IHNjcm9s
bCBob3Jpem9udGFsbHkgaWYgdGhlIG1vdXNlIHBvaW50ZXIgaXMgb24gdG9wIG9mIHRoZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkocmV2aXNpb24g
MTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03MTksOSArNzE5LDkgQEAgdW5zaWduZWQgRXZlbnRIYW5kbGVyOjph
Y2Nlc3NLZXlNb2RpZmllcgogICAgIC8vIFNvLCB3ZSB1c2UgQ29udHJvbCBpbiB0aGlzIGNhc2Us
IGV2ZW4gdGhvdWdoIGl0IGNvbmZsaWN0cyB3aXRoIEVtYWNzLXN0eWxlIGtleSBiaW5kaW5ncy4K
ICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEw
Nz4gZm9yIG1vcmUgZGV0YWlsLgogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpDdHJsS2V5OworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6Q3Ry
bEtleTsKIAotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXkgfCBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6Q3Ry
bEtleSB8IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsOSArMTI0LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudAog
dW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewogI2lmIE9TKERB
UldJTikKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxL
ZXkgfCBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiAjZWxzZQotICAgIHJldHVybiBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5Owog
I2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVy
V2luLmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZl
bnRIYW5kbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXYKIAogdW5zaWduZWQgRXZlbnRIYW5k
bGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3d4L0V2ZW50SGFuZGxlcld4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3d4L0V2ZW50SGFuZGxlcld4LmNwcAkocmV2aXNp
b24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4g
RXZlbnRIYW5kbGVyOjpjcmVhCiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9k
aWZpZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7Cisg
ICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUV2ZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxh
dGZvcm1FdmVudF9oCisjZGVmaW5lIFBsYXRmb3JtRXZlbnRfaAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFBsYXRmb3JtRXZlbnQgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7Cisg
ICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudAorICAgICAgICBLZXlEb3duLAorICAgICAg
ICBLZXlVcCwKKyAgICAgICAgUmF3S2V5RG93biwKKyAgICAgICAgQ2hhciwKKworICAgICAgICAv
LyBQbGF0Zm9ybU1vdXNlRXZlbnQKKyAgICAgICAgTW91c2VNb3ZlZCwKKyAgICAgICAgTW91c2VQ
cmVzc2VkLAorICAgICAgICBNb3VzZVJlbGVhc2VkLAorICAgICAgICBNb3VzZVNjcm9sbCwKKyAg
ICAgICAgCisgICAgICAgIC8vIFBsYXRmb3JtV2hlZWxFdmVudAorICAgICAgICBXaGVlbCwKKyAg
ICAgICAgCisgICAgICAgIC8vIFBsYXRmb3JtR2VzdHVyZUV2ZW50CisgICAgICAgIEdlc3R1cmVT
Y3JvbGxCZWdpbiwKKyAgICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKyAgICAgICAgR2VzdHVyZVNj
cm9sbFVwZGF0ZSwKKyAgICAgICAgR2VzdHVyZVRhcCwKKyAgICAgICAgR2VzdHVyZVRhcERvd24s
CisgICAgICAgIEdlc3R1cmVEb3VibGVUYXAsCisgICAgfTsKKworICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KKworCisgICAgLy8gRXZl
bnQgTW9kaWZpZXJzCisKKyAgICBlbnVtIE1vZGlmaWVyS2V5IHsKKyAgICAgICAgQWx0S2V5ID0g
MSA8PCAwLAorICAgICAgICBDdHJsS2V5ID0gMSA8PCAxLAorICAgICAgICBNZXRhS2V5ID0gMSA8
PCAyLAorICAgICAgICBTaGlmdEtleSA9IDEgPDwgMworICAgIH07CisKKyAgICBib29sIHNoaWZ0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9hbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFL
ZXk7IH0KKworICAgIHVuc2lnbmVkIG1vZGlmaWVycygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gKGFsdEtleSgpID8gQWx0S2V5IDogMCkKKyAgICAgICAgICAgIHwgKGN0cmxLZXkoKSA/
IEN0cmxLZXkgOiAwKQorICAgICAgICAgICAgfCAobWV0YUtleSgpID8gTWV0YUtleSA6IDApCisg
ICAgICAgICAgICB8IChzaGlmdEtleSgpID8gU2hpZnRLZXkgOiAwKTsKKyAgICB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3NoaWZ0S2V5
KGZhbHNlKQorICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKKyAgICAgICAgLCBtX2FsdEtleShm
YWxzZSkKKyAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgICAgICwgbV90eXBlKHR5cGUp
CisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtRXZlbnQoVHlwZSB0eXBlLCBib29sIHNoaWZ0
S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisgICAgICAgIDog
bV9zaGlmdEtleShzaGlmdEtleSkKKyAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKKyAgICAg
ICAgLCBtX2FsdEtleShhbHRLZXkpCisgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCisgICAg
ICAgICwgbV90eXBlKHR5cGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9zaGlmdEtleTsK
KyAgICBib29sIG1fY3RybEtleTsKKyAgICBib29sIG1fYWx0S2V5OworICAgIGJvb2wgbV9tZXRh
S2V5OworICAgIHVuc2lnbmVkIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFBsYXRmb3JtRXZlbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw0MiArMjksMzAgQEAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAKICNpbmNs
dWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudCB7CitjbGFzcyBQbGF0Zm9y
bUdlc3R1cmVFdmVudCA6IHB1YmxpYyBQbGF0Zm9ybUV2ZW50IHsKIHB1YmxpYzoKLSAgICBlbnVt
IFR5cGUgewotICAgICAgICBTY3JvbGxCZWdpblR5cGUsCi0gICAgICAgIFNjcm9sbEVuZFR5cGUs
Ci0gICAgICAgIFNjcm9sbFVwZGF0ZVR5cGUsCi0gICAgICAgIFRhcFR5cGUsCi0gICAgICAgIFRh
cERvd25UeXBlLAotICAgICAgICBEb3VibGVUYXBUeXBlLAotICAgIH07Ci0KICAgICBQbGF0Zm9y
bUdlc3R1cmVFdmVudCgpCi0gICAgICAgIDogbV90eXBlKFNjcm9sbEJlZ2luVHlwZSkKKyAgICAg
ICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbikKICAg
ICAgICAgLCBtX3RpbWVzdGFtcCgwKQorICAgICAgICAsIG1fZGVsdGFYKDApCisgICAgICAgICwg
bV9kZWx0YVkoMCkKICAgICB7CiAgICAgfQogCi0gICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlw
ZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgZmxvYXQgZGVsdGFYLCBjb25z
dCBmbG9hdCBkZWx0YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgbWV0YUtleSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICBQbGF0Zm9ybUdlc3R1
cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBkb3VibGUgdGltZXN0YW1wLCBmbG9hdCBkZWx0YVgsIGZsb2F0
IGRlbHRhWSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBt
ZXRhS2V5KQorICAgICAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXksIGN0cmxLZXks
IGFsdEtleSwgbWV0YUtleSkKICAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICAg
ICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgICAgICwgbV90aW1lc3Rh
bXAodGltZXN0YW1wKQogICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgLCBtX2Rl
bHRhWShkZWx0YVkpCi0gICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKLSAgICAgICAgLCBt
X2N0cmxLZXkoY3RybEtleSkKLSAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCi0gICAgICAgICwg
bV9tZXRhS2V5KG1ldGFLZXkpCiAgICAgewogICAgIH0KIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotCiAgICAgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4K
ICAgICBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ds
b2JhbFBvc2l0aW9uOyB9IC8vIFNjcmVlbiBjb29yZGluYXRlcy4KIApAQCAtNzIsMjIgKzYwLDEz
IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFY
OyB9CiAgICAgZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KLSAgICBi
b29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgIGJvb2wgY3Ry
bEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgIGJvb2wgYWx0S2V5KCkgY29u
c3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVy
biBtX21ldGFLZXk7IH0KLQorICAgIAogcHJvdGVjdGVkOgotICAgIFR5cGUgbV90eXBlOwogICAg
IEludFBvaW50IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAg
ICBkb3VibGUgbV90aW1lc3RhbXA7CiAgICAgZmxvYXQgbV9kZWx0YVg7CiAgICAgZmxvYXQgbV9k
ZWx0YVk7Ci0gICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgIGJvb2wgbV9jdHJsS2V5OwotICAgIGJv
b2wgbV9hbHRLZXk7Ci0gICAgYm9vbCBtX21ldGFLZXk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDggQEAK
ICNpZm5kZWYgUGxhdGZvcm1LZXlib2FyZEV2ZW50X2gKICNkZWZpbmUgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50X2gKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1FdmVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZP
Uk0oTUFDKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTY1LDQwICs2NiwxNCBAQCB0
eXBlZGVmIHN0cnVjdCBfRXZhc19FdmVudF9LZXlfVXAgRXZhc19FCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCB7Ci0gICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCA6IHB1
YmxpYyBQbGF0Zm9ybUV2ZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSB7Ci0g
ICAgICAgICAgICAvLyBLZXlEb3duIGlzIHNlbnQgYnkgcGxhdGZvcm1zIHN1Y2ggYXMgTWFjIE9T
IFgsIGd0ayBhbmQgUXQsIGFuZCBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYm90aCBwaHlzaWNhbCBw
cmVzc2VkIGtleSwgYW5kIGl0cyB0cmFuc2xhdGlvbi4KLSAgICAgICAgICAgIC8vIEZvciBET00g
cHJvY2Vzc2luZywgaXQgbmVlZHMgdG8gYmUgZGlzYW1iaWd1YXRlZCBhcyBSYXdLZXlEb3duIG9y
IENoYXIgZXZlbnQuCi0gICAgICAgICAgICBLZXlEb3duLAotCi0gICAgICAgICAgICAvLyBLZXlV
cCBpcyBzZW50IGJ5IGFsbCBwbGF0Zm9ybXMuCi0gICAgICAgICAgICBLZXlVcCwKLQotICAgICAg
ICAgICAgLy8gVGhlc2UgZXZlbnRzIGFyZSBzZW50IGJ5IHBsYXRmb3JtcyBzdWNoIGFzIFdpbmRv
d3MgYW5kIHd4V2lkZ2V0cy4gUmF3S2V5RG93biBvbmx5IGhhcyBpbmZvcm1hdGlvbiBhYm91dCBh
IHBoeXNpY2FsIGtleSwgYW5kIENoYXIKLSAgICAgICAgICAgIC8vIG9ubHkgaGFzIGluZm9ybWF0
aW9uIGFib3V0IGEgY2hhcmFjdGVyIGl0IHdhcyB0cmFuc2xhdGVkIGludG8uCi0gICAgICAgICAg
ICBSYXdLZXlEb3duLAotICAgICAgICAgICAgQ2hhcgotICAgICAgICB9OwotCi0gICAgICAgIGVu
dW0gTW9kaWZpZXJLZXkgewotICAgICAgICAgICAgQWx0S2V5ID0gMSA8PCAwLAotICAgICAgICAg
ICAgQ3RybEtleSA9IDEgPDwgMSwKLSAgICAgICAgICAgIE1ldGFLZXkgPSAxIDw8IDIsCi0gICAg
ICAgICAgICBTaGlmdEtleSA9IDEgPDwgMwotICAgICAgICB9OwotCiAgICAgICAgIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCgpCi0gICAgICAgICAgICA6IG1fdHlwZShLZXlEb3duKQorICAgICAgICAg
ICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24pCiAgICAgICAgICAgICAs
IG1fYXV0b1JlcGVhdChmYWxzZSkKICAgICAgICAgICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNv
ZGUoMCkKICAgICAgICAgICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSgwKQogICAgICAgICAg
ICAgLCBtX2lzS2V5cGFkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQot
ICAgICAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fYWx0S2V5KGZh
bHNlKQotICAgICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCiAjaWYgUExBVEZPUk0oV0lOKSB8
fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkK
ICNlbmRpZgpAQCAtMTEwLDggKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAg
ICAgICAgIHsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisKICAgICAgICAgdm9pZCBkaXNhbWJpZ3VhdGVLZXlEb3duRXZl
bnQoVHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gZmFsc2UpOyAvLyBPbmx5
IHVzZWQgb24gcGxhdGZvcm1zIHRoYXQgbmVlZCBpdCwgaS5lLiB0aG9zZSB0aGF0IGdlbmVyYXRl
IEtleURvd24gZXZlbnRzLgogCiAgICAgICAgIC8vIFRleHQgYXMgYXMgZ2VuZXJhdGVkIGJ5IHBy
b2Nlc3NpbmcgYSB2aXJ0dWFsIGtleSBjb2RlIHdpdGggYSBrZXlib2FyZCBsYXlvdXQKQEAgLTEz
OSwxNiArMTEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzQXV0b1Jl
cGVhdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1JlcGVhdDsgfQogICAgICAgICB2b2lkIHNldElz
QXV0b1JlcGVhdChib29sIGluKSB7IG1fYXV0b1JlcGVhdCA9IGluOyB9CiAgICAgICAgIGJvb2wg
aXNLZXlwYWQoKSBjb25zdCB7IHJldHVybiBtX2lzS2V5cGFkOyB9Ci0gICAgICAgIGJvb2wgc2hp
ZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgICAgIGJvb2wgY3RybEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgICAgICBib29sIGFsdEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9Ci0gICAgICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YUtleTsgfQotICAgICAgICB1bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdCB7
Ci0gICAgICAgICAgICByZXR1cm4gKGFsdEtleSgpID8gQWx0S2V5IDogMCkKLSAgICAgICAgICAg
ICAgICB8IChjdHJsS2V5KCkgPyBDdHJsS2V5IDogMCkKLSAgICAgICAgICAgICAgICB8IChtZXRh
S2V5KCkgPyBNZXRhS2V5IDogMCkKLSAgICAgICAgICAgICAgICB8IChzaGlmdEtleSgpID8gU2hp
ZnRLZXkgOiAwKTsKLSAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBib29sIGN1cnJlbnRDYXBz
TG9ja1N0YXRlKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldEN1cnJlbnRNb2RpZmllclN0YXRl
KGJvb2wmIHNoaWZ0S2V5LCBib29sJiBjdHJsS2V5LCBib29sJiBhbHRLZXksIGJvb2wmIG1ldGFL
ZXkpOwpAQCAtMTkzLDcgKzE1Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgU3RyaW5nIG1fdGV4
dDsKICAgICAgICAgU3RyaW5nIG1fdW5tb2RpZmllZFRleHQ7CiAgICAgICAgIFN0cmluZyBtX2tl
eUlkZW50aWZpZXI7CkBAIC0yMDEsMTAgKzE2NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgaW50IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlOwogICAgICAgICBpbnQgbV9uYXRpdmVW
aXJ0dWFsS2V5Q29kZTsKICAgICAgICAgYm9vbCBtX2lzS2V5cGFkOwotICAgICAgICBib29sIG1f
c2hpZnRLZXk7Ci0gICAgICAgIGJvb2wgbV9jdHJsS2V5OwotICAgICAgICBib29sIG1fYWx0S2V5
OwotICAgICAgICBib29sIG1fbWV0YUtleTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAg
UmV0YWluUHRyPE5TRXZlbnQ+IG1fbWFjRXZlbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGxhdGZvcm1Nb3VzZUV2ZW50X2gKIAogI2luY2x1ZGUg
IkludFBvaW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogCiAjaWYgUExBVEZPUk0o
R1RLKQogdHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50QnV0dG9uIEdka0V2ZW50QnV0dG9uOwpAQCAt
NjEsMTggKzYyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICAvLyBUaGVzZSBi
dXR0b24gbnVtYmVycyBtYXRjaCB0aGUgb25lcyB1c2VkIGluIHRoZSBET00gQVBJLCAwIHRocm91
Z2ggMiwgZXhjZXB0IGZvciBOb0J1dHRvbiB3aGljaCBpc24ndCBzcGVjaWZpZWQuCiAgICAgZW51
bSBNb3VzZUJ1dHRvbiB7IE5vQnV0dG9uID0gLTEsIExlZnRCdXR0b24sIE1pZGRsZUJ1dHRvbiwg
UmlnaHRCdXR0b24gfTsKLSAgICBlbnVtIE1vdXNlRXZlbnRUeXBlIHsgTW91c2VFdmVudE1vdmVk
LCBNb3VzZUV2ZW50UHJlc3NlZCwgTW91c2VFdmVudFJlbGVhc2VkLCBNb3VzZUV2ZW50U2Nyb2xs
IH07CiAgICAgCi0gICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKKyAgICBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1FdmVudCB7CiAgICAgcHVibGljOgogICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoKQotICAgICAgICAgICAgOiBtX2J1dHRvbihOb0J1dHRv
bikKLSAgICAgICAgICAgICwgbV9ldmVudFR5cGUoTW91c2VFdmVudE1vdmVkKQorICAgICAgICAg
ICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpCisgICAgICAgICAg
ICAsIG1fYnV0dG9uKE5vQnV0dG9uKQogICAgICAgICAgICAgLCBtX2NsaWNrQ291bnQoMCkKLSAg
ICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9jdHJsS2V5KGZh
bHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9tZXRh
S2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgICAgICAgICAgLCBt
X21vZGlmaWVyRmxhZ3MoMCkKICNpZiBQTEFURk9STShNQUMpCkBAIC04MywxNyArNzksMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE1vdXNlQnV0dG9uIGJ1dHRvbiwgTW91c2VFdmVudFR5cGUgZXZlbnRU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hp
ZnQsIGJvb2wgY3RybCwgYm9vbCBhbHQsIGJvb2wgbWV0YSwgZG91YmxlIHRpbWVzdGFtcCkKLSAg
ICAgICAgICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBNb3VzZUJ1dHRvbiBidXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXApCisg
ICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtl
eSwgbWV0YUtleSkKKyAgICAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAg
ICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAgICAgICAgICwgbV9i
dXR0b24oYnV0dG9uKQotICAgICAgICAgICAgLCBtX2V2ZW50VHlwZShldmVudFR5cGUpCiAgICAg
ICAgICAgICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50KQotICAgICAgICAgICAgLCBtX3NoaWZ0
S2V5KHNoaWZ0KQotICAgICAgICAgICAgLCBtX2N0cmxLZXkoY3RybCkKLSAgICAgICAgICAgICwg
bV9hbHRLZXkoYWx0KQotICAgICAgICAgICAgLCBtX21ldGFLZXkobWV0YSkKICAgICAgICAgICAg
ICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQogICAgICAgICAgICAgLCBtX21vZGlmaWVyRmxhZ3Mo
MCkKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMDIsNiArOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAsIG1fZGlkQWN0aXZhdGVXZWJWaWV3KGZhbHNlKQogI2VuZGlmCiAg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vQVNTRVJUKGlzUGxhdGZvcm1Nb3VzZUV2ZW50VHlwZSh0
eXBlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBJbnRQb2ludCYgcG9zKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbjsgfQpAQCAtMTE0LDcgKzEwNyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgaW50IG1vdmVtZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fbW92ZW1lbnRE
ZWx0YS55KCk7IH0KICNlbmRpZgogICAgICAgICBNb3VzZUJ1dHRvbiBidXR0b24oKSBjb25zdCB7
IHJldHVybiBtX2J1dHRvbjsgfQotICAgICAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2V2ZW50VHlwZTsgfQogICAgICAgICBpbnQgY2xpY2tDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpY2tDb3VudDsgfQogICAgICAgICBib29sIHNoaWZ0S2V5KCkgY29u
c3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQogICAgICAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7
IHJldHVybiBtX2N0cmxLZXk7IH0KQEAgLTE0Miw3ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAjaWYgZGVmaW5lZChfX09CSkNfXykKICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KE5T
RXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKICNlbmRpZgotICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0
dG9uIGJ1dHRvbiwgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlLAorICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0
dG9uIGJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcik7CiAg
ICAgICAgIGludCBldmVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0K
QEAgLTE3MCwxMiArMTYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbnRQb2lu
dCBtX21vdmVtZW50RGVsdGE7CiAjZW5kaWYKICAgICAgICAgTW91c2VCdXR0b24gbV9idXR0b247
Ci0gICAgICAgIE1vdXNlRXZlbnRUeXBlIG1fZXZlbnRUeXBlOwogICAgICAgICBpbnQgbV9jbGlj
a0NvdW50OwotICAgICAgICBib29sIG1fc2hpZnRLZXk7Ci0gICAgICAgIGJvb2wgbV9jdHJsS2V5
OwotICAgICAgICBib29sIG1fYWx0S2V5OwotICAgICAgICBib29sIG1fbWV0YUtleTsKICAgICAg
ICAgZG91YmxlIG1fdGltZXN0YW1wOyAvLyB1bml0OiBzZWNvbmRzCiAgICAgICAgIHVuc2lnbmVk
IG1fbW9kaWZpZXJGbGFnczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1XaGVlbEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1XaGVlbEV2ZW50LmgJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIFBsYXRmb3JtV2hlZWxFdmVudF9oCiAKICNpbmNsdWRlICJJbnRQb2ludC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVk
ZWYgc3RydWN0IF9HZGtFdmVudFNjcm9sbCBHZGtFdmVudFNjcm9sbDsKQEAgLTg0LDE4ICs4NSwx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgUGxh
dGZvcm1XaGVlbEV2ZW50IHsKKyAgICBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQgOiBwdWJsaWMg
UGxhdGZvcm1FdmVudCB7CiAgICAgcHVibGljOgogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQo
KQotICAgICAgICAgICAgOiBtX2RlbHRhWCgwKQorICAgICAgICAgICAgOiBQbGF0Zm9ybUV2ZW50
KFBsYXRmb3JtRXZlbnQ6OldoZWVsKQorICAgICAgICAgICAgLCBtX2RlbHRhWCgwKQogICAgICAg
ICAgICAgLCBtX2RlbHRhWSgwKQogICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKDApCiAgICAg
ICAgICAgICAsIG1fd2hlZWxUaWNrc1koMCkKICAgICAgICAgICAgICwgbV9ncmFudWxhcml0eShT
Y3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkK
LSAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShm
YWxzZSkKLSAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNpZiBQTEFURk9STShNQUMpIHx8IChQ
TEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQpAQCAtMTA3LDE3ICsxMDUsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEludFBv
aW50IHBvc2l0aW9uLCBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9h
dCBkZWx0YVksIGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgUGxhdGZvcm1X
aGVlbEV2ZW50R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKLSAgICAgICAgICAgIDogbV9wb3NpdGlv
bihwb3NpdGlvbikKKyAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpX
aGVlbCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSkKKyAgICAgICAgICAgICwg
bV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9i
YWxQb3NpdGlvbikKICAgICAgICAgICAgICwgbV9kZWx0YVgoZGVsdGFYKQogICAgICAgICAgICAg
LCBtX2RlbHRhWShkZWx0YVkpCiAgICAgICAgICAgICAsIG1fd2hlZWxUaWNrc1god2hlZWxUaWNr
c1gpCiAgICAgICAgICAgICAsIG1fd2hlZWxUaWNrc1kod2hlZWxUaWNrc1kpCiAgICAgICAgICAg
ICAsIG1fZ3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXko
c2hpZnRLZXkpCi0gICAgICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQotICAgICAgICAgICAg
LCBtX2FsdEtleShhbHRLZXkpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQogICAg
ICAgICAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNpZiBQTEFU
Rk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAg
ICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQpAQCAtMTM5LDExICsxMzQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkoKSBjb25zdCB7IHJldHVybiBtX2dyYW51bGFyaXR5OyB9CiAK
LSAgICAgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAg
ICAgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgICAg
IGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICAgICAgYm9vbCBt
ZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9Ci0KICAgICAgICAgaW50IHgoKSBj
b25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLngoKTsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGlu
YXRlcy4KICAgICAgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLnkoKTsgfQog
ICAgICAgICBpbnQgZ2xvYmFsWCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb24ueCgp
OyB9IC8vIFNjcmVlbiBjb29yZGluYXRlcy4KQEAgLTIwOCwxMCArMTk4LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBmbG9hdCBtX3doZWVsVGlja3NYOwogICAgICAgICBmbG9hdCBt
X3doZWVsVGlja3NZOwogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dy
YW51bGFyaXR5OwotICAgICAgICBib29sIG1fc2hpZnRLZXk7Ci0gICAgICAgIGJvb2wgbV9jdHJs
S2V5OwotICAgICAgICBib29sIG1fYWx0S2V5OwotICAgICAgICBib29sIG1fbWV0YUtleTsKICAg
ICAgICAgYm9vbCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZTsKICNpZiBQTEFURk9STShN
QUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgYm9vbCBt
X2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsVG9PZmZz
ZXRXCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
Onpvb20oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKIHsKLSAgICBBU1NFUlQocGdl
LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgQVNT
RVJUKHBnZS50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCk7CiAgICAg
Ly8gRklYTUU6IG1vZGlmeSB0aGlzIHNvIHdlIGNhbiBzdGFydCBldmVuIGlmIHRoZSB0aW1lciBp
cyBhY3RpdmUuCiAgICAgaWYgKCFtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAg
ICAgbV9jdXJyZW50Wm9vbVNjYWxlID0gMTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yTm9uZTo6em9vbShjb25zdCBQbGF0CiAgICAgICAgIG1fem9vbURhdGEubV9kZXNp
cmVkVHJhbnNYID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS54KCk7CiAgICAg
ICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNZID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFs
UG9zaXRpb24oKS55KCk7CiAjaWYgRU5BQkxFKERPVUJMRV9UQVBfQ0VOVEVSUykKLSAgICAgICAg
aWYgKHBnZS50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpIHsK
KyAgICAgICAgaWYgKHBnZS50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRh
cCkgewogICAgICAgICAgICAgLy8gWm9vbSB0byBjZW50cmUgb2YgZGlzcGxheS4gUGluY2gtdG8t
em9vbSBtYXkgbm90IHdhbnQgdGhpcyBiZWhhdmlvdXIuCiAgICAgICAgICAgICBtX3pvb21EYXRh
Lm1fZGVzaXJlZFRyYW5zWCArPSBtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSAvIDIg
LSBwZ2UuZ2xvYmFsUG9zaXRpb24oKS54KCk7CiAgICAgICAgICAgICBtX3pvb21EYXRhLm1fZGVz
aXJlZFRyYW5zWSArPSBtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlSGVpZ2h0KCkgLyAyIC0gcGdl
Lmdsb2JhbFBvc2l0aW9uKCkueSgpOwpAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgU2Nyb2xsQW5p
bWF0b3JOb25lOjpoYW5kbGVHZXN0dXJlRXYKIHsKICAgICBUUkFDRV9FVkVOVCgiU2Nyb2xsQW5p
bWF0b3JOb25lOjpoYW5kbGVHZXN0dXJlRXZlbnQiLCB0aGlzLCAwKTsKICAgICBzd2l0Y2ggKHBn
ZS50eXBlKCkpIHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBl
OgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICAgICAgem9v
bShwZ2UpOwogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRF
dmVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjcsMjUgKzQyNywyMSBAQCBzdGF0aWMgaW5saW5lIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6VHlwCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5RG93bjoKLSAgICAgICAgcmV0dXJu
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6OktleURvd247CiAgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRF
dmVudDo6S2V5VXA6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVw
OworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgY2FzZSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5Q2hhcjoKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOworICAgICAgICByZXR1cm4g
UGxhdGZvcm1FdmVudDo6Q2hhcjsKICAgICB9CiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50
IGV2ZW50KQotICAgIDogbV90eXBlKHRvV2ViQ29yZVBsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUo
ZXZlbnQudHlwZSgpKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQodG9XZWJDb3JlUGxhdGZvcm1LZXli
b2FyZEV2ZW50VHlwZShldmVudC50eXBlKCkpLCBldmVudC5zaGlmdEFjdGl2ZSgpIHx8IChldmVu
dC5jaGFyYWN0ZXIoKSA9PSBLRVlDT0RFX0JBQ0tfVEFCKSwgZXZlbnQuY3RybEFjdGl2ZSgpLCBl
dmVudC5hbHRBY3RpdmUoKSwgZmFsc2UpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRp
ZmllckZvckJsYWNrQmVycnlDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpKQogICAgICwgbV9h
dXRvUmVwZWF0KGZhbHNlKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tl
eUNvZGVGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKSkKICAgICAsIG1f
aXNLZXlwYWQoZmFsc2UpCi0gICAgLCBtX3NoaWZ0S2V5KGV2ZW50LnNoaWZ0QWN0aXZlKCkgfHwg
KGV2ZW50LmNoYXJhY3RlcigpID09IEtFWUNPREVfQkFDS19UQUIpKSAvLyBCYWNrVGFiIHNob3Vs
ZCBiZSB0cmVhdGVkIGFzIFNoaWZ0ICsgVGFiLgotICAgICwgbV9jdHJsS2V5KGV2ZW50LmN0cmxB
Y3RpdmUoKSkKLSAgICAsIG1fYWx0S2V5KGV2ZW50LmFsdEFjdGl2ZSgpKQotICAgICwgbV9tZXRh
S2V5KGZhbHNlKQogICAgICwgbV91bm1vZGlmaWVkQ2hhcmFjdGVyKGV2ZW50LmNoYXJhY3Rlcigp
KQogewogICAgIHVuc2lnbmVkIHNob3J0IGNoYXJhY3RlciA9IGFkanVzdENoYXJhY3RlckZyb21P
UyhldmVudC5jaGFyYWN0ZXIoKSk7CkBAIC00NjEsMTYgKzQ1NywxNiBAQCBib29sIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUp
Cit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBs
YXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQog
ewogICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3du
IG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgot
ICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBlOwogCiAgICAgaWYgKGJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0eXBlID09
IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3du
KSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0
ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0u
Y3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE3
ICsxMjUsMTcgQEAgYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppc092ZXJNaQogCiB2
b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFRhcERvd25HZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
IHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpUYXBEb3duVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3Vj
aFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duLCBtX2ZpcnN0
VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGlt
ZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkp
OwogfQogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2Vz
dHVyZXMpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RU
b3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5
LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5k
KFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsIG1fZmlyc3RU
b3VjaFBvc2l0aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1l
LCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7
CiB9CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kRG91YmxlQ2xpY2tH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJl
cyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50
KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlv
biwgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYs
IG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1
cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZURv
dWJsZVRhcCwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9u
LCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0
S2V5LCBtX21ldGFLZXkpKTsKIH0KIAogUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dl
c3R1cmVzIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2Vz
dHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgYm9vbCBkZWZhdWx0UHJldmVu
dGVkKQpAQCAtMTU5LDEyICsxNTksMTIgQEAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFz
c0dlc3R1cmVzIAogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVCZWdpbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1
cmVzIGdlc3R1cmVzKQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZl
bnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSwgdG91Y2hQb2ludC5wb3Mo
KSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9z
aGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMt
PmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xs
QmVnaW4sIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRv
dWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0
YUtleSkpOwogfQogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVFbmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJl
cyBnZXN0dXJlcywgZmxvYXQgeFZlbG9jaXR5LCBmbG9hdCB5VmVsb2NpdHkpCiB7Ci0gICAgZ2Vz
dHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsRW5kVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwg
bV9sYXN0VG91Y2hUaW1lLCB4VmVsb2NpdHksIHlWZWxvY2l0eSwgbV9zaGlmdEtleSwgbV9jdHJs
S2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9y
bUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kLCB0b3VjaFBvaW50
LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIHhWZWxvY2l0
eSwgeVZlbG9jaXR5LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkp
KTsKIH0KIAogdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0
dXJlVXBkYXRlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMg
Z2VzdHVyZXMpCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9t
aXVtOjphcHBlbmRTYwogICAgIGZsb2F0IGRlbHRhWCh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1f
Zmlyc3RUb3VjaFBvc2l0aW9uLngoKSk7CiAgICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9pbnQucG9z
KCkueSgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueSgpKTsKIAotICAgIGdlc3R1cmVzLT5hcHBl
bmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRv
dWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXks
IG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQo
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91
Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCBkZWx0YVgsIGRlbHRhWSwgbV9z
aGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiAgICAgbV9maXJzdFRv
dWNoUG9zaXRpb24gPSB0b3VjaFBvaW50LnBvcygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXli
b2FyZEV2ZW50Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKICAgICAvLyBD
YW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBh
cyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBBU1NFUlQo
bV90eXBlID09IEtleURvd24pOwotICAgIEFTU0VSVCh0eXBlID09IFJhd0tleURvd24gfHwgdHlw
ZSA9PSBDaGFyKTsKKyAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24p
OworICAgIEFTU0VSVCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gfHwgdHlwZSA9
PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKTsKICAgICBtX3R5cGUgPSB0eXBlOwogICAgIGlmIChiYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCShyZXZp
c2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENv
bnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NywyNiArMjk3LDI4IEBAIGJvb2wgUG9w
dXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQoY28KIGJvb2wgUG9wdXBDb250YWluZXI6Omhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50
KQogewogICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZh
a2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEs
IGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJl
RXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1l
c3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50
LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXko
KSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAg
ICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVu
dFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBn
ZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVu
dC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgY2FzZSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlVGFwOiB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91
c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRp
b24oKSwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIC8qIGNsaWNrQ291bnQg
Ki8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdl
c3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50
LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24o
Z2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBM
ZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8g
MSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1
cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRp
bWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBn
ZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2
ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0
YW1wKCkpOwogICAgICAgICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtlTW91c2VNb3ZlKTsK
ICAgICAgICAgaGFuZGxlTW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAgICAgIGhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6Cisg
ICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CisgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOiB7CiAgICAgICAgIFBsYXRm
b3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigp
LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBn
ZXN0dXJlRXZlbnQuZGVsdGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIDEyMC4wZiwgZ2Vz
dHVyZUV2ZW50LmRlbHRhWSgpIC8gMTIwLjBmLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSk7CiAgICAgICAgIGhhbmRsZVdoZWVs
RXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAgY2Fz
ZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKLSAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZToKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1
cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6
CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93bjoKICAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BvcHVwTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk5LDEyICsxOTksMTIgQEAgc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJUeXBlRXZlbnQoY29u
c3QgUAogICAgIC8vIFdlIHVzZSBSYXdLZXlEb3duL0NoYXIvS2V5VXAgZXZlbnQgc2NoZW1lIG9u
IGFsbCBwbGF0Zm9ybXMsCiAgICAgLy8gc28gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyIChu
b3QgUmF3S2V5RG93bikgdHlwZSBldmVudAogICAgIC8vIGlzIGNvbnNpZGVyZWQgYXMgY2hhcmFj
dGVyIHR5cGUgZXZlbnQuCi0gICAgcmV0dXJuIGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkNoYXI7CisgICAgcmV0dXJuIGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpDaGFyOwogfQogCiBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxh
dGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXApCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW51bUl0
ZW1zKCkgJiYgZXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgIT0gVktFWV9FU0NBUEUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9t
aXVtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0JKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTg4Myw5ICs4ODMsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWM6OmhhbmRsZVdoCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFu
ZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQp
CiB7Ci0gICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlNjcm9sbEJlZ2luVHlwZSkKKyAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVyZSgp
OwotICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGUpCisgICAgZWxzZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJl
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMTMgKzQwLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9LZXlfRG93biogZXZlbnQpCi0gICAgOiBtX3R5cGUoS2V5RG93bikKKyAgICA6IFBsYXRmb3Jt
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2
ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQt
Pm1vZGlmaWVycywgIkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5t
b2RpZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmll
cnMsICJNZXRhIikpCiAgICAgLCBtX3RleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5n
KSkKICAgICAsIG1fdW5tb2RpZmllZFRleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5n
KSkKLSAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJTaGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlf
bW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtl
eShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKIHsK
ICAgICBTdHJpbmcga2V5TmFtZSA9IFN0cmluZyhldmVudC0+a2V5KTsKICAgICBtX2tleUlkZW50
aWZpZXIgPSBrZXlJZGVudGlmaWVyRm9yRXZhc0tleU5hbWUoa2V5TmFtZSk7CkBAIC01OCwxMiAr
NTQsOCBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiB9CiAKIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZl
bnRfS2V5X1VwKiBldmVudCkKLSAgICA6IG1fdHlwZShLZXlVcCkKKyAgICA6IFBsYXRmb3JtRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5VXAsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZp
ZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAi
TWV0YSIpKQogICAgICwgbV90ZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZykpCi0g
ICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZl
bnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlm
aWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiB7CiAgICAg
U3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7CiAgICAgbV9rZXlJZGVudGlmaWVy
ID0ga2V5SWRlbnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpOwpAQCAtNzksNyArNzEsNyBA
QCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAgICAgQVNTRVJUKG1f
dHlwZSA9PSBLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBlOwogCi0gICAgaWYgKHR5cGUgPT0g
UmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24p
IHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQg
PSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHAJKHJldmlzaW9uIDEwMzAy
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw0MyArNDgsMzEgQEAgdm9pZCBQbGF0Zm9ybU1vdXNl
RXZlbnQ6OnNldENsaWNrQ291bnQodQogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3Jt
TW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBJbnRQb2ludCBw
b3NpdGlvbikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9z
aXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQorICAgIDogUGxhdGZv
cm1FdmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChl
dmVudC0+bW9kaWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICwgbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2Fu
dmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCiAg
ICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNh
bnZhcy55KSkKICAgICAsIG1fYnV0dG9uKE1vdXNlQnV0dG9uKGV2ZW50LT5idXR0b24gLSAxKSkK
LSAgICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRQcmVzc2VkKQotICAgICwgbV9zaGlmdEtleShl
dmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0gICAg
LCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJD
b250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQt
Pm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV90aW1lc3RhbXAoY3VycmVu
dFRpbWUoKSkKIHsKICAgICBzZXRDbGlja0NvdW50KGV2ZW50LT5mbGFncyk7CiB9CiAKIFBsYXRm
b3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
VXAqIGV2ZW50LCBJbnRQb2ludCBwb3NpdGlvbikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQo
ZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlv
bi55KCkpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2Vk
LCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFz
X2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9t
b2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRp
b24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2FudmFz
LnkgLSBwb3NpdGlvbi55KCkpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldmVu
dC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSkpCiAgICAgLCBtX2J1dHRvbihNb3VzZUJ1dHRv
bihldmVudC0+YnV0dG9uIC0gMSkpCi0gICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50UmVsZWFz
ZWQpCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19z
ZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFL
ZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAg
ICAgLCBtX3RpbWVzdGFtcChjdXJyZW50VGltZSgpKQogewogICAgIHNldENsaWNrQ291bnQoZXZl
bnQtPmZsYWdzKTsKIH0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQo
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldmVudCwgSW50UG9pbnQgcG9zaXRpb24pCi0g
ICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLnggLSBwb3NpdGlvbi54
KCksIGV2ZW50LT5jdXIuY2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQorICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
ZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVu
dC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQt
Pm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52
YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQtPmN1ci5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkp
CiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLngsIGV2
ZW50LT5jdXIuY2FudmFzLnkpKQogICAgICwgbV9idXR0b24oTW91c2VCdXR0b24oZXZlbnQtPmJ1
dHRvbnMgLSAxKSkKLSAgICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRNb3ZlZCkKICAgICAsIG1f
Y2xpY2tDb3VudCgwKQotICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
ZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtl
eShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAg
ICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAi
TWV0YSIpKQogICAgICwgbV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRF
ZmwuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTMgKzQzLDEw
IEBAIGVudW0gewogfTsKIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQo
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCi0gICAgOiBtX3Bvc2l0aW9uKEludFBv
aW50KGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxh
dGZvcm1FdmVudDo6V2hlZWwsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJz
LCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJDb250
cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQWx0IiksIGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICwgbV9w
b3NpdGlvbihJbnRQb2ludChldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCiAgICAgLCBtX2ds
b2JhbFBvc2l0aW9uKEludFBvaW50KGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KSkKICAgICAs
IG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBtX3NoaWZ0S2V5
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAgICAs
IG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkNvbnRy
b2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZp
ZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2
LT5tb2RpZmllcnMsICJNZXRhIikpCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmlj
ZShmYWxzZSkKIHsKICAgICAvLyBBIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgKGluIEVGTCkgdGhh
dCB3ZSBhcmUgc2Nyb2xsaW5nIGRvd24sIHNvIHdlIG5lZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3Bw
CShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZv
cm1LZXlib2FyZEV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDcgKzU0Nyw3IEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OnNpbmdsZUNoYXIKIC8vIEtlZXAgdGhpcyBp
biBzeW5jIHdpdGggdGhlIG90aGVyIHBsYXRmb3JtIGV2ZW50IGNvbnN0cnVjdG9ycwogLy8gVE9E
TzogbV9nZGtFdmVudEtleSBzaG91bGQgYmUgcmVmY291bnRlZAogUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQotICAgIDogbV90
eXBlKChldmVudC0+dHlwZSA9PSBHREtfS0VZX1JFTEVBU0UpID8gS2V5VXAgOiBLZXlEb3duKQor
ICAgIDogUGxhdGZvcm1FdmVudCgoZXZlbnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IFBs
YXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93biwgKGV2ZW50LT5zdGF0
ZSAmIEdES19TSElGVF9NQVNLKSB8fCAoZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFi
KSwgZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSywgZXZlbnQtPnN0YXRlICYgR0RLX01P
RDFfTUFTSywgZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSykKICAgICAsIG1fdGV4dChzaW5n
bGVDaGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCkpCiAgICAgLCBtX3VubW9kaWZpZWRUZXh0
KHNpbmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fa2V5SWRlbnRp
ZmllcihrZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkKQEAgLTU1NSwx
MCArNTU1LDYgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogICAg
ICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGV2
ZW50LT5rZXl2YWwpKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+a2V5dmFs
KQogICAgICwgbV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAmJiBldmVu
dC0+a2V5dmFsIDw9IEdES19LUF85KQotICAgICwgbV9zaGlmdEtleSgoZXZlbnQtPnN0YXRlICYg
R0RLX1NISUZUX01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tUYWIpKQot
ICAgICwgbV9jdHJsS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCi0gICAgLCBt
X2FsdEtleShldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQotICAgICwgbV9tZXRhS2V5KGV2
ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCiAgICAgLCBtX2dka0V2ZW50S2V5KGV2ZW50KQog
ewogfQpAQCAtNTcyLDcgKzU2OCw3IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNh
bWJpZ3VhdGUKICAgICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBs
YXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAg
ICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVu
dEd0ay5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw5
IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEcKICAgICBjYXNlIEdE
S18yQlVUVE9OX1BSRVNTOgogICAgIGNhc2UgR0RLXzNCVVRUT05fUFJFU1M6CiAgICAgY2FzZSBH
REtfQlVUVE9OX1JFTEVBU0U6Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNz
ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAg
ICAgaWYgKGV2ZW50LT50eXBlID09IEdES19CVVRUT05fUkVMRUFTRSkgewotICAgICAgICAgICAg
bV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAgICAgICAgbV9jbGlja0NvdW50ID0g
MDsKICAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTKQog
ICAgICAgICAgICAgbV9jbGlja0NvdW50ID0gMTsKQEAgLTg3LDcgKzg3LDcgQEAgUGxhdGZvcm1N
b3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoRwogCiAgICAgc3dpdGNoIChtb3Rpb24tPnR5
cGUpIHsKICAgICBjYXNlIEdES19NT1RJT05fTk9USUZZOgotICAgICAgICBtX2V2ZW50VHlwZSA9
IE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZDsKICAgICAgICAgbV9idXR0b24gPSBOb0J1dHRvbjsKICAgICAgICAgbV9jbGlja0NvdW50
ID0gMDsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcAkocmV2aXNpb24gMTAzMDI3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0
Zm9ybVdoZWVsRXZlbnQoRwogewogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkZWx0YSA9IDE7CiAK
KyAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKKwogICAgIG1fZGVsdGFYID0gMDsK
ICAgICBtX2RlbHRhWSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9L
ZXlFdmVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
S2V5RXZlbnRJT1MubW0JKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9LZXlFdmVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsMTcgKzUwLDEzIEBA
IHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KFcKIH0KIAogUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoV2ViRXZlbnQgKmV2ZW50KQotICAg
IDogbV90eXBlKGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlVcCA/IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6S2V5VXAgOiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24pCisgICAgOiBQbGF0
Zm9ybUV2ZW50KGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlVcCA/IFBsYXRmb3JtRXZlbnQ6Oktl
eVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93biwgZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2
ZW50RmxhZ01hc2tTaGlmdCwgZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tD
b250cm9sLCBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSwg
ZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kKQogICAgICwgbV90
ZXh0KGV2ZW50LmNoYXJhY3RlcnMpCiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KGV2ZW50LmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycykKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlm
aWVyRm9yS2V5RXZlbnQoZXZlbnQpKQogICAgICwgbV9hdXRvUmVwZWF0KGV2ZW50LmlzS2V5UmVw
ZWF0aW5nKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoZXZlbnQua2V5Q29kZSkKICAg
ICAsIG1faXNLZXlwYWQoZmFsc2UpIC8vIGlQaG9uZSBkb2VzIG5vdCBkaXN0aW5ndWlzaCB0aGUg
bnVtcGFkIDxyZGFyOi8vcHJvYmxlbS83MTkwODM1PgotICAgICwgbV9zaGlmdEtleShldmVudC5t
b2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza1NoaWZ0KQotICAgICwgbV9jdHJsS2V5KGV2
ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29udHJvbCkKLSAgICAsIG1fYWx0
S2V5KGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlKQotICAg
ICwgbV9tZXRhS2V5KGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFu
ZCkKICAgICAsIG1fRXZlbnQoZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LnR5cGUgPT0gV2Vi
RXZlbnRLZXlEb3duIHx8IGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlVcCk7CkBAIC05NCw3ICs5
MCw3IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUKICAgICBpZiAo
YmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5
cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tl
eURvd24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmll
ZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODks
NyArMTg5LDcgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRQogfQog
CiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpl
dmVudCkKLSAgICA6IG1fdHlwZShpc0tleVVwRXZlbnQoZXZlbnQpID8gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICA6IFBs
YXRmb3JtRXZlbnQoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDog
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtl
eU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3Nd
ICYgTlNDb21tYW5kS2V5TWFzaykKICAgICAsIG1fdGV4dCh0ZXh0RnJvbUV2ZW50KGV2ZW50KSkK
ICAgICAsIG1fdW5tb2RpZmllZFRleHQodW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpKQog
ICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCkpCkBA
IC0xOTcsMTAgKzE5Nyw2IEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2Fy
ZEUKICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZl
bnQoZXZlbnQpKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShbZXZlbnQga2V5Q29kZV0p
CiAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoZXZlbnQpKQotICAgICwgbV9zaGlmdEtl
eShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAsIG1fY3RybEtl
eShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAgICwgbV9hbHRL
ZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQotICAgICwgbV9t
ZXRhS2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAgICAgLCBt
X21hY0V2ZW50KGV2ZW50KQogewogICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVy
biAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZv
ciBFbnRlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNl
RXZlbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtTW91c2VFdmVudE1hYy5tbQkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTE5LDU3ICsxMTksNDkgQEAgSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50
ICpldgogICAgIH0KIH0KIAotc3RhdGljIE1vdXNlRXZlbnRUeXBlIG1vdXNlRXZlbnRGb3JOU0V2
ZW50KE5TRXZlbnQqIGV2ZW50KSAKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1vdXNlRXZl
bnRGb3JOU0V2ZW50KE5TRXZlbnQqIGV2ZW50KSAKIHsKICAgICBzd2l0Y2ggKFtldmVudCB0eXBl
XSkgewogICAgIGNhc2UgTlNTY3JvbGxXaGVlbDoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRT
Y3JvbGw7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVNjcm9sbDsKICAgICBj
YXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6CiAg
ICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgogICAgIGNhc2UgTlNNb3VzZU1vdmVkOgotICAg
ICAgICByZXR1cm4gTW91c2VFdmVudE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6TW91c2VNb3ZlZDsKICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKICAgICBjYXNlIE5TUmln
aHRNb3VzZURvd246CiAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICByZXR1cm4g
TW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVBy
ZXNzZWQ7CiAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgogICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6
CiAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRSZWxl
YXNlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgfQogfQogCiBQbGF0Zm9ybU1vdXNlRXZl
bnQ6OlBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50KiBldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3
KQotICAgIDogbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKKyAg
ICA6IFBsYXRmb3JtRXZlbnQobW91c2VFdmVudEZvck5TRXZlbnQoZXZlbnQpLCBbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlND
b250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNr
LCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQorICAgICwgbV9wb3Np
dGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKICAgICAsIG1fZ2xvYmFsUG9z
aXRpb24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkpCiAgICAgLCBtX2J1dHRvbihtb3VzZUJ1
dHRvbkZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fZXZlbnRUeXBlKG1vdXNlRXZlbnRGb3JOU0V2
ZW50KGV2ZW50KSkKICAgICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50Rm9yRXZlbnQoZXZlbnQp
KQotICAgICwgbV9zaGlmdEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFz
aykKLSAgICAsIG1fY3RybEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlN
YXNrKQotICAgICwgbV9hbHRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVL
ZXlNYXNrKQotICAgICwgbV9tZXRhS2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFu
ZEtleU1hc2spCiAgICAgLCBtX3RpbWVzdGFtcChbZXZlbnQgdGltZXN0YW1wXSkKICAgICAsIG1f
bW9kaWZpZXJGbGFncyhbZXZlbnQgbW9kaWZpZXJGbGFnc10pCiAgICAgLCBtX2V2ZW50TnVtYmVy
KFtldmVudCBldmVudE51bWJlcl0pCiB7CiB9CiAKLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZv
cm1Nb3VzZUV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3Vz
ZUJ1dHRvbiBidXR0b24sIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKK1BsYXRmb3JtTW91c2VF
dmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBn
bG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKICAg
ICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAogICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcikKLSAg
ICA6IG1fcG9zaXRpb24oSW50UG9pbnQoeCwgeSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUs
IHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpCisgICAgLCBtX3Bvc2l0aW9uKElu
dFBvaW50KHgsIHkpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChnbG9iYWxYLCBn
bG9iYWxZKSkKICAgICAsIG1fYnV0dG9uKGJ1dHRvbikKLSAgICAsIG1fZXZlbnRUeXBlKGV2ZW50
VHlwZSkKICAgICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50KQotICAgICwgbV9zaGlmdEtleShz
aGlmdEtleSkKLSAgICAsIG1fY3RybEtleShjdHJsS2V5KQotICAgICwgbV9hbHRLZXkoYWx0S2V5
KQotICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCiAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXAp
CiAgICAgLCBtX21vZGlmaWVyRmxhZ3MobW9kaWZpZXJGbGFncykKICAgICAsIG1fZXZlbnROdW1i
ZXIoZXZlbnROdW1iZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MzEsOSArMTAzMSw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQK
IAogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7Ci0gICAgaWYgKGdlc3R1cmVFdmVudC50
eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKKyAgICBpZiAo
Z2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4p
CiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVyZSgpOwotICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCisgICAgZWxz
ZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xs
RW5kKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCShyZXZpc2lvbiAxMDMwMjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtOTAsMTMgKzkwLDEwIEBAIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBw
aGFzZUZvckUKIH0KIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoTlNF
dmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLSAgICA6IG1fcG9zaXRpb24ocG9pbnRG
b3JFdmVudChldmVudCwgd2luZG93VmlldykpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OldoZWVsLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1h
bmRLZXlNYXNrKQorICAgICwgbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dW
aWV3KSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkp
CiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9z
aGlmdEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAsIG1f
Y3RybEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAgICwg
bV9hbHRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQotICAg
ICwgbV9tZXRhS2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAg
ICAgLCBtX3BoYXNlKHBoYXNlRm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV9tb21lbnR1bVBoYXNl
KG1vbWVudHVtUGhhc2VGb3JFdmVudChldmVudCkpCiAgICAgLCBtX3RpbWVzdGFtcChbZXZlbnQg
dGltZXN0YW1wXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5
Ym9hcmRFdmVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBTdHJpbmcga2V5VGV4dEZvcktleUV2
ZW50KGNvbnN0IFEKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50
KFFLZXlFdmVudCogZXZlbnQpCiB7CiAgICAgY29uc3QgaW50IHN0YXRlID0gZXZlbnQtPm1vZGlm
aWVycygpOwotICAgIG1fdHlwZSA9IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6S2V5UmVsZWFz
ZSkgPyBLZXlVcCA6IEtleURvd247CisgICAgbV90eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gUUV2
ZW50OjpLZXlSZWxlYXNlKSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6
S2V5RG93bjsKICAgICBtX3RleHQgPSBrZXlUZXh0Rm9yS2V5RXZlbnQoZXZlbnQpOwogICAgIG1f
dW5tb2RpZmllZFRleHQgPSBtX3RleHQ7IC8vIEZJWE1FOiBub3QgY29ycmVjdAogICAgIG1fa2V5
SWRlbnRpZmllciA9IGtleUlkZW50aWZpZXJGb3JRdEtleUNvZGUoZXZlbnQtPmtleSgpKTsKQEAg
LTYxNCwxMCArNjE0LDEwIEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2Fy
ZEUKIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQo
VHlwZSB0eXBlLCBib29sKQogewogICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5
RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90
aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBl
OwogCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAg
ICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNw
cAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZv
cm1Nb3VzZUV2ZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMsNDIgQEAgc3Rh
dGljIHZvaWQgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleQogICAgIHNoaWZ0S2V5ID0ga2V5
Ym9hcmRNb2RpZmllcnMgJiBRdDo6U2hpZnRNb2RpZmllcjsKIH0KIAotc3RhdGljIHZvaWQgbW91
c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoY29uc3QgUUV2ZW50KiBldmVudCwg
TW91c2VFdmVudFR5cGUmIG1vdXNlRXZlbnRUeXBlLCBNb3VzZUJ1dHRvbiYgbW91c2VCdXR0b24p
CitzdGF0aWMgdm9pZCBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChjb25z
dCBRRXZlbnQqIGV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpUeXBlJiBtb3VzZUV2ZW50VHlwZSwgTW91
c2VCdXR0b24mIG1vdXNlQnV0dG9uKQogewogICAgIGVudW0geyBNb3VzZUV2ZW50LCBHcmFwaGlj
c1NjZW5lTW91c2VFdmVudCB9IGZyYW1ld29ya01vdXNlRXZlbnRUeXBlOwogICAgIHN3aXRjaCAo
ZXZlbnQtPnR5cGUoKSkgewogICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENsaWNrOgog
ICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzOgogICAgICAgICBmcmFtZXdvcmtNb3Vz
ZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VF
dmVudFByZXNzZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25S
ZWxlYXNlOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnQ7Ci0g
ICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICBtb3Vz
ZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUUV2ZW50OjpNb3VzZU1vdmU6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZl
bnRUeXBlID0gTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50
TW92ZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3Zl
ZDsKICAgICAgICAgYnJlYWs7CiAjaWYgIWRlZmluZWQoUVRfTk9fR1JBUEhJQ1NWSUVXKQogICAg
IGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5lTW91c2VEb3VibGVDbGljazoKICAgICBjYXNlIFFF
dmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlUHJlc3M6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZl
bnRUeXBlID0gR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBl
ID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6R3Jh
cGhpY3NTY2VuZU1vdXNlUmVsZWFzZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUg
PSBHcmFwaGljc1NjZW5lTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3Vz
ZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6
TW91c2VSZWxlYXNlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNz
U2NlbmVNb3VzZU1vdmU6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gR3JhcGhp
Y3NTY2VuZU1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1v
dmVkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7
CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVu
dDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1v
dXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC04NiwxMiArODYsMTIgQEAgc3RhdGljIHZvaWQgbW91c2VFdmVudFR5cGVB
bmRNb3VzZUJ1dHRvbgogICAgIHN3aXRjaCAoZnJhbWV3b3JrTW91c2VFdmVudFR5cGUpIHsKICAg
ICBjYXNlIE1vdXNlRXZlbnQ6IHsKICAgICAgICAgY29uc3QgUU1vdXNlRXZlbnQqIG1vdXNlRXZl
bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBRTW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICAgICAgbW91
c2VCdXR0b25zID0gbW91c2VFdmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVkID8gbW91c2VFdmVu
dC0+YnV0dG9ucygpIDogbW91c2VFdmVudC0+YnV0dG9uKCk7CisgICAgICAgIG1vdXNlQnV0dG9u
cyA9IG1vdXNlRXZlbnRUeXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgPyBtb3VzZUV2
ZW50LT5idXR0b25zKCkgOiBtb3VzZUV2ZW50LT5idXR0b24oKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ6IHsKICAgICAgICAgY29uc3Qg
UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICBtb3VzZUJ1dHRvbnMg
PSBtb3VzZUV2ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25z
KCkgOiBtb3VzZUV2ZW50LT5idXR0b24oKTsKKyAgICAgICAgbW91c2VCdXR0b25zID0gbW91c2VF
dmVudFR5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSA6IG1vdXNlRXZlbnQtPmJ1dHRvbigpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
fQpAQCAtMTEzLDcgKzExMyw3IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2
ZW50KFEKIAogICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgaGFuZGxlIGEgY29udGV4dCBtZW51
IGV2ZW50IGhlcmUgYXMgd2UgZG8gaW4gUGxhdGZvcm1Nb3VzZUV2ZW50KFFJbnB1dEV2ZW50Kiwg
aW50KT8KICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDcyOD4uCi0gICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoZXZl
bnQsIG1fZXZlbnRUeXBlLCBtX2J1dHRvbik7CisgICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1
dHRvbkZyb21RRXZlbnQoZXZlbnQsIG1fdHlwZSwgbV9idXR0b24pOwogICAgIG1fcG9zaXRpb24g
PSBJbnRQb2ludChldmVudC0+cG9zKCkudG9Qb2ludCgpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9u
ID0gSW50UG9pbnQoZXZlbnQtPnNjcmVlblBvcygpKTsKIApAQCAtMTMwLDcgKzEzMCw3IEBAIFBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFEKICNpZm5kZWYgUVRfTk9fQ09O
VEVYVE1FTlUKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkNvbnRleHRNZW51KSB7
CiAgICAgICAgIGlzQ29udGV4dE1lbnVFdmVudCA9IHRydWU7Ci0gICAgICAgIG1fZXZlbnRUeXBl
ID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUHJlc3NlZDsKICAgICAgICAgUUNvbnRleHRNZW51RXZlbnQqIGNlID0gc3RhdGljX2Nhc3Q8
UUNvbnRleHRNZW51RXZlbnQqPihldmVudCk7CiAgICAgICAgIG1fcG9zaXRpb24gPSBJbnRQb2lu
dChjZS0+cG9zKCkpOwogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoY2UtPmds
b2JhbFBvcygpKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRm
b3JtTW91c2VFdmVudChRCiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFpc0NvbnRleHRNZW51RXZl
bnQpIHsKLSAgICAgICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoZXZl
bnQsIG1fZXZlbnRUeXBlLCBtX2J1dHRvbik7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91
c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBtX3R5cGUsIG1fYnV0dG9uKTsKICAgICAgICAgUU1v
dXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxRTW91c2VFdmVudCo+KGV2ZW50KTsK
ICAgICAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50KG1vdXNlRXZlbnQtPnBvcygpKTsKICAgICAg
ICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KG1vdXNlRXZlbnQtPmdsb2JhbFBvcygpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcAkocmV2
aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEwIEBAIHZvaWQgUGxhdGZvcm1XaGVl
bEV2ZW50OjphcHBseURlbHRhKGludCAKIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdo
ZWVsRXZlbnQoUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBlKQogI2lmbmRlZiBRVF9OT19XSEVF
TEVWRU5UCi0gICAgOiBtX3Bvc2l0aW9uKGUtPnBvcygpLnRvUG9pbnQoKSkKKyAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGUtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0
TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllciwgZS0+bW9kaWZp
ZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmll
cikKKyAgICAsIG1fcG9zaXRpb24oZS0+cG9zKCkudG9Qb2ludCgpKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihlLT5zY3JlZW5Qb3MoKSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhl
bFdoZWVsRXZlbnQpCi0gICAgLCBtX3NoaWZ0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0
TW9kaWZpZXIpCi0gICAgLCBtX2N0cmxLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1v
ZGlmaWVyKQotICAgICwgbV9hbHRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIp
Ci0gICAgLCBtX21ldGFLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0YU1vZGlmaWVyKQogICAg
ICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjZW5kaWYKIHsKQEAgLTc4
LDEzICs3NSwxMCBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChRCiAK
IFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBlKQog
I2lmbmRlZiBRVF9OT19XSEVFTEVWRU5UCi0gICAgOiBtX3Bvc2l0aW9uKGUtPnBvcygpKQorICAg
IDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgZS0+bW9kaWZpZXJzKCkgJiBR
dDo6U2hpZnRNb2RpZmllciwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyLCBl
LT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllciwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0
YU1vZGlmaWVyKQorICAgICwgbV9wb3NpdGlvbihlLT5wb3MoKSkKICAgICAsIG1fZ2xvYmFsUG9z
aXRpb24oZS0+Z2xvYmFsUG9zKCkpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxX
aGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1v
ZGlmaWVyKQotICAgICwgbV9jdHJsS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2Rp
ZmllcikKLSAgICAsIG1fYWx0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVyKQot
ICAgICwgbV9tZXRhS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikKICAgICAs
IG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2VuZGlmCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAJKHJldmlzaW9uIDEw
MzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Miw5ICsxNDIsOSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZp
ZXJGb3JXaW5kb3dzS2V5CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KFdQ
QVJBTSBjb2RlLCBMUEFSQU0ga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHR5
cGUpCitzdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KFdQQVJBTSBjb2RlLCBMUEFSQU0ga2V5RGF0
YSwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlKQogewotICAgIGlmICh0eXBlICE9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biAmJiB0eXBlICE9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6S2V5VXApCisgICAgaWYgKHR5cGUgIT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biAmJiB0
eXBlICE9IFBsYXRmb3JtRXZlbnQ6OktleVVwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBzd2l0Y2ggKGNvZGUpIHsKQEAgLTE4NywxOCArMTg3LDE0IEBAIHN0YXRpYyBib29sIGlzS2V5
cGFkRXZlbnQoV1BBUkFNIGNvZGUsIEwKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNpbmdsZUNoYXJh
Y3RlclN0cmluZyhVQ2hhciBjKSB7IHJldHVybiBTdHJpbmcoJmMsIDEpOyB9CiAKIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KEhXTkQsIFdQQVJBTSBjb2RlLCBM
UEFSQU0ga2V5RGF0YSwgVHlwZSB0eXBlLCBib29sIHN5c3RlbUtleSkKLSAgICA6IG1fdHlwZSh0
eXBlKQotICAgICwgbV90ZXh0KCh0eXBlID09IENoYXIpID8gc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KGNvZGUpIDogU3RyaW5nKCkpCi0gICAgLCBtX3VubW9kaWZpZWRUZXh0KCh0eXBlID09IENoYXIp
ID8gc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGNvZGUpIDogU3RyaW5nKCkpCi0gICAgLCBtX2tleUlk
ZW50aWZpZXIoKHR5cGUgPT0gQ2hhcikgPyBTdHJpbmcoKSA6IGtleUlkZW50aWZpZXJGb3JXaW5k
b3dzS2V5Q29kZShjb2RlKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgR2V0S2V5U3RhdGUo
VktfU0hJRlQpICYgSElHSF9CSVRfTUFTS19TSE9SVCwgR2V0S2V5U3RhdGUoVktfQ09OVFJPTCkg
JiBISUdIX0JJVF9NQVNLX1NIT1JULCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01B
U0tfU0hPUlQsIGZhbHNlKQorICAgICwgbV90ZXh0KCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNo
YXIpID8gc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGNvZGUpIDogU3RyaW5nKCkpCisgICAgLCBtX3Vu
bW9kaWZpZWRUZXh0KCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGNvZGUpIDogU3RyaW5nKCkpCisgICAgLCBtX2tleUlkZW50aWZpZXIoKHR5cGUg
PT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgPyBTdHJpbmcoKSA6IGtleUlkZW50aWZpZXJGb3JXaW5k
b3dzS2V5Q29kZShjb2RlKSkKICAgICAsIG1fYXV0b1JlcGVhdChISVdPUkQoa2V5RGF0YSkgJiBL
Rl9SRVBFQVQpCiAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgodHlwZSA9PSBSYXdLZXlE
b3duIHx8IHR5cGUgPT0gS2V5VXApID8gY29kZSA6IDApCiAgICAgLCBtX25hdGl2ZVZpcnR1YWxL
ZXlDb2RlKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKQogICAgICwgbV9pc0tleXBhZChpc0tleXBh
ZEV2ZW50KGNvZGUsIGtleURhdGEsIHR5cGUpKQotICAgICwgbV9zaGlmdEtleShHZXRLZXlTdGF0
ZShWS19TSElGVCkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9jdHJsS2V5KEdldEtl
eVN0YXRlKFZLX0NPTlRST0wpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fYWx0S2V5
KEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fbWV0
YUtleShmYWxzZSkKICAgICAsIG1faXNTeXN0ZW1LZXkoc3lzdGVtS2V5KQogewogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIHN0YXRpYyBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbkZvckV2ZW50KEgKICAgICByZXR1cm4g
cG9pbnQ7CiB9CiAKLXN0YXRpYyBNb3VzZUV2ZW50VHlwZSBtZXNzYWdlVG9FdmVudFR5cGUoVUlO
VCBtZXNzYWdlKQorc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbWVzc2FnZVRvRXZlbnRUeXBl
KFVJTlQgbWVzc2FnZSkKIHsKICAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKICAgICAgICAgY2FzZSBX
TV9MQlVUVE9OREJMQ0xLOgpAQCAtNTgsMzUgKzU4LDMzIEBAIHN0YXRpYyBNb3VzZUV2ZW50VHlw
ZSBtZXNzYWdlVG9FdmVudFR5cGUKICAgICAgICAgY2FzZSBXTV9MQlVUVE9ORE9XTjoKICAgICAg
ICAgY2FzZSBXTV9SQlVUVE9ORE9XTjoKICAgICAgICAgY2FzZSBXTV9NQlVUVE9ORE9XTjoKLSAg
ICAgICAgICAgIHJldHVybiBNb3VzZUV2ZW50UHJlc3NlZDsKKyAgICAgICAgICAgIHJldHVybiBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAKICAgICAgICAgY2FzZSBXTV9MQlVUVE9OVVA6
CiAgICAgICAgIGNhc2UgV01fUkJVVFRPTlVQOgogICAgICAgICBjYXNlIFdNX01CVVRUT05VUDoK
LSAgICAgICAgICAgIHJldHVybiBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKIAogI2lmICFPUyhXSU5DRSkKICAgICAg
ICAgY2FzZSBXTV9NT1VTRUxFQVZFOgogI2VuZGlmCiAgICAgICAgIGNhc2UgV01fTU9VU0VNT1ZF
OgotICAgICAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIC8vTW92ZSBpcyByZWxhdGl2
ZWx5IGhhcm1sZXNzCi0gICAgICAgICAgICByZXR1cm4gTW91c2VFdmVudE1vdmVkOworICAgICAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgfQogfQorCiBQbGF0
Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCBkaWRBY3RpdmF0ZVdlYlZpZXcp
Ci0gICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKKyAgICA6
IFBsYXRmb3JtRXZlbnQobWVzc2FnZVRvRXZlbnRUeXBlKG1lc3NhZ2UpLCB3UGFyYW0gJiBNS19T
SElGVCwgd1BhcmFtICYgTUtfQ09OVFJPTCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJ
VF9NQVNLX1NIT1JULCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQp
CisgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKICAgICAs
IG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQog
ICAgICwgbV9jbGlja0NvdW50KDApCi0gICAgLCBtX3NoaWZ0S2V5KHdQYXJhbSAmIE1LX1NISUZU
KQotICAgICwgbV9jdHJsS2V5KHdQYXJhbSAmIE1LX0NPTlRST0wpCi0gICAgLCBtX2FsdEtleShH
ZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX21ldGFL
ZXkobV9hbHRLZXkpIC8vIEZJWE1FOiBXZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMK
ICAgICAsIG1fZGlkQWN0aXZhdGVXZWJWaWV3KGRpZEFjdGl2YXRlV2ViVmlldykKLSAgICAsIG1f
ZXZlbnRUeXBlKG1lc3NhZ2VUb0V2ZW50VHlwZShtZXNzYWdlKSkKKyAgICAsIG1fZXZlbnRUeXBl
KCkKICAgICAsIG1fbW9kaWZpZXJGbGFncyh3UGFyYW0pCiB7CiAgICAgbV90aW1lc3RhbXAgPSA6
OkdldFRpY2tDb3VudCgpKjAuMDAxOyAvLyBHZXRUaWNrQ291bnQgcmV0dXJucyBtaWxsaXNlY29u
ZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5j
cHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVl
bEV2ZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTAgKzY2LDcgQEAgc3RhdGljIGlu
dCB2ZXJ0aWNhbFNjcm9sbExpbmVzKCkKIH0KIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoSFdORCBoV25kLCBjb25zdCBGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhdGlvbikKLSAgICA6IG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgLCBtX2N0cmxL
ZXkoZmFsc2UpCi0gICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAsIG1fbWV0YUtleShmYWxzZSkK
KyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKQogICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2Up
CiB7CiAgICAgbV9kZWx0YVggPSBkZWx0YS53aWR0aCgpOwpAQCAtODgsMTIgKzg1LDkgQEAgUGxh
dGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoSAogfQogCiBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChIV05EIGhXbmQsIFdQQVJBTSB3UGFyYW0sIExQQVJB
TSBsUGFyYW0sIGJvb2wgaXNNb3VzZUhXaGVlbCkKLSAgICA6IG1fcG9zaXRpb24ocG9zaXRpb25G
b3JFdmVudChoV25kLCBsUGFyYW0pKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpXaGVlbCwgd1BhcmFtICYgTUtfU0hJRlQsIHdQYXJhbSAmIE1LX0NPTlRST0wsIEdldEtleVN0
YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCwgR2V0S2V5U3RhdGUoVktfTUVOVSkg
JiBISUdIX0JJVF9NQVNLX1NIT1JUKQorICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbkZvckV2ZW50
KGhXbmQsIGxQYXJhbSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uRm9y
RXZlbnQoaFduZCwgbFBhcmFtKSkKLSAgICAsIG1fc2hpZnRLZXkod1BhcmFtICYgTUtfU0hJRlQp
Ci0gICAgLCBtX2N0cmxLZXkod1BhcmFtICYgTUtfQ09OVFJPTCkKLSAgICAsIG1fYWx0S2V5KEdl
dEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fbWV0YUtl
eShtX2FsdEtleSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2Vycwog
ICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiB7CiAgICAgLy8gSG93
IG1hbnkgcGl4ZWxzIHNob3VsZCB3ZSBzY3JvbGwgcGVyIGxpbmU/ICBHZWNrbyB1c2VzIHRoZSBo
ZWlnaHQgb2YgdGhlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9LZXlib2FyZEV2
ZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0tleWJv
YXJkRXZlbnRXeC5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L0tleWJvYXJkRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNywxNCArMzM3
LDE0IEBAIHN0YXRpYyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudCh1bnMKIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KHd4S2V5RXZlbnQmIGV2ZW50KQog
ewogICAgIGlmIChldmVudC5HZXRFdmVudFR5cGUoKSA9PSB3eEVWVF9LRVlfVVApCi0gICAgICAg
IG1fdHlwZSA9IEtleVVwOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpLZXlVcDsK
ICAgICBlbHNlIGlmIChldmVudC5HZXRFdmVudFR5cGUoKSA9PSB3eEVWVF9LRVlfRE9XTikKLSAg
ICAgICAgbV90eXBlID0gS2V5RG93bjsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6
S2V5RG93bjsKICAgICBlbHNlIGlmIChldmVudC5HZXRFdmVudFR5cGUoKSA9PSB3eEVWVF9DSEFS
KQotICAgICAgICBtX3R5cGUgPSBDaGFyOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpDaGFyOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgaWYg
KG1fdHlwZSAhPSBDaGFyKQorICAgIGlmIChtX3R5cGUgIT0gUGxhdGZvcm1FdmVudDo6Q2hhcikK
ICAgICAgICAgbV9rZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllckZvcld4S2V5Q29kZShldmVu
dC5HZXRLZXlDb2RlKCkpOwogICAgIGVsc2UgewogICAgICAgICAvL0VOVEVSIGlzIGFuIGVkaXRp
bmcgY29tbWFuZCBwcm9jZXNzZWQgYXMgYSBjaGFyIChvbmx5IEVudGVyIGFuZCBUYWIgYXJlKQpA
QCAtMzcxLDkgKzM3MSw5IEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2Fy
ZEUKIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQo
VHlwZSB0eXBlLCBib29sKQogewogICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5
RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90
aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBl
OwotICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAg
ICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VFdmVudFd4LmNwcAkocmV2aXNpb24gMTAzMDI3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VFdmVudFd4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMjYgKzMzLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGxh
dGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50JiBl
dmVudCwgY29uc3Qgd3hQb2ludCYgZ2xvYmFsUG9pbnQsIGludCBjbGlja0NvdW50KQotICAgIDog
bV9wb3NpdGlvbihldmVudC5HZXRQb3NpdGlvbigpKQotICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb2ludCkKLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQuU2hpZnREb3duKCkpCi0gICAgLCBt
X2N0cmxLZXkoZXZlbnQuQ21kRG93bigpIHx8IGV2ZW50LkNvbnRyb2xEb3duKCkpCi0gICAgLCBt
X2FsdEtleShldmVudC5BbHREb3duKCkpCi0gICAgLCBtX21ldGFLZXkoZXZlbnQuTWV0YURvd24o
KSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2Vycworc3RhdGljIFBs
YXRmb3JtRXZlbnQ6OlR5cGUgdHlwZUZyb21Nb3VzZUV2ZW50KGNvbnN0IHd4TW91c2VFdmVudCYg
ZXZlbnQpCiB7CiAgICAgd3hFdmVudFR5cGUgdHlwZSA9IGV2ZW50LkdldEV2ZW50VHlwZSgpOwot
ICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOwotICAgIAotICAgIGlmICh0eXBlID09
IHd4RVZUX0xFRlRfRE9XTiB8fCB0eXBlID09IHd4RVZUX01JRERMRV9ET1dOIHx8IHR5cGUgPT0g
d3hFVlRfUklHSFRfRE9XTikKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3Nl
ZDsKLSAgICAKLSAgICBlbHNlIGlmICh0eXBlID09IHd4RVZUX0xFRlRfVVAgfHwgdHlwZSA9PSB3
eEVWVF9NSURETEVfVVAgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9VUCB8fCAKLSAgICAgICAgICAg
ICAgICB0eXBlID09IHd4RVZUX0xFRlRfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RD
TElDSyB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RDTElDSykKLSAgICAgICAgbV9ldmVudFR5cGUg
PSBNb3VzZUV2ZW50UmVsZWFzZWQ7CiAKKyAgICBpZiAodHlwZSA9PSB3eEVWVF9MRUZUX0RPV04g
fHwgdHlwZSA9PSB3eEVWVF9NSURETEVfRE9XTiB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RPV04p
CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CisgICAgZWxzZSBp
ZiAodHlwZSA9PSB3eEVWVF9MRUZUX1VQIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX1VQIHx8IHR5
cGUgPT0gd3hFVlRfUklHSFRfVVAgfHwgdHlwZSA9PSB3eEVWVF9MRUZUX0RDTElDSyB8fCB0eXBl
ID09IHd4RVZUX01JRERMRV9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9EQ0xJQ0spCisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgIGVsc2UgaWYg
KHR5cGUgPT0gd3hFVlRfTU9USU9OKQotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRN
b3ZlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CisKKyAgICBy
ZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKK30KKworUGxhdGZvcm1Nb3VzZUV2ZW50
OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgd3hQ
b2ludCYgZ2xvYmFsUG9pbnQsIGludCBjbGlja0NvdW50KQorICAgIDogUGxhdGZvcm1FdmVudCh0
eXBlRnJvbU1vdXNlRXZlbnQoZXZlbnQpLCBldmVudC5TaGlmdERvd24oKSwgZXZlbnQuQ21kRG93
bigpIHx8IGV2ZW50LkNvbnRyb2xEb3duKCksIGV2ZW50LkFsdERvd24oKSwgZXZlbnQuTWV0YURv
d24oKSkKKyAgICA6IG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRpb24oKSkKKyAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oZ2xvYmFsUG9pbnQpCit7CiAKICAgICBpZiAoZXZlbnQuTGVmdElzRG93bigp
IHx8IGV2ZW50LkJ1dHRvbih3eE1PVVNFX0JUTl9MRUZUKSkKICAgICAgICAgbV9idXR0b24gPSBM
ZWZ0QnV0dG9uOwpAQCAtNjAsMTEgKzU5LDggQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9y
bU1vdXNlRXZlbnQoYwogICAgICAgICBtX2J1dHRvbiA9IFJpZ2h0QnV0dG9uOwogICAgIGVsc2Ug
aWYgKGV2ZW50Lk1pZGRsZUlzRG93bigpIHx8IGV2ZW50LkJ1dHRvbih3eE1PVVNFX0JUTl9NSURE
TEUpKQogICAgICAgICBtX2J1dHRvbiA9IE1pZGRsZUJ1dHRvbjsKLSAgICBlbHNlIGlmICghbV9l
dmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVkKQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLQogCi0gICAgaWYgKG1fZXZlbnRUeXBlID09IE1vdXNlRXZlbnRNb3ZlZCkKKyAgICBpZiAo
bV90eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpCiAgICAgICAgIG1fY2xpY2tDb3Vu
dCA9IDA7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWNrQ291bnQgPSBjbGlja0NvdW50OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VXaGVlbEV2ZW50V3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNw
cAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VX
aGVlbEV2ZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTAgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQo
Y29uc3Qgd3hNb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgd3hQb2ludCYgZ2xvYmFsUG9pbnQpCi0g
ICAgOiBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCisgICAgOiBQbGF0Zm9ybUV2ZW50
KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBldmVudC5TaGlmdERvd24oKSwgZXZlbnQuQ29udHJvbERv
d24oKSwgZXZlbnQuQWx0RG93bigpLCBldmVudC5NZXRhRG93bigpKQorICAgICwgbV9wb3NpdGlv
bihldmVudC5HZXRQb3NpdGlvbigpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2lu
dCkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBt
X3NoaWZ0S2V5KGV2ZW50LlNoaWZ0RG93bigpKQotICAgICwgbV9jdHJsS2V5KGV2ZW50LkNvbnRy
b2xEb3duKCkpCi0gICAgLCBtX2FsdEtleShldmVudC5BbHREb3duKCkpCi0gICAgLCBtX21ldGFL
ZXkoZXZlbnQuTWV0YURvd24oKSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBi
cm93c2VycwogICAgICwgbV9kZWx0YVgoMCkgLy8gd3ggZG9lc24ndCBzdXBwb3J0IGhvcml6b250
YWwgbW91c2Ugd2hlZWwgc2Nyb2xsaW5nCiAgICAgLCBtX2RlbHRhWShldmVudC5HZXRXaGVlbFJv
dGF0aW9uKCkgLyBldmVudC5HZXRXaGVlbERlbHRhKCkpCiAgICAgLCBtX3doZWVsVGlja3NYKG1f
ZGVsdGFYKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFj
Lm1tCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVn
aW5WaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MjUsMTkgKzYyNSwxOSBAQCB2b2lkIFBs
dWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5CiAgICAgRXZlbnRSZWNvcmQgcmVjb3Jk
OwogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkg
ewotICAgICAgICAvLyBUaGlzIGV2ZW50IGlzIHRoZSByZXN1bHQgb2YgYSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleURvd24gd2hpY2gKKyAgICAgICAgLy8gVGhpcyBldmVudCBpcyB0aGUgcmVz
dWx0IG9mIGEgUGxhdGZvcm1FdmVudDo6S2V5RG93biB3aGljaAogICAgICAgICAvLyB3YXMgZGlz
YW1iaWd1YXRlZCBpbnRvIGEgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duLiBTaW5j
ZQogICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgdGV4dCBoZXJlLCB3ZSBy
ZXR1cm4sIGFuZCB3YWl0IGZvciB0aGUKICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBldmVudCBi
YXNlZCBvbiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIuCiAgICAgICAgIHJldHVybjsKICAg
ICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQp
IHsKICAgICAgICAgLy8gV2hpY2ggd291bGQgYmUgdGhpcyBvbmUuIFRoaXMgZXZlbnQgd2FzIGRp
c2FtYmlndWF0ZWQgZnJvbSB0aGUgc2FtZQotICAgICAgICAvLyBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OktleURvd24sIGJ1dCB0byBhIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwKKyAgICAg
ICAgLy8gUGxhdGZvcm1FdmVudDo6S2V5RG93biwgYnV0IHRvIGEgUGxhdGZvcm1FdmVudDo6Q2hh
ciwKICAgICAgICAgLy8gd2hpY2ggcmV0YWlucyB0aGUgdGV4dCBmcm9tIHRoZSBvcmlnaW5hbCBl
dmVudC4gU28sIHdlIGNhbiBzYWZlbHkgcGFzcwogICAgICAgICAvLyBvbiB0aGUgZXZlbnQgYXMg
YSBrZXktZG93biBldmVudCB0byB0aGUgcGx1Z2luLgogICAgICAgICByZWNvcmQud2hhdCA9IGtl
eURvd247CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXl1
cEV2ZW50KSB7Ci0gICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgZXZlbnRz
IGFsd2F5cyBoYXZlIHRoZSB0ZXh0LCBzbyBub3RoaW5nCisgICAgICAgIC8vIFBsYXRmb3JtRXZl
bnQ6OktleVVwIGV2ZW50cyBhbHdheXMgaGF2ZSB0aGUgdGV4dCwgc28gbm90aGluZwogICAgICAg
ICAvLyBmYW5jeSBoZXJlLgogICAgICAgICByZWNvcmQud2hhdCA9IGtleVVwOwogICAgIH0gZWxz
ZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMDMw
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJh
bnNmb3JtCiAgICAgfQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQotICAgIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50IHBnZShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgSW50
UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHgsIHR5KSwgMCwgc2NhbGUsIDAuZiwgMCwgMCwgMCwg
MCk7CisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVE
b3VibGVUYXAsIEludFBvaW50KHR4LCB0eSksIEludFBvaW50KHR4LCB0eSksIDAsIHNjYWxlLCAw
LmYsIDAsIDAsIDAsIDApOwogICAgIGRvY3VtZW50LT52aWV3KCktPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQocGdlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDExLTEyLTE1
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2
ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktpdDJQbGF0
Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQp
OgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRp
YWxGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2Fy
ZEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhZ0VuZGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTEtMTItMTUg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdG8gdGhlIHRpbGVkIENvcmUgQW5pbWF0
aW9uIGRyYXdpbmcgYXJlYQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29u
dmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMCArMzQsMjcg
QEAgY2xhc3MgV2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCA6IHB1YmxpYwogcHVibGljOgogICAg
IFdlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgd2ViRXZlbnQp
CiAgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAgIHN3aXRjaCAod2ViRXZl
bnQudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAg
ICAgIG1fZXZlbnRUeXBlID0gV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgICAg
ICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VVcDoKLSAgICAgICAgICAg
IG1fZXZlbnRUeXBlID0gV2ViQ29yZTo6TW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAg
bV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZU1vdmU6Ci0gICAgICAgICAg
ICBtX2V2ZW50VHlwZSA9IFdlYkNvcmU6Ok1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgICAgIG1f
dHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAKKyAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7
CisgICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9h
bHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQu
bWV0YUtleSgpOworCisgICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudAogICAgICAgICBzd2l0
Y2ggKHdlYkV2ZW50LmJ1dHRvbigpKSB7CiAgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6Tm9C
dXR0b246CiAgICAgICAgICAgICBtX2J1dHRvbiA9IFdlYkNvcmU6Ok5vQnV0dG9uOwpAQCAtNjks
MTAgKzc2LDYgQEAgcHVibGljOgogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2ViRXZlbnQu
Z2xvYmFsUG9zaXRpb24oKTsKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tD
b3VudCgpOwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwotICAg
ICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5
ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFs
dEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CiAKICAgICAg
ICAgbV9tb2RpZmllckZsYWdzID0gMDsKICAgICAgICAgaWYgKG1fc2hpZnRLZXkpCkBAIC05OSw2
ICsxMDIsMTQgQEAgY2xhc3MgV2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCA6IHB1YmxpYwogcHVi
bGljOgogICAgIFdlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYg
d2ViRXZlbnQpCiAgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlw
ZSA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOworICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQu
c2hpZnRLZXkoKTsKKyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwor
ICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkg
PSB3ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1XaGVlbEV2ZW50CiAg
ICAgICAgIG1fcG9zaXRpb24gPSB3ZWJFdmVudC5wb3NpdGlvbigpOwogICAgICAgICBtX2dsb2Jh
bFBvc2l0aW9uID0gd2ViRXZlbnQuZ2xvYmFsUG9zaXRpb24oKTsKICAgICAgICAgbV9kZWx0YVgg
PSB3ZWJFdmVudC5kZWx0YSgpLndpZHRoKCk7CkBAIC0xMDYsMTAgKzExNyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgbV93aGVlbFRpY2tzWCA9IHdlYkV2ZW50LndoZWVsVGlja3MoKS53aWR0aCgpOwog
ICAgICAgICBtX3doZWVsVGlja3NZID0gd2ViRXZlbnQud2hlZWxUaWNrcygpLmhlaWdodCgpOwog
ICAgICAgICBtX2dyYW51bGFyaXR5ID0gKHdlYkV2ZW50LmdyYW51bGFyaXR5KCkgPT0gV2ViV2hl
ZWxFdmVudDo6U2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgPyBXZWJDb3JlOjpTY3JvbGxCeVBhZ2VX
aGVlbEV2ZW50IDogV2ViQ29yZTo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7Ci0gICAgICAgIG1f
c2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJF
dmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7
Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKICAgICAgICAgbV9kaXJl
Y3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgPSB3ZWJFdmVudC5kaXJlY3Rpb25JbnZlcnRlZEZyb21E
ZXZpY2UoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIG1fcGhhc2UgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4od2ViRXZlbnQucGhhc2UoKSk7CkBA
IC0xMjksMjIgKzEzNiwzMCBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50IDog
cHViCiBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiB3ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQK
ICAgICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVu
dDo6S2V5RG93bjoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
S2V5RG93bjsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Oktl
eURvd247CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6S2V5VXA6
Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwOworICAg
ICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6UmF3S2V5RG93bjoKLSAgICAgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bjsKKyAgICAgICAg
ICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd247CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6Q2hhcjoKLSAgICAgICAgICAgIG1f
dHlwZSA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICAgICAgICAgIG1fdHlwZSA9
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkNoYXI7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CisKKyAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7CisgICAgICAgIG1f
Y3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRLZXkgPSB3ZWJF
dmVudC5hbHRLZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOwor
CisgICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudAogICAgICAgICBtX3RleHQgPSB3ZWJF
dmVudC50ZXh0KCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSB3ZWJFdmVudC51bm1vZGlm
aWVkVGV4dCgpOwogICAgICAgICBtX2tleUlkZW50aWZpZXIgPSB3ZWJFdmVudC5rZXlJZGVudGlm
aWVyKCk7CkBAIC0xNTIsMTAgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9uYXRpdmVWaXJ0
dWFsS2V5Q29kZSA9IHdlYkV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCk7CiAgICAgICAgIG1f
YXV0b1JlcGVhdCA9IHdlYkV2ZW50LmlzQXV0b1JlcGVhdCgpOwogICAgICAgICBtX2lzS2V5cGFk
ID0gd2ViRXZlbnQuaXNLZXlwYWQoKTsKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNo
aWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAg
ICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0g
d2ViRXZlbnQubWV0YUtleSgpOwogICAgICAgICAKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSBtX2lzU3lzdGVtS2V5IGF2YWlsYWJsZSAoYW5kIGZh
bHNlKSBvbiBhbGwgcGxhdGZvcm1zCkBAIC0xNzUsMjAgKzE4NiwyNyBAQCBjbGFzcyBXZWJLaXQy
UGxhdGZvcm1HZXN0dXJlRXZlbnQgOiBwdWJsCiBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3Jt
R2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgd2ViRXZlbnQpCiAgICAgeworICAg
ICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAgIHN3aXRjaCAod2ViRXZlbnQudHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKLSAgICAgICAgICAg
IG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAg
ICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNjcm9s
bEVuZDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxF
bmRUeXBlOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVNjcm9sbEVuZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50
OjpHZXN0dXJlU2luZ2xlVGFwOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlRhcFR5cGU7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlVGFwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCisgICAgICAgIG1f
c2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJF
dmVudC5jb250cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7
CisgICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQ
bGF0Zm9ybUdlc3R1cmVFdmVudAogICAgICAgICBtX3Bvc2l0aW9uID0gd2ViRXZlbnQucG9zaXRp
b24oKTsKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCk7CiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcwNiw3ICs3MDYsNyBAQAogCQlCQ0EwRUY5
RjEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMEVGOUQxMjMzMjY0MjAwN0QzQ0ZC
IC8qIFdlYkVkaXRDb21tYW5kUHJveHkuaCAqLzsgfTsKIAkJQkNBMEVGQTAxMjMzMjY0MjAwN0Qz
Q0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMEVGOUUxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRD
b21tYW5kUHJveHkuY3BwICovOyB9OwogCQlCQ0EyODRENjE0OTJGMkM3MDAxRjkwNDIgLyogV0tD
b25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNBMjg0RDQxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSAqLzsgfTsKLQkJ
QkNBMjg0RDcxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMjg0RDUxNDkyRjJDNzAwMUY5MDQy
IC8qIFdLQ29ubmVjdGlvbi5oICovOyB9OworCQlCQ0EyODRENzE0OTJGMkM3MDAxRjkwNDIgLyog
V0tDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0EyODRENTE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQ0E1NkExQzEyRjkwMjhF
MDBDNTY2QzcgLyogV2ViR3JhcGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E1NkExQTEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3Jh
cGhpY3NDb250ZXh0LmggKi87IH07CiAJCUJDQTU2QTFEMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJH
cmFwaGljc0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNBNTZBMUIxMkY5MDI4RTAwQzU2NkM3IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5j
cHAgKi87IH07CiAJCUJDQTU2QTY1MTJGOUM4RjkwMEM1NjZDNyAvKiBXS0dyYXBoaWNzQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBNTZB
NjMxMkY5QzhGOTAwQzU2NkM3IC8qIFdLR3JhcGhpY3NDb250ZXh0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2Vi
RWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVuCiAgICAgICAgIC8vIER1cmluZyBSYXdLZXlEb3duIGV2ZW50cyBpZiBhbiBl
ZGl0b3IgY29tbWFuZCB3aWxsIGluc2VydCB0ZXh0LCBkZWZlcgogICAgICAgICAvLyB0aGUgaW5z
ZXJ0aW9uIHVudGlsIHRoZSBrZXlwcmVzcyBldmVudC4gV2Ugd2FudCBrZXlkb3duIHRvIGJ1YmJs
ZSB1cAogICAgICAgICAvLyB0aHJvdWdoIHRoZSBET00gZmlyc3QuCi0gICAgICAgIGlmIChwbGF0
Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7
CisgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bikgewogICAgICAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMo
ZnJhbWUsIHBlbmRpbmdFZGl0b3JDb21tYW5kcywgZmFsc2UpKQogICAgICAgICAgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExODMsOCArMTE4Myw4IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2Vi
TW8KIAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZlbnQgPSBwbGF0Zm9y
bShtb3VzZUV2ZW50KTsKIAotICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LmV2ZW50VHlw
ZSgpKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ6CisgICAgc3dp
dGNoIChwbGF0Zm9ybU1vdXNlRXZlbnQudHlwZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaXNDb250ZXh0
Q2xpY2socGxhdGZvcm1Nb3VzZUV2ZW50KSkKICAgICAgICAgICAgICAgICBwYWdlLT5jb250ZXh0
TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwpAQCAtMTE5NSw5ICsxMTk1LDkg
QEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNbwogCiAgICAgICAgICAg
ICByZXR1cm4gaGFuZGxlZDsKICAgICAgICAgfQotICAgICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNl
RXZlbnRSZWxlYXNlZDoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2Vk
OgogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpN
b3VzZUV2ZW50TW92ZWQ6CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDoK
ICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQocGxh
dGZvcm1Nb3VzZUV2ZW50LCBvbmx5VXBkYXRlU2Nyb2xsYmFycyk7CiAKICAgICAgICAgZGVmYXVs
dDoKQEAgLTE1MzIsNyArMTUzMiw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJv
b2wgZm9yd2EKIAogICAgIGlmIChpc0tleWJvYXJkRXZlbnRWYWxpZCAmJiBldmVudC50eXBlKCkg
PT0gV2ViRXZlbnQ6OktleURvd24pIHsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBs
YXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQpKTsKLSAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsK
KyAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1F
dmVudDo6UmF3S2V5RG93bik7CiAgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNl
dEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJl
Y3Rpb25CYWNrd2FyZCwgS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGZyYW1l
LT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50CiAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAotICAgIGlmIChrZXlFdmVudC0+
dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChr
ZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAg
Ly8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBk
ZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEg
RWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9u
IFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0
IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAg
ICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIp
LgpAQCAtMjA1MSw3ICsyMDUxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6
SW50UG9pbgogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBU
aGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFs
IG9uZXMgaW5zdGVhZC4KLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoYWRqdXN0ZWRDbGll
bnRQb3NpdGlvbiwgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgTW91c2VFdmVu
dE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7Cisg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFkanVz
dGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQs
IDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsKICAgICBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQs
IChEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDEw
MzAyNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgV2ViUGFnZTo6ZXhl
Y3V0ZUtleXByZXNzQ29tbWFuZHNJbnQKICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRFeGVj
dXRlZEJ5RWRpdG9yID0gY29tbWFuZC5leGVjdXRlKGV2ZW50KTsKICAgICAgICAgICAgICAgICBl
dmVudFdhc0hhbmRsZWQgfD0gY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3I7CiAgICAgICAgICAgICAg
ICAgaWYgKCFjb21tYW5kRXhlY3V0ZWRCeUVkaXRvcikgewotICAgICAgICAgICAgICAgICAgICBi
b29sIHBlcmZvcm1lZE5vbkVkaXRpbmdCZWhhdmlvciA9IGV2ZW50LT5rZXlFdmVudCgpLT50eXBl
KCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duICYmIHBlcmZvcm1Ob25FZGl0
aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2aW9yID0gZXZlbnQtPmtl
eUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duICYmIHBlcmZvcm1O
b25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSk7CiAg
ICAgICAgICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBwZXJmb3JtZWROb25FZGl0aW5n
QmVoYXZpb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTIw
OSw3ICsyMDksNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50CiAg
ICAgICAgIH0KICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0aW9uIGNvbW1h
bmRzLCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0byBleGVjdXRl
IHRoZSBjb21tYW5kcy4KICAgICAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIg
aXMgdGhlIGxhdGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgotICAgICAgICBpZiAoIWhhdmVU
ZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Q2hhcikgeworICAgICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29t
bWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpIHsK
ICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCA9IGV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50
ZXJuYWwoZXZlbnQtPmtleXByZXNzQ29tbWFuZHMoKSwgZXZlbnQpOwogICAgICAgICAgICAgZXZl
bnQtPmtleXByZXNzQ29tbWFuZHMoKS5jbGVhcigpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0xMi0x
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1F
dmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnRJbXBsOjppbnRlcnByZXRLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkVk
aXRvckNsaWVudEltcGw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBz
cmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmtleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAqIHNyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtTW91c2VFdmVu
dEJ1aWxkZXI6OlBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0Ojp0b1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dFR5cGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpkcmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgICogdGVzdHMvS2V5Ym9h
cmRUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXRLZXlF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVzdDo6aW50ZXJwcmV0T1NNb2RpZmll
cktleVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXRDdHJs
S2V5UHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6OmludGVycHJldFRhYik6
CisgICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVzdDo6aW50ZXJwcmV0TmV3TGluZSk6CisgICAg
ICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVwTWVudVRlc3Q6OnNpbXVsYXRlTGVmdE1vdXNl
RG93bkV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6c2ltdWxh
dGVMZWZ0TW91c2VVcEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMS0x
Mi0xNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4
ZWREQjogQ2xlYW4gdXAgV2ViSURCT2JqZWN0U3RvcmUgY3JlYXRlSW5kZXggdGVtcCBjb2RlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNw
cAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9y
Q2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NCw3ICs1NDQsNyBAQCBjb25zdCBj
aGFyKiBFZGl0b3JDbGllbnRJbXBsOjppbnRlcnByZXRLCiAgICAgaWYgKGtleUV2ZW50LT5tZXRh
S2V5KCkpCiAgICAgICAgIG1vZGlmaWVycyB8PSBNZXRhS2V5OwogCi0gICAgaWYgKGtleUV2ZW50
LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYg
KGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAg
ICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5rZXlDb2RlKCk7CiAgICAgICAg
IHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKICAg
ICB9CkBAIC01NjcsNyArNTY3LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpoYW5kbGVFZGl0
aW5nS2V5YgogICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2dCk7
CiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Y29tbWFuZE5hbWUpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cKICAgICAgICAgLy8g
Y29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hv
dWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0
byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lv
biAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY2LDEzICs1NjYsMTMgQEAgV2ViU3RyaW5n
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmtleWJvYQogICAgICAgICAvLyBGb2xsb3cgdGhlIHNh
bWUgb3JkZXIgYXMgTW96aWxsYSBNU0FBIGltcGxlbWVudGF0aW9uOgogICAgICAgICAvLyBDdHJs
K0FsdCtTaGlmdCtNZXRhK2tleS4gTVNETiBzdGF0ZXMgdGhhdCBrZXlib2FyZCBzaG9ydGN1dCBz
dHJpbmdzCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgbG9jYWxpemVkIGFuZCBkZWZpbmVzIHRo
ZSBzZXBhcmF0b3IgYXMgIisiLgotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpDdHJsS2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVu
dDo6Q3RybEtleSkKICAgICAgICAgICAgIG1vZGlmaWVyU3RyaW5nICs9ICJDdHJsKyI7Ci0gICAg
ICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleSkKKyAgICAg
ICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OkFsdEtleSkKICAgICAgICAgICAgIG1v
ZGlmaWVyU3RyaW5nICs9ICJBbHQrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6U2hpZnRLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9y
bUV2ZW50OjpTaGlmdEtleSkKICAgICAgICAgICAgIG1vZGlmaWVyU3RyaW5nICs9ICJTaGlmdCsi
OwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpNZXRhS2V5
KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6TWV0YUtleSkKICAgICAg
ICAgICAgIG1vZGlmaWVyU3RyaW5nICs9ICJXaW4rIjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5j
cHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTUgKzc1LDE1IEBA
IFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXI6OlBsYXRmb3JtTW91c2UKICAgICBzd2l0Y2ggKGUu
dHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VNb3ZlOgogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6TW91c2VMZWF2ZTogIC8vIHN5bnRoZXNpemUgYSBtb3ZlIGV2ZW50Ci0gICAg
ICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAgICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6TW91c2VEb3duOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVz
c2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVVwOgotICAgICAgICBt
X2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZv
cm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpA
QCAtMTAzLDYgKzEwMyw4IEBAIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hl
ZWwKICAgICBtX3doZWVsVGlja3NZID0gZS53aGVlbFRpY2tzWTsKICAgICBtX2dyYW51bGFyaXR5
ID0gZS5zY3JvbGxCeVBhZ2UgPwogICAgICAgICBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50IDogU2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQ7CisgICAgCisgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6
V2hlZWw7CiAgICAgbV9zaGlmdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNo
aWZ0S2V5KTsKICAgICBtX2N0cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpD
b250cm9sS2V5KTsKICAgICBtX2FsdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6
OkFsdEtleSk7CkBAIC0xMjIsMTYgKzEyNCwxNiBAQCBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxk
ZXI6OlBsYXRmb3JtR2VzCiB7CiAgICAgc3dpdGNoIChlLnR5cGUpIHsKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZTsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlU2Nyb2xsRW5kOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6Ci0gICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVUYXA6Ci0gICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpUYXBUeXBlOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE1MCwyMSArMTUyLDIxIEBAIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxh
dGZvcm1HZXMKIAogLy8gTWFrZVBsYXRmb3JtS2V5Ym9hcmRFdmVudCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgaW5saW5lIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0b1BsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUoV2ViSW5w
dXRFdmVudDo6VHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBQbGF0Zm9ybUV2ZW50OjpUeXBlIHRv
UGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpLZXlVcDoKLSAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA7CisgICAgICAgIHJldHVybiBQ
bGF0Zm9ybUV2ZW50OjpLZXlVcDsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246Ci0g
ICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6UmF3
S2V5RG93bjoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93
bjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd247CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpDaGFyOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpDaGFyOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6Q2hhcjsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgcmV0dXJuIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5
RG93bjsKIH0KIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50QnVpbGRlcihjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBlKQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjA1LDcgKzIyMDUsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnU291cmNlRW5kZWRB
dCgKIHsKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcG1lKGNsaWVudFBvaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2NyZWVuUG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsc2UsIDApOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5k
cmFnU291cmNlRW5kZWRBdChwbWUsCiAgICAgICAgIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+
KG9wZXJhdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LZXlib2Fy
ZFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvS2V5
Ym9hcmRUZXN0LmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9LZXlib2FyZFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICAvLyBFLmcuLCBzZW5kaW5nIGluIHRoZSBlbnRlciBrZXkgZ2l2ZXMgYmFj
ayAiSW5zZXJ0TmV3bGluZSIuCiAgICAgY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQoCiAg
ICAgICAgIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIHdlYktleWJvYXJkRXZlbnQsCi0gICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSBrZXlUeXBlKQorICAgICAgICBQbGF0Zm9ybUV2
ZW50OjpUeXBlIGtleVR5cGUpCiAgICAgewogICAgICAgICBFZGl0b3JDbGllbnRJbXBsIGVkaXRv
ckltcGwoMCk7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIgZXZ0KHdlYktl
eWJvYXJkRXZlbnQpOwpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYklucHV0
RXZlbnQ6Ok1vZGlmaWVycyBvc01vZGlmaWVyID0gV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleTsK
ICNlbmRpZgogICAgICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwga2V5Q29k
ZSwgb3NNb2RpZmllcik7Ci0gICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2Fy
ZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICByZXR1
cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1FdmVudDo6UmF3S2V5
RG93bik7CiAgICAgfQogCiAgICAgLy8gTGlrZSBpbnRlcnByZXRLZXlFdmVudCwgYnV0IHdpdGgg
cHJlc3NpbmcgZG93biBjdHJsK3xrZXlDb2RlfC4KQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgV2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50OwogICAgICAgICBz
ZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwga2V5Q29kZSwgV2ViSW5wdXRFdmVudDo6
Q29udHJvbEtleSk7Ci0gICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2
ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICByZXR1cm4g
aW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93
bik7CiAgICAgfQogCiAgICAgLy8gTGlrZSBpbnRlcnByZXRLZXlFdmVudCwgYnV0IHdpdGggdHlw
aW5nIGEgdGFiLgpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdl
YktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKICAgICAgICAgc2V0dXBLZXlEb3duRXZlbnQo
JmtleWJvYXJkRXZlbnQsICdcdCcsIG1vZGlmaWVycyk7Ci0gICAgICAgIHJldHVybiBpbnRlcnBy
ZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpOwor
ICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1F
dmVudDo6Q2hhcik7CiAgICAgfQogCiAgICAgLy8gTGlrZSBpbnRlcnByZXRLZXlFdmVudCwgYnV0
IHdpdGggdHlwaW5nIGEgbmV3bGluZS4KQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQ7CiAgICAgICAgIHNldHVw
S2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCAnXHInLCBtb2RpZmllcnMpOwotICAgICAgICBy
ZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpDaGFyKTsKKyAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZl
bnQsIFBsYXRmb3JtRXZlbnQ6OkNoYXIpOwogICAgIH0KIAogICAgIC8vIEEgbmFtZSBmb3IgIm5v
IG1vZGlmaWVycyBzZXQiLgpAQCAtMTY5LDcgKzE2OSw3IEBAIFRFU1RfRihLZXlib2FyZFRlc3Qs
IFRlc3RFc2NhcGUpCiAgICAgc2V0dXBLZXlEb3duRXZlbnQoJmtleWJvYXJkRXZlbnQsIFdlYkNv
cmU6OlZLRVlfRVNDQVBFLCBub01vZGlmaWVycyk7CiAKICAgICBjb25zdCBjaGFyKiByZXN1bHQg
PSBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bik7CiAgICAgRVhQRUNUX1NUUkVRKCJDYW5jZWwiLCByZXN1bHQpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5j
cHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9w
dXBNZW51VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSwxMyArMjM1LDEzIEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBTaW11bGF0ZXMgYSBtb3VzZSBldmVudCBvbiB0aGUgc2VsZWN0IHBvcHVw
LgogICAgIHZvaWQgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQoY29uc3QgSW50UG9pbnQmIHBv
aW50KQogICAgIHsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9pbnQs
IHBvaW50LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwKKyAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50IG1vdXNlRXZlbnQocG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVByZXNzZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsKICAgICAgICAgbV93ZWJWaWV3LT5z
ZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZURvd25FdmVudChtb3VzZUV2ZW50KTsKICAgICB9CiAg
ICAgdm9pZCBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQog
ICAgIHsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9pbnQsIHBvaW50
LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsCisgICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudCBtb3VzZUV2ZW50KHBvaW50LCBwb2ludCwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VSZWxlYXNlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgICAgICBtX3dlYlZpZXctPnNlbGVj
dFBvcHVwKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KQEAg
LTM3Myw3ICszNzMsNyBAQCBURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgTW91c2VPdmVySXRl
CiAgICAgLy8gWSBvZiAxOCB0byBiZSBvbiB0aGUgaXRlbSBhdCBpbmRleCAxICgxMiBmb250IHBs
dXMgYm9yZGVyIGFuZCBtb3JlIHRvIGJlIHNhZmUpLgogICAgIEludFBvaW50IHJvdzFQb2ludCgy
LCAxOCk7CiAgICAgLy8gU2ltdWxhdGUgdGhlIG1vdXNlIG1vdmluZyBvdmVyIHRoZSBmaXJzdCBp
dGVtLgotICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHJvdzFQb2ludCwgcm93MVBv
aW50LCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLAorICAgIFBsYXRmb3JtTW91c2VFdmVudCBt
b3VzZUV2ZW50KHJvdzFQb2ludCwgcm93MVBvaW50LCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CiAgICAgbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5o
YW5kbGVNb3VzZU1vdmVFdmVudChtb3VzZUV2ZW50KTsKIApJbmRleDogU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwko
cmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRF
Zmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwogMjAxMS0xMi0xNSAgUmFwaGFlbCBL
dWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZMXSBDbGVh
biB1cCBhbmQgcmVmYWN0b3IgdGhlIG1lbW9yeSBjYWNoZSBmdW5jdGlvbnMgaW4gZXdrX3NldHRp
bmdzLgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MDMsNyArNDAzLDcgQEAgYm9vbCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlibwog
CiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
aW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKIAotICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChrZXlFdmVudC0+
dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0
IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93
IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNo
b3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUg
dG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMg
Zm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAvLyAo
ZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgpJbmRleDog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTItMTUgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEg
YmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFu
ZGxlcik6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFr
ZXMgcHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRF
dmVudChLCiAgICAgICAgIC8vIER1cmluZyBSYXdLZXlEb3duIGV2ZW50cyBpZiBhbiBlZGl0b3Ig
Y29tbWFuZCB3aWxsIGluc2VydCB0ZXh0LCBkZWZlcgogICAgICAgICAvLyB0aGUgaW5zZXJ0aW9u
IHVudGlsIHRoZSBrZXlwcmVzcyBldmVudC4gV2Ugd2FudCBrZXlkb3duIHRvIGJ1YmJsZSB1cAog
ICAgICAgICAvLyB0aHJvdWdoIHRoZSBET00gZmlyc3QuCi0gICAgICAgIGlmIChwbGF0Zm9ybUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAg
ICAgIGlmIChwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93
bikgewogICAgICAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUs
IGZhbHNlKSkKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNp
b24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MjcsNyArNDI3LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19wb3B1cF9tZQogICAgIGxvY2F0aW9uLnNocnVua1RvKEludFBvaW50KHZpZXct
PndpZHRoKCkgLSBnQ29udGV4dE1lbnVNYXJnaW4sIHZpZXctPmhlaWdodCgpIC0gZ0NvbnRleHRN
ZW51TWFyZ2luKSk7CiAKICAgICBJbnRQb2ludCBnbG9iYWxQb2ludChjb252ZXJ0V2lkZ2V0UG9p
bnRUb1NjcmVlblBvaW50KHdpZGdldCwgbG9jYXRpb24pKTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgZXZlbnQobG9jYXRpb24sIGdsb2JhbFBvaW50LCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFBy
ZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZl
bnRfdGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQobG9jYXRpb24sIGdsb2Jh
bFBvaW50LCBSaWdodEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7CiAg
ICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJL
SVRfV0VCX1ZJRVcod2lkZ2V0KSwgZXZlbnQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VFbmRlZEF0Om9wZXJhdGlv
bjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3VycmVu
dEtleWJvYXJkRXZlbnQpOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW50ZXJwcmV0S2V5RXZl
bnQ6c2F2aW5nQ29tbWFuZHM6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJQREZWaWV3IFBERlZpZXdXaWxsQ2xpY2tPbkxpbms6d2l0aFVSTDpdKToK
KwogMjAxMS0xMi0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBNYWMgYnVpbGQgZml4IGFmdGVyIHIxMDI4NzQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxMSw3ICs4MTEsNyBAQCAtICh2
b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kCiAgICAgICAgIHJldHVybjsKICAg
ICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBz
aG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50
KEludFBvaW50KHdpbmRvd0xvYyksIGdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXctPnBsYXRm
b3JtV2lkZ2V0KCkgd2luZG93XSksCi0gICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3Zl
ZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOworICAgICAg
ICBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CiAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlvbilv
cGVyYXRpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0JKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3MzksNyArMzczOSw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnQKICAgICBzd2l0Y2ggKFtldmVudCB0eXBl
XSkgewogICAgIGNhc2UgTlNLZXlEb3duOiB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCBwbGF0Zm9ybUV2ZW50KGV2ZW50KTsKLSAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3Vh
dGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAg
ICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6
UmF3S2V5RG93bik7CiAgICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZv
cm1FdmVudCwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKICAgICB9CiAg
ICAgY2FzZSBOU0tleVVwOgpAQCAtNTM4MSw3ICs1MzgxLDcgQEAgLSAoQk9PTClfaW50ZXJwcmV0
S2V5RXZlbnQ6KEtleWJvYXJkRXZlbgogICAgICAgICB9CiAgICAgICAgIC8vIElmIHRoZXJlIGFy
ZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaXMg
dGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMuCiAgICAgICAgIC8vIEtleXBy
ZXNzIChDaGFyIGV2ZW50KSBoYW5kbGVyIGlzIHRoZSBsYXRlc3Qgb3Bwb3J0dW5pdHkgdG8gZXhl
Y3V0ZS4KLSAgICAgICAgaWYgKCFoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBsYXRmb3Jt
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpCisgICAgICAgIGlm
ICghaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6Q2hhcikKICAgICAgICAgICAgIFtzZWxmIF9leGVjdXRlU2F2ZWRLZXlw
cmVzc0NvbW1hbmRzXTsKICAgICB9CiAgICAgX3ByaXZhdGUtPmludGVycHJldEtleUV2ZW50c1Bh
cmFtZXRlcnMgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5t
bQkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NjAsNyArOTYwLDcgQEAgLSAodm9pZClQREZWaWV3
V2lsbENsaWNrT25MaW5rOihQREZWaWV3IAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgTlNLZXlEb3duOiB7CiAgICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGUobnNF
dmVudCk7Ci0gICAgICAgICAgICBwZS5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgICAgIHBlLmRpc2FtYmlndWF0ZUtl
eURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAgICAgICAgIGV2ZW50
ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIHRydWUs
IHRydWUsIDAsCiAgICAgICAgICAgICAgICAgcGUua2V5SWRlbnRpZmllcigpLCBwZS53aW5kb3dz
VmlydHVhbEtleUNvZGUoKSwKICAgICAgICAgICAgICAgICBwZS5jdHJsS2V5KCksIHBlLmFsdEtl
eSgpLCBwZS5zaGlmdEtleSgpLCBwZS5tZXRhS2V5KCksIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0
OjpzdGFydERyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50
KToKKwogMjAxMS0xMi0xNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBHZXQgcmlkIG9mIGxheWVyaW5nIHZpb2xhdGlvbiBpbiBQ
bHVnaW5WaWV3UXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0Ns
aWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0RyYWdDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcg
KzEwNSw3IEBAIHZvaWQgRHJhZ0NsaWVudFF0OjpzdGFydERyYWcoRHJhZ0ltYWdlUmUKICAgICAg
ICAgUXQ6OkRyb3BBY3Rpb24gYWN0dWFsRHJvcEFjdGlvbiA9IGRyYWctPmV4ZWMoZHJhZ09wZXJh
dGlvbnNUb0Ryb3BBY3Rpb25zKGRyYWdPcGVyYXRpb25NYXNrKSk7CiAKICAgICAgICAgLy8gU2Vu
ZCBkcmFnRW5kIGV2ZW50Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtZShtX3dlYlBhZ2Ut
PnZpZXcoKS0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBvcygpLCBM
ZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAwKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygpLT5t
YXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAwKTsKICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdCht
ZSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihhY3R1YWxEcm9wQWN0aW9uKSk7CiAgICAgfQog
ICAgIGZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbmRlZCgpOwpJbmRleDog
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsNyArNDExLDcgQEAgdm9p
ZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogICAgICAgICByZXR1cm47CiAK
ICAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIGtldmVudCA9IGV2ZW50LT5rZXlFdmVu
dCgpOwotICAgIGlmICgha2V2ZW50IHx8IGtldmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6S2V5VXApCisgICAgaWYgKCFrZXZlbnQgfHwga2V2ZW50LT50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6S2V5VXApCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIHN0YXJ0ID0g
ZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLmNvbnRhaW5lck5vZGUoKTsKQEAgLTQ0MSw3ICs0
NDEsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAgICAgICAg
ICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVt
IGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXBy
ZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5z
ZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KICAgICAgICAgICAgIGlmIChjbWQgJiYg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0aW9uKCkKLSAgICAgICAg
ICAgICAgICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tl
eURvd24pCisgICAgICAgICAgICAgICAgJiYga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIG1f
cGFnZS0+dHJpZ2dlckFjdGlvbihhY3Rpb24pOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKIAogICAgICAgICAgICAgLy8gVGV4dCBp
bnNlcnRpb24uCiAgICAgICAgICAgICBib29sIHNob3VsZEluc2VydFRleHQgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eURvd24gJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKGtl
dmVudC0+dHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6OktleURvd24gJiYgIWtldmVudC0+dGV4dCgp
LmlzRW1wdHkoKSkgewogCiAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmFsdEtleSgpKQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2
ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFj
Y2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjS2V5Ym9h
cmRTaG9ydGN1dCk6CisgICAgICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChnZW5l
cmF0ZU1vdXNlRXZlbnQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6a2V5VXApOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQp
OgorICAgICAgICAoV2ViVmlldzo6a2V5RG93bik6CisgICAgICAgIChXZWJWaWV3OjprZXlQcmVz
cyk6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMg
cHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCShyZXZpc2lv
biAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlckZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTM2NiwxMyArMzY2LDEzIEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICAgICAgLy8gRm9s
bG93IHRoZSBzYW1lIG9yZGVyIGFzIE1vemlsbGEgTVNBQSBpbXBsZW1lbnRhdGlvbjoKICAgICAg
ICAgLy8gQ3RybCtBbHQrU2hpZnQrTWV0YStrZXkuIE1TRE4gc3RhdGVzIHRoYXQga2V5Ym9hcmQg
c2hvcnRjdXQgc3RyaW5ncwogICAgICAgICAvLyBzaG91bGQgbm90IGJlIGxvY2FsaXplZCBhbmQg
ZGVmaW5lcyB0aGUgc2VwYXJhdG9yIGFzICIrIi4KLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBs
YXRmb3JtRXZlbnQ6OkN0cmxLZXkpCiAgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgKz0g
IkN0cmwrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
QWx0S2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6QWx0S2V5KQog
ICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJBbHQrIjsKLSAgICAgICAgaWYgKG1v
ZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hpZnRLZXkpCisgICAgICAgIGlmICht
b2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleSkKICAgICAgICAgICAgIGFjY2Vzc0tl
eU1vZGlmaWVycyArPSAiU2hpZnQrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6TWV0YUtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3Jt
RXZlbnQ6Ok1ldGFLZXkpCiAgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgKz0gIldpbisi
OwogICAgIH0KICAgICAqc2hvcnRjdXQgPSBCU3RyaW5nKFN0cmluZyhhY2Nlc3NLZXlNb2RpZmll
cnMgKyBhY2Nlc3NLZXkpKS5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJE
cm9wU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEcm9wU291
cmNlLmNwcAkocmV2aXNpb24gMTAzMDI3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgU1RETUVUSE9ESU1QXyhV
TE9ORykgV2ViRHJvcFNvdXJjZTo6UmVsZQogICAgIHJldHVybiBjOwogfQogCi1QbGF0Zm9ybU1v
dXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgaXNEcmFn
KSB7CitQbGF0Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZpZXcqIHdlYlZp
ZXcsIGJvb2wgaXNEcmFnKQorewogICAgIFBPSU5UTCBwdDsKICAgICA6OkdldEN1cnNvclBvcygo
TFBQT0lOVCkmcHQpOwogICAgIFBPSU5UTCBsb2NhbHB0ID0gcHQ7CkBAIC0xMDEsNyArMTAyLDcg
QEAgUGxhdGZvcm1Nb3VzZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZQogICAgIGlmIChTVUND
RUVERUQod2ViVmlldy0+dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJnZpZXdXaW5kb3cpKSkKICAg
ICAgICAgOjpTY3JlZW5Ub0NsaWVudCh2aWV3V2luZG93LCAoTFBQT0lOVCkmbG9jYWxwdCk7CiAg
ICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChJbnRQb2ludChsb2NhbHB0LngsIGxvY2FscHQu
eSksIEludFBvaW50KHB0LngsIHB0LnkpLAotICAgICAgICBpc0RyYWcgPyBMZWZ0QnV0dG9uIDog
Tm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGN1cnJlbnRUaW1lKCkpOworICAgICAgICBpc0RyYWcgPyBMZWZ0QnV0dG9uIDogTm9CdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBjdXJyZW50VGltZSgpKTsKIH0KIAogU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5
Q29udGludWVEcmFnKEJPT0wgZkVzY2FwZVByZXNzZWQsIERXT1JEIGdyZktleVN0YXRlKQpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDcgKzE4MTMsNyBAQCBib29s
IFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sCiAKIGJvb2wgV2ViVmlldzo6a2V5
VXAoV1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBMUEFSQU0ga2V5RGF0YSwgYm9vbCBzeXN0ZW1LZXlE
b3duKQogewotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3cs
IHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwLCBz
eXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV92aWV3
V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6S2V5VXAsIHN5
c3RlbUtleURvd24pOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgbV9jdXJyZW50Q2hhcmFjdGVyQ29kZSA9
IDA7CkBAIC0xOTU1LDcgKzE5NTUsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50CiAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAotICAgIGlmIChrZXlFdmVudC0+
dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChr
ZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAg
Ly8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBk
ZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEg
RWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9u
IFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0
IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAg
ICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIp
LgpAQCAtMTk4Myw3ICsxOTgzLDcgQEAgYm9vbCBXZWJWaWV3OjprZXlEb3duKFdQQVJBTSB2aXJ0
dWFsS2V5QwogI2VuZGlmCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
a2V5RXZlbnQobV92aWV3V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duLCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0
YSwgUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgc3lzdGVtS2V5RG93bik7CiAgICAgYm9vbCBo
YW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChrZXlFdmVudCk7CiAKICAg
ICAvLyBUaGVzZSBldmVudHMgY2Fubm90IGJlIGNhbmNlbGVkLCBhbmQgd2UgaGF2ZSBubyBkZWZh
dWx0IGhhbmRsaW5nIGZvciB0aGVtLgpAQCAtMjA1NSw3ICsyMDU1LDcgQEAgYm9vbCBXZWJWaWV3
OjprZXlQcmVzcyhXUEFSQU0gY2hhckNvZGUsIAogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgY2hhckNvZGUsIGtleURhdGEs
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgY2hhckNvZGUsIGtleURhdGEs
IFBsYXRmb3JtRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOwogICAgIC8vIElFIGRvZXMgbm90
IGRpc3BhdGNoIGtleXByZXNzIGV2ZW50IGZvciBXTV9TWVNDSEFSLgogICAgIGlmIChzeXN0ZW1L
ZXlEb3duKQogICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVBY2Nl
c3NLZXkoa2V5RXZlbnQpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAy
NykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OmhhbmRsZUtleURvd24pOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlS2V5UHJl
c3MpOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlS2V5VXApOgorCiAyMDExLTEyLTE0ICBKaW5n
IFpoYW8gIDxqaW5nemhhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlbmluZyB0d28gcG9w
dXAgbWVudXMgYnkgZGlzcGF0Y2hFdmVudCgpIG1ha2VzIHByb2JsZW1zLgpJbmRleDogU291cmNl
L1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBXZWJW
aWV3OjpoYW5kbGVLZXlEb3duKFdQQVJBTSB2aXJ0dQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCB2aXJ0dWFsS2V5Q29k
ZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duLCBzeXN0ZW1LZXlE
b3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUs
IHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duLCBzeXN0
ZW1LZXlEb3duKTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtl
eUV2ZW50KGtleUV2ZW50KTsKIAogICAgIC8vIFRoZXNlIGV2ZW50cyBjYW5ub3QgYmUgY2FuY2Vs
ZWQsIGFuZCB3ZSBoYXZlIG5vIGRlZmF1bHQgaGFuZGxpbmcgZm9yIHRoZW0uCkBAIC0zNzAsNyAr
MzcwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVLZXlQcmVzcyhXUEFSQU0gY2hhcgogewogICAg
IEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpOwogCi0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFu
ZGxlLCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyLCBzeXN0
ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dI
YW5kbGUsIGNoYXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpDaGFyLCBzeXN0ZW1LZXlE
b3duKTsKICAgICAvLyBJRSBkb2VzIG5vdCBkaXNwYXRjaCBrZXlwcmVzcyBldmVudCBmb3IgV01f
U1lTQ0hBUi4KICAgICBpZiAoc3lzdGVtS2V5RG93bikKICAgICAgICAgcmV0dXJuIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlQWNjZXNzS2V5KGtleUV2ZW50KTsKQEAgLTM4Miw3ICszODIs
NyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUtleVByZXNzKFdQQVJBTSBjaGFyCiAKIGJvb2wgV2Vi
Vmlldzo6aGFuZGxlS2V5VXAoV1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBMUEFSQU0ga2V5RGF0YSwg
Ym9vbCBzeXN0ZW1LZXlEb3duKQogewotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVu
dChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6S2V5VXAsIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRm
b3JtRXZlbnQ6OktleVVwLCBzeXN0ZW1LZXlEb3duKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIHJldHVy
biBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGtleUV2ZW50KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
V2luQ0UuY3BwCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcg
KzM4NCw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdLZXkKIAogICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVy
cHJldEtleUV2ZW50KGV2ZW50KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vz
bid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21t
YW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQg
YmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVp
dGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3Vz
KSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gKGUuZy4g
VGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMDMwMjcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFd4OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRXeDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDExLTEyLTExICBSb2JpbiBE
dW5uICA8cm9iaW5AYWxsZHVubi5jb20+CiAKICAgICAgICAgQWRkIGEgVVJMIGFyZ3VtZW50IHRv
IHRoZSB3eFdlYlZpZXcgY29uc3RydWN0b3IsCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJKHJldmlzaW9uIDEwMzAyNykKKysr
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5MCw3ICszOTAsNyBAQCBib29sIEVkaXRvckNsaWVudFd4OjpoYW5kbGVF
ZGl0aW5nS2V5Ym9hCiAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOwogCi0gICAgaWYgKGtleUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAg
aWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAg
ICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2Rl
IHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVk
IHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0
IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFi
IHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgaWYgbm90IHRvIGxldCBhIENIQVIgZXZlbnQgYmUgZ2Vu
ZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVy
LCBvciBFbnRlcikuCkBAIC00MDksNyArNDA5LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRXeDo6aGFu
ZGxlRWRpdGluZ0tleWJvYQogCiBjb25zdCBjaGFyKiBFZGl0b3JDbGllbnRXeDo6aW50ZXJwcmV0
S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZ0KQogewotICAgIEFTU0VSVChldnQtPmtl
eUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24gfHwg
ZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKTsK
KyAgICBBU1NFUlQoZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93biB8fCBldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFy
KTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlEb3duQ29tbWFu
ZHNNYXAgPSAwOwogICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlQcmVz
c0NvbW1hbmRzTWFwID0gMDsKQEAgLTQzMyw3ICs0MzMsNyBAQCBjb25zdCBjaGFyKiBFZGl0b3JD
bGllbnRXeDo6aW50ZXJwcmV0S2V5CiAgICAgaWYgKGV2dC0+Y3RybEtleSgpKQogICAgICAgICBt
b2RpZmllcnMgfD0gQ3RybEtleTsKIAotICAgIGlmIChldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoZXZ0LT5rZXlF
dmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICBp
bnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5rZXlDb2RlKCk7CiAgICAgICAgIHJl
dHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119626</attachid>
            <date>2011-12-16 09:48:10 -0800</date>
            <delta_ts>2011-12-16 10:38:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111216094804.patch</filename>
            <type>text/plain</type>
            <size>154836</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRN
ZW51XSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorICAgICAgICAqIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICog
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycyk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL3d4L0V2ZW50SGFuZGxlcld4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Y3RybEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxhdGZvcm1F
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hl
ZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZvck5TRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXlwYWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0eXBl
RnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorCiAyMDExLTEyLTE2ICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPiwgSmFrdWIgV2llY3pvcmVrICA8andpZWN6b3Jl
a0B3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciA8b2wgcmV2ZXJzZWQ+LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDU0LDYgKzEwNTQsNyBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBwbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAKKyAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAogICAgIHBsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
ICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg3OSw2ICsyODc5LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVS
SVV0aWxzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE4LDYgKzExMTgsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQu
Y3BwIFwKICAgICBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIFwKICAgICBw
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgXAogICAgIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTAzMDc0KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYwNyw4ICs2MDcs
OCBAQCBfX1pON1dlYkNvcmUyMG1ha2VSR0JBMzJGcm9tRmxvYXRzRWZmZmYKIF9fWk43V2ViQ29y
ZTIwcHJvdG9jb2xJc0phdmFTY3JpcHRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMUJh
Y2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQogX19aTjdXZWJDb3JlMjFNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2Ci1fX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudDI0ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50RU5TMF80VHlwZUViCiBfX1pON1dlYkNvcmUy
MVBsYXRmb3JtS2V5Ym9hcmRFdmVudEMxRVA3TlNFdmVudAorX19aTjdXZWJDb3JlMjFQbGF0Zm9y
bUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0ZUtleURvd25FdmVudEVOU18xM1BsYXRmb3JtRXZl
bnQ0VHlwZUViCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5k
aW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVz
b3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQ
TlNfMzJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1
ZXN0RQogX19aTjdXZWJDb3JlMjFTVkdEb2N1bWVudEV4dGVuc2lvbnMyMXNhbXBsZUFuaW1hdGlv
bkF0VGltZUVSS04zV1RGNlN0cmluZ0VQTlNfMTRTVkdTTUlMRWxlbWVudEVkCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYzMCw2ICsyNjYzMCwxNCBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxQbGF0Zm9ybUV2ZW50LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cUGxhdGZvcm1FdmVudC5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDMwNzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTUwNzMsNiArNTA3Myw4IEBACiAJCUJDNUE4Njg1MEMzMzY3NjAwMEVFQTY0
OSAvKiBET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNUE4NjgyMEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uaCAqLzsg
fTsKIAkJQkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4NkIzMEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgKi87IH07CiAJCUJDNUE4NkI2MEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1QTg2QjQwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2Vs
ZWN0aW9uLmggKi87IH07CisJCUJDNUM3NjJBMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NUM3NjI4MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLzsgfTsKKwkJQkM1
Qzc2MkIxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAv
KiBQbGF0Zm9ybUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkM1Q0ZDQTkxMUY3OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlvblN0cmF0
ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVD
RkNBODExRjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzVFQjVEQjBFODFCN0VB
MDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUVC
NUREMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUVCNURDMEU4MUI4REQwMEIyNTk2NSAvKiBP
dXRsaW5lVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTIzOTksNiArMTI0MDEsOCBAQAogCQlCQzVBODY4MzBDMzM2NzYwMDBFRUE2NDkg
LyogRE9NU2VsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NU2VsZWN0aW9u
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1QTg2QjMwQzMzNjdFODAwRUVB
NjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVNlbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNUE4NkI0MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01TZWxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkM1Qzc2MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1FdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1Q0ZDQTgxMUY3
OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlvblN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExvY2FsaXphdGlvblN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCb3JkZXJWYWx1ZS5oOyBwYXRoID0gc3R5
bGUvQm9yZGVyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RUI1REMw
RTgxQjhERDAwQjI1OTY1IC8qIE91dGxpbmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBPdXRsaW5lVmFsdWUuaDsgcGF0aCA9IHN0eWxlL091dGxpbmVWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyNTYsNiArMjAyNjAsOCBAQAogCQkJCTFB
RDhGODFBMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwICovLAogCQkJ
CTFBRDhGODE5MTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLywKIAkJ
CQk5MzVDNDc2QTA5QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggKi8sCisJ
CQkJQkM1Qzc2MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwICovLAorCQkJ
CUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8sCiAJCQkJQkNC
QjhBQjQxM0YxQUZCMDAwNzM0REYwIC8qIFBPREFyZW5hLmggKi8sCiAJCQkJMUYzRjE5NTIxNDk5
Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLywKIAkJCQlCQ0JCOEFCNTEzRjFB
RkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCAqLywKQEAgLTI0ODc2LDYgKzI0ODgyLDcgQEAK
IAkJCQlGMzVBRTVBQzE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI2QzE3QTNFMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9T
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGls
ZUNhY2hlTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0
MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjNG
MTk1MzE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFQ0VCNjgxNDk5NzkwRDAwQ0REM0E0IC8qIEZFQ29tcG9zaXRlQXJpdGhtZXRpY05F
T04uaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzAsNiArMjc3NzcsNyBAQAogCQkJCThDMTA5MTk4
MTQ5NEZCMTIwMEI1RDNGRSAvKiBDU1NFbGVtZW50U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzA2RTRFNjE0OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwRkE0MTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxl
Q2FjaGVMYXllci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDNUM3NjJBMTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUNFQjY3MTQ5OTc5
MEQwMENERDNBNCAvKiBGRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5RUNFQjY5MTQ5OTc5MEQwMENERDNBNCAvKiBGRUdhdXNzaWFuQmx1ck5FT04uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNkIxNDk5NzkwRDAwQ0REM0E0IC8qIEZFTGlnaHRp
bmdORU9OLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTkwLDcgKzI1OTAsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnUK
ICAgICAvLyBTaW11bGF0ZSBhIGNsaWNrIGluIHRoZSBtaWRkbGUgb2YgdGhlIG9iamVjdC4KICAg
ICBMYXlvdXRQb2ludCBjbGlja1BvaW50ID0gbV9vYmplY3QtPmNsaWNrUG9pbnQoKTsKICAgICAK
LSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChjbGlja1BvaW50LCBjbGlja1BvaW50
LCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVu
dChjbGlja1BvaW50LCBjbGlja1BvaW50LCBSaWdodEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7
CiAgICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1l
bnVFdmVudChtb3VzZUV2ZW50KTsKICAgICBpZiAoaGFuZGxlZCkKICAgICAgICAgcGFnZS0+Y2hy
b21lKCktPnNob3dDb250ZXh0TWVudSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0tleWJv
YXJkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsMjAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
Rm9yS2V5Ym9hcmRFdmVudFR5cGUoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHR5cGUpCitz
dGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVu
dFR5cGUoUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewot
ICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA6CisgICAgICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6S2V5VXA6CiAgICAgICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLmtl
eXVwRXZlbnQ7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3du
OgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd246CiAgICAgICAgICAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmtleWRvd25FdmVudDsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXI6CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6Q2hhcjoKICAg
ICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudDsKLSAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd246CisgICAgICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6S2V5RG93bjoKICAgICAgICAgICAgIC8vIFRoZSBjYWxsZXIgc2hvdWxkIGRpc2FtYmln
dWF0ZSB0aGUgY29tYmluZWQgZXZlbnQgaW50byBSYXdLZXlEb3duIG9yIENoYXIgZXZlbnRzLgog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lv
biAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGludCBkZXRhaWwsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCkK
IHsKLSAgICBBU1NFUlQoZXZlbnQuZXZlbnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkIHx8IGV2
ZW50LmJ1dHRvbigpICE9IE5vQnV0dG9uKTsKKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgfHwgZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0b24pOwog
CiAgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNl
bW92ZUV2ZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFBsYXRmb3JtTW91c2VF
dmVudCBjcmVhdGVNb3VzZUV2ZQogICAgIHNoaWZ0S2V5ID0gY3RybEtleSA9IGFsdEtleSA9IG1l
dGFLZXkgPSBmYWxzZTsKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2Rp
ZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpOwogICAgIHJldHVy
biBQbGF0Zm9ybU1vdXNlRXZlbnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRh
LT5nbG9iYWxQb3NpdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGFLZXksIGN1cnJlbnRUaW1lKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMzMsMTkgKzIy
MzMsMTkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgIC8v
IGVuZCBnZXN0dXJlIGFzIHdlbGwuCiAKICAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkp
IHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZToKKyAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duOgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlVGFwOiB7CiAgICAgICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIGNvZGUgdG8g
bm90IGhpdCB0ZXN0IG11bHRpcGxlIHRpbWVzIG9uY2UgaGl0IHRlc3RpbmcgaGFzIGJlZW4gY29y
cmVjdGVkIGFzIHN1Z2dlc3RlZCBhYm92ZS4KLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZh
a2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEs
IGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJl
RXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1l
c3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50
LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXko
KSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAg
ICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVu
dFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBn
ZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVu
dC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJl
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92
ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVF
dmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFL
ZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQs
IC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVu
dC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXko
KSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFs
UG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0
cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBn
ZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1v
dmUpOwogICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAg
ICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGU6IHsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6IHsK
ICAgICAgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlzb3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlj
a011bHRpcGxpZXI7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBs
ZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92ZSBmaXhtZSBoYXMgYmVlbiBhZGRyZXNzZWQuCiAgICAg
ICAgIEludFBvaW50IHBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLngoKSwgZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCkueSgpKTsKQEAgLTIyNTQsOSArMjI1NCw5IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY28KICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50
aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91Ymxl
VGFwOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDogewogICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIyNjQsNiArMjI2NCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlRXZlbnQoY28KICAgICAgICAgdmlldy0+aGFuZGxlR2VzdHVyZUV2ZW50KGdl
c3R1cmVFdmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAjZW5kaWYKQEAgLTIzNTcsOSArMjM2MCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzZW5kQ29u
dGV4dE1lbnVFdmVudEYKICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciB3ZWIgY29tcGF0aWJp
bGl0eS4KIAogI2lmIE9TKFdJTkRPV1MpCi0gICAgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlID0g
TW91c2VFdmVudFJlbGVhc2VkOworICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZlbnRUeXBlID0g
UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICNlbHNlCi0gICAgTW91c2VFdmVudFR5cGUg
ZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBl
dmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAjZW5kaWYKIAogICAgIFBs
YXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgUmln
aHRCdXR0b24sIGV2ZW50VHlwZSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6
Y3VycmVudFRpbWUoKSk7CkBAIC0yNDE3LDcgKzI0MjAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
ZmFrZU1vdXNlTW92ZUV2ZW50VGltCiAgICAgYm9vbCBtZXRhS2V5OwogICAgIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFs
dEtleSwgbWV0YUtleSk7CiAgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQgPSB2aWV3LT5jb250ZW50
c1RvU2NyZWVuKEludFJlY3Qodmlldy0+d2luZG93VG9Db250ZW50cyhtX2N1cnJlbnRNb3VzZVBv
c2l0aW9uKSwgSW50U2l6ZSgpKSkubG9jYXRpb24oKTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlTW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGdsb2JhbFBvaW50LCBO
b0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBt
ZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
TW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGdsb2JhbFBvaW50LCBOb0J1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwg
bWV0YUtleSwgY3VycmVudFRpbWUoKSk7CiAgICAgbW91c2VNb3ZlZChmYWtlTW91c2VNb3ZlRXZl
bnQpOwogfQogCkBAIC0yNDcxLDggKzI0NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
QWNjZXNzS2V5KGNvbnN0CiAgICAgLy8gSUUgbWF0Y2hlcyBsb3dlciBhbmQgdXBwZXIgY2FzZSBh
Y2Nlc3Mga2V5cyByZWdhcmRsZXNzIG9mIFNoaWZ0IGtleSBzdGF0ZSAtIGJ1dCBpZiBib3RoIHVw
cGVyIGFuZAogICAgIC8vIGxvd2VyIGNhc2UgdmFyaWFudHMgYXJlIHByZXNlbnQgaW4gYSBkb2N1
bWVudCwgdGhlIGNvcnJlY3QgZWxlbWVudCBpcyBtYXRjaGVkIGJhc2VkIG9uIFNoaWZ0IGtleSBz
dGF0ZS4KICAgICAvLyBGaXJlZm94IG9ubHkgbWF0Y2hlcyBhbiBhY2Nlc3Mga2V5IGlmIFNoaWZ0
IGlzIG5vdCBwcmVzc2VkLCBhbmQgZG9lcyB0aGF0IGNhc2UtaW5zZW5zaXRpdmVseS4KLSAgICBB
U1NFUlQoIShhY2Nlc3NLZXlNb2RpZmllcnMoKSAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hp
ZnRLZXkpKTsKLSAgICBpZiAoKGV2dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlNoaWZ0S2V5KSAhPSBhY2Nlc3NLZXlNb2RpZmllcnMoKSkKKyAgICBBU1NFUlQoIShhY2Nl
c3NLZXlNb2RpZmllcnMoKSAmIFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KSk7CisgICAgaWYgKChl
dnQubW9kaWZpZXJzKCkgJiB+UGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1v
ZGlmaWVycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIGtleSA9IGV2dC51
bm1vZGlmaWVkVGV4dCgpOwogICAgIEVsZW1lbnQqIGVsZW0gPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5nZXRFbGVtZW50QnlBY2Nlc3NLZXkoa2V5Lmxvd2VyKCkpOwpAQCAtMjUyMCw3ICsyNTIzLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewogICAgICAgICAgICAg
Ly8gSWYgYSBrZXkgaXMgcHJlc3NlZCB3aGlsZSB0aGUgcGFuU2Nyb2xsIGlzIGluIHByb2dyZXNz
IHRoZW4gd2Ugd2FudCB0byBzdG9wCi0gICAgICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24gfHwgaW5pdGlhbEtleUV2ZW50
LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIAorICAgICAgICAg
ICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biB8
fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIAog
ICAgICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAogICAgICAgICAgICAgLy8g
SWYgd2Ugd2VyZSBpbiBwYW5zY3JvbGwgbW9kZSwgd2Ugc3dhbGxvdyB0aGUga2V5IGV2ZW50CkBA
IC0yNTUwLDI1ICsyNTUzLDI1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQ
bGF0Zm8KICAgICAvLyBPbiBXaW5kb3dzLCBXZWJLaXQgZXhwbGljaXRseSBjYWxscyBoYW5kbGVB
Y2Nlc3NLZXkoKSBpbnN0ZWFkIG9mIGRpc3BhdGNoaW5nIGEga2V5cHJlc3MgZXZlbnQgZm9yIFdN
X1NZU0NIQVIgbWVzc2FnZXMuCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIGN1cnJlbnRseSBtYXRj
aCBlaXRoZXIgTWFjIG9yIFdpbmRvd3MgYmVoYXZpb3IsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRo
ZXkgc2VuZCBjb21iaW5lZCBLZXlEb3duIGV2ZW50cy4KICAgICBib29sIG1hdGNoZWRBbkFjY2Vz
c0tleSA9IGZhbHNlOwotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQogICAgICAgICBtYXRjaGVkQW5BY2Nlc3NLZXkgPSBo
YW5kbGVBY2Nlc3NLZXkoaW5pdGlhbEtleUV2ZW50KTsKIAogICAgIC8vIEZJWE1FOiBpdCB3b3Vs
ZCBiZSBmYWlyIHRvIGxldCBhbiBpbnB1dCBtZXRob2QgaGFuZGxlIEtleVVwIGV2ZW50cyBiZWZv
cmUgRE9NIGRpc3BhdGNoLgotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpCisgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6S2V5VXAgfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpDaGFyKQogICAgICAgICByZXR1cm4gIW5vZGUtPmRpc3BhdGNoS2V5RXZlbnQo
aW5pdGlhbEtleUV2ZW50KTsKIAogICAgIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IG5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzKCk7CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjOwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlEb3duRXZlbnQgPSBpbml0
aWFsS2V5RXZlbnQ7ICAgIAotICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikKLSAgICAgICAga2V5RG93bkV2ZW50LmRpc2FtYmln
dWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24sIGJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUpOworICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBs
YXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCisgICAgICAgIGtleURvd25FdmVudC5kaXNhbWJpZ3Vh
dGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSk7CiAgICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleWRvd24gPSBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0
VmlldygpKTsKICAgICBpZiAobWF0Y2hlZEFuQWNjZXNzS2V5KQogICAgICAgICBrZXlkb3duLT5z
ZXREZWZhdWx0UHJldmVudGVkKHRydWUpOwogICAgIGtleWRvd24tPnNldFRhcmdldChub2RlKTsK
IAotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UmF3S2V5RG93bikgeworICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChrZXlk
b3duLCBlYyk7CiAgICAgICAgIC8vIElmIGZyYW1lIGNoYW5nZWQgYXMgYSByZXN1bHQgb2Yga2V5
ZG93biBkaXNwYXRjaCwgdGhlbiByZXR1cm4gdHJ1ZSB0byBhdm9pZCBzZW5kaW5nIGEgc3Vic2Vx
dWVudCBrZXlwcmVzcyBtZXNzYWdlIHRvIHRoZSBuZXcgZnJhbWUuCiAgICAgICAgIGJvb2wgY2hh
bmdlZEZvY3VzZWRGcmFtZSA9IG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lICE9IG1fZnJhbWUt
PnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtMjYw
Nyw3ICsyNjEwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwog
ICAgIH0KIAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlQcmVzc0V2ZW50ID0gaW5pdGlh
bEtleUV2ZW50OwotICAgIGtleVByZXNzRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7Cisg
ICAga2V5UHJlc3NFdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6
Q2hhciwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7CiAgICAgaWYgKGtleVByZXNzRXZlbnQu
dGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGtleWRvd25SZXN1bHQ7CiAgICAgUmVm
UHRyPEtleWJvYXJkRXZlbnQ+IGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVBy
ZXNzRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwpAQCAtMjc4Niw3
ICsyNzg5LDcgQEAgc3RhdGljIGJvb2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQQogCiBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBMZWZ0
QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgIT0gTW91c2VFdmVudE1vdmVkKSB7
CisgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5l
dmVudCgpLnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKSB7CiAgICAgICAgIC8v
IElmIHdlIGFsbG93ZWQgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGJyaWRnZSB0byBoYW5kbGUgYSBk
cmFnCiAgICAgICAgIC8vIGxhc3QgdGltZSwgdGhlbiBtX21vdXNlUHJlc3NlZCBtaWdodCBzdGls
bCBiZSBzZXQuIFNvIHdlCiAgICAgICAgIC8vIGNsZWFyIGl0IG5vdyB0byBtYWtlIHN1cmUgdGhl
IG5leHQgbW92ZSBhZnRlciBhIGRyYWcKQEAgLTI4MjIsNyArMjgyNSw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMKICAgICAvLyBGb3IgZHJhZ3Mgc3RhcnRpbmcg
aW4gdGhlIHNlbGVjdGlvbiwgdGhlIHVzZXIgbXVzdCB3YWl0IGJldHdlZW4gdGhlIG1vdXNlZG93
biBhbmQgbW91c2VkcmFnLAogICAgIC8vIG9yIGVsc2Ugd2UgYmFpbCBvbiB0aGUgZHJhZ2dpbmcg
c3R1ZmYgYW5kIGFsbG93IHNlbGVjdGlvbiB0byBvY2N1cgogICAgIGlmIChtX21vdXNlRG93bk1h
eVN0YXJ0RHJhZyAmJiBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3RlYWQgJiYgKGRyYWdTdGF0
ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSAmJiBldmVudC5ldmVu
dCgpLnRpbWVzdGFtcCgpIC0gbV9tb3VzZURvd25UaW1lc3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7
Ci0gICAgICAgIEFTU0VSVChldmVudC5ldmVudCgpLmV2ZW50VHlwZSgpID09IE1vdXNlRXZlbnRN
b3ZlZCk7CisgICAgICAgIEFTU0VSVChldmVudC5ldmVudCgpLnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZU1vdmVkKTsKICAgICAgICAgaWYgKChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYg
RHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewogICAgICAgICAgICAgLy8gLi4uIHVubGVzcyB0aGUg
bW91c2UgaXMgb3ZlciBhbiBpbWFnZSwgdGhlbiB3ZSBzdGFydCBkcmFnZ2luZyBqdXN0IHRoZSBp
bWFnZQogICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rp
b25JbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRs
ZXJCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2JsYWNr
YmVycnkvRXZlbnRIYW5kbGVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dGFic1Rv
QWxsRm9ybUNvbnRyb2xzCiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZp
ZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAg
cmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmZv
Y3VzRG9jdW1lbnRWaWV3KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZl
bnRIYW5kbGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDkgKzE0OCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lk
Z2V0TW91c2VEb3duRXYKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2Vsc2UKLSAgICBy
ZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6OkFsdEtleTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Vm
bC9FdmVudEhhbmRsZXJFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2
ICsxMjAsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50CiAKIHVu
c2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKLSAgICByZXR1cm4g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
OkFsdEtleTsKIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxl
ckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5k
bGVyR3RrLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ndGsv
RXZlbnRIYW5kbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiAvLyBHVEsrIG11c3Qgc2Nyb2xsIGhvcml6b250YWxseSBpZiB0aGUgbW91c2UgcG9pbnRlciBp
cyBvbiB0b3Agb2YgdGhlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxOSw5ICs3MTksOSBAQCB1bnNp
Z25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVyCiAgICAgLy8gU28sIHdlIHVzZSBD
b250cm9sIGluIHRoaXMgY2FzZSwgZXZlbiB0aG91Z2ggaXQgY29uZmxpY3RzIHdpdGggRW1hY3Mt
c3R5bGUga2V5IGJpbmRpbmdzLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTA3PiBmb3IgbW9yZSBkZXRhaWwuCiAgICAgaWYgKEFYT2JqZWN0
Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXk7CisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OwogCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw5ICsxMjQsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFz
c01vdXNlUmVsZWFzZUV2ZW50CiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycygpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4g
UGxhdGZvcm1FdmVudDo6Q3RybEtleSB8IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbHNlCi0g
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25Fdgog
CiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRI
YW5kbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRI
YW5kbGVyV3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3d4
L0V2ZW50SGFuZGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIFBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWEKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUV2ZW50X2gKKyNkZWZpbmUgUGxhdGZvcm1FdmVudF9o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1FdmVudCB7CitwdWJsaWM6
CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgTm9UeXBlID0gLTEsCisKKyAgICAgICAgLy8gUGxh
dGZvcm1LZXlib2FyZEV2ZW50CisgICAgICAgIEtleURvd24sCisgICAgICAgIEtleVVwLAorICAg
ICAgICBSYXdLZXlEb3duLAorICAgICAgICBDaGFyLAorCisgICAgICAgIC8vIFBsYXRmb3JtTW91
c2VFdmVudAorICAgICAgICBNb3VzZU1vdmVkLAorICAgICAgICBNb3VzZVByZXNzZWQsCisgICAg
ICAgIE1vdXNlUmVsZWFzZWQsCisgICAgICAgIE1vdXNlU2Nyb2xsLAorICAgICAgICAKKyAgICAg
ICAgLy8gUGxhdGZvcm1XaGVlbEV2ZW50CisgICAgICAgIFdoZWVsLAorICAgICAgICAKKyAgICAg
ICAgLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnQKKyAgICAgICAgR2VzdHVyZVNjcm9sbEJlZ2luLAor
ICAgICAgICBHZXN0dXJlU2Nyb2xsRW5kLAorICAgICAgICBHZXN0dXJlU2Nyb2xsVXBkYXRlLAor
ICAgICAgICBHZXN0dXJlVGFwLAorICAgICAgICBHZXN0dXJlVGFwRG93biwKKyAgICAgICAgR2Vz
dHVyZURvdWJsZVRhcCwKKyAgICB9OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQorCisKKyAgICAvLyBFdmVudCBNb2RpZmllcnMK
KworICAgIGVudW0gTW9kaWZpZXJLZXkgeworICAgICAgICBBbHRLZXkgPSAxIDw8IDAsCisgICAg
ICAgIEN0cmxLZXkgPSAxIDw8IDEsCisgICAgICAgIE1ldGFLZXkgPSAxIDw8IDIsCisgICAgICAg
IFNoaWZ0S2V5ID0gMSA8PCAzCisgICAgfTsKKworICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7
IHJldHVybiBtX3NoaWZ0S2V5OyB9CisgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4g
bV9jdHJsS2V5OyB9CisgICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtleTsg
fQorICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtleTsgfQorCisgICAg
dW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoYWx0S2V5
KCkgPyBBbHRLZXkgOiAwKQorICAgICAgICAgICAgfCAoY3RybEtleSgpID8gQ3RybEtleSA6IDAp
CisgICAgICAgICAgICB8IChtZXRhS2V5KCkgPyBNZXRhS2V5IDogMCkKKyAgICAgICAgICAgIHwg
KHNoaWZ0S2V5KCkgPyBTaGlmdEtleSA6IDApOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFBs
YXRmb3JtRXZlbnQoKQorICAgICAgICA6IG1fc2hpZnRLZXkoZmFsc2UpCisgICAgICAgICwgbV9j
dHJsS2V5KGZhbHNlKQorICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQorICAgICAgICAsIG1fbWV0
YUtleShmYWxzZSkKKyAgICAgICAgLCBtX3R5cGUoTm9UeXBlKQorICAgIHsKKyAgICB9CisKKyAg
ICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3NoaWZ0S2V5KGZhbHNlKQor
ICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKKyAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKKyAg
ICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgewor
ICAgIH0KKworICAgIFBsYXRmb3JtRXZlbnQoVHlwZSB0eXBlLCBib29sIHNoaWZ0S2V5LCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisgICAgICAgIDogbV9zaGlmdEtl
eShzaGlmdEtleSkKKyAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKKyAgICAgICAgLCBtX2Fs
dEtleShhbHRLZXkpCisgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCisgICAgICAgICwgbV90
eXBlKHR5cGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9zaGlmdEtleTsKKyAgICBib29s
IG1fY3RybEtleTsKKyAgICBib29sIG1fYWx0S2V5OworICAgIGJvb2wgbV9tZXRhS2V5OworICAg
IHVuc2lnbmVkIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFBsYXRmb3JtRXZlbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVFdmVudC5oCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0
MiArMjksMzAgQEAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudCB7CitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVF
dmVudCA6IHB1YmxpYyBQbGF0Zm9ybUV2ZW50IHsKIHB1YmxpYzoKLSAgICBlbnVtIFR5cGUgewot
ICAgICAgICBTY3JvbGxCZWdpblR5cGUsCi0gICAgICAgIFNjcm9sbEVuZFR5cGUsCi0gICAgICAg
IFNjcm9sbFVwZGF0ZVR5cGUsCi0gICAgICAgIFRhcFR5cGUsCi0gICAgICAgIFRhcERvd25UeXBl
LAotICAgICAgICBEb3VibGVUYXBUeXBlLAotICAgIH07Ci0KICAgICBQbGF0Zm9ybUdlc3R1cmVF
dmVudCgpCi0gICAgICAgIDogbV90eXBlKFNjcm9sbEJlZ2luVHlwZSkKKyAgICAgICAgOiBQbGF0
Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbikKICAgICAgICAgLCBt
X3RpbWVzdGFtcCgwKQorICAgICAgICAsIG1fZGVsdGFYKDApCisgICAgICAgICwgbV9kZWx0YVko
MCkKICAgICB7CiAgICAgfQogCi0gICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQoVHlwZSB0eXBlLCBj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
Y29uc3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgZmxvYXQgZGVsdGFYLCBjb25zdCBmbG9hdCBk
ZWx0YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0
YUtleSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudChU
eXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBkb3VibGUgdGltZXN0YW1wLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQor
ICAgICAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwg
bWV0YUtleSkKICAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0
YW1wKQogICAgICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgLCBtX2RlbHRhWShkZWx0
YVkpCi0gICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKLSAgICAgICAgLCBtX2N0cmxLZXko
Y3RybEtleSkKLSAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCi0gICAgICAgICwgbV9tZXRhS2V5
KG1ldGFLZXkpCiAgICAgewogICAgIH0KIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotCiAgICAgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGlvbjsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KICAgICBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0
aW9uOyB9IC8vIFNjcmVlbiBjb29yZGluYXRlcy4KIApAQCAtNzIsMjIgKzYwLDEzIEBAIHB1Ymxp
YzoKIAogICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9CiAgICAg
ZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KLSAgICBib29sIHNoaWZ0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgIGJvb2wgY3RybEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFL
ZXk7IH0KLQorICAgIAogcHJvdGVjdGVkOgotICAgIFR5cGUgbV90eXBlOwogICAgIEludFBvaW50
IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBkb3VibGUg
bV90aW1lc3RhbXA7CiAgICAgZmxvYXQgbV9kZWx0YVg7CiAgICAgZmxvYXQgbV9kZWx0YVk7Ci0g
ICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgIGJvb2wgbV9jdHJsS2V5OwotICAgIGJvb2wgbV9hbHRL
ZXk7Ci0gICAgYm9vbCBtX21ldGFLZXk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1L
ZXlib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDggQEAKICNpZm5kZWYg
UGxhdGZvcm1LZXlib2FyZEV2ZW50X2gKICNkZWZpbmUgUGxhdGZvcm1LZXlib2FyZEV2ZW50X2gK
IAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTY1LDQwICs2NiwxNCBAQCB0eXBlZGVmIHN0
cnVjdCBfRXZhc19FdmVudF9LZXlfVXAgRXZhc19FCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCA6IHB1YmxpYyBQbGF0
Zm9ybUV2ZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSB7Ci0gICAgICAgICAg
ICAvLyBLZXlEb3duIGlzIHNlbnQgYnkgcGxhdGZvcm1zIHN1Y2ggYXMgTWFjIE9TIFgsIGd0ayBh
bmQgUXQsIGFuZCBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYm90aCBwaHlzaWNhbCBwcmVzc2VkIGtl
eSwgYW5kIGl0cyB0cmFuc2xhdGlvbi4KLSAgICAgICAgICAgIC8vIEZvciBET00gcHJvY2Vzc2lu
ZywgaXQgbmVlZHMgdG8gYmUgZGlzYW1iaWd1YXRlZCBhcyBSYXdLZXlEb3duIG9yIENoYXIgZXZl
bnQuCi0gICAgICAgICAgICBLZXlEb3duLAotCi0gICAgICAgICAgICAvLyBLZXlVcCBpcyBzZW50
IGJ5IGFsbCBwbGF0Zm9ybXMuCi0gICAgICAgICAgICBLZXlVcCwKLQotICAgICAgICAgICAgLy8g
VGhlc2UgZXZlbnRzIGFyZSBzZW50IGJ5IHBsYXRmb3JtcyBzdWNoIGFzIFdpbmRvd3MgYW5kIHd4
V2lkZ2V0cy4gUmF3S2V5RG93biBvbmx5IGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHBoeXNpY2Fs
IGtleSwgYW5kIENoYXIKLSAgICAgICAgICAgIC8vIG9ubHkgaGFzIGluZm9ybWF0aW9uIGFib3V0
IGEgY2hhcmFjdGVyIGl0IHdhcyB0cmFuc2xhdGVkIGludG8uCi0gICAgICAgICAgICBSYXdLZXlE
b3duLAotICAgICAgICAgICAgQ2hhcgotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gTW9kaWZp
ZXJLZXkgewotICAgICAgICAgICAgQWx0S2V5ID0gMSA8PCAwLAotICAgICAgICAgICAgQ3RybEtl
eSA9IDEgPDwgMSwKLSAgICAgICAgICAgIE1ldGFLZXkgPSAxIDw8IDIsCi0gICAgICAgICAgICBT
aGlmdEtleSA9IDEgPDwgMwotICAgICAgICB9OwotCiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCgpCi0gICAgICAgICAgICA6IG1fdHlwZShLZXlEb3duKQorICAgICAgICAgICAgOiBQbGF0
Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24pCiAgICAgICAgICAgICAsIG1fYXV0b1Jl
cGVhdChmYWxzZSkKICAgICAgICAgICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoMCkKICAg
ICAgICAgICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSgwKQogICAgICAgICAgICAgLCBtX2lz
S2V5cGFkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAg
ICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAg
ICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCiAjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShDSFJPTUlVTSkKICAgICAgICAgICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkKICNlbmRpZgpA
QCAtMTEwLDggKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHsK
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisKICAgICAgICAgdm9pZCBkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSwg
Ym9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gZmFsc2UpOyAvLyBPbmx5IHVzZWQgb24g
cGxhdGZvcm1zIHRoYXQgbmVlZCBpdCwgaS5lLiB0aG9zZSB0aGF0IGdlbmVyYXRlIEtleURvd24g
ZXZlbnRzLgogCiAgICAgICAgIC8vIFRleHQgYXMgYXMgZ2VuZXJhdGVkIGJ5IHByb2Nlc3Npbmcg
YSB2aXJ0dWFsIGtleSBjb2RlIHdpdGggYSBrZXlib2FyZCBsYXlvdXQKQEAgLTEzOSwxNiArMTEz
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzQXV0b1JlcGVhdCgpIGNv
bnN0IHsgcmV0dXJuIG1fYXV0b1JlcGVhdDsgfQogICAgICAgICB2b2lkIHNldElzQXV0b1JlcGVh
dChib29sIGluKSB7IG1fYXV0b1JlcGVhdCA9IGluOyB9CiAgICAgICAgIGJvb2wgaXNLZXlwYWQo
KSBjb25zdCB7IHJldHVybiBtX2lzS2V5cGFkOyB9Ci0gICAgICAgIGJvb2wgc2hpZnRLZXkoKSBj
b25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgICAgIGJvb2wgY3RybEtleSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgICAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWx0S2V5OyB9Ci0gICAgICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YUtleTsgfQotICAgICAgICB1bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdCB7Ci0gICAgICAg
ICAgICByZXR1cm4gKGFsdEtleSgpID8gQWx0S2V5IDogMCkKLSAgICAgICAgICAgICAgICB8IChj
dHJsS2V5KCkgPyBDdHJsS2V5IDogMCkKLSAgICAgICAgICAgICAgICB8IChtZXRhS2V5KCkgPyBN
ZXRhS2V5IDogMCkKLSAgICAgICAgICAgICAgICB8IChzaGlmdEtleSgpID8gU2hpZnRLZXkgOiAw
KTsKLSAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBib29sIGN1cnJlbnRDYXBzTG9ja1N0YXRl
KCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldEN1cnJlbnRNb2RpZmllclN0YXRlKGJvb2wmIHNo
aWZ0S2V5LCBib29sJiBjdHJsS2V5LCBib29sJiBhbHRLZXksIGJvb2wmIG1ldGFLZXkpOwpAQCAt
MTkzLDcgKzE1Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgU3RyaW5nIG1fdGV4dDsKICAgICAg
ICAgU3RyaW5nIG1fdW5tb2RpZmllZFRleHQ7CiAgICAgICAgIFN0cmluZyBtX2tleUlkZW50aWZp
ZXI7CkBAIC0yMDEsMTAgKzE2NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50
IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlOwogICAgICAgICBpbnQgbV9uYXRpdmVWaXJ0dWFsS2V5
Q29kZTsKICAgICAgICAgYm9vbCBtX2lzS2V5cGFkOwotICAgICAgICBib29sIG1fc2hpZnRLZXk7
Ci0gICAgICAgIGJvb2wgbV9jdHJsS2V5OwotICAgICAgICBib29sIG1fYWx0S2V5OwotICAgICAg
ICBib29sIG1fbWV0YUtleTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgUmV0YWluUHRy
PE5TRXZlbnQ+IG1fbWFjRXZlbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybU1vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybU1vdXNlRXZlbnQuaAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgUGxhdGZvcm1Nb3VzZUV2ZW50X2gKIAogI2luY2x1ZGUgIkludFBvaW50
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogCiAjaWYgUExBVEZPUk0oR1RLKQogdHlw
ZWRlZiBzdHJ1Y3QgX0dka0V2ZW50QnV0dG9uIEdka0V2ZW50QnV0dG9uOwpAQCAtNjEsMTggKzYy
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICAvLyBUaGVzZSBidXR0b24gbnVt
YmVycyBtYXRjaCB0aGUgb25lcyB1c2VkIGluIHRoZSBET00gQVBJLCAwIHRocm91Z2ggMiwgZXhj
ZXB0IGZvciBOb0J1dHRvbiB3aGljaCBpc24ndCBzcGVjaWZpZWQuCiAgICAgZW51bSBNb3VzZUJ1
dHRvbiB7IE5vQnV0dG9uID0gLTEsIExlZnRCdXR0b24sIE1pZGRsZUJ1dHRvbiwgUmlnaHRCdXR0
b24gfTsKLSAgICBlbnVtIE1vdXNlRXZlbnRUeXBlIHsgTW91c2VFdmVudE1vdmVkLCBNb3VzZUV2
ZW50UHJlc3NlZCwgTW91c2VFdmVudFJlbGVhc2VkLCBNb3VzZUV2ZW50U2Nyb2xsIH07CiAgICAg
Ci0gICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKKyAgICBjbGFzcyBQbGF0Zm9ybU1vdXNl
RXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1FdmVudCB7CiAgICAgcHVibGljOgogICAgICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQoKQotICAgICAgICAgICAgOiBtX2J1dHRvbihOb0J1dHRvbikKLSAgICAg
ICAgICAgICwgbV9ldmVudFR5cGUoTW91c2VFdmVudE1vdmVkKQorICAgICAgICAgICAgOiBQbGF0
Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpCisgICAgICAgICAgICAsIG1fYnV0
dG9uKE5vQnV0dG9uKQogICAgICAgICAgICAgLCBtX2NsaWNrQ291bnQoMCkKLSAgICAgICAgICAg
ICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAg
ICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNl
KQogICAgICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgICAgICAgICAgLCBtX21vZGlmaWVy
RmxhZ3MoMCkKICNpZiBQTEFURk9STShNQUMpCkBAIC04MywxNyArNzksMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIE1vdXNlQnV0dG9uIGJ1dHRvbiwgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnQsIGJvb2wg
Y3RybCwgYm9vbCBhbHQsIGJvb2wgbWV0YSwgZG91YmxlIHRpbWVzdGFtcCkKLSAgICAgICAgICAg
IDogbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0
IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBNb3Vz
ZUJ1dHRvbiBidXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXApCisgICAgICAgICAg
ICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtl
eSkKKyAgICAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgICAgICwgbV9n
bG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAgICAgICAgICwgbV9idXR0b24oYnV0
dG9uKQotICAgICAgICAgICAgLCBtX2V2ZW50VHlwZShldmVudFR5cGUpCiAgICAgICAgICAgICAs
IG1fY2xpY2tDb3VudChjbGlja0NvdW50KQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0
KQotICAgICAgICAgICAgLCBtX2N0cmxLZXkoY3RybCkKLSAgICAgICAgICAgICwgbV9hbHRLZXko
YWx0KQotICAgICAgICAgICAgLCBtX21ldGFLZXkobWV0YSkKICAgICAgICAgICAgICwgbV90aW1l
c3RhbXAodGltZXN0YW1wKQogICAgICAgICAgICAgLCBtX21vZGlmaWVyRmxhZ3MoMCkKICNpZiBQ
TEFURk9STShNQUMpCkBAIC0xMDIsNiArOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICAsIG1fZGlkQWN0aXZhdGVXZWJWaWV3KGZhbHNlKQogI2VuZGlmCiAgICAgICAgIHsK
KyAgICAgICAgICAgIC8vQVNTRVJUKGlzUGxhdGZvcm1Nb3VzZUV2ZW50VHlwZSh0eXBlKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBjb25zdCBJbnRQb2ludCYgcG9zKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbjsgfQpAQCAtMTE0LDcgKzEwNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgaW50IG1vdmVtZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fbW92ZW1lbnREZWx0YS55KCk7
IH0KICNlbmRpZgogICAgICAgICBNb3VzZUJ1dHRvbiBidXR0b24oKSBjb25zdCB7IHJldHVybiBt
X2J1dHRvbjsgfQotICAgICAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2V2ZW50VHlwZTsgfQogICAgICAgICBpbnQgY2xpY2tDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpY2tDb3VudDsgfQogICAgICAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9zaGlmdEtleTsgfQogICAgICAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N0cmxLZXk7IH0KQEAgLTE0Miw3ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
ZGVmaW5lZChfX09CSkNfXykKICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KE5TRXZlbnQgKiwg
TlNWaWV3ICp3aW5kb3dWaWV3KTsKICNlbmRpZgotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQo
aW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0dG9uIGJ1dHRv
biwgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlLAorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQo
aW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0dG9uIGJ1dHRv
biwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcik7CiAgICAgICAgIGlu
dCBldmVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KQEAgLTE3MCwx
MiArMTYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbnRQb2ludCBtX21vdmVt
ZW50RGVsdGE7CiAjZW5kaWYKICAgICAgICAgTW91c2VCdXR0b24gbV9idXR0b247Ci0gICAgICAg
IE1vdXNlRXZlbnRUeXBlIG1fZXZlbnRUeXBlOwogICAgICAgICBpbnQgbV9jbGlja0NvdW50Owot
ICAgICAgICBib29sIG1fc2hpZnRLZXk7Ci0gICAgICAgIGJvb2wgbV9jdHJsS2V5OwotICAgICAg
ICBib29sIG1fYWx0S2V5OwotICAgICAgICBib29sIG1fbWV0YUtleTsKICAgICAgICAgZG91Ymxl
IG1fdGltZXN0YW1wOyAvLyB1bml0OiBzZWNvbmRzCiAgICAgICAgIHVuc2lnbmVkIG1fbW9kaWZp
ZXJGbGFnczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFBsYXRmb3JtV2hlZWxFdmVudF9oCiAKICNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0
IF9HZGtFdmVudFNjcm9sbCBHZGtFdmVudFNjcm9sbDsKQEAgLTg0LDE4ICs4NSwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgUGxhdGZvcm1XaGVl
bEV2ZW50IHsKKyAgICBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1F
dmVudCB7CiAgICAgcHVibGljOgogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoKQotICAgICAg
ICAgICAgOiBtX2RlbHRhWCgwKQorICAgICAgICAgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OldoZWVsKQorICAgICAgICAgICAgLCBtX2RlbHRhWCgwKQogICAgICAgICAgICAgLCBt
X2RlbHRhWSgwKQogICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKDApCiAgICAgICAgICAgICAs
IG1fd2hlZWxUaWNrc1koMCkKICAgICAgICAgICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAg
ICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2RpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZShmYWxzZSkKICNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShD
SFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzKGZhbHNlKQpAQCAtMTA3LDE3ICsxMDUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB9CiAKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEludFBvaW50IHBvc2l0
aW9uLCBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVks
IGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgUGxhdGZvcm1XaGVlbEV2ZW50
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgbWV0YUtleSkKLSAgICAgICAgICAgIDogbV9wb3NpdGlvbihwb3NpdGlv
bikKKyAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgc2hp
ZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSkKKyAgICAgICAgICAgICwgbV9wb3NpdGlv
bihwb3NpdGlvbikKICAgICAgICAgICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlv
bikKICAgICAgICAgICAgICwgbV9kZWx0YVgoZGVsdGFYKQogICAgICAgICAgICAgLCBtX2RlbHRh
WShkZWx0YVkpCiAgICAgICAgICAgICAsIG1fd2hlZWxUaWNrc1god2hlZWxUaWNrc1gpCiAgICAg
ICAgICAgICAsIG1fd2hlZWxUaWNrc1kod2hlZWxUaWNrc1kpCiAgICAgICAgICAgICAsIG1fZ3Jh
bnVsYXJpdHkoZ3JhbnVsYXJpdHkpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkp
Ci0gICAgICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQotICAgICAgICAgICAgLCBtX2FsdEtl
eShhbHRLZXkpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQogICAgICAgICAgICAg
LCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNpZiBQTEFURk9STShNQUMp
IHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQpAQCAtMTM5LDExICsxMzQsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkoKSBjb25zdCB7IHJldHVybiBtX2dyYW51bGFyaXR5OyB9CiAKLSAgICAgICAg
Ym9vbCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICAgICAgYm9v
bCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgICAgIGJvb2wgYWx0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICAgICAgYm9vbCBtZXRhS2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9Ci0KICAgICAgICAgaW50IHgoKSBjb25zdCB7IHJl
dHVybiBtX3Bvc2l0aW9uLngoKTsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KICAg
ICAgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLnkoKTsgfQogICAgICAgICBp
bnQgZ2xvYmFsWCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb24ueCgpOyB9IC8vIFNj
cmVlbiBjb29yZGluYXRlcy4KQEAgLTIwOCwxMCArMTk4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBmbG9hdCBtX3doZWVsVGlja3NYOwogICAgICAgICBmbG9hdCBtX3doZWVsVGlj
a3NZOwogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5
OwotICAgICAgICBib29sIG1fc2hpZnRLZXk7Ci0gICAgICAgIGJvb2wgbV9jdHJsS2V5OwotICAg
ICAgICBib29sIG1fYWx0S2V5OwotICAgICAgICBib29sIG1fbWV0YUtleTsKICAgICAgICAgYm9v
bCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZTsKICNpZiBQTEFURk9STShNQUMpIHx8IChQ
TEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgYm9vbCBtX2hhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw3
ICs0NzMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsVG9PZmZzZXRXCiAjaWYg
RU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6Onpvb20oY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKIHsKLSAgICBBU1NFUlQocGdlLnR5cGUoKSA9
PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgQVNTRVJUKHBnZS50
eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCk7CiAgICAgLy8gRklYTUU6
IG1vZGlmeSB0aGlzIHNvIHdlIGNhbiBzdGFydCBldmVuIGlmIHRoZSB0aW1lciBpcyBhY3RpdmUu
CiAgICAgaWYgKCFtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgbV9jdXJy
ZW50Wm9vbVNjYWxlID0gMTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
Tm9uZTo6em9vbShjb25zdCBQbGF0CiAgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNY
ID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS54KCk7CiAgICAgICAgIG1fem9v
bURhdGEubV9kZXNpcmVkVHJhbnNZID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24o
KS55KCk7CiAjaWYgRU5BQkxFKERPVUJMRV9UQVBfQ0VOVEVSUykKLSAgICAgICAgaWYgKHBnZS50
eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpIHsKKyAgICAgICAg
aWYgKHBnZS50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCkgewogICAg
ICAgICAgICAgLy8gWm9vbSB0byBjZW50cmUgb2YgZGlzcGxheS4gUGluY2gtdG8tem9vbSBtYXkg
bm90IHdhbnQgdGhpcyBiZWhhdmlvdXIuCiAgICAgICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJl
ZFRyYW5zWCArPSBtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSAvIDIgLSBwZ2UuZ2xv
YmFsUG9zaXRpb24oKS54KCk7CiAgICAgICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5z
WSArPSBtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlSGVpZ2h0KCkgLyAyIC0gcGdlLmdsb2JhbFBv
c2l0aW9uKCkueSgpOwpAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25l
OjpoYW5kbGVHZXN0dXJlRXYKIHsKICAgICBUUkFDRV9FVkVOVCgiU2Nyb2xsQW5pbWF0b3JOb25l
OjpoYW5kbGVHZXN0dXJlRXZlbnQiLCB0aGlzLCAwKTsKICAgICBzd2l0Y2ggKHBnZS50eXBlKCkp
IHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgorICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICAgICAgem9vbShwZ2UpOwog
ICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNr
QmVycnkuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjcsMjUgKzQyNywyMSBAQCBzdGF0aWMgaW5saW5lIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6VHlwCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5RG93bjoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Oktl
eURvd247CiAgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5
VXA6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwOworICAgICAg
ICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5Q2hhcjoKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOworICAgICAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6Q2hhcjsKICAgICB9CiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50IGV2ZW50KQot
ICAgIDogbV90eXBlKHRvV2ViQ29yZVBsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUoZXZlbnQudHlw
ZSgpKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQodG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZShldmVudC50eXBlKCkpLCBldmVudC5zaGlmdEFjdGl2ZSgpIHx8IChldmVudC5jaGFyYWN0
ZXIoKSA9PSBLRVlDT0RFX0JBQ0tfVEFCKSwgZXZlbnQuY3RybEFjdGl2ZSgpLCBldmVudC5hbHRB
Y3RpdmUoKSwgZmFsc2UpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllckZvckJs
YWNrQmVycnlDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpKQogICAgICwgbV9hdXRvUmVwZWF0
KGZhbHNlKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JC
bGFja0JlcnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKSkKICAgICAsIG1faXNLZXlwYWQo
ZmFsc2UpCi0gICAgLCBtX3NoaWZ0S2V5KGV2ZW50LnNoaWZ0QWN0aXZlKCkgfHwgKGV2ZW50LmNo
YXJhY3RlcigpID09IEtFWUNPREVfQkFDS19UQUIpKSAvLyBCYWNrVGFiIHNob3VsZCBiZSB0cmVh
dGVkIGFzIFNoaWZ0ICsgVGFiLgotICAgICwgbV9jdHJsS2V5KGV2ZW50LmN0cmxBY3RpdmUoKSkK
LSAgICAsIG1fYWx0S2V5KGV2ZW50LmFsdEFjdGl2ZSgpKQotICAgICwgbV9tZXRhS2V5KGZhbHNl
KQogICAgICwgbV91bm1vZGlmaWVkQ2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKQogewogICAg
IHVuc2lnbmVkIHNob3J0IGNoYXJhY3RlciA9IGFkanVzdENoYXJhY3RlckZyb21PUyhldmVudC5j
aGFyYWN0ZXIoKSk7CkBAIC00NjEsMTYgKzQ1NywxNiBAQCBib29sIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Y3VycmVudENhcHNMCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6VHlwZSB0eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCit2b2lkIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZl
bnQ6OlR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQogewogICAgIC8v
IENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIs
IGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VS
VChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBlOwogCiAgICAgaWYgKGJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0eXBlID09IFJhd0tleURv
d24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAg
ICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5n
KCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCShyZXZp
c2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJl
UmVjb2duaXplckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE3ICsxMjUsMTcg
QEAgYm9vbCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjppc092ZXJNaQogCiB2b2lkIEdlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFRhcERvd25HZXN0dXJlRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBn
ZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpUYXBEb3duVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBv
c2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXks
IG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duLCBtX2ZpcnN0VG91Y2hQb3Np
dGlvbiwgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAw
LmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2
b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7
Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6VGFwVHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVl
blBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxL
ZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3Jt
R2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsIG1fZmlyc3RUb3VjaFBvc2l0
aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAu
ZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZv
aWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kRG91YmxlQ2xpY2tHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJl
cykKIHsKLSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJz
dFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRL
ZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBl
bmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCwg
bV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RU
b3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21l
dGFLZXkpKTsKIH0KIAogUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzIEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQpAQCAt
MTU5LDEyICsxNTksMTIgQEAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVz
IAogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVC
ZWdpbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1
cmVzKQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQ
b2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwg
bV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQ
bGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4sIHRv
dWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwg
MC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwog
fQogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVF
bmQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJl
cywgZmxvYXQgeFZlbG9jaXR5LCBmbG9hdCB5VmVsb2NpdHkpCiB7Ci0gICAgZ2VzdHVyZXMtPmFw
cGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5k
VHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91
Y2hUaW1lLCB4VmVsb2NpdHksIHlWZWxvY2l0eSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2Fs
dEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVF
dmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kLCB0b3VjaFBvaW50LnBvcygpLCB0
b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIHhWZWxvY2l0eSwgeVZlbG9j
aXR5LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAog
dm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRl
KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMp
CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBl
bmRTYwogICAgIGZsb2F0IGRlbHRhWCh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1fZmlyc3RUb3Vj
aFBvc2l0aW9uLngoKSk7CiAgICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9pbnQucG9zKCkueSgpIC0g
bV9maXJzdFRvdWNoUG9zaXRpb24ueSgpKTsKIAotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZv
cm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGUsIHRv
dWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwg
ZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtl
eSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5z
Y3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCBkZWx0YVgsIGRlbHRhWSwgbV9zaGlmdEtleSwg
bV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiAgICAgbV9maXJzdFRvdWNoUG9zaXRp
b24gPSB0b3VjaFBvaW50LnBvcygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50
Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDggKzQ4LDggQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmln
dWF0ZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKICAgICAvLyBDYW4gb25seSBj
aGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNr
IGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBBU1NFUlQobV90eXBlID09
IEtleURvd24pOwotICAgIEFTU0VSVCh0eXBlID09IFJhd0tleURvd24gfHwgdHlwZSA9PSBDaGFy
KTsKKyAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pOworICAgIEFT
U0VSVCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gfHwgdHlwZSA9PSBQbGF0Zm9y
bUV2ZW50OjpDaGFyKTsKICAgICBtX3R5cGUgPSB0eXBlOwogICAgIGlmIChiYWNrd2FyZENvbXBh
dGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCShyZXZpc2lvbiAxMDMw
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NywyNiArMjk3LDI4IEBAIGJvb2wgUG9wdXBDb250YWlu
ZXI6OmhhbmRsZVRvdWNoRXZlbnQoY28KIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAg
IHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlRhcFR5cGU6IHsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1v
dmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigp
LCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVF
dmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0
S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7
Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1cmVFdmVudC5w
b3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91
c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5
KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVy
ZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0
dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJlbGVhc2Vk
LCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZl
bnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5
KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlVGFwOiB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9C
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFt
cCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVy
ZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5h
bHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgp
KTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5w
b3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxh
dGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZl
bnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtl
eSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwog
ICAgICAgICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtlTW91c2VNb3ZlKTsKICAgICAgICAg
aGFuZGxlTW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAgICAgIGhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CisgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CisgICAgY2FzZSBQbGF0
Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOiB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxF
dmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJl
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZl
bnQuZGVsdGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIDEyMC4wZiwgZ2VzdHVyZUV2ZW50
LmRlbHRhWSgpIC8gMTIwLjBmLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgZ2VzdHVyZUV2ZW50
LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXko
KSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSk7CiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3lu
dGhldGljV2hlZWxFdmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpUYXBEb3duVHlwZToKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxC
ZWdpbjoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgY2Fz
ZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93bjoKICAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlz
dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBMaXN0Qm94LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDEy
ICsxOTksMTIgQEAgc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJUeXBlRXZlbnQoY29uc3QgUAogICAg
IC8vIFdlIHVzZSBSYXdLZXlEb3duL0NoYXIvS2V5VXAgZXZlbnQgc2NoZW1lIG9uIGFsbCBwbGF0
Zm9ybXMsCiAgICAgLy8gc28gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyIChub3QgUmF3S2V5
RG93bikgdHlwZSBldmVudAogICAgIC8vIGlzIGNvbnNpZGVyZWQgYXMgY2hhcmFjdGVyIHR5cGUg
ZXZlbnQuCi0gICAgcmV0dXJuIGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OkNoYXI7CisgICAgcmV0dXJuIGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyOwog
fQogCiBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6S2V5VXApCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpLZXlVcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW51bUl0ZW1zKCkgJiYg
ZXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgIT0gVktFWV9FU0NBUEUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWMubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg4Myw5ICs4ODMsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6
OmhhbmRsZVdoCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7Ci0gICAg
aWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJl
Z2luVHlwZSkKKyAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVyZSgpOwotICAgIGVs
c2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEVuZFR5cGUpCisgICAgZWxzZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlU2Nyb2xsRW5kKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJlKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRF
ZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRFZmwuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsMTMgKzQwLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93
biogZXZlbnQpCi0gICAgOiBtX3R5cGUoS2V5RG93bikKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVy
cywgIkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMs
ICJBbHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRh
IikpCiAgICAgLCBtX3RleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSkKICAgICAs
IG1fdW5tb2RpZmllZFRleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSkKLSAgICAs
IG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJT
aGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKIHsKICAgICBTdHJp
bmcga2V5TmFtZSA9IFN0cmluZyhldmVudC0+a2V5KTsKICAgICBtX2tleUlkZW50aWZpZXIgPSBr
ZXlJZGVudGlmaWVyRm9yRXZhc0tleU5hbWUoa2V5TmFtZSk7CkBAIC01OCwxMiArNTQsOCBAQCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiB9CiAKIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1Vw
KiBldmVudCkKLSAgICA6IG1fdHlwZShLZXlVcCkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5VXAsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJD
b250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0
IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQog
ICAgICwgbV90ZXh0KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZykpCi0gICAgLCBtX3No
aWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQi
KSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiB7CiAgICAgU3RyaW5nIGtl
eU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7CiAgICAgbV9rZXlJZGVudGlmaWVyID0ga2V5SWRl
bnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpOwpAQCAtNzksNyArNzEsNyBAQCB2b2lkIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAgICAgQVNTRVJUKG1fdHlwZSA9PSBL
ZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBlOwogCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93
bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmco
KTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtTW91c2VFdmVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw0MyArNDgsMzEgQEAgdm9pZCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OnNl
dENsaWNrQ291bnQodQogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBJbnRQb2ludCBwb3NpdGlvbikK
LSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24ueCgp
LCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQorICAgIDogUGxhdGZvcm1FdmVudChQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVu
dC0+bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5t
b2RpZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiTWV0YSIpKQorICAgICwgbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLnggLSBw
b3NpdGlvbi54KCksIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCiAgICAgLCBtX2ds
b2JhbFBvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNhbnZhcy55KSkK
ICAgICAsIG1fYnV0dG9uKE1vdXNlQnV0dG9uKGV2ZW50LT5idXR0b24gLSAxKSkKLSAgICAsIG1f
ZXZlbnRUeXBlKE1vdXNlRXZlbnRQcmVzc2VkKQotICAgICwgbV9zaGlmdEtleShldmFzX2tleV9t
b2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxL
ZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIikp
Ci0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVy
cywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVu
dC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkK
IHsKICAgICBzZXRDbGlja0NvdW50KGV2ZW50LT5mbGFncyk7CiB9CiAKIFBsYXRmb3JtTW91c2VF
dmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ZW50
LCBJbnRQb2ludCBwb3NpdGlvbikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNh
bnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQor
ICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLCBldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21v
ZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2Rp
Zmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9p
bnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3Np
dGlvbi55KCkpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFz
LngsIGV2ZW50LT5jYW52YXMueSkpCiAgICAgLCBtX2J1dHRvbihNb3VzZUJ1dHRvbihldmVudC0+
YnV0dG9uIC0gMSkpCi0gICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50UmVsZWFzZWQpCi0gICAg
LCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAi
U2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQt
Pm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVy
X2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19r
ZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAgICAgLCBtX3Rp
bWVzdGFtcChjdXJyZW50VGltZSgpKQogewogICAgIHNldENsaWNrQ291bnQoZXZlbnQtPmZsYWdz
KTsKIH0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9Nb3ZlKiBldmVudCwgSW50UG9pbnQgcG9zaXRpb24pCi0gICAgOiBtX3Bv
c2l0aW9uKEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50
LT5jdXIuY2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZp
ZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVy
cywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1l
dGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCAtIHBv
c2l0aW9uLngoKSwgZXZlbnQtPmN1ci5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCiAgICAgLCBt
X2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLngsIGV2ZW50LT5jdXIu
Y2FudmFzLnkpKQogICAgICwgbV9idXR0b24oTW91c2VCdXR0b24oZXZlbnQtPmJ1dHRvbnMgLSAx
KSkKLSAgICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRNb3ZlZCkKICAgICAsIG1fY2xpY2tDb3Vu
dCgwKQotICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNf
c2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRh
S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQog
ICAgICwgbV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwuY3BwCShy
ZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1X
aGVlbEV2ZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTMgKzQzLDEwIEBAIGVudW0g
ewogfTsKIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCi0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2LT5j
YW52YXMueCwgZXYtPmNhbnZhcy55KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVu
dDo6V2hlZWwsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiU2hpZnQi
KSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJDb250cm9sIiksIGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5X21v
ZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICwgbV9wb3NpdGlvbihJ
bnRQb2ludChldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0
aW9uKEludFBvaW50KGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KSkKICAgICAsIG1fZ3JhbnVs
YXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtl
eShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAg
ICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQWx0
IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmll
cnMsICJNZXRhIikpCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkK
IHsKICAgICAvLyBBIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgKGluIEVGTCkgdGhhdCB3ZSBhcmUg
c2Nyb2xsaW5nIGRvd24sIHNvIHdlIG5lZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCShyZXZpc2lv
biAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIFN0cmluZyBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OnNpbmdsZUNoYXIKIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdp
dGggdGhlIG90aGVyIHBsYXRmb3JtIGV2ZW50IGNvbnN0cnVjdG9ycwogLy8gVE9ETzogbV9nZGtF
dmVudEtleSBzaG91bGQgYmUgcmVmY291bnRlZAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQotICAgIDogbV90eXBlKChldmVu
dC0+dHlwZSA9PSBHREtfS0VZX1JFTEVBU0UpID8gS2V5VXAgOiBLZXlEb3duKQorICAgIDogUGxh
dGZvcm1FdmVudCgoZXZlbnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IFBsYXRmb3JtRXZl
bnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93biwgKGV2ZW50LT5zdGF0ZSAmIEdES19T
SElGVF9NQVNLKSB8fCAoZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFiKSwgZXZlbnQt
PnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSywgZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSywg
ZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSykKICAgICAsIG1fdGV4dChzaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCkpCiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KHNpbmdsZUNo
YXJhY3RlclN0cmluZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJ
ZGVudGlmaWVyRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkKQEAgLTU1NSwxMCArNTU1LDYg
QEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogICAgICwgbV93aW5k
b3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2
YWwpKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+a2V5dmFsKQogICAgICwg
bV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAmJiBldmVudC0+a2V5dmFs
IDw9IEdES19LUF85KQotICAgICwgbV9zaGlmdEtleSgoZXZlbnQtPnN0YXRlICYgR0RLX1NISUZU
X01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tUYWIpKQotICAgICwgbV9j
dHJsS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCi0gICAgLCBtX2FsdEtleShl
dmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQotICAgICwgbV9tZXRhS2V5KGV2ZW50LT5zdGF0
ZSAmIEdES19NRVRBX01BU0spCiAgICAgLCBtX2dka0V2ZW50S2V5KGV2ZW50KQogewogfQpAQCAt
NTcyLDcgKzU2OCw3IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUK
ICAgICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZl
bnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1f
dW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAJ
KHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9y
bU1vdXNlRXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw5IEBAIFBsYXRm
b3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEcKICAgICBjYXNlIEdES18yQlVUVE9O
X1BSRVNTOgogICAgIGNhc2UgR0RLXzNCVVRUT05fUFJFU1M6CiAgICAgY2FzZSBHREtfQlVUVE9O
X1JFTEVBU0U6Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgaWYgKGV2
ZW50LT50eXBlID09IEdES19CVVRUT05fUkVMRUFTRSkgewotICAgICAgICAgICAgbV9ldmVudFR5
cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAgICAgICAgbV9jbGlja0NvdW50ID0gMDsKICAgICAg
ICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTKQogICAgICAgICAg
ICAgbV9jbGlja0NvdW50ID0gMTsKQEAgLTg3LDcgKzg3LDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50
OjpQbGF0Zm9ybU1vdXNlRXZlbnQoRwogCiAgICAgc3dpdGNoIChtb3Rpb24tPnR5cGUpIHsKICAg
ICBjYXNlIEdES19NT1RJT05fTk9USUZZOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZl
bnRNb3ZlZDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAg
ICAgICAgbV9idXR0b24gPSBOb0J1dHRvbjsKICAgICAgICAgbV9jbGlja0NvdW50ID0gMDsKICAg
ICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1X
aGVlbEV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDggQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVs
RXZlbnQoRwogewogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkZWx0YSA9IDE7CiAKKyAgICBtX3R5
cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKKwogICAgIG1fZGVsdGFYID0gMDsKICAgICBtX2Rl
bHRhWSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9LZXlFdmVudElP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5RXZlbnRJ
T1MubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9L
ZXlFdmVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsMTcgKzUwLDEzIEBAIHN0YXRpYyBT
dHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KFcKIH0KIAogUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoV2ViRXZlbnQgKmV2ZW50KQotICAgIDogbV90eXBl
KGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlVcCA/IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5
VXAgOiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24pCisgICAgOiBQbGF0Zm9ybUV2ZW50
KGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlVcCA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01h
c2tTaGlmdCwgZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb250cm9sLCBl
dmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSwgZXZlbnQubW9k
aWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kKQogICAgICwgbV90ZXh0KGV2ZW50
LmNoYXJhY3RlcnMpCiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KGV2ZW50LmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycykKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5
RXZlbnQoZXZlbnQpKQogICAgICwgbV9hdXRvUmVwZWF0KGV2ZW50LmlzS2V5UmVwZWF0aW5nKQog
ICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoZXZlbnQua2V5Q29kZSkKICAgICAsIG1faXNL
ZXlwYWQoZmFsc2UpIC8vIGlQaG9uZSBkb2VzIG5vdCBkaXN0aW5ndWlzaCB0aGUgbnVtcGFkIDxy
ZGFyOi8vcHJvYmxlbS83MTkwODM1PgotICAgICwgbV9zaGlmdEtleShldmVudC5tb2RpZmllckZs
YWdzICYgV2ViRXZlbnRGbGFnTWFza1NoaWZ0KQotICAgICwgbV9jdHJsS2V5KGV2ZW50Lm1vZGlm
aWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29udHJvbCkKLSAgICAsIG1fYWx0S2V5KGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlKQotICAgICwgbV9tZXRh
S2V5KGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZCkKICAgICAs
IG1fRXZlbnQoZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlE
b3duIHx8IGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlVcCk7CkBAIC05NCw3ICs5MCw3IEBAIHZv
aWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUKICAgICBpZiAoYmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUgPT0gUmF3
S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsK
ICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBT
dHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0tleUV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcg
QEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRQogfQogCiBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCkKLSAg
ICA6IG1fdHlwZShpc0tleVVwRXZlbnQoZXZlbnQpID8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpL
ZXlVcCA6IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICA6IFBsYXRmb3JtRXZl
bnQoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmllckZs
YWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21t
YW5kS2V5TWFzaykKICAgICAsIG1fdGV4dCh0ZXh0RnJvbUV2ZW50KGV2ZW50KSkKICAgICAsIG1f
dW5tb2RpZmllZFRleHQodW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpKQogICAgICwgbV9r
ZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCkpCkBAIC0xOTcsMTAg
KzE5Nyw2IEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKICAgICAs
IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoZXZlbnQp
KQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pCiAgICAgLCBt
X2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoZXZlbnQpKQotICAgICwgbV9zaGlmdEtleShbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAsIG1fY3RybEtleShbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAgICwgbV9hbHRLZXkoW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQotICAgICwgbV9tZXRhS2V5KFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAgICAgLCBtX21hY0V2ZW50
KGV2ZW50KQogewogICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBk
b24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91
c2VFdmVudE1hYy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDU3
ICsxMTksNDkgQEAgSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50ICpldgogICAg
IH0KIH0KIAotc3RhdGljIE1vdXNlRXZlbnRUeXBlIG1vdXNlRXZlbnRGb3JOU0V2ZW50KE5TRXZl
bnQqIGV2ZW50KSAKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1vdXNlRXZlbnRGb3JOU0V2
ZW50KE5TRXZlbnQqIGV2ZW50KSAKIHsKICAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewogICAg
IGNhc2UgTlNTY3JvbGxXaGVlbDoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRTY3JvbGw7Cisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVNjcm9sbDsKICAgICBjYXNlIE5TTGVm
dE1vdXNlRHJhZ2dlZDoKICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6CiAgICAgY2FzZSBO
U090aGVyTW91c2VEcmFnZ2VkOgogICAgIGNhc2UgTlNNb3VzZU1vdmVkOgotICAgICAgICByZXR1
cm4gTW91c2VFdmVudE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZDsKICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKICAgICBjYXNlIE5TUmlnaHRNb3VzZURv
d246CiAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICByZXR1cm4gTW91c2VFdmVu
dFByZXNzZWQ7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAg
ICAgY2FzZSBOU0xlZnRNb3VzZVVwOgogICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6CiAgICAgY2Fz
ZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgfQogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRm
b3JtTW91c2VFdmVudChOU0V2ZW50KiBldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQotICAgIDog
bV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKKyAgICA6IFBsYXRm
b3JtRXZlbnQobW91c2VFdmVudEZvck5TRXZlbnQoZXZlbnQpLCBbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5
TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQorICAgICwgbV9wb3NpdGlvbihwb2lu
dEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xv
YmFsUG9pbnRGb3JFdmVudChldmVudCkpCiAgICAgLCBtX2J1dHRvbihtb3VzZUJ1dHRvbkZvckV2
ZW50KGV2ZW50KSkKLSAgICAsIG1fZXZlbnRUeXBlKG1vdXNlRXZlbnRGb3JOU0V2ZW50KGV2ZW50
KSkKICAgICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50Rm9yRXZlbnQoZXZlbnQpKQotICAgICwg
bV9zaGlmdEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAs
IG1fY3RybEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAg
ICwgbV9hbHRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQot
ICAgICwgbV9tZXRhS2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2sp
CiAgICAgLCBtX3RpbWVzdGFtcChbZXZlbnQgdGltZXN0YW1wXSkKICAgICAsIG1fbW9kaWZpZXJG
bGFncyhbZXZlbnQgbW9kaWZpZXJGbGFnc10pCiAgICAgLCBtX2V2ZW50TnVtYmVyKFtldmVudCBl
dmVudE51bWJlcl0pCiB7CiB9CiAKLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2
ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBi
dXR0b24sIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxh
dGZvcm1Nb3VzZUV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBN
b3VzZUJ1dHRvbiBidXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKICAgICAgICAgICAg
ICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAogICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcikKLSAgICA6IG1fcG9z
aXRpb24oSW50UG9pbnQoeCwgeSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5
LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpCisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KHgs
IHkpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChnbG9iYWxYLCBnbG9iYWxZKSkK
ICAgICAsIG1fYnV0dG9uKGJ1dHRvbikKLSAgICAsIG1fZXZlbnRUeXBlKGV2ZW50VHlwZSkKICAg
ICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50KQotICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkK
LSAgICAsIG1fY3RybEtleShjdHJsS2V5KQotICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICwg
bV9tZXRhS2V5KG1ldGFLZXkpCiAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCiAgICAgLCBt
X21vZGlmaWVyRmxhZ3MobW9kaWZpZXJGbGFncykKICAgICAsIG1fZXZlbnROdW1iZXIoZXZlbnRO
dW1iZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMzEsOSArMTAz
MSw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQKIAogdm9pZCBT
Y3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7Ci0gICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0g
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKKyAgICBpZiAoZ2VzdHVyZUV2
ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAg
IGJlZ2luU2Nyb2xsR2VzdHVyZSgpOwotICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCisgICAgZWxzZSBpZiAoZ2Vz
dHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kKQogICAg
ICAgICBlbmRTY3JvbGxHZXN0dXJlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTAsMTMgKzkwLDEwIEBAIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZUZvckUK
IH0KIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCogZXZl
bnQsIE5TVmlldyAqd2luZG93VmlldykKLSAgICA6IG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChl
dmVudCwgd2luZG93VmlldykpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Oldo
ZWVsLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNB
bHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNr
KQorICAgICwgbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKICAg
ICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkpCiAgICAgLCBt
X2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAsIG1fY3RybEtleShb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAgICwgbV9hbHRLZXko
W2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQotICAgICwgbV9tZXRh
S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAgICAgLCBtX3Bo
YXNlKHBoYXNlRm9yRXZlbnQoZXZlbnQpKQogICAgICwgbV9tb21lbnR1bVBoYXNlKG1vbWVudHVt
UGhhc2VGb3JFdmVudChldmVudCkpCiAgICAgLCBtX3RpbWVzdGFtcChbZXZlbnQgdGltZXN0YW1w
XSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRRdC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBTdHJpbmcga2V5VGV4dEZvcktleUV2ZW50KGNvbnN0
IFEKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KFFLZXlFdmVu
dCogZXZlbnQpCiB7CiAgICAgY29uc3QgaW50IHN0YXRlID0gZXZlbnQtPm1vZGlmaWVycygpOwot
ICAgIG1fdHlwZSA9IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6S2V5UmVsZWFzZSkgPyBLZXlV
cCA6IEtleURvd247CisgICAgbV90eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlS
ZWxlYXNlKSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93bjsK
ICAgICBtX3RleHQgPSBrZXlUZXh0Rm9yS2V5RXZlbnQoZXZlbnQpOwogICAgIG1fdW5tb2RpZmll
ZFRleHQgPSBtX3RleHQ7IC8vIEZJWE1FOiBub3QgY29ycmVjdAogICAgIG1fa2V5SWRlbnRpZmll
ciA9IGtleUlkZW50aWZpZXJGb3JRdEtleUNvZGUoZXZlbnQtPmtleSgpKTsKQEAgLTYxNCwxMCAr
NjE0LDEwIEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKIHZvaWQg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSB0eXBl
LCBib29sKQogewogICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBS
YXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZl
cnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNTRVJUKG1fdHlw
ZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBlOwogCi0gICAg
aWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5t
b2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2
ZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMsNDIgQEAgc3RhdGljIHZvaWQg
bW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleQogICAgIHNoaWZ0S2V5ID0ga2V5Ym9hcmRNb2Rp
ZmllcnMgJiBRdDo6U2hpZnRNb2RpZmllcjsKIH0KIAotc3RhdGljIHZvaWQgbW91c2VFdmVudFR5
cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoY29uc3QgUUV2ZW50KiBldmVudCwgTW91c2VFdmVu
dFR5cGUmIG1vdXNlRXZlbnRUeXBlLCBNb3VzZUJ1dHRvbiYgbW91c2VCdXR0b24pCitzdGF0aWMg
dm9pZCBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChjb25zdCBRRXZlbnQq
IGV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpUeXBlJiBtb3VzZUV2ZW50VHlwZSwgTW91c2VCdXR0b24m
IG1vdXNlQnV0dG9uKQogewogICAgIGVudW0geyBNb3VzZUV2ZW50LCBHcmFwaGljc1NjZW5lTW91
c2VFdmVudCB9IGZyYW1ld29ya01vdXNlRXZlbnRUeXBlOwogICAgIHN3aXRjaCAoZXZlbnQtPnR5
cGUoKSkgewogICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENsaWNrOgogICAgIGNhc2Ug
UUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlw
ZSA9IE1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNz
ZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2Vk
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlOgog
ICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnQ7Ci0gICAgICAgIG1v
dXNlRXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlw
ZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUUV2ZW50OjpNb3VzZU1vdmU6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0g
TW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7Cisg
ICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAg
ICAgYnJlYWs7CiAjaWYgIWRlZmluZWQoUVRfTk9fR1JBUEhJQ1NWSUVXKQogICAgIGNhc2UgUUV2
ZW50OjpHcmFwaGljc1NjZW5lTW91c2VEb3VibGVDbGljazoKICAgICBjYXNlIFFFdmVudDo6R3Jh
cGhpY3NTY2VuZU1vdXNlUHJlc3M6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0g
R3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VF
dmVudFByZXNzZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2Vu
ZU1vdXNlUmVsZWFzZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBHcmFwaGlj
c1NjZW5lTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50UmVs
ZWFzZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxl
YXNlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3Vz
ZU1vdmU6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gR3JhcGhpY3NTY2VuZU1v
dXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAg
ICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAg
IGJyZWFrOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudDsKLSAgICAg
ICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1vdXNlRXZlbnRU
eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CkBAIC04NiwxMiArODYsMTIgQEAgc3RhdGljIHZvaWQgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1
dHRvbgogICAgIHN3aXRjaCAoZnJhbWV3b3JrTW91c2VFdmVudFR5cGUpIHsKICAgICBjYXNlIE1v
dXNlRXZlbnQ6IHsKICAgICAgICAgY29uc3QgUU1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0
aWNfY2FzdDxjb25zdCBRTW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICAgICAgbW91c2VCdXR0b25z
ID0gbW91c2VFdmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9u
cygpIDogbW91c2VFdmVudC0+YnV0dG9uKCk7CisgICAgICAgIG1vdXNlQnV0dG9ucyA9IG1vdXNl
RXZlbnRUeXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0
b25zKCkgOiBtb3VzZUV2ZW50LT5idXR0b24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ6IHsKICAgICAgICAgY29uc3QgUUdyYXBoaWNz
U2NlbmVNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUUdyYXBoaWNz
U2NlbmVNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICBtb3VzZUJ1dHRvbnMgPSBtb3VzZUV2
ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25zKCkgOiBtb3Vz
ZUV2ZW50LT5idXR0b24oKTsKKyAgICAgICAgbW91c2VCdXR0b25zID0gbW91c2VFdmVudFR5cGUg
PT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSA6IG1v
dXNlRXZlbnQtPmJ1dHRvbigpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpAQCAtMTEz
LDcgKzExMyw3IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFEKIAog
ICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgaGFuZGxlIGEgY29udGV4dCBtZW51IGV2ZW50IGhl
cmUgYXMgd2UgZG8gaW4gUGxhdGZvcm1Nb3VzZUV2ZW50KFFJbnB1dEV2ZW50KiwgaW50KT8KICAg
ICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDcyOD4u
Ci0gICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoZXZlbnQsIG1fZXZl
bnRUeXBlLCBtX2J1dHRvbik7CisgICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21R
RXZlbnQoZXZlbnQsIG1fdHlwZSwgbV9idXR0b24pOwogICAgIG1fcG9zaXRpb24gPSBJbnRQb2lu
dChldmVudC0+cG9zKCkudG9Qb2ludCgpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9p
bnQoZXZlbnQtPnNjcmVlblBvcygpKTsKIApAQCAtMTMwLDcgKzEzMCw3IEBAIFBsYXRmb3JtTW91
c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFEKICNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkNvbnRleHRNZW51KSB7CiAgICAgICAg
IGlzQ29udGV4dE1lbnVFdmVudCA9IHRydWU7Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VF
dmVudFByZXNzZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3Nl
ZDsKICAgICAgICAgUUNvbnRleHRNZW51RXZlbnQqIGNlID0gc3RhdGljX2Nhc3Q8UUNvbnRleHRN
ZW51RXZlbnQqPihldmVudCk7CiAgICAgICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChjZS0+cG9z
KCkpOwogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoY2UtPmdsb2JhbFBvcygp
KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VF
dmVudChRCiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFpc0NvbnRleHRNZW51RXZlbnQpIHsKLSAg
ICAgICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoZXZlbnQsIG1fZXZl
bnRUeXBlLCBtX2J1dHRvbik7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25G
cm9tUUV2ZW50KGV2ZW50LCBtX3R5cGUsIG1fYnV0dG9uKTsKICAgICAgICAgUU1vdXNlRXZlbnQq
IG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxRTW91c2VFdmVudCo+KGV2ZW50KTsKICAgICAgICAg
bV9wb3NpdGlvbiA9IEludFBvaW50KG1vdXNlRXZlbnQtPnBvcygpKTsKICAgICAgICAgbV9nbG9i
YWxQb3NpdGlvbiA9IEludFBvaW50KG1vdXNlRXZlbnQtPmdsb2JhbFBvcygpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcAkocmV2aXNpb24gMTAz
MDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEwIEBAIHZvaWQgUGxhdGZvcm1XaGVlbEV2ZW50Ojph
cHBseURlbHRhKGludCAKIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQo
UUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBlKQogI2lmbmRlZiBRVF9OT19XSEVFTEVWRU5UCi0g
ICAgOiBtX3Bvc2l0aW9uKGUtPnBvcygpLnRvUG9pbnQoKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQo
UGxhdGZvcm1FdmVudDo6V2hlZWwsIGUtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0TW9kaWZpZXIs
IGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllciwgZS0+bW9kaWZpZXJzKCkgJiBR
dDo6QWx0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikKKyAgICAs
IG1fcG9zaXRpb24oZS0+cG9zKCkudG9Qb2ludCgpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihl
LT5zY3JlZW5Qb3MoKSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZl
bnQpCi0gICAgLCBtX3NoaWZ0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0TW9kaWZpZXIp
Ci0gICAgLCBtX2N0cmxLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQot
ICAgICwgbV9hbHRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIpCi0gICAgLCBt
X21ldGFLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0YU1vZGlmaWVyKQogICAgICwgbV9kaXJl
Y3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjZW5kaWYKIHsKQEAgLTc4LDEzICs3NSwx
MCBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChRCiAKIFBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBlKQogI2lmbmRlZiBR
VF9OT19XSEVFTEVWRU5UCi0gICAgOiBtX3Bvc2l0aW9uKGUtPnBvcygpKQorICAgIDogUGxhdGZv
cm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRN
b2RpZmllciwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyLCBlLT5tb2RpZmll
cnMoKSAmIFF0OjpBbHRNb2RpZmllciwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0YU1vZGlmaWVy
KQorICAgICwgbV9wb3NpdGlvbihlLT5wb3MoKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZS0+
Z2xvYmFsUG9zKCkpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50
KQotICAgICwgbV9zaGlmdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlmaWVyKQot
ICAgICwgbV9jdHJsS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKLSAg
ICAsIG1fYWx0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVyKQotICAgICwgbV9t
ZXRhS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikKICAgICAsIG1fZGlyZWN0
aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2VuZGlmCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Miw5ICsxNDIsOSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5k
b3dzS2V5CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KFdQQVJBTSBjb2Rl
LCBMUEFSQU0ga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHR5cGUpCitzdGF0
aWMgYm9vbCBpc0tleXBhZEV2ZW50KFdQQVJBTSBjb2RlLCBMUEFSQU0ga2V5RGF0YSwgUGxhdGZv
cm1FdmVudDo6VHlwZSB0eXBlKQogewotICAgIGlmICh0eXBlICE9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93biAmJiB0eXBlICE9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAp
CisgICAgaWYgKHR5cGUgIT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biAmJiB0eXBlICE9IFBs
YXRmb3JtRXZlbnQ6OktleVVwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2gg
KGNvZGUpIHsKQEAgLTE4NywxOCArMTg3LDE0IEBAIHN0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQo
V1BBUkFNIGNvZGUsIEwKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhVQ2hhciBjKSB7IHJldHVybiBTdHJpbmcoJmMsIDEpOyB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KEhXTkQsIFdQQVJBTSBjb2RlLCBMUEFSQU0ga2V5
RGF0YSwgVHlwZSB0eXBlLCBib29sIHN5c3RlbUtleSkKLSAgICA6IG1fdHlwZSh0eXBlKQotICAg
ICwgbV90ZXh0KCh0eXBlID09IENoYXIpID8gc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGNvZGUpIDog
U3RyaW5nKCkpCi0gICAgLCBtX3VubW9kaWZpZWRUZXh0KCh0eXBlID09IENoYXIpID8gc2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKGNvZGUpIDogU3RyaW5nKCkpCi0gICAgLCBtX2tleUlkZW50aWZpZXIo
KHR5cGUgPT0gQ2hhcikgPyBTdHJpbmcoKSA6IGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29k
ZShjb2RlKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgR2V0S2V5U3RhdGUoVktfU0hJRlQp
ICYgSElHSF9CSVRfTUFTS19TSE9SVCwgR2V0S2V5U3RhdGUoVktfQ09OVFJPTCkgJiBISUdIX0JJ
VF9NQVNLX1NIT1JULCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQs
IGZhbHNlKQorICAgICwgbV90ZXh0KCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKGNvZGUpIDogU3RyaW5nKCkpCisgICAgLCBtX3VubW9kaWZpZWRU
ZXh0KCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KGNvZGUpIDogU3RyaW5nKCkpCisgICAgLCBtX2tleUlkZW50aWZpZXIoKHR5cGUgPT0gUGxhdGZv
cm1FdmVudDo6Q2hhcikgPyBTdHJpbmcoKSA6IGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29k
ZShjb2RlKSkKICAgICAsIG1fYXV0b1JlcGVhdChISVdPUkQoa2V5RGF0YSkgJiBLRl9SRVBFQVQp
CiAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgodHlwZSA9PSBSYXdLZXlEb3duIHx8IHR5
cGUgPT0gS2V5VXApID8gY29kZSA6IDApCiAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKG1f
d2luZG93c1ZpcnR1YWxLZXlDb2RlKQogICAgICwgbV9pc0tleXBhZChpc0tleXBhZEV2ZW50KGNv
ZGUsIGtleURhdGEsIHR5cGUpKQotICAgICwgbV9zaGlmdEtleShHZXRLZXlTdGF0ZShWS19TSElG
VCkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9jdHJsS2V5KEdldEtleVN0YXRlKFZL
X0NPTlRST0wpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fYWx0S2V5KEdldEtleVN0
YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fbWV0YUtleShmYWxz
ZSkKICAgICAsIG1faXNTeXN0ZW1LZXkoc3lzdGVtS2V5KQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAJ
KHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9y
bU1vdXNlRXZlbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRp
YyBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbkZvckV2ZW50KEgKICAgICByZXR1cm4gcG9pbnQ7CiB9
CiAKLXN0YXRpYyBNb3VzZUV2ZW50VHlwZSBtZXNzYWdlVG9FdmVudFR5cGUoVUlOVCBtZXNzYWdl
KQorc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbWVzc2FnZVRvRXZlbnRUeXBlKFVJTlQgbWVz
c2FnZSkKIHsKICAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKICAgICAgICAgY2FzZSBXTV9MQlVUVE9O
REJMQ0xLOgpAQCAtNTgsMzUgKzU4LDMzIEBAIHN0YXRpYyBNb3VzZUV2ZW50VHlwZSBtZXNzYWdl
VG9FdmVudFR5cGUKICAgICAgICAgY2FzZSBXTV9MQlVUVE9ORE9XTjoKICAgICAgICAgY2FzZSBX
TV9SQlVUVE9ORE9XTjoKICAgICAgICAgY2FzZSBXTV9NQlVUVE9ORE9XTjoKLSAgICAgICAgICAg
IHJldHVybiBNb3VzZUV2ZW50UHJlc3NlZDsKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVByZXNzZWQ7CiAKICAgICAgICAgY2FzZSBXTV9MQlVUVE9OVVA6CiAgICAgICAg
IGNhc2UgV01fUkJVVFRPTlVQOgogICAgICAgICBjYXNlIFdNX01CVVRUT05VUDoKLSAgICAgICAg
ICAgIHJldHVybiBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxhdGZv
cm1FdmVudDo6TW91c2VSZWxlYXNlZDsKIAogI2lmICFPUyhXSU5DRSkKICAgICAgICAgY2FzZSBX
TV9NT1VTRUxFQVZFOgogI2VuZGlmCiAgICAgICAgIGNhc2UgV01fTU9VU0VNT1ZFOgotICAgICAg
ICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpNb3VzZU1vdmVkOwogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIC8vTW92ZSBpcyByZWxhdGl2ZWx5IGhhcm1s
ZXNzCi0gICAgICAgICAgICByZXR1cm4gTW91c2VFdmVudE1vdmVkOworICAgICAgICAgICAgcmV0
dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgfQogfQorCiBQbGF0Zm9ybU1vdXNl
RXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFN
IHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCBkaWRBY3RpdmF0ZVdlYlZpZXcpCi0gICAgOiBt
X3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKKyAgICA6IFBsYXRmb3Jt
RXZlbnQobWVzc2FnZVRvRXZlbnRUeXBlKG1lc3NhZ2UpLCB3UGFyYW0gJiBNS19TSElGVCwgd1Bh
cmFtICYgTUtfQ09OVFJPTCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NI
T1JULCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCisgICAgLCBt
X3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQogICAgICwgbV9j
bGlja0NvdW50KDApCi0gICAgLCBtX3NoaWZ0S2V5KHdQYXJhbSAmIE1LX1NISUZUKQotICAgICwg
bV9jdHJsS2V5KHdQYXJhbSAmIE1LX0NPTlRST0wpCi0gICAgLCBtX2FsdEtleShHZXRLZXlTdGF0
ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX21ldGFLZXkobV9hbHRL
ZXkpIC8vIEZJWE1FOiBXZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKICAgICAsIG1f
ZGlkQWN0aXZhdGVXZWJWaWV3KGRpZEFjdGl2YXRlV2ViVmlldykKLSAgICAsIG1fZXZlbnRUeXBl
KG1lc3NhZ2VUb0V2ZW50VHlwZShtZXNzYWdlKSkKKyAgICAsIG1fZXZlbnRUeXBlKCkKICAgICAs
IG1fbW9kaWZpZXJGbGFncyh3UGFyYW0pCiB7CiAgICAgbV90aW1lc3RhbXAgPSA6OkdldFRpY2tD
b3VudCgpKjAuMDAxOyAvLyBHZXRUaWNrQ291bnQgcmV0dXJucyBtaWxsaXNlY29uZHMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAJKHJldmlz
aW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTAgKzY2LDcgQEAgc3RhdGljIGludCB2ZXJ0aWNh
bFNjcm9sbExpbmVzKCkKIH0KIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZl
bnQoSFdORCBoV25kLCBjb25zdCBGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBGbG9hdFBvaW50JiBs
b2NhdGlvbikKLSAgICA6IG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgLCBtX2N0cmxLZXkoZmFsc2Up
Ci0gICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAsIG1fbWV0YUtleShmYWxzZSkKKyAgICA6IFBs
YXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKQogICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiB7CiAgICAg
bV9kZWx0YVggPSBkZWx0YS53aWR0aCgpOwpAQCAtODgsMTIgKzg1LDkgQEAgUGxhdGZvcm1XaGVl
bEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoSAogfQogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudChIV05EIGhXbmQsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0s
IGJvb2wgaXNNb3VzZUhXaGVlbCkKLSAgICA6IG1fcG9zaXRpb24ocG9zaXRpb25Gb3JFdmVudCho
V25kLCBsUGFyYW0pKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwg
d1BhcmFtICYgTUtfU0hJRlQsIHdQYXJhbSAmIE1LX0NPTlRST0wsIEdldEtleVN0YXRlKFZLX01F
TlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJ
VF9NQVNLX1NIT1JUKQorICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQ
YXJhbSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uRm9yRXZlbnQoaFdu
ZCwgbFBhcmFtKSkKLSAgICAsIG1fc2hpZnRLZXkod1BhcmFtICYgTUtfU0hJRlQpCi0gICAgLCBt
X2N0cmxLZXkod1BhcmFtICYgTUtfQ09OVFJPTCkKLSAgICAsIG1fYWx0S2V5KEdldEtleVN0YXRl
KFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fbWV0YUtleShtX2FsdEtl
eSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2VycwogICAgICwgbV9k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiB7CiAgICAgLy8gSG93IG1hbnkgcGl4
ZWxzIHNob3VsZCB3ZSBzY3JvbGwgcGVyIGxpbmU/ICBHZWNrbyB1c2VzIHRoZSBoZWlnaHQgb2Yg
dGhlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0tleWJvYXJkRXZlbnRX
eC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0tl
eWJvYXJkRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNywxNCArMzM3LDE0IEBAIHN0
YXRpYyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudCh1bnMKIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KHd4S2V5RXZlbnQmIGV2ZW50KQogewogICAgIGlm
IChldmVudC5HZXRFdmVudFR5cGUoKSA9PSB3eEVWVF9LRVlfVVApCi0gICAgICAgIG1fdHlwZSA9
IEtleVVwOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpLZXlVcDsKICAgICBlbHNl
IGlmIChldmVudC5HZXRFdmVudFR5cGUoKSA9PSB3eEVWVF9LRVlfRE9XTikKLSAgICAgICAgbV90
eXBlID0gS2V5RG93bjsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6S2V5RG93bjsK
ICAgICBlbHNlIGlmIChldmVudC5HZXRFdmVudFR5cGUoKSA9PSB3eEVWVF9DSEFSKQotICAgICAg
ICBtX3R5cGUgPSBDaGFyOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpDaGFyOwog
ICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgaWYgKG1fdHlwZSAh
PSBDaGFyKQorICAgIGlmIChtX3R5cGUgIT0gUGxhdGZvcm1FdmVudDo6Q2hhcikKICAgICAgICAg
bV9rZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllckZvcld4S2V5Q29kZShldmVudC5HZXRLZXlD
b2RlKCkpOwogICAgIGVsc2UgewogICAgICAgICAvL0VOVEVSIGlzIGFuIGVkaXRpbmcgY29tbWFu
ZCBwcm9jZXNzZWQgYXMgYSBjaGFyIChvbmx5IEVudGVyIGFuZCBUYWIgYXJlKQpAQCAtMzcxLDkg
KzM3MSw5IEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKIHZvaWQg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSB0eXBl
LCBib29sKQogewogICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBS
YXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZl
cnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNTRVJUKG1fdHlw
ZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBlOwotICAgIGlm
ICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpS
YXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOwogICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd3gvTW91c2VFdmVudFd4LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VFdmVudFd4LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMjYgKzMzLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGxhdGZvcm1Nb3Vz
ZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50JiBldmVudCwgY29u
c3Qgd3hQb2ludCYgZ2xvYmFsUG9pbnQsIGludCBjbGlja0NvdW50KQotICAgIDogbV9wb3NpdGlv
bihldmVudC5HZXRQb3NpdGlvbigpKQotICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2lu
dCkKLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQuU2hpZnREb3duKCkpCi0gICAgLCBtX2N0cmxLZXko
ZXZlbnQuQ21kRG93bigpIHx8IGV2ZW50LkNvbnRyb2xEb3duKCkpCi0gICAgLCBtX2FsdEtleShl
dmVudC5BbHREb3duKCkpCi0gICAgLCBtX21ldGFLZXkoZXZlbnQuTWV0YURvd24oKSkgLy8gRklY
TUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2Vycworc3RhdGljIFBsYXRmb3JtRXZl
bnQ6OlR5cGUgdHlwZUZyb21Nb3VzZUV2ZW50KGNvbnN0IHd4TW91c2VFdmVudCYgZXZlbnQpCiB7
CiAgICAgd3hFdmVudFR5cGUgdHlwZSA9IGV2ZW50LkdldEV2ZW50VHlwZSgpOwotICAgIG1fZXZl
bnRUeXBlID0gTW91c2VFdmVudE1vdmVkOwotICAgIAotICAgIGlmICh0eXBlID09IHd4RVZUX0xF
RlRfRE9XTiB8fCB0eXBlID09IHd4RVZUX01JRERMRV9ET1dOIHx8IHR5cGUgPT0gd3hFVlRfUklH
SFRfRE9XTikKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKLSAgICAK
LSAgICBlbHNlIGlmICh0eXBlID09IHd4RVZUX0xFRlRfVVAgfHwgdHlwZSA9PSB3eEVWVF9NSURE
TEVfVVAgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9VUCB8fCAKLSAgICAgICAgICAgICAgICB0eXBl
ID09IHd4RVZUX0xFRlRfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RDTElDSyB8fCB0
eXBlID09IHd4RVZUX1JJR0hUX0RDTElDSykKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2
ZW50UmVsZWFzZWQ7CiAKKyAgICBpZiAodHlwZSA9PSB3eEVWVF9MRUZUX0RPV04gfHwgdHlwZSA9
PSB3eEVWVF9NSURETEVfRE9XTiB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RPV04pCisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CisgICAgZWxzZSBpZiAodHlwZSA9
PSB3eEVWVF9MRUZUX1VQIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX1VQIHx8IHR5cGUgPT0gd3hF
VlRfUklHSFRfVVAgfHwgdHlwZSA9PSB3eEVWVF9MRUZUX0RDTElDSyB8fCB0eXBlID09IHd4RVZU
X01JRERMRV9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9EQ0xJQ0spCisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgIGVsc2UgaWYgKHR5cGUgPT0g
d3hFVlRfTU9USU9OKQotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CisKKyAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKK30KKworUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9y
bU1vdXNlRXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgd3hQb2ludCYgZ2xv
YmFsUG9pbnQsIGludCBjbGlja0NvdW50KQorICAgIDogUGxhdGZvcm1FdmVudCh0eXBlRnJvbU1v
dXNlRXZlbnQoZXZlbnQpLCBldmVudC5TaGlmdERvd24oKSwgZXZlbnQuQ21kRG93bigpIHx8IGV2
ZW50LkNvbnRyb2xEb3duKCksIGV2ZW50LkFsdERvd24oKSwgZXZlbnQuTWV0YURvd24oKSkKKyAg
ICA6IG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRpb24oKSkKKyAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZ2xvYmFsUG9pbnQpCit7CiAKICAgICBpZiAoZXZlbnQuTGVmdElzRG93bigpIHx8IGV2ZW50
LkJ1dHRvbih3eE1PVVNFX0JUTl9MRUZUKSkKICAgICAgICAgbV9idXR0b24gPSBMZWZ0QnV0dG9u
OwpAQCAtNjAsMTEgKzU5LDggQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZl
bnQoYwogICAgICAgICBtX2J1dHRvbiA9IFJpZ2h0QnV0dG9uOwogICAgIGVsc2UgaWYgKGV2ZW50
Lk1pZGRsZUlzRG93bigpIHx8IGV2ZW50LkJ1dHRvbih3eE1PVVNFX0JUTl9NSURETEUpKQogICAg
ICAgICBtX2J1dHRvbiA9IE1pZGRsZUJ1dHRvbjsKLSAgICBlbHNlIGlmICghbV9ldmVudFR5cGUg
PT0gTW91c2VFdmVudE1vdmVkKQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQogCi0g
ICAgaWYgKG1fZXZlbnRUeXBlID09IE1vdXNlRXZlbnRNb3ZlZCkKKyAgICBpZiAobV90eXBlID09
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpCiAgICAgICAgIG1fY2xpY2tDb3VudCA9IDA7CiAg
ICAgZWxzZQogICAgICAgICBtX2NsaWNrQ291bnQgPSBjbGlja0NvdW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VXaGVlbEV2ZW50V3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcAkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VXaGVlbEV2ZW50
V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3Qgd3hN
b3VzZUV2ZW50JiBldmVudCwgY29uc3Qgd3hQb2ludCYgZ2xvYmFsUG9pbnQpCi0gICAgOiBtX3Bv
c2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OldoZWVsLCBldmVudC5TaGlmdERvd24oKSwgZXZlbnQuQ29udHJvbERvd24oKSwgZXZl
bnQuQWx0RG93bigpLCBldmVudC5NZXRhRG93bigpKQorICAgICwgbV9wb3NpdGlvbihldmVudC5H
ZXRQb3NpdGlvbigpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludCkKICAgICAs
IG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBtX3NoaWZ0S2V5
KGV2ZW50LlNoaWZ0RG93bigpKQotICAgICwgbV9jdHJsS2V5KGV2ZW50LkNvbnRyb2xEb3duKCkp
Ci0gICAgLCBtX2FsdEtleShldmVudC5BbHREb3duKCkpCi0gICAgLCBtX21ldGFLZXkoZXZlbnQu
TWV0YURvd24oKSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2Vycwog
ICAgICwgbV9kZWx0YVgoMCkgLy8gd3ggZG9lc24ndCBzdXBwb3J0IGhvcml6b250YWwgbW91c2Ug
d2hlZWwgc2Nyb2xsaW5nCiAgICAgLCBtX2RlbHRhWShldmVudC5HZXRXaGVlbFJvdGF0aW9uKCkg
LyBldmVudC5HZXRXaGVlbERlbHRhKCkpCiAgICAgLCBtX3doZWVsVGlja3NYKG1fZGVsdGFYKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCShyZXZp
c2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MjUsMTkgKzYyNSwxOSBAQCB2b2lkIFBsdWdpblZpZXc6
OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5CiAgICAgRXZlbnRSZWNvcmQgcmVjb3JkOwogCiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAg
ICAvLyBUaGlzIGV2ZW50IGlzIHRoZSByZXN1bHQgb2YgYSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OktleURvd24gd2hpY2gKKyAgICAgICAgLy8gVGhpcyBldmVudCBpcyB0aGUgcmVzdWx0IG9mIGEg
UGxhdGZvcm1FdmVudDo6S2V5RG93biB3aGljaAogICAgICAgICAvLyB3YXMgZGlzYW1iaWd1YXRl
ZCBpbnRvIGEgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duLiBTaW5jZQogICAgICAg
ICAvLyB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgdGV4dCBoZXJlLCB3ZSByZXR1cm4sIGFu
ZCB3YWl0IGZvciB0aGUKICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBldmVudCBiYXNlZCBvbiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIuCiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2Ug
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKICAgICAg
ICAgLy8gV2hpY2ggd291bGQgYmUgdGhpcyBvbmUuIFRoaXMgZXZlbnQgd2FzIGRpc2FtYmlndWF0
ZWQgZnJvbSB0aGUgc2FtZQotICAgICAgICAvLyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURv
d24sIGJ1dCB0byBhIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwKKyAgICAgICAgLy8gUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgYnV0IHRvIGEgUGxhdGZvcm1FdmVudDo6Q2hhciwKICAgICAg
ICAgLy8gd2hpY2ggcmV0YWlucyB0aGUgdGV4dCBmcm9tIHRoZSBvcmlnaW5hbCBldmVudC4gU28s
IHdlIGNhbiBzYWZlbHkgcGFzcwogICAgICAgICAvLyBvbiB0aGUgZXZlbnQgYXMgYSBrZXktZG93
biBldmVudCB0byB0aGUgcGx1Z2luLgogICAgICAgICByZWNvcmQud2hhdCA9IGtleURvd247CiAg
ICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50KSB7
Ci0gICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgZXZlbnRzIGFsd2F5cyBo
YXZlIHRoZSB0ZXh0LCBzbyBub3RoaW5nCisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQ6OktleVVw
IGV2ZW50cyBhbHdheXMgaGF2ZSB0aGUgdGV4dCwgc28gbm90aGluZwogICAgICAgICAvLyBmYW5j
eSBoZXJlLgogICAgICAgICByZWNvcmQud2hhdCA9IGtleVVwOwogICAgIH0gZWxzZSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
NSw3ICszNTUsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtCiAg
ICAgfQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQotICAgIFBsYXRmb3JtR2VzdHVyZUV2
ZW50IHBnZShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSwgSW50UG9pbnQodHgs
IHR5KSwgSW50UG9pbnQodHgsIHR5KSwgMCwgc2NhbGUsIDAuZiwgMCwgMCwgMCwgMCk7CisgICAg
UGxhdGZvcm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXAs
IEludFBvaW50KHR4LCB0eSksIEludFBvaW50KHR4LCB0eSksIDAsIHNjYWxlLCAwLmYsIDAsIDAs
IDAsIDApOwogICAgIGRvY3VtZW50LT52aWV3KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
YW5kbGVHZXN0dXJlRXZlbnQocGdlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNjYWxlKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDExLTEyLTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJh
c2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0
MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktpdDJQbGF0Zm9ybVdoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpX
ZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAg
ICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aGFuZGxl
TW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTEtMTItMTYgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBi
aXQgZmllbGQgZm9yIGJvb2wgbWVtYmVycyBvZiBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0
ZQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJ
KHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMCArMzQsMjcgQEAgY2xhc3MgV2ViS2l0
MlBsYXRmb3JtTW91c2VFdmVudCA6IHB1YmxpYwogcHVibGljOgogICAgIFdlYktpdDJQbGF0Zm9y
bU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgd2ViRXZlbnQpCiAgICAgeworICAgICAg
ICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAgIHN3aXRjaCAod2ViRXZlbnQudHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAgICAgIG1fZXZlbnRUeXBl
ID0gV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VVcDoKLSAgICAgICAgICAgIG1fZXZlbnRUeXBlID0g
V2ViQ29yZTo6TW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZU1vdmU6Ci0gICAgICAgICAgICBtX2V2ZW50VHlwZSA9
IFdlYkNvcmU6Ok1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6
OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAK
KyAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7CisgICAgICAgIG1fY3Ry
bEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVu
dC5hbHRLZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworCisg
ICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LmJ1
dHRvbigpKSB7CiAgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6Tm9CdXR0b246CiAgICAgICAg
ICAgICBtX2J1dHRvbiA9IFdlYkNvcmU6Ok5vQnV0dG9uOwpAQCAtNjksMTAgKzc2LDYgQEAgcHVi
bGljOgogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2ViRXZlbnQuZ2xvYmFsUG9zaXRpb24o
KTsKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwogICAgICAg
ICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwotICAgICAgICBtX3NoaWZ0S2V5
ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29u
dHJvbEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAg
ICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CiAKICAgICAgICAgbV9tb2RpZmllckZs
YWdzID0gMDsKICAgICAgICAgaWYgKG1fc2hpZnRLZXkpCkBAIC05OSw2ICsxMDIsMTQgQEAgY2xh
c3MgV2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCA6IHB1YmxpYwogcHVibGljOgogICAgIFdlYktp
dDJQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2ViRXZlbnQpCiAgICAg
eworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6OldoZWVsOworICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKKyAg
ICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAgICAgICBtX2FsdEtl
eSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRh
S2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1XaGVlbEV2ZW50CiAgICAgICAgIG1fcG9zaXRp
b24gPSB3ZWJFdmVudC5wb3NpdGlvbigpOwogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2Vi
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKTsKICAgICAgICAgbV9kZWx0YVggPSB3ZWJFdmVudC5kZWx0
YSgpLndpZHRoKCk7CkBAIC0xMDYsMTAgKzExNyw2IEBAIHB1YmxpYzoKICAgICAgICAgbV93aGVl
bFRpY2tzWCA9IHdlYkV2ZW50LndoZWVsVGlja3MoKS53aWR0aCgpOwogICAgICAgICBtX3doZWVs
VGlja3NZID0gd2ViRXZlbnQud2hlZWxUaWNrcygpLmhlaWdodCgpOwogICAgICAgICBtX2dyYW51
bGFyaXR5ID0gKHdlYkV2ZW50LmdyYW51bGFyaXR5KCkgPT0gV2ViV2hlZWxFdmVudDo6U2Nyb2xs
QnlQYWdlV2hlZWxFdmVudCkgPyBXZWJDb3JlOjpTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50IDogV2Vi
Q29yZTo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJF
dmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5
KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0
YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKICAgICAgICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZy
b21EZXZpY2UgPSB3ZWJFdmVudC5kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoKTsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgICAgIG1fcGhhc2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZT4od2ViRXZlbnQucGhhc2UoKSk7CkBAIC0xMjksMjIgKzEzNiwz
MCBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50IDogcHViCiBwdWJsaWM6CiAg
ICAgV2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3
ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgc3dpdGNo
ICh3ZWJFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6S2V5RG93bjoKLSAg
ICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICAg
ICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OktleURvd247CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6S2V5VXA6Ci0gICAgICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwOworICAgICAgICAgICAgbV90eXBl
ID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXZWJFdmVudDo6UmF3S2V5RG93bjoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bjsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdl
YkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd247CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXZWJFdmVudDo6Q2hhcjoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRm
b3JtRXZlbnQ6OkNoYXI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAgbV9z
aGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7CisgICAgICAgIG1fY3RybEtleSA9IHdlYkV2
ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsK
KyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworCisgICAgICAgIC8vIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudAogICAgICAgICBtX3RleHQgPSB3ZWJFdmVudC50ZXh0KCk7CiAg
ICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSB3ZWJFdmVudC51bm1vZGlmaWVkVGV4dCgpOwogICAg
ICAgICBtX2tleUlkZW50aWZpZXIgPSB3ZWJFdmVudC5rZXlJZGVudGlmaWVyKCk7CkBAIC0xNTIs
MTAgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSA9IHdl
YkV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCk7CiAgICAgICAgIG1fYXV0b1JlcGVhdCA9IHdl
YkV2ZW50LmlzQXV0b1JlcGVhdCgpOwogICAgICAgICBtX2lzS2V5cGFkID0gd2ViRXZlbnQuaXNL
ZXlwYWQoKTsKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAg
ICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkg
PSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtl
eSgpOwogICAgICAgICAKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbWFrZSBtX2lzU3lzdGVtS2V5IGF2YWlsYWJsZSAoYW5kIGZhbHNlKSBvbiBhbGwgcGxh
dGZvcm1zCkBAIC0xNzUsMjAgKzE4NiwyNyBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1HZXN0dXJl
RXZlbnQgOiBwdWJsCiBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KGNv
bnN0IFdlYkdlc3R1cmVFdmVudCYgd2ViRXZlbnQpCiAgICAgeworICAgICAgICAvLyBQbGF0Zm9y
bUV2ZW50CiAgICAgICAgIHN3aXRjaCAod2ViRXZlbnQudHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
V2ViRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAgICAgICBtX3R5cGUgPSBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKLSAgICAgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOworICAgICAg
ICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpHZXN0dXJlU2luZ2xl
VGFwOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU7
CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFw
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCisgICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJF
dmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5
KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7CisgICAgICAgIG1fbWV0
YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVF
dmVudAogICAgICAgICBtX3Bvc2l0aW9uID0gd2ViRXZlbnQucG9zaXRpb24oKTsKICAgICAgICAg
bV9nbG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CiAgICAgICAgIG1f
dGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDMwNzQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTcwNiw3ICs3MDYsNyBAQAogCQlCQ0EwRUY5RjEyMzMyNjQyMDA3RDND
RkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBMEVGOUQxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21t
YW5kUHJveHkuaCAqLzsgfTsKIAkJQkNBMEVGQTAxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRD
b21tYW5kUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNBMEVGOUUxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuY3Bw
ICovOyB9OwogCQlCQ0EyODRENjE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMjg0RDQxNDky
RjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSAqLzsgfTsKLQkJQkNBMjg0RDcxNDkyRjJD
NzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBMjg0RDUxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlv
bi5oICovOyB9OworCQlCQ0EyODRENzE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyODRENTE0
OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQ0E1NkExQzEyRjkwMjhFMDBDNTY2QzcgLyogV2Vi
R3JhcGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0E1NkExQTEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3JhcGhpY3NDb250ZXh0Lmgg
Ki87IH07CiAJCUJDQTU2QTFEMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBNTZB
MUIxMkY5MDI4RTAwQzU2NkM3IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5jcHAgKi87IH07CiAJCUJD
QTU2QTY1MTJGOUM4RjkwMEM1NjZDNyAvKiBXS0dyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBNTZBNjMxMkY5QzhGOTAwQzU2
NkM3IC8qIFdLR3JhcGhpY3NDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODAsNyArODAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVuCiAg
ICAgICAgIC8vIER1cmluZyBSYXdLZXlEb3duIGV2ZW50cyBpZiBhbiBlZGl0b3IgY29tbWFuZCB3
aWxsIGluc2VydCB0ZXh0LCBkZWZlcgogICAgICAgICAvLyB0aGUgaW5zZXJ0aW9uIHVudGlsIHRo
ZSBrZXlwcmVzcyBldmVudC4gV2Ugd2FudCBrZXlkb3duIHRvIGJ1YmJsZSB1cAogICAgICAgICAv
LyB0aHJvdWdoIHRoZSBET00gZmlyc3QuCi0gICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50LT50eXBl
KCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgICAgIGlmIChw
bGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAg
ICAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdF
ZGl0b3JDb21tYW5kcywgZmFsc2UpKQogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODMsOCArMTE4Myw4
IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW8KIAogICAgIFBsYXRm
b3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZlbnQgPSBwbGF0Zm9ybShtb3VzZUV2ZW50KTsK
IAotICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LmV2ZW50VHlwZSgpKSB7Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ6CisgICAgc3dpdGNoIChwbGF0Zm9ybU1v
dXNlRXZlbnQudHlwZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVz
c2VkOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaXNDb250ZXh0Q2xpY2socGxhdGZvcm1N
b3VzZUV2ZW50KSkKICAgICAgICAgICAgICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIo
KS0+Y2xlYXJDb250ZXh0TWVudSgpOwpAQCAtMTE5NSw5ICsxMTk1LDkgQEAgc3RhdGljIGJvb2wg
aGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNbwogCiAgICAgICAgICAgICByZXR1cm4gaGFuZGxl
ZDsKICAgICAgICAgfQotICAgICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRSZWxlYXNlZDoK
KyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOgogICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQocGxh
dGZvcm1Nb3VzZUV2ZW50KTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50TW92ZWQ6
CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDoKICAgICAgICAgICAgIHJl
dHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50
LCBvbmx5VXBkYXRlU2Nyb2xsYmFycyk7CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MzIsNyAr
MTUzMiw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2EKIAogICAg
IGlmIChpc0tleWJvYXJkRXZlbnRWYWxpZCAmJiBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Oktl
eURvd24pIHsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQocGxh
dGZvcm0oZXZlbnQpKTsKLSAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3du
RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgcGxhdGZv
cm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93
bik7CiAgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEluaXRpYWxGb2N1cyhm
b3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwg
S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGZyYW1lLT5kb2N1bWVudCgpLT5k
ZWZhdWx0VmlldygpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xOTAzLDcg
KzE5MDMsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50CiAKICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRl
cnByZXRLZXlFdmVudChldnQpKTsKIAotICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChrZXlFdmVudC0+dHlwZSgp
ID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNu
J3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1h
bmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBi
ZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0
aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMp
IG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBU
YWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgpAQCAtMjA1MSw3ICsy
MDUxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbgogICAgIGlm
ICghdmlldykKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBt
b2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4K
LSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoYWRqdXN0ZWRDbGllbnRQb3NpdGlvbiwgYWRq
dXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CisgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRp
b24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChEcmFnT3BlcmF0aW9u
KW9wZXJhdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgV2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29t
bWFuZHNJbnQKICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yID0g
Y29tbWFuZC5leGVjdXRlKGV2ZW50KTsKICAgICAgICAgICAgICAgICBldmVudFdhc0hhbmRsZWQg
fD0gY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3I7CiAgICAgICAgICAgICAgICAgaWYgKCFjb21tYW5k
RXhlY3V0ZWRCeUVkaXRvcikgewotICAgICAgICAgICAgICAgICAgICBib29sIHBlcmZvcm1lZE5v
bkVkaXRpbmdCZWhhdmlvciA9IGV2ZW50LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duICYmIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JT
ZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGJv
b2wgcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2aW9yID0gZXZlbnQtPmtleUV2ZW50KCktPnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duICYmIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZp
b3JGb3JTZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSk7CiAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBwZXJmb3JtZWROb25FZGl0aW5nQmVoYXZpb3I7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTIwOSw3ICsyMDksNyBAQCBi
b29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50CiAgICAgICAgIH0KICAgICAg
ICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzLCBkZWZhdWx0IGtl
eWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0byBleGVjdXRlIHRoZSBjb21tYW5kcy4K
ICAgICAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxhdGVzdCBv
cHBvcnR1bml0eSB0byBleGVjdXRlLgotICAgICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29t
bWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q2hhcikgeworICAgICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZv
cm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpIHsKICAgICAgICAgICAgIGV2
ZW50V2FzSGFuZGxlZCA9IGV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwoZXZlbnQtPmtl
eXByZXNzQ29tbWFuZHMoKSwgZXZlbnQpOwogICAgICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29t
bWFuZHMoKS5jbGVhcigpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Jj
L0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBs
OjppbnRlcnByZXRLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmtleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtTW91c2VFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVdoZWVsRXZl
bnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIp
OgorICAgICAgICAoV2ViS2l0Ojp0b1BsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpk
cmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgICogdGVzdHMvS2V5Ym9hcmRUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXRLZXlFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OktleWJvYXJkVGVzdDo6aW50ZXJwcmV0T1NNb2RpZmllcktleVByZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRlcnByZXRDdHJsS2V5UHJlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6OmludGVycHJldFRhYik6CisgICAgICAgIChXZWJL
aXQ6OktleWJvYXJkVGVzdDo6aW50ZXJwcmV0TmV3TGluZSk6CisgICAgICAgIChXZWJLaXQ6OlRF
U1RfRik6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNlbGVjdFBvcHVwTWVudVRlc3Q6OnNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6c2ltdWxhdGVMZWZ0TW91c2VVcEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMS0xMi0xNSAgU3RlcGhlbiBX
aGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBFbmFibGUgQ1NTX0ZJ
TFRFUlMgaW4gQ2hyb21pdW0uCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
NCw3ICs1NDQsNyBAQCBjb25zdCBjaGFyKiBFZGl0b3JDbGllbnRJbXBsOjppbnRlcnByZXRLCiAg
ICAgaWYgKGtleUV2ZW50LT5tZXRhS2V5KCkpCiAgICAgICAgIG1vZGlmaWVycyB8PSBNZXRhS2V5
OwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpS
YXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6
UmF3S2V5RG93bikgewogICAgICAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0
LT5rZXlDb2RlKCk7CiAgICAgICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAt
PmdldChtYXBLZXkpIDogMDsKICAgICB9CkBAIC01NjcsNyArNTY3LDcgQEAgYm9vbCBFZGl0b3JD
bGllbnRJbXBsOjpoYW5kbGVFZGl0aW5nS2V5YgogICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGlu
dGVycHJldEtleUV2ZW50KGV2dCk7CiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpOwogCi0gICAgaWYgKGtleUV2ZW50LT50
eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtl
eUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAv
LyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRl
Y2lkZSBob3cKICAgICAgICAgLy8gY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4
ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxl
YXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY2LDEz
ICs1NjYsMTMgQEAgV2ViU3RyaW5nIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmtleWJvYQogICAg
ICAgICAvLyBGb2xsb3cgdGhlIHNhbWUgb3JkZXIgYXMgTW96aWxsYSBNU0FBIGltcGxlbWVudGF0
aW9uOgogICAgICAgICAvLyBDdHJsK0FsdCtTaGlmdCtNZXRhK2tleS4gTVNETiBzdGF0ZXMgdGhh
dCBrZXlib2FyZCBzaG9ydGN1dCBzdHJpbmdzCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgbG9j
YWxpemVkIGFuZCBkZWZpbmVzIHRoZSBzZXBhcmF0b3IgYXMgIisiLgotICAgICAgICBpZiAobW9k
aWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5KQorICAgICAgICBpZiAobW9k
aWZpZXJzICYgUGxhdGZvcm1FdmVudDo6Q3RybEtleSkKICAgICAgICAgICAgIG1vZGlmaWVyU3Ry
aW5nICs9ICJDdHJsKyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OkFsdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OkFs
dEtleSkKICAgICAgICAgICAgIG1vZGlmaWVyU3RyaW5nICs9ICJBbHQrIjsKLSAgICAgICAgaWYg
KG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hpZnRLZXkpCisgICAgICAgIGlm
IChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleSkKICAgICAgICAgICAgIG1vZGlm
aWVyU3RyaW5nICs9ICJTaGlmdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpNZXRhS2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1F
dmVudDo6TWV0YUtleSkKICAgICAgICAgICAgIG1vZGlmaWVyU3RyaW5nICs9ICJXaW4rIjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsMTUgKzc1LDE1IEBAIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
TW91c2UKICAgICBzd2l0Y2ggKGUudHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91
c2VNb3ZlOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZTogIC8vIHN5bnRoZXNp
emUgYSBtb3ZlIGV2ZW50Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOwor
ICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3duOgotICAgICAgICBtX2V2ZW50
VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVByZXNzZWQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpNb3VzZVVwOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAgYnJl
YWs7CiAKICAgICBkZWZhdWx0OgpAQCAtMTAzLDYgKzEwMyw4IEBAIFBsYXRmb3JtV2hlZWxFdmVu
dEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWwKICAgICBtX3doZWVsVGlja3NZID0gZS53aGVlbFRpY2tz
WTsKICAgICBtX2dyYW51bGFyaXR5ID0gZS5zY3JvbGxCeVBhZ2UgPwogICAgICAgICBTY3JvbGxC
eVBhZ2VXaGVlbEV2ZW50IDogU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CisgICAgCisgICAgbV90
eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CiAgICAgbV9zaGlmdEtleSA9IChlLm1vZGlmaWVy
cyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KTsKICAgICBtX2N0cmxLZXkgPSAoZS5tb2RpZmll
cnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKICAgICBtX2FsdEtleSA9IChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSk7CkBAIC0xMjIsMTYgKzEyNCwxNiBAQCBQbGF0
Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzCiB7CiAgICAgc3dpdGNoIChlLnR5
cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKLSAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZTsKKyAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgICAg
IG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOworICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6Ci0gICAgICAgIG1f
dHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOworICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6Ci0gICAgICAgIG1fdHlwZSA9
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlVGFwOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE1MCwyMSArMTUyLDIxIEBAIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXMKIAogLy8gTWFrZVBsYXRmb3JtS2V5Ym9hcmRF
dmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1zdGF0aWMgaW5saW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0b1BsYXRmb3JtS2V5
Ym9hcmRFdmVudFR5cGUoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBQ
bGF0Zm9ybUV2ZW50OjpUeXBlIHRvUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1dEV2
ZW50OjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpLZXlVcDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5
VXA7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlVcDsKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OktleURvd246Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OktleURvd247CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OlJh
d0tleURvd247CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpDaGFyOgotICAgICAgICByZXR1cm4g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6Q2hhcjsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKIH0KIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVp
bGRlcjo6UGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihjb25zdCBXZWJLZXlib2FyZEV2ZW50
JiBlKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjA1LDcgKzIyMDUsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpkcmFnU291cmNlRW5kZWRBdCgKIHsKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcG1lKGNs
aWVudFBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuUG9pbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDApOwogICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChwbWUsCiAgICAgICAgIHN0YXRp
Y19jYXN0PERyYWdPcGVyYXRpb24+KG9wZXJhdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9LZXlib2FyZFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvS2V5Ym9hcmRUZXN0LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LZXlib2FyZFRlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAvLyBFLmcuLCBzZW5kaW5nIGluIHRo
ZSBlbnRlciBrZXkgZ2l2ZXMgYmFjayAiSW5zZXJ0TmV3bGluZSIuCiAgICAgY29uc3QgY2hhciog
aW50ZXJwcmV0S2V5RXZlbnQoCiAgICAgICAgIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIHdlYktl
eWJvYXJkRXZlbnQsCi0gICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSBrZXlUeXBl
KQorICAgICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIGtleVR5cGUpCiAgICAgewogICAgICAgICBF
ZGl0b3JDbGllbnRJbXBsIGVkaXRvckltcGwoMCk7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudEJ1aWxkZXIgZXZ0KHdlYktleWJvYXJkRXZlbnQpOwpAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFdlYklucHV0RXZlbnQ6Ok1vZGlmaWVycyBvc01vZGlmaWVyID0gV2ViSW5w
dXRFdmVudDo6Q29udHJvbEtleTsKICNlbmRpZgogICAgICAgICBzZXR1cEtleURvd25FdmVudCgm
a2V5Ym9hcmRFdmVudCwga2V5Q29kZSwgb3NNb2RpZmllcik7Ci0gICAgICAgIHJldHVybiBpbnRl
cnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tl
eURvd24pOworICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwg
UGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgfQogCiAgICAgLy8gTGlrZSBpbnRlcnBy
ZXRLZXlFdmVudCwgYnV0IHdpdGggcHJlc3NpbmcgZG93biBjdHJsK3xrZXlDb2RlfC4KQEAgLTkz
LDcgKzkzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV2ViS2V5Ym9hcmRFdmVudCBrZXli
b2FyZEV2ZW50OwogICAgICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwga2V5
Q29kZSwgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7Ci0gICAgICAgIHJldHVybiBpbnRlcnBy
ZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURv
d24pOworICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxh
dGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgfQogCiAgICAgLy8gTGlrZSBpbnRlcnByZXRL
ZXlFdmVudCwgYnV0IHdpdGggdHlwaW5nIGEgdGFiLgpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIFdlYktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKICAgICAg
ICAgc2V0dXBLZXlEb3duRXZlbnQoJmtleWJvYXJkRXZlbnQsICdcdCcsIG1vZGlmaWVycyk7Ci0g
ICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXIpOworICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5
Ym9hcmRFdmVudCwgUGxhdGZvcm1FdmVudDo6Q2hhcik7CiAgICAgfQogCiAgICAgLy8gTGlrZSBp
bnRlcnByZXRLZXlFdmVudCwgYnV0IHdpdGggdHlwaW5nIGEgbmV3bGluZS4KQEAgLTEwOSw3ICsx
MDksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJk
RXZlbnQ7CiAgICAgICAgIHNldHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCAnXHInLCBt
b2RpZmllcnMpOwotICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVu
dCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKTsKKyAgICAgICAgcmV0dXJuIGludGVycHJl
dEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtRXZlbnQ6OkNoYXIpOwogICAgIH0KIAog
ICAgIC8vIEEgbmFtZSBmb3IgIm5vIG1vZGlmaWVycyBzZXQiLgpAQCAtMTY5LDcgKzE2OSw3IEBA
IFRFU1RfRihLZXlib2FyZFRlc3QsIFRlc3RFc2NhcGUpCiAgICAgc2V0dXBLZXlEb3duRXZlbnQo
JmtleWJvYXJkRXZlbnQsIFdlYkNvcmU6OlZLRVlfRVNDQVBFLCBub01vZGlmaWVycyk7CiAKICAg
ICBjb25zdCBjaGFyKiByZXN1bHQgPSBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgRVhQRUNUX1NUUkVRKCJD
YW5jZWwiLCByZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1BvcHVwTWVudVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvUG9wdXBNZW51VGVzdC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
NSwxMyArMjM1LDEzIEBAIHByb3RlY3RlZDoKICAgICAvLyBTaW11bGF0ZXMgYSBtb3VzZSBldmVu
dCBvbiB0aGUgc2VsZWN0IHBvcHVwLgogICAgIHZvaWQgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZl
bnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIHsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1vdXNlRXZlbnQocG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3Nl
ZCwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9pbnQsIHBvaW50LCBM
ZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsK
ICAgICAgICAgbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZURvd25FdmVudCht
b3VzZUV2ZW50KTsKICAgICB9CiAgICAgdm9pZCBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50KQogICAgIHsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1v
dXNlRXZlbnQocG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsCisg
ICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvaW50LCBwb2ludCwgTGVmdEJ1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAg
ICAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1v
dXNlRXZlbnQpOwogICAgIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBURVNUX0YoU2VsZWN0UG9wdXBN
ZW51VGVzdCwgTW91c2VPdmVySXRlCiAgICAgLy8gWSBvZiAxOCB0byBiZSBvbiB0aGUgaXRlbSBh
dCBpbmRleCAxICgxMiBmb250IHBsdXMgYm9yZGVyIGFuZCBtb3JlIHRvIGJlIHNhZmUpLgogICAg
IEludFBvaW50IHJvdzFQb2ludCgyLCAxOCk7CiAgICAgLy8gU2ltdWxhdGUgdGhlIG1vdXNlIG1v
dmluZyBvdmVyIHRoZSBmaXJzdCBpdGVtLgotICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2
ZW50KHJvdzFQb2ludCwgcm93MVBvaW50LCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLAorICAg
IFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHJvdzFQb2ludCwgcm93MVBvaW50LCBOb0J1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CiAgICAgbV93ZWJW
aWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChtb3VzZUV2ZW50KTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTUg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZl
bnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwog
MjAxMS0xMi0xNSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4K
IAogICAgICAgICBbRUZMXSBDbGVhbiB1cCBhbmQgcmVmYWN0b3IgdGhlIG1lbW9yeSBjYWNoZSBm
dW5jdGlvbnMgaW4gZXdrX3NldHRpbmdzLgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMDMwNzQp
CisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDMsNyArNDAzLDcgQEAgYm9vbCBFZGl0b3JDbGllbnRFZmw6
OmhhbmRsZUVkaXRpbmdLZXlibwogCiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKIAotICAgIGlm
IChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikg
eworICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24p
IHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJv
dXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBl
eGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBs
ZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChl
LmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdl
bmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rl
ciwgb3IgRW50ZXIpLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDc0KQorKysg
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBH
aXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcik6CisKIDIwMTEtMTItMTYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVwZGF0ZSBORVdT
IGFuZCBjb25maWd1cmUuYWMgZm9yIDEuNy4zIHJlbGVhc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDcgKzUwMiw3IEBAIHZvaWQgRWRpdG9y
Q2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEsKICAgICAgICAgLy8gRHVyaW5nIFJhd0tleURv
d24gZXZlbnRzIGlmIGFuIGVkaXRvciBjb21tYW5kIHdpbGwgaW5zZXJ0IHRleHQsIGRlZmVyCiAg
ICAgICAgIC8vIHRoZSBpbnNlcnRpb24gdW50aWwgdGhlIGtleXByZXNzIGV2ZW50LiBXZSB3YW50
IGtleWRvd24gdG8gYnViYmxlIHVwCiAgICAgICAgIC8vIHRocm91Z2ggdGhlIERPTSBmaXJzdC4K
LSAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlJhd0tleURvd24pIHsKKyAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgICAgICBpZiAoZXhlY3V0ZVBlbmRp
bmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZmFsc2UpKQogICAgICAgICAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNyw3ICs0MjcsNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lCiAgICAgbG9jYXRpb24u
c2hydW5rVG8oSW50UG9pbnQodmlldy0+d2lkdGgoKSAtIGdDb250ZXh0TWVudU1hcmdpbiwgdmll
dy0+aGVpZ2h0KCkgLSBnQ29udGV4dE1lbnVNYXJnaW4pKTsKIAogICAgIEludFBvaW50IGdsb2Jh
bFBvaW50KGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQod2lkZ2V0LCBsb2NhdGlvbikp
OwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xvYmFsUG9pbnQsIFJp
Z2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBldmVudChsb2NhdGlvbiwgZ2xvYmFsUG9pbnQsIFJpZ2h0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBndGtfZ2V0X2N1
cnJlbnRfZXZlbnRfdGltZSgpKTsKICAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRf
Y29udGV4dF9tZW51X2V2ZW50KFdFQktJVF9XRUJfVklFVyh3aWRnZXQpLCBldmVudCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTEyLTE1
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2
ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJh
Z1NvdXJjZUVuZGVkQXQ6b3BlcmF0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgIChjdXJyZW50S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IF9pbnRlcnByZXRLZXlFdmVudDpzYXZpbmdDb21tYW5kczpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgUERGVmlld1dpbGxD
bGlja09uTGluazp3aXRoVVJMOl0pOgorCiAyMDExLTEyLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXggYWZ0ZXIgcjEwMjg3NC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMTAzMDc0KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtODExLDcgKzgxMSw3IEBAIC0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdp
bmQKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmll
ciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4KICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoSW50UG9pbnQod2luZG93TG9jKSwgZ2xvYmFsUG9pbnQo
d2luZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddKSwKLSAgICAgICAgTGVm
dEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
Y3VycmVudFRpbWUoKSk7CisgICAgICAgIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsKICAg
ICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQo
ZXZlbnQsIChEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcz
OSw3ICszNzM5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudAog
ICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAgICAgY2FzZSBOU0tleURvd246IHsKICAgICAg
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQoZXZlbnQpOwotICAgICAgICBw
bGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlJhd0tleURvd24pOworICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURv
d25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAgICAgcmV0dXJuIEtleWJv
YXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRl
ZmF1bHRWaWV3KCkpOwogICAgIH0KICAgICBjYXNlIE5TS2V5VXA6CkBAIC01MzgxLDcgKzUzODEs
NyBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooS2V5Ym9hcmRFdmVuCiAgICAgICAgIH0K
ICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzLCBkZWZh
dWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0byBleGVjdXRlIHRoZSBjb21t
YW5kcy4KICAgICAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxh
dGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgotICAgICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0
aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q2hhcikKKyAgICAgICAgaWYgKCFoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBs
YXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKQogICAgICAgICAgICAg
W3NlbGYgX2V4ZWN1dGVTYXZlZEtleXByZXNzQ29tbWFuZHNdOwogICAgIH0KICAgICBfcHJpdmF0
ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTk2MCw3ICs5
NjAsNyBAQCAtICh2b2lkKVBERlZpZXdXaWxsQ2xpY2tPbkxpbms6KFBERlZpZXcgCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBOU0tleURvd246IHsKICAgICAgICAgICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCBwZShuc0V2ZW50KTsKLSAgICAgICAgICAgIHBlLmRpc2FtYmlndWF0
ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pOworICAgICAg
ICAgICAgcGUuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pOwogICAgICAgICAgICAgZXZlbnQgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCwgdHJ1ZSwgdHJ1ZSwgMCwKICAgICAgICAgICAgICAgICBwZS5rZXlJ
ZGVudGlmaWVyKCksIHBlLndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpLAogICAgICAgICAgICAgICAg
IHBlLmN0cmxLZXkoKSwgcGUuYWx0S2V5KCksIHBlLnNoaWZ0S2V5KCksIHBlLm1ldGFLZXkoKSwg
ZmFsc2UpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEt
MTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRm
b3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDExLTEyLTE0ICBUb3IgQXJuZSBWZXN0YsO4
ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEdldCByaWQgb2Yg
bGF5ZXJpbmcgdmlvbGF0aW9uIGluIFBsdWdpblZpZXdRdApJbmRleDogU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcAkocmV2aXNpb24gMTAzMDc0
KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBEcmFnQ2xpZW50UXQ6OnN0YXJ0
RHJhZyhEcmFnSW1hZ2VSZQogICAgICAgICBRdDo6RHJvcEFjdGlvbiBhY3R1YWxEcm9wQWN0aW9u
ID0gZHJhZy0+ZXhlYyhkcmFnT3BlcmF0aW9uc1RvRHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlvbk1h
c2spKTsKIAogICAgICAgICAvLyBTZW5kIGRyYWdFbmQgZXZlbnQKLSAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygpLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBv
cygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
bWUobV93ZWJQYWdlLT52aWV3KCktPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vy
c29yOjpwb3MoKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmRyYWdTb3VyY2VFbmRlZEF0KG1lLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGFjdHVh
bERyb3BBY3Rpb24pKTsKICAgICB9CiAgICAgZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIo
KS0+ZHJhZ0VuZGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2
ZW50CiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCog
a2V2ZW50ID0gZXZlbnQtPmtleUV2ZW50KCk7Ci0gICAgaWYgKCFrZXZlbnQgfHwga2V2ZW50LT50
eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCkKKyAgICBpZiAoIWtldmVudCB8
fCBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTm9kZSogc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkuY29udGFp
bmVyTm9kZSgpOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQKICAgICAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29y
ZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdl
cyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgICAg
ICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgog
ICAgICAgICAgICAgaWYgKGNtZCAmJiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY21kKS5pc1Rl
eHRJbnNlcnRpb24oKQotICAgICAgICAgICAgICAgICYmIGtldmVudC0+dHlwZSgpID09IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAgICAgICAgICAmJiBrZXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAgICAgbV9wYWdlLT50cmlnZ2VyQWN0aW9uKGFjdGlvbik7CkBAIC00
NjQsNyArNDY0LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAog
CiAgICAgICAgICAgICAvLyBUZXh0IGluc2VydGlvbi4KICAgICAgICAgICAgIGJvb2wgc2hvdWxk
SW5zZXJ0VGV4dCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6S2V5
RG93biAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7CiAKICAgICAgICAgICAgICAgICBp
ZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+
YWx0S2V5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAor
MjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUg
UGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuY3BwOgorICAgICAgICAoQWNjZXNz
aWJsZUJhc2U6OmdldF9hY2NLZXlib2FyZFNob3J0Y3V0KToKKyAgICAgICAgKiBXZWJEcm9wU291
cmNlLmNwcDoKKyAgICAgICAgKGdlbmVyYXRlTW91c2VFdmVudCk6CisgICAgICAgICogV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJWaWV3OjprZXlVcCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjprZXlEb3duKToKKyAg
ICAgICAgKFdlYlZpZXc6OmtleVByZXNzKToKKwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8amlu
Z3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVzIGJ5
IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0FjY2Vzc2libGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nl
c3NpYmxlQmFzZS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0Fj
Y2Vzc2libGVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRnJhbWUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5o
PgpAQCAtMzY2LDEzICszNjYsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3Np
YmxlQmFzZQogICAgICAgICAvLyBGb2xsb3cgdGhlIHNhbWUgb3JkZXIgYXMgTW96aWxsYSBNU0FB
IGltcGxlbWVudGF0aW9uOgogICAgICAgICAvLyBDdHJsK0FsdCtTaGlmdCtNZXRhK2tleS4gTVNE
TiBzdGF0ZXMgdGhhdCBrZXlib2FyZCBzaG9ydGN1dCBzdHJpbmdzCiAgICAgICAgIC8vIHNob3Vs
ZCBub3QgYmUgbG9jYWxpemVkIGFuZCBkZWZpbmVzIHRoZSBzZXBhcmF0b3IgYXMgIisiLgotICAg
ICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5KQorICAg
ICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6Q3RybEtleSkKICAgICAgICAgICAg
IGFjY2Vzc0tleU1vZGlmaWVycyArPSAiQ3RybCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQ
bGF0Zm9ybUV2ZW50OjpBbHRLZXkpCiAgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgKz0g
IkFsdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpT
aGlmdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5
KQogICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJTaGlmdCsiOwotICAgICAgICBp
ZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpNZXRhS2V5KQorICAgICAgICBp
ZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6TWV0YUtleSkKICAgICAgICAgICAgIGFjY2Vz
c0tleU1vZGlmaWVycyArPSAiV2luKyI7CiAgICAgfQogICAgICpzaG9ydGN1dCA9IEJTdHJpbmco
U3RyaW5nKGFjY2Vzc0tleU1vZGlmaWVycyArIGFjY2Vzc0tleSkpLnJlbGVhc2UoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEcm9wU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyAr
OTMsOCBAQCBTVERNRVRIT0RJTVBfKFVMT05HKSBXZWJEcm9wU291cmNlOjpSZWxlCiAgICAgcmV0
dXJuIGM7CiB9CiAKLVBsYXRmb3JtTW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2ViVmll
dyogd2ViVmlldywgYm9vbCBpc0RyYWcpIHsKK1BsYXRmb3JtTW91c2VFdmVudCBnZW5lcmF0ZU1v
dXNlRXZlbnQoV2ViVmlldyogd2ViVmlldywgYm9vbCBpc0RyYWcpCit7CiAgICAgUE9JTlRMIHB0
OwogICAgIDo6R2V0Q3Vyc29yUG9zKChMUFBPSU5UKSZwdCk7CiAgICAgUE9JTlRMIGxvY2FscHQg
PSBwdDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3Vz
ZUV2ZW50KFdlCiAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT52aWV3V2luZG93KChPTEVfSEFO
RExFKikmdmlld1dpbmRvdykpKQogICAgICAgICA6OlNjcmVlblRvQ2xpZW50KHZpZXdXaW5kb3cs
IChMUFBPSU5UKSZsb2NhbHB0KTsKICAgICByZXR1cm4gUGxhdGZvcm1Nb3VzZUV2ZW50KEludFBv
aW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgSW50UG9pbnQocHQueCwgcHQueSksCi0gICAgICAg
IGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CisgICAgICAgIGlzRHJhZyA/
IExlZnRCdXR0b24gOiBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwogfQogCiBTVERNRVRIT0RJ
TVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlDb250aW51ZURyYWcoQk9PTCBmRXNjYXBlUHJlc3NlZCwg
RFdPUkQgZ3JmS2V5U3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTAz
MDc0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MTMsNyArMTgxMyw3IEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJh
bSwKIAogYm9vbCBXZWJWaWV3OjprZXlVcChXUEFSQU0gdmlydHVhbEtleUNvZGUsIExQQVJBTSBr
ZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCiB7Ci0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5VXAsIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3csIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQ
bGF0Zm9ybUV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7CiAKICAgICBGcmFtZSogZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBt
X2N1cnJlbnRDaGFyYWN0ZXJDb2RlID0gMDsKQEAgLTE5NTUsNyArMTk1NSw3IEBAIGJvb2wgV2Vi
Vmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQKIAogICAgIEVkaXRvcjo6Q29tbWFuZCBj
b21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkp
OwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpS
YXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6
UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZv
cm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2Vy
dCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAg
IC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1t
ZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3Mg
ZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBU
YWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBib29sIFdlYlZp
ZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDCiAjZW5kaWYKICAgICBGcmFtZSogZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3csIHZpcnR1YWxLZXlD
b2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtl
eURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3cs
IHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duLCBzeXN0
ZW1LZXlEb3duKTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtl
eUV2ZW50KGtleUV2ZW50KTsKIAogICAgIC8vIFRoZXNlIGV2ZW50cyBjYW5ub3QgYmUgY2FuY2Vs
ZWQsIGFuZCB3ZSBoYXZlIG5vIGRlZmF1bHQgaGFuZGxpbmcgZm9yIHRoZW0uCkBAIC0yMDU1LDcg
KzIwNTUsNyBAQCBib29sIFdlYlZpZXc6OmtleVByZXNzKFdQQVJBTSBjaGFyQ29kZSwgCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2lu
ZG93LCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyLCBzeXN0
ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2lu
ZG93LCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93
bik7CiAgICAgLy8gSUUgZG9lcyBub3QgZGlzcGF0Y2gga2V5cHJlc3MgZXZlbnQgZm9yIFdNX1NZ
U0NIQVIuCiAgICAgaWYgKHN5c3RlbUtleURvd24pCiAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZUFjY2Vzc0tleShrZXlFdmVudCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0No
YW5nZUxvZwkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNl
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlS2V5RG93bik6CisgICAgICAg
IChXZWJWaWV3OjpoYW5kbGVLZXlQcmVzcyk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVLZXlV
cCk6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMg
cHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAJKHJldmlzaW9uIDEwMzA3NCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
OCw3ICszNDgsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUtleURvd24oV1BBUkFNIHZpcnR1CiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5k
b3dIYW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBr
ZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3Jt
RXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOwogICAgIGJvb2wgaGFuZGxlZCA9IGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5RXZlbnQpOwogCiAgICAgLy8gVGhlc2Ug
ZXZlbnRzIGNhbm5vdCBiZSBjYW5jZWxlZCwgYW5kIHdlIGhhdmUgbm8gZGVmYXVsdCBoYW5kbGlu
ZyBmb3IgdGhlbS4KQEAgLTM3MCw3ICszNzAsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUtleVBy
ZXNzKFdQQVJBTSBjaGFyCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIGNoYXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgY2hhckNvZGUsIGtleURhdGEsIFBsYXRmb3Jt
RXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOwogICAgIC8vIElFIGRvZXMgbm90IGRpc3BhdGNo
IGtleXByZXNzIGV2ZW50IGZvciBXTV9TWVNDSEFSLgogICAgIGlmIChzeXN0ZW1LZXlEb3duKQog
ICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVBY2Nlc3NLZXkoa2V5
RXZlbnQpOwpAQCAtMzgyLDcgKzM4Miw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlS2V5UHJlc3Mo
V1BBUkFNIGNoYXIKIAogYm9vbCBXZWJWaWV3OjpoYW5kbGVLZXlVcChXUEFSQU0gdmlydHVhbEtl
eUNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCiB7Ci0gICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCB2aXJ0dWFsS2V5Q29kZSwg
a2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7Cisg
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCB2aXJ0dWFs
S2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6S2V5VXAsIHN5c3RlbUtleURvd24pOwog
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQo
a2V5RXZlbnQpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6
aGFuZGxlRWRpdGluZ0tleQogCiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKIAotICAgIGlmIChr
ZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgewor
ICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsK
ICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQg
bW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVj
dXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2
ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcu
IFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVy
YXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwg
b3IgRW50ZXIpLgpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJj
ZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBs
YXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjppbnRlcnByZXRLZXlFdmVudCk6
CisKIDIwMTEtMTItMTEgIFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KIAogICAgICAg
ICBBZGQgYSBVUkwgYXJndW1lbnQgdG8gdGhlIHd4V2ViVmlldyBjb25zdHJ1Y3RvciwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNw
cAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Vk
aXRvckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDcgKzM5MCw3IEBAIGJvb2wg
RWRpdG9yQ2xpZW50V3g6OmhhbmRsZUVkaXRpbmdLZXlib2EKIAogICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2
ZW50KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdo
IGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3Qg
aW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAg
ICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhl
bSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBpZiBub3QgdG8g
bGV0IGEgQ0hBUiBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQg
aW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KQEAgLTQwOSw3ICs0MDksNyBAQCBi
b29sIEVkaXRvckNsaWVudFd4OjpoYW5kbGVFZGl0aW5nS2V5Ym9hCiAKIGNvbnN0IGNoYXIqIEVk
aXRvckNsaWVudFd4OjppbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50KiBldnQp
CiB7Ci0gICAgQVNTRVJUKGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UmF3S2V5RG93biB8fCBldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OkNoYXIpOworICAgIEFTU0VSVChldnQtPmtleUV2ZW50KCktPnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duIHx8IGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgp
ID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpOwogCiAgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25z
dCBjaGFyKj4qIGtleURvd25Db21tYW5kc01hcCA9IDA7CiAgICAgc3RhdGljIEhhc2hNYXA8aW50
LCBjb25zdCBjaGFyKj4qIGtleVByZXNzQ29tbWFuZHNNYXAgPSAwOwpAQCAtNDMzLDcgKzQzMyw3
IEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudFd4OjppbnRlcnByZXRLZXkKICAgICBpZiAoZXZ0
LT5jdHJsS2V5KCkpCiAgICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OwogCi0gICAgaWYgKGV2
dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93
bikgeworICAgIGlmIChldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpS
YXdLZXlEb3duKSB7CiAgICAgICAgIGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldnQt
PmtleUNvZGUoKTsKICAgICAgICAgcmV0dXJuIG1hcEtleSA/IGtleURvd25Db21tYW5kc01hcC0+
Z2V0KG1hcEtleSkgOiAwOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119632</attachid>
            <date>2011-12-16 10:38:58 -0800</date>
            <delta_ts>2011-12-16 10:45:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111216103851.patch</filename>
            <type>text/plain</type>
            <size>154814</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRN
ZW51XSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorICAgICAgICAqIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICog
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycyk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL3d4L0V2ZW50SGFuZGxlcld4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Y3RybEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxhdGZvcm1F
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hl
ZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZvck5TRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXlwYWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0eXBl
RnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorCiAyMDExLTEyLTE2ICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPiwgSmFrdWIgV2llY3pvcmVrICA8andpZWN6b3Jl
a0B3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciA8b2wgcmV2ZXJzZWQ+LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDU0LDYgKzEwNTQsNyBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBwbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAKKyAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAogICAgIHBsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
ICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg3OSw2ICsyODc5LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVS
SVV0aWxzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE4LDYgKzExMTgsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQu
Y3BwIFwKICAgICBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIFwKICAgICBw
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgXAogICAgIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTAzMDc0KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYwNyw4ICs2MDcs
OCBAQCBfX1pON1dlYkNvcmUyMG1ha2VSR0JBMzJGcm9tRmxvYXRzRWZmZmYKIF9fWk43V2ViQ29y
ZTIwcHJvdG9jb2xJc0phdmFTY3JpcHRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMUJh
Y2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQogX19aTjdXZWJDb3JlMjFNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2Ci1fX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudDI0ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50RU5TMF80VHlwZUViCiBfX1pON1dlYkNvcmUy
MVBsYXRmb3JtS2V5Ym9hcmRFdmVudEMxRVA3TlNFdmVudAorX19aTjdXZWJDb3JlMjFQbGF0Zm9y
bUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0ZUtleURvd25FdmVudEVOU18xM1BsYXRmb3JtRXZl
bnQ0VHlwZUViCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5k
aW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVz
b3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQ
TlNfMzJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1
ZXN0RQogX19aTjdXZWJDb3JlMjFTVkdEb2N1bWVudEV4dGVuc2lvbnMyMXNhbXBsZUFuaW1hdGlv
bkF0VGltZUVSS04zV1RGNlN0cmluZ0VQTlNfMTRTVkdTTUlMRWxlbWVudEVkCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYzMCw2ICsyNjYzMCwxNCBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxQbGF0Zm9ybUV2ZW50LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cUGxhdGZvcm1FdmVudC5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDMwNzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTUwNzMsNiArNTA3Myw4IEBACiAJCUJDNUE4Njg1MEMzMzY3NjAwMEVFQTY0
OSAvKiBET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNUE4NjgyMEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uaCAqLzsg
fTsKIAkJQkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4NkIzMEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgKi87IH07CiAJCUJDNUE4NkI2MEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1QTg2QjQwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2Vs
ZWN0aW9uLmggKi87IH07CisJCUJDNUM3NjJBMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NUM3NjI4MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLzsgfTsKKwkJQkM1
Qzc2MkIxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAv
KiBQbGF0Zm9ybUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkM1Q0ZDQTkxMUY3OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlvblN0cmF0
ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVD
RkNBODExRjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzVFQjVEQjBFODFCN0VB
MDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUVC
NUREMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUVCNURDMEU4MUI4REQwMEIyNTk2NSAvKiBP
dXRsaW5lVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTIzOTksNiArMTI0MDEsOCBAQAogCQlCQzVBODY4MzBDMzM2NzYwMDBFRUE2NDkg
LyogRE9NU2VsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NU2VsZWN0aW9u
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1QTg2QjMwQzMzNjdFODAwRUVB
NjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVNlbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNUE4NkI0MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01TZWxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkM1Qzc2MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1FdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1Q0ZDQTgxMUY3
OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlvblN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExvY2FsaXphdGlvblN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCb3JkZXJWYWx1ZS5oOyBwYXRoID0gc3R5
bGUvQm9yZGVyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RUI1REMw
RTgxQjhERDAwQjI1OTY1IC8qIE91dGxpbmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBPdXRsaW5lVmFsdWUuaDsgcGF0aCA9IHN0eWxlL091dGxpbmVWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyNTYsNiArMjAyNjAsOCBAQAogCQkJCTFB
RDhGODFBMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwICovLAogCQkJ
CTFBRDhGODE5MTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLywKIAkJ
CQk5MzVDNDc2QTA5QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggKi8sCisJ
CQkJQkM1Qzc2MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwICovLAorCQkJ
CUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8sCiAJCQkJQkNC
QjhBQjQxM0YxQUZCMDAwNzM0REYwIC8qIFBPREFyZW5hLmggKi8sCiAJCQkJMUYzRjE5NTIxNDk5
Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLywKIAkJCQlCQ0JCOEFCNTEzRjFB
RkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCAqLywKQEAgLTI0ODc2LDYgKzI0ODgyLDcgQEAK
IAkJCQlGMzVBRTVBQzE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI2QzE3QTNFMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9T
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGls
ZUNhY2hlTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0
MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjNG
MTk1MzE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFQ0VCNjgxNDk5NzkwRDAwQ0REM0E0IC8qIEZFQ29tcG9zaXRlQXJpdGhtZXRpY05F
T04uaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzAsNiArMjc3NzcsNyBAQAogCQkJCThDMTA5MTk4
MTQ5NEZCMTIwMEI1RDNGRSAvKiBDU1NFbGVtZW50U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzA2RTRFNjE0OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwRkE0MTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxl
Q2FjaGVMYXllci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDNUM3NjJBMTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUNFQjY3MTQ5OTc5
MEQwMENERDNBNCAvKiBGRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5RUNFQjY5MTQ5OTc5MEQwMENERDNBNCAvKiBGRUdhdXNzaWFuQmx1ck5FT04uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNkIxNDk5NzkwRDAwQ0REM0E0IC8qIEZFTGlnaHRp
bmdORU9OLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTkwLDcgKzI1OTAsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnUK
ICAgICAvLyBTaW11bGF0ZSBhIGNsaWNrIGluIHRoZSBtaWRkbGUgb2YgdGhlIG9iamVjdC4KICAg
ICBMYXlvdXRQb2ludCBjbGlja1BvaW50ID0gbV9vYmplY3QtPmNsaWNrUG9pbnQoKTsKICAgICAK
LSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChjbGlja1BvaW50LCBjbGlja1BvaW50
LCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVu
dChjbGlja1BvaW50LCBjbGlja1BvaW50LCBSaWdodEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7
CiAgICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1l
bnVFdmVudChtb3VzZUV2ZW50KTsKICAgICBpZiAoaGFuZGxlZCkKICAgICAgICAgcGFnZS0+Y2hy
b21lKCktPnNob3dDb250ZXh0TWVudSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0tleWJv
YXJkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsMjAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
Rm9yS2V5Ym9hcmRFdmVudFR5cGUoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHR5cGUpCitz
dGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVu
dFR5cGUoUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewot
ICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA6CisgICAgICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6S2V5VXA6CiAgICAgICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLmtl
eXVwRXZlbnQ7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3du
OgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd246CiAgICAgICAgICAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmtleWRvd25FdmVudDsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXI6CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6Q2hhcjoKICAg
ICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudDsKLSAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd246CisgICAgICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6S2V5RG93bjoKICAgICAgICAgICAgIC8vIFRoZSBjYWxsZXIgc2hvdWxkIGRpc2FtYmln
dWF0ZSB0aGUgY29tYmluZWQgZXZlbnQgaW50byBSYXdLZXlEb3duIG9yIENoYXIgZXZlbnRzLgog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lv
biAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGludCBkZXRhaWwsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCkK
IHsKLSAgICBBU1NFUlQoZXZlbnQuZXZlbnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkIHx8IGV2
ZW50LmJ1dHRvbigpICE9IE5vQnV0dG9uKTsKKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgfHwgZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0b24pOwog
CiAgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNl
bW92ZUV2ZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFBsYXRmb3JtTW91c2VF
dmVudCBjcmVhdGVNb3VzZUV2ZQogICAgIHNoaWZ0S2V5ID0gY3RybEtleSA9IGFsdEtleSA9IG1l
dGFLZXkgPSBmYWxzZTsKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2Rp
ZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpOwogICAgIHJldHVy
biBQbGF0Zm9ybU1vdXNlRXZlbnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRh
LT5nbG9iYWxQb3NpdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGFLZXksIGN1cnJlbnRUaW1lKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMzMsMTkgKzIy
MzMsMTkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgIC8v
IGVuZCBnZXN0dXJlIGFzIHdlbGwuCiAKICAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkp
IHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZToKKyAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duOgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlVGFwOiB7CiAgICAgICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIGNvZGUgdG8g
bm90IGhpdCB0ZXN0IG11bHRpcGxlIHRpbWVzIG9uY2UgaGl0IHRlc3RpbmcgaGFzIGJlZW4gY29y
cmVjdGVkIGFzIHN1Z2dlc3RlZCBhYm92ZS4KLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZh
a2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEs
IGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJl
RXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1l
c3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50
LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXko
KSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAg
ICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVu
dFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBn
ZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVu
dC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJl
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92
ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVF
dmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFL
ZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQs
IC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVu
dC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXko
KSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFs
UG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0
cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBn
ZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1v
dmUpOwogICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAg
ICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGU6IHsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6IHsK
ICAgICAgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlzb3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlj
a011bHRpcGxpZXI7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBs
ZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92ZSBmaXhtZSBoYXMgYmVlbiBhZGRyZXNzZWQuCiAgICAg
ICAgIEludFBvaW50IHBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLngoKSwgZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCkueSgpKTsKQEAgLTIyNTQsOSArMjI1NCw5IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY28KICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50
aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91Ymxl
VGFwOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDogewogICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIyNjQsNiArMjI2NCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlRXZlbnQoY28KICAgICAgICAgdmlldy0+aGFuZGxlR2VzdHVyZUV2ZW50KGdl
c3R1cmVFdmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAjZW5kaWYKQEAgLTIzNTcsOSArMjM2MCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzZW5kQ29u
dGV4dE1lbnVFdmVudEYKICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciB3ZWIgY29tcGF0aWJp
bGl0eS4KIAogI2lmIE9TKFdJTkRPV1MpCi0gICAgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlID0g
TW91c2VFdmVudFJlbGVhc2VkOworICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZlbnRUeXBlID0g
UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICNlbHNlCi0gICAgTW91c2VFdmVudFR5cGUg
ZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBl
dmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAjZW5kaWYKIAogICAgIFBs
YXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgUmln
aHRCdXR0b24sIGV2ZW50VHlwZSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6
Y3VycmVudFRpbWUoKSk7CkBAIC0yNDE3LDcgKzI0MjAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
ZmFrZU1vdXNlTW92ZUV2ZW50VGltCiAgICAgYm9vbCBtZXRhS2V5OwogICAgIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFs
dEtleSwgbWV0YUtleSk7CiAgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQgPSB2aWV3LT5jb250ZW50
c1RvU2NyZWVuKEludFJlY3Qodmlldy0+d2luZG93VG9Db250ZW50cyhtX2N1cnJlbnRNb3VzZVBv
c2l0aW9uKSwgSW50U2l6ZSgpKSkubG9jYXRpb24oKTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlTW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGdsb2JhbFBvaW50LCBO
b0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBt
ZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
TW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGdsb2JhbFBvaW50LCBOb0J1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwg
bWV0YUtleSwgY3VycmVudFRpbWUoKSk7CiAgICAgbW91c2VNb3ZlZChmYWtlTW91c2VNb3ZlRXZl
bnQpOwogfQogCkBAIC0yNDcxLDggKzI0NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
QWNjZXNzS2V5KGNvbnN0CiAgICAgLy8gSUUgbWF0Y2hlcyBsb3dlciBhbmQgdXBwZXIgY2FzZSBh
Y2Nlc3Mga2V5cyByZWdhcmRsZXNzIG9mIFNoaWZ0IGtleSBzdGF0ZSAtIGJ1dCBpZiBib3RoIHVw
cGVyIGFuZAogICAgIC8vIGxvd2VyIGNhc2UgdmFyaWFudHMgYXJlIHByZXNlbnQgaW4gYSBkb2N1
bWVudCwgdGhlIGNvcnJlY3QgZWxlbWVudCBpcyBtYXRjaGVkIGJhc2VkIG9uIFNoaWZ0IGtleSBz
dGF0ZS4KICAgICAvLyBGaXJlZm94IG9ubHkgbWF0Y2hlcyBhbiBhY2Nlc3Mga2V5IGlmIFNoaWZ0
IGlzIG5vdCBwcmVzc2VkLCBhbmQgZG9lcyB0aGF0IGNhc2UtaW5zZW5zaXRpdmVseS4KLSAgICBB
U1NFUlQoIShhY2Nlc3NLZXlNb2RpZmllcnMoKSAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hp
ZnRLZXkpKTsKLSAgICBpZiAoKGV2dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlNoaWZ0S2V5KSAhPSBhY2Nlc3NLZXlNb2RpZmllcnMoKSkKKyAgICBBU1NFUlQoIShhY2Nl
c3NLZXlNb2RpZmllcnMoKSAmIFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KSk7CisgICAgaWYgKChl
dnQubW9kaWZpZXJzKCkgJiB+UGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1v
ZGlmaWVycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIGtleSA9IGV2dC51
bm1vZGlmaWVkVGV4dCgpOwogICAgIEVsZW1lbnQqIGVsZW0gPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5nZXRFbGVtZW50QnlBY2Nlc3NLZXkoa2V5Lmxvd2VyKCkpOwpAQCAtMjUyMCw3ICsyNTIzLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewogICAgICAgICAgICAg
Ly8gSWYgYSBrZXkgaXMgcHJlc3NlZCB3aGlsZSB0aGUgcGFuU2Nyb2xsIGlzIGluIHByb2dyZXNz
IHRoZW4gd2Ugd2FudCB0byBzdG9wCi0gICAgICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24gfHwgaW5pdGlhbEtleUV2ZW50
LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIAorICAgICAgICAg
ICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biB8
fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIAog
ICAgICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAogICAgICAgICAgICAgLy8g
SWYgd2Ugd2VyZSBpbiBwYW5zY3JvbGwgbW9kZSwgd2Ugc3dhbGxvdyB0aGUga2V5IGV2ZW50CkBA
IC0yNTUwLDI1ICsyNTUzLDI1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQ
bGF0Zm8KICAgICAvLyBPbiBXaW5kb3dzLCBXZWJLaXQgZXhwbGljaXRseSBjYWxscyBoYW5kbGVB
Y2Nlc3NLZXkoKSBpbnN0ZWFkIG9mIGRpc3BhdGNoaW5nIGEga2V5cHJlc3MgZXZlbnQgZm9yIFdN
X1NZU0NIQVIgbWVzc2FnZXMuCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIGN1cnJlbnRseSBtYXRj
aCBlaXRoZXIgTWFjIG9yIFdpbmRvd3MgYmVoYXZpb3IsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRo
ZXkgc2VuZCBjb21iaW5lZCBLZXlEb3duIGV2ZW50cy4KICAgICBib29sIG1hdGNoZWRBbkFjY2Vz
c0tleSA9IGZhbHNlOwotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQogICAgICAgICBtYXRjaGVkQW5BY2Nlc3NLZXkgPSBo
YW5kbGVBY2Nlc3NLZXkoaW5pdGlhbEtleUV2ZW50KTsKIAogICAgIC8vIEZJWE1FOiBpdCB3b3Vs
ZCBiZSBmYWlyIHRvIGxldCBhbiBpbnB1dCBtZXRob2QgaGFuZGxlIEtleVVwIGV2ZW50cyBiZWZv
cmUgRE9NIGRpc3BhdGNoLgotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpCisgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6S2V5VXAgfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpDaGFyKQogICAgICAgICByZXR1cm4gIW5vZGUtPmRpc3BhdGNoS2V5RXZlbnQo
aW5pdGlhbEtleUV2ZW50KTsKIAogICAgIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IG5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzKCk7CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjOwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlEb3duRXZlbnQgPSBpbml0
aWFsS2V5RXZlbnQ7ICAgIAotICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikKLSAgICAgICAga2V5RG93bkV2ZW50LmRpc2FtYmln
dWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24sIGJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUpOworICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBs
YXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCisgICAgICAgIGtleURvd25FdmVudC5kaXNhbWJpZ3Vh
dGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSk7CiAgICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleWRvd24gPSBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0
VmlldygpKTsKICAgICBpZiAobWF0Y2hlZEFuQWNjZXNzS2V5KQogICAgICAgICBrZXlkb3duLT5z
ZXREZWZhdWx0UHJldmVudGVkKHRydWUpOwogICAgIGtleWRvd24tPnNldFRhcmdldChub2RlKTsK
IAotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UmF3S2V5RG93bikgeworICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChrZXlk
b3duLCBlYyk7CiAgICAgICAgIC8vIElmIGZyYW1lIGNoYW5nZWQgYXMgYSByZXN1bHQgb2Yga2V5
ZG93biBkaXNwYXRjaCwgdGhlbiByZXR1cm4gdHJ1ZSB0byBhdm9pZCBzZW5kaW5nIGEgc3Vic2Vx
dWVudCBrZXlwcmVzcyBtZXNzYWdlIHRvIHRoZSBuZXcgZnJhbWUuCiAgICAgICAgIGJvb2wgY2hh
bmdlZEZvY3VzZWRGcmFtZSA9IG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lICE9IG1fZnJhbWUt
PnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtMjYw
Nyw3ICsyNjEwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwog
ICAgIH0KIAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlQcmVzc0V2ZW50ID0gaW5pdGlh
bEtleUV2ZW50OwotICAgIGtleVByZXNzRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7Cisg
ICAga2V5UHJlc3NFdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6
Q2hhciwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7CiAgICAgaWYgKGtleVByZXNzRXZlbnQu
dGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGtleWRvd25SZXN1bHQ7CiAgICAgUmVm
UHRyPEtleWJvYXJkRXZlbnQ+IGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVBy
ZXNzRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwpAQCAtMjc4Niw3
ICsyNzg5LDcgQEAgc3RhdGljIGJvb2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQQogCiBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBMZWZ0
QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgIT0gTW91c2VFdmVudE1vdmVkKSB7
CisgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5l
dmVudCgpLnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKSB7CiAgICAgICAgIC8v
IElmIHdlIGFsbG93ZWQgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGJyaWRnZSB0byBoYW5kbGUgYSBk
cmFnCiAgICAgICAgIC8vIGxhc3QgdGltZSwgdGhlbiBtX21vdXNlUHJlc3NlZCBtaWdodCBzdGls
bCBiZSBzZXQuIFNvIHdlCiAgICAgICAgIC8vIGNsZWFyIGl0IG5vdyB0byBtYWtlIHN1cmUgdGhl
IG5leHQgbW92ZSBhZnRlciBhIGRyYWcKQEAgLTI4MjIsNyArMjgyNSw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMKICAgICAvLyBGb3IgZHJhZ3Mgc3RhcnRpbmcg
aW4gdGhlIHNlbGVjdGlvbiwgdGhlIHVzZXIgbXVzdCB3YWl0IGJldHdlZW4gdGhlIG1vdXNlZG93
biBhbmQgbW91c2VkcmFnLAogICAgIC8vIG9yIGVsc2Ugd2UgYmFpbCBvbiB0aGUgZHJhZ2dpbmcg
c3R1ZmYgYW5kIGFsbG93IHNlbGVjdGlvbiB0byBvY2N1cgogICAgIGlmIChtX21vdXNlRG93bk1h
eVN0YXJ0RHJhZyAmJiBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3RlYWQgJiYgKGRyYWdTdGF0
ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSAmJiBldmVudC5ldmVu
dCgpLnRpbWVzdGFtcCgpIC0gbV9tb3VzZURvd25UaW1lc3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7
Ci0gICAgICAgIEFTU0VSVChldmVudC5ldmVudCgpLmV2ZW50VHlwZSgpID09IE1vdXNlRXZlbnRN
b3ZlZCk7CisgICAgICAgIEFTU0VSVChldmVudC5ldmVudCgpLnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZU1vdmVkKTsKICAgICAgICAgaWYgKChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYg
RHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewogICAgICAgICAgICAgLy8gLi4uIHVubGVzcyB0aGUg
bW91c2UgaXMgb3ZlciBhbiBpbWFnZSwgdGhlbiB3ZSBzdGFydCBkcmFnZ2luZyBqdXN0IHRoZSBp
bWFnZQogICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rp
b25JbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRs
ZXJCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2JsYWNr
YmVycnkvRXZlbnRIYW5kbGVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dGFic1Rv
QWxsRm9ybUNvbnRyb2xzCiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZp
ZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAg
cmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmZv
Y3VzRG9jdW1lbnRWaWV3KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZl
bnRIYW5kbGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDkgKzE0OCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lk
Z2V0TW91c2VEb3duRXYKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2Vsc2UKLSAgICBy
ZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6OkFsdEtleTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Vm
bC9FdmVudEhhbmRsZXJFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2
ICsxMjAsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50CiAKIHVu
c2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKLSAgICByZXR1cm4g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
OkFsdEtleTsKIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxl
ckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5k
bGVyR3RrLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ndGsv
RXZlbnRIYW5kbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiAvLyBHVEsrIG11c3Qgc2Nyb2xsIGhvcml6b250YWxseSBpZiB0aGUgbW91c2UgcG9pbnRlciBp
cyBvbiB0b3Agb2YgdGhlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxOSw5ICs3MTksOSBAQCB1bnNp
Z25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVyCiAgICAgLy8gU28sIHdlIHVzZSBD
b250cm9sIGluIHRoaXMgY2FzZSwgZXZlbiB0aG91Z2ggaXQgY29uZmxpY3RzIHdpdGggRW1hY3Mt
c3R5bGUga2V5IGJpbmRpbmdzLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTA3PiBmb3IgbW9yZSBkZXRhaWwuCiAgICAgaWYgKEFYT2JqZWN0
Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXk7CisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OwogCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw5ICsxMjQsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFz
c01vdXNlUmVsZWFzZUV2ZW50CiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycygpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4g
UGxhdGZvcm1FdmVudDo6Q3RybEtleSB8IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbHNlCi0g
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25Fdgog
CiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRI
YW5kbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRI
YW5kbGVyV3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3d4
L0V2ZW50SGFuZGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIFBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWEKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUV2ZW50X2gKKyNkZWZpbmUgUGxhdGZvcm1FdmVudF9o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1FdmVudCB7CitwdWJsaWM6
CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgTm9UeXBlID0gMCwKKworICAgICAgICAvLyBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQKKyAgICAgICAgS2V5RG93biwKKyAgICAgICAgS2V5VXAsCisgICAg
ICAgIFJhd0tleURvd24sCisgICAgICAgIENoYXIsCisKKyAgICAgICAgLy8gUGxhdGZvcm1Nb3Vz
ZUV2ZW50CisgICAgICAgIE1vdXNlTW92ZWQsCisgICAgICAgIE1vdXNlUHJlc3NlZCwKKyAgICAg
ICAgTW91c2VSZWxlYXNlZCwKKyAgICAgICAgTW91c2VTY3JvbGwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgV2hlZWwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xsQmVnaW4sCisg
ICAgICAgIEdlc3R1cmVTY3JvbGxFbmQsCisgICAgICAgIEdlc3R1cmVTY3JvbGxVcGRhdGUsCisg
ICAgICAgIEdlc3R1cmVUYXAsCisgICAgICAgIEdlc3R1cmVUYXBEb3duLAorICAgICAgICBHZXN0
dXJlRG91YmxlVGFwLAorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CisKKworICAgIC8vIEV2ZW50IE1vZGlmaWVycwor
CisgICAgZW51bSBNb2RpZmllcktleSB7CisgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKKyAgICAg
ICAgQ3RybEtleSA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKKyAgICAgICAg
U2hpZnRLZXkgPSAxIDw8IDMKKyAgICB9OworCisgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9
CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9CisKKyAgICB1
bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChhbHRLZXko
KSA/IEFsdEtleSA6IDApCisgICAgICAgICAgICB8IChjdHJsS2V5KCkgPyBDdHJsS2V5IDogMCkK
KyAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1ldGFLZXkgOiAwKQorICAgICAgICAgICAgfCAo
c2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUGxh
dGZvcm1FdmVudCgpCisgICAgICAgIDogbV9zaGlmdEtleShmYWxzZSkKKyAgICAgICAgLCBtX2N0
cmxLZXkoZmFsc2UpCisgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCisgICAgICAgICwgbV9tZXRh
S2V5KGZhbHNlKQorICAgICAgICAsIG1fdHlwZShOb1R5cGUpCisgICAgeworICAgIH0KKworICAg
IFBsYXRmb3JtRXZlbnQoVHlwZSB0eXBlKQorICAgICAgICA6IG1fc2hpZnRLZXkoZmFsc2UpCisg
ICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQorICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQorICAg
ICAgICAsIG1fbWV0YUtleShmYWxzZSkKKyAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICB7Cisg
ICAgfQorCisgICAgUGxhdGZvcm1FdmVudChUeXBlIHR5cGUsIGJvb2wgc2hpZnRLZXksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAgOiBtX3NoaWZ0S2V5
KHNoaWZ0S2V5KQorICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQorICAgICAgICAsIG1fYWx0
S2V5KGFsdEtleSkKKyAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKKyAgICAgICAgLCBtX3R5
cGUodHlwZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX3NoaWZ0S2V5OworICAgIGJvb2wg
bV9jdHJsS2V5OworICAgIGJvb2wgbV9hbHRLZXk7CisgICAgYm9vbCBtX21ldGFLZXk7CisgICAg
dW5zaWduZWQgbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUGxhdGZvcm1FdmVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUdlc3R1cmVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtR2VzdHVyZUV2ZW50LmgJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDQy
ICsyOSwzMCBAQAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIAogI2luY2x1ZGUgIkludFBv
aW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2
ZW50IDogcHVibGljIFBsYXRmb3JtRXZlbnQgewogcHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0g
ICAgICAgIFNjcm9sbEJlZ2luVHlwZSwKLSAgICAgICAgU2Nyb2xsRW5kVHlwZSwKLSAgICAgICAg
U2Nyb2xsVXBkYXRlVHlwZSwKLSAgICAgICAgVGFwVHlwZSwKLSAgICAgICAgVGFwRG93blR5cGUs
Ci0gICAgICAgIERvdWJsZVRhcFR5cGUsCi0gICAgfTsKLQogICAgIFBsYXRmb3JtR2VzdHVyZUV2
ZW50KCkKLSAgICAgICAgOiBtX3R5cGUoU2Nyb2xsQmVnaW5UeXBlKQorICAgICAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luKQogICAgICAgICAsIG1f
dGltZXN0YW1wKDApCisgICAgICAgICwgbV9kZWx0YVgoMCkKKyAgICAgICAgLCBtX2RlbHRhWSgw
KQogICAgIHsKICAgICB9CiAKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudChUeXBlIHR5cGUsIGNv
bnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBj
b25zdCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBmbG9hdCBkZWx0YVgsIGNvbnN0IGZsb2F0IGRl
bHRhWSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRh
S2V5KQotICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5
cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIGRvdWJsZSB0aW1lc3RhbXAsIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBi
b29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisg
ICAgICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBt
ZXRhS2V5KQogICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICwgbV9nbG9i
YWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3Rh
bXApCiAgICAgICAgICwgbV9kZWx0YVgoZGVsdGFYKQogICAgICAgICAsIG1fZGVsdGFZKGRlbHRh
WSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQotICAgICAgICAsIG1fY3RybEtleShj
dHJsS2V5KQotICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKLSAgICAgICAgLCBtX21ldGFLZXko
bWV0YUtleSkKICAgICB7CiAgICAgfQogCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9Ci0KICAgICBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uOyB9IC8vIFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgogICAgIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRp
b247IH0gLy8gU2NyZWVuIGNvb3JkaW5hdGVzLgogCkBAIC03MiwyMiArNjAsMTMgQEAgcHVibGlj
OgogCiAgICAgZmxvYXQgZGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVg7IH0KICAgICBm
bG9hdCBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWTsgfQotICAgIGJvb2wgc2hpZnRL
ZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgYm9vbCBjdHJsS2V5KCkgY29u
c3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVy
biBtX2FsdEtleTsgfQotICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtl
eTsgfQotCisgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgVHlwZSBtX3R5cGU7CiAgICAgSW50UG9pbnQg
bV9wb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwogICAgIGRvdWJsZSBt
X3RpbWVzdGFtcDsKICAgICBmbG9hdCBtX2RlbHRhWDsKICAgICBmbG9hdCBtX2RlbHRhWTsKLSAg
ICBib29sIG1fc2hpZnRLZXk7Ci0gICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAgYm9vbCBtX2FsdEtl
eTsKLSAgICBib29sIG1fbWV0YUtleTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
CShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsOCBAQAogI2lmbmRlZiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnRfaAogI2RlZmluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnRfaAog
Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50Lmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNjUsNDAgKzY2LDE0IEBAIHR5cGVkZWYgc3Ry
dWN0IF9FdmFzX0V2ZW50X0tleV9VcCBFdmFzX0UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50IDogcHVibGljIFBsYXRm
b3JtRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIHsKLSAgICAgICAgICAg
IC8vIEtleURvd24gaXMgc2VudCBieSBwbGF0Zm9ybXMgc3VjaCBhcyBNYWMgT1MgWCwgZ3RrIGFu
ZCBRdCwgYW5kIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBib3RoIHBoeXNpY2FsIHByZXNzZWQga2V5
LCBhbmQgaXRzIHRyYW5zbGF0aW9uLgotICAgICAgICAgICAgLy8gRm9yIERPTSBwcm9jZXNzaW5n
LCBpdCBuZWVkcyB0byBiZSBkaXNhbWJpZ3VhdGVkIGFzIFJhd0tleURvd24gb3IgQ2hhciBldmVu
dC4KLSAgICAgICAgICAgIEtleURvd24sCi0KLSAgICAgICAgICAgIC8vIEtleVVwIGlzIHNlbnQg
YnkgYWxsIHBsYXRmb3Jtcy4KLSAgICAgICAgICAgIEtleVVwLAotCi0gICAgICAgICAgICAvLyBU
aGVzZSBldmVudHMgYXJlIHNlbnQgYnkgcGxhdGZvcm1zIHN1Y2ggYXMgV2luZG93cyBhbmQgd3hX
aWRnZXRzLiBSYXdLZXlEb3duIG9ubHkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgcGh5c2ljYWwg
a2V5LCBhbmQgQ2hhcgotICAgICAgICAgICAgLy8gb25seSBoYXMgaW5mb3JtYXRpb24gYWJvdXQg
YSBjaGFyYWN0ZXIgaXQgd2FzIHRyYW5zbGF0ZWQgaW50by4KLSAgICAgICAgICAgIFJhd0tleURv
d24sCi0gICAgICAgICAgICBDaGFyCi0gICAgICAgIH07Ci0KLSAgICAgICAgZW51bSBNb2RpZmll
cktleSB7Ci0gICAgICAgICAgICBBbHRLZXkgPSAxIDw8IDAsCi0gICAgICAgICAgICBDdHJsS2V5
ID0gMSA8PCAxLAotICAgICAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKLSAgICAgICAgICAgIFNo
aWZ0S2V5ID0gMSA8PCAzCi0gICAgICAgIH07Ci0KICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50KCkKLSAgICAgICAgICAgIDogbV90eXBlKEtleURvd24pCisgICAgICAgICAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93bikKICAgICAgICAgICAgICwgbV9hdXRvUmVw
ZWF0KGZhbHNlKQogICAgICAgICAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgwKQogICAg
ICAgICAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKDApCiAgICAgICAgICAgICAsIG1faXNL
ZXlwYWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAg
ICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKICNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JN
KENIUk9NSVVNKQogICAgICAgICAgICAgLCBtX2lzU3lzdGVtS2V5KGZhbHNlKQogI2VuZGlmCkBA
IC0xMTAsOCArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKwogICAgICAgICB2b2lkIGRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlLCBi
b29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZSk7IC8vIE9ubHkgdXNlZCBvbiBw
bGF0Zm9ybXMgdGhhdCBuZWVkIGl0LCBpLmUuIHRob3NlIHRoYXQgZ2VuZXJhdGUgS2V5RG93biBl
dmVudHMuCiAKICAgICAgICAgLy8gVGV4dCBhcyBhcyBnZW5lcmF0ZWQgYnkgcHJvY2Vzc2luZyBh
IHZpcnR1YWwga2V5IGNvZGUgd2l0aCBhIGtleWJvYXJkIGxheW91dApAQCAtMTM5LDE2ICsxMTMs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNBdXRvUmVwZWF0KCkgY29u
c3QgeyByZXR1cm4gbV9hdXRvUmVwZWF0OyB9CiAgICAgICAgIHZvaWQgc2V0SXNBdXRvUmVwZWF0
KGJvb2wgaW4pIHsgbV9hdXRvUmVwZWF0ID0gaW47IH0KICAgICAgICAgYm9vbCBpc0tleXBhZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNLZXlwYWQ7IH0KLSAgICAgICAgYm9vbCBzaGlmdEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICAgICAgYm9vbCBjdHJsS2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9hbHRLZXk7IH0KLSAgICAgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRhS2V5OyB9Ci0gICAgICAgIHVuc2lnbmVkIG1vZGlmaWVycygpIGNvbnN0IHsKLSAgICAgICAg
ICAgIHJldHVybiAoYWx0S2V5KCkgPyBBbHRLZXkgOiAwKQotICAgICAgICAgICAgICAgIHwgKGN0
cmxLZXkoKSA/IEN0cmxLZXkgOiAwKQotICAgICAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1l
dGFLZXkgOiAwKQotICAgICAgICAgICAgICAgIHwgKHNoaWZ0S2V5KCkgPyBTaGlmdEtleSA6IDAp
OwotICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudENhcHNMb2NrU3RhdGUo
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hp
ZnRLZXksIGJvb2wmIGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CkBAIC0x
OTMsNyArMTU3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFR5cGUgbV90eXBlOwogICAgICAgICBTdHJpbmcgbV90ZXh0OwogICAgICAg
ICBTdHJpbmcgbV91bm1vZGlmaWVkVGV4dDsKICAgICAgICAgU3RyaW5nIG1fa2V5SWRlbnRpZmll
cjsKQEAgLTIwMSwxMCArMTY0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQg
bV93aW5kb3dzVmlydHVhbEtleUNvZGU7CiAgICAgICAgIGludCBtX25hdGl2ZVZpcnR1YWxLZXlD
b2RlOwogICAgICAgICBib29sIG1faXNLZXlwYWQ7Ci0gICAgICAgIGJvb2wgbV9zaGlmdEtleTsK
LSAgICAgICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAgICAgIGJvb2wgbV9hbHRLZXk7Ci0gICAgICAg
IGJvb2wgbV9tZXRhS2V5OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBSZXRhaW5QdHI8
TlNFdmVudD4gbV9tYWNFdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtTW91c2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtTW91c2VFdmVudC5oCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBQbGF0Zm9ybU1vdXNlRXZlbnRfaAogCiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAKICNpZiBQTEFURk9STShHVEspCiB0eXBl
ZGVmIHN0cnVjdCBfR2RrRXZlbnRCdXR0b24gR2RrRXZlbnRCdXR0b247CkBAIC02MSwxOCArNjIs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIC8vIFRoZXNlIGJ1dHRvbiBudW1i
ZXJzIG1hdGNoIHRoZSBvbmVzIHVzZWQgaW4gdGhlIERPTSBBUEksIDAgdGhyb3VnaCAyLCBleGNl
cHQgZm9yIE5vQnV0dG9uIHdoaWNoIGlzbid0IHNwZWNpZmllZC4KICAgICBlbnVtIE1vdXNlQnV0
dG9uIHsgTm9CdXR0b24gPSAtMSwgTGVmdEJ1dHRvbiwgTWlkZGxlQnV0dG9uLCBSaWdodEJ1dHRv
biB9OwotICAgIGVudW0gTW91c2VFdmVudFR5cGUgeyBNb3VzZUV2ZW50TW92ZWQsIE1vdXNlRXZl
bnRQcmVzc2VkLCBNb3VzZUV2ZW50UmVsZWFzZWQsIE1vdXNlRXZlbnRTY3JvbGwgfTsKICAgICAK
LSAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQgeworICAgIGNsYXNzIFBsYXRmb3JtTW91c2VF
dmVudCA6IHB1YmxpYyBQbGF0Zm9ybUV2ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBsYXRm
b3JtTW91c2VFdmVudCgpCi0gICAgICAgICAgICA6IG1fYnV0dG9uKE5vQnV0dG9uKQotICAgICAg
ICAgICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50TW92ZWQpCisgICAgICAgICAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkKKyAgICAgICAgICAgICwgbV9idXR0
b24oTm9CdXR0b24pCiAgICAgICAgICAgICAsIG1fY2xpY2tDb3VudCgwKQotICAgICAgICAgICAg
LCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fdGltZXN0YW1wKDApCiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJG
bGFncygwKQogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTgzLDE3ICs3OSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgTW91c2VCdXR0b24gYnV0dG9uLCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdCwgYm9vbCBj
dHJsLCBib29sIGFsdCwgYm9vbCBtZXRhLCBkb3VibGUgdGltZXN0YW1wKQotICAgICAgICAgICAg
OiBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE1vdXNl
QnV0dG9uIGJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCkKKyAgICAgICAgICAg
IDogUGxhdGZvcm1FdmVudCh0eXBlLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5
KQorICAgICAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX2ds
b2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX2J1dHRvbihidXR0
b24pCi0gICAgICAgICAgICAsIG1fZXZlbnRUeXBlKGV2ZW50VHlwZSkKICAgICAgICAgICAgICwg
bV9jbGlja0NvdW50KGNsaWNrQ291bnQpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnQp
Ci0gICAgICAgICAgICAsIG1fY3RybEtleShjdHJsKQotICAgICAgICAgICAgLCBtX2FsdEtleShh
bHQpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhKQogICAgICAgICAgICAgLCBtX3RpbWVz
dGFtcCh0aW1lc3RhbXApCiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJGbGFncygwKQogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTEwMiw2ICs5NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZmFsc2UpCiAjZW5kaWYKICAgICAgICAgewor
ICAgICAgICAgICAgLy9BU1NFUlQoaXNQbGF0Zm9ybU1vdXNlRXZlbnRUeXBlKHR5cGUpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBwb3MoKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uOyB9CkBAIC0xMTQsNyArMTA3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBpbnQgbW92ZW1lbnRZKCkgY29uc3QgeyByZXR1cm4gbV9tb3ZlbWVudERlbHRhLnkoKTsg
fQogI2VuZGlmCiAgICAgICAgIE1vdXNlQnV0dG9uIGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YnV0dG9uOyB9Ci0gICAgICAgIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXZlbnRUeXBlOyB9CiAgICAgICAgIGludCBjbGlja0NvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9jbGlja0NvdW50OyB9CiAgICAgICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVy
biBtX3NoaWZ0S2V5OyB9CiAgICAgICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3RybEtleTsgfQpAQCAtMTQyLDcgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBk
ZWZpbmVkKF9fT0JKQ19fKQogICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqLCBO
U1ZpZXcgKndpbmRvd1ZpZXcpOwogI2VuZGlmCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChp
bnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24gYnV0dG9u
LCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChp
bnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24gYnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKTsKICAgICAgICAgaW50
IGV2ZW50TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQpAQCAtMTcwLDEy
ICsxNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEludFBvaW50IG1fbW92ZW1l
bnREZWx0YTsKICNlbmRpZgogICAgICAgICBNb3VzZUJ1dHRvbiBtX2J1dHRvbjsKLSAgICAgICAg
TW91c2VFdmVudFR5cGUgbV9ldmVudFR5cGU7CiAgICAgICAgIGludCBtX2NsaWNrQ291bnQ7Ci0g
ICAgICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICAgICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAgICAg
IGJvb2wgbV9hbHRLZXk7Ci0gICAgICAgIGJvb2wgbV9tZXRhS2V5OwogICAgICAgICBkb3VibGUg
bV90aW1lc3RhbXA7IC8vIHVuaXQ6IHNlY29uZHMKICAgICAgICAgdW5zaWduZWQgbV9tb2RpZmll
ckZsYWdzOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1XaGVlbEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgUGxhdGZvcm1XaGVlbEV2ZW50X2gKIAogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1FdmVudC5oIgogCiAjaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBzdHJ1Y3Qg
X0dka0V2ZW50U2Nyb2xsIEdka0V2ZW50U2Nyb2xsOwpAQCAtODQsMTggKzg1LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBQbGF0Zm9ybVdoZWVs
RXZlbnQgeworICAgIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudCA6IHB1YmxpYyBQbGF0Zm9ybUV2
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCgpCi0gICAgICAg
ICAgICA6IG1fZGVsdGFYKDApCisgICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1F
dmVudDo6V2hlZWwpCisgICAgICAgICAgICAsIG1fZGVsdGFYKDApCiAgICAgICAgICAgICAsIG1f
ZGVsdGFZKDApCiAgICAgICAgICAgICAsIG1fd2hlZWxUaWNrc1goMCkKICAgICAgICAgICAgICwg
bV93aGVlbFRpY2tzWSgwKQogICAgICAgICAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50KQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAg
ICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAg
ICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZGlyZWN0aW9uSW52
ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICAgICAgLCBtX2hhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMoZmFsc2UpCkBAIC0xMDcsMTcgKzEwNSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIH0KIAogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSW50UG9pbnQgcG9zaXRp
b24sIEludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwg
ZmxvYXQgd2hlZWxUaWNrc1gsIGZsb2F0IHdoZWVsVGlja3NZLCBQbGF0Zm9ybVdoZWVsRXZlbnRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBtZXRhS2V5KQotICAgICAgICAgICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9u
KQorICAgICAgICAgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBzaGlm
dEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KQorICAgICAgICAgICAgLCBtX3Bvc2l0aW9u
KHBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9u
KQogICAgICAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCiAgICAgICAgICAgICAsIG1fZGVsdGFZ
KGRlbHRhWSkKICAgICAgICAgICAgICwgbV93aGVlbFRpY2tzWCh3aGVlbFRpY2tzWCkKICAgICAg
ICAgICAgICwgbV93aGVlbFRpY2tzWSh3aGVlbFRpY2tzWSkKICAgICAgICAgICAgICwgbV9ncmFu
dWxhcml0eShncmFudWxhcml0eSkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkK
LSAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgICAgICAgICAsIG1fYWx0S2V5
KGFsdEtleSkKLSAgICAgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCiAgICAgICAgICAgICAs
IG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICAgICAgLCBtX2hh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2UpCkBAIC0xMzksMTEgKzEzNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBn
cmFudWxhcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJpdHk7IH0KIAotICAgICAgICBi
b29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgICAgICBib29s
IGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICAgICAgYm9vbCBhbHRL
ZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtleTsgfQotICAgICAgICBib29sIG1ldGFLZXkoKSBj
b25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KLQogICAgICAgICBpbnQgeCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24ueCgpOyB9IC8vIFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgogICAg
ICAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ueSgpOyB9CiAgICAgICAgIGlu
dCBnbG9iYWxYKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbi54KCk7IH0gLy8gU2Ny
ZWVuIGNvb3JkaW5hdGVzLgpAQCAtMjA4LDEwICsxOTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGZsb2F0IG1fd2hlZWxUaWNrc1g7CiAgICAgICAgIGZsb2F0IG1fd2hlZWxUaWNr
c1k7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7
Ci0gICAgICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICAgICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAg
ICAgIGJvb2wgbV9hbHRLZXk7Ci0gICAgICAgIGJvb2wgbV9tZXRhS2V5OwogICAgICAgICBib29s
IG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBM
QVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBib29sIG1faGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JOb25lLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDcg
KzQ3Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFcKICNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCiB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbShjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQogewotICAgIEFTU0VSVChwZ2UudHlwZSgpID09
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKTsKKyAgICBBU1NFUlQocGdlLnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwKTsKICAgICAvLyBGSVhNRTog
bW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIGFjdGl2ZS4K
ICAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICBtX2N1cnJl
bnRab29tU2NhbGUgPSAxOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JO
b25lOjp6b29tKGNvbnN0IFBsYXQKICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1gg
PSAoMSAtIHNjYWxlKSAqIHBnZS5nbG9iYWxQb3NpdGlvbigpLngoKTsKICAgICAgICAgbV96b29t
RGF0YS5tX2Rlc2lyZWRUcmFuc1kgPSAoMSAtIHNjYWxlKSAqIHBnZS5nbG9iYWxQb3NpdGlvbigp
LnkoKTsKICNpZiBFTkFCTEUoRE9VQkxFX1RBUF9DRU5URVJTKQotICAgICAgICBpZiAocGdlLnR5
cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSkgeworICAgICAgICBp
ZiAocGdlLnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwKSB7CiAgICAg
ICAgICAgICAvLyBab29tIHRvIGNlbnRyZSBvZiBkaXNwbGF5LiBQaW5jaC10by16b29tIG1heSBu
b3Qgd2FudCB0aGlzIGJlaGF2aW91ci4KICAgICAgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVk
VHJhbnNYICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpIC8gMiAtIHBnZS5nbG9i
YWxQb3NpdGlvbigpLngoKTsKICAgICAgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNZ
ICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWlnaHQoKSAvIDIgLSBwZ2UuZ2xvYmFsUG9z
aXRpb24oKS55KCk7CkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
OmhhbmRsZUdlc3R1cmVFdgogewogICAgIFRSQUNFX0VWRU5UKCJTY3JvbGxBbmltYXRvck5vbmU6
OmhhbmRsZUdlc3R1cmVFdmVudCIsIHRoaXMsIDApOwogICAgIHN3aXRjaCAocGdlLnR5cGUoKSkg
ewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CisgICAgY2Fz
ZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgogICAgICAgICB6b29tKHBnZSk7CiAg
ICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tC
ZXJyeS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNywyNSArNDI3LDIxIEBAIHN0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXAKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5
RG93bjsKICAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlV
cDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA7CisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlVcDsKICAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpLZXlib2FyZEV2ZW50OjpLZXlDaGFyOgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpDaGFyOwogICAgIH0KIH0KIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQgZXZlbnQpCi0g
ICAgOiBtX3R5cGUodG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShldmVudC50eXBl
KCkpKQorICAgIDogUGxhdGZvcm1FdmVudCh0b1dlYkNvcmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRU
eXBlKGV2ZW50LnR5cGUoKSksIGV2ZW50LnNoaWZ0QWN0aXZlKCkgfHwgKGV2ZW50LmNoYXJhY3Rl
cigpID09IEtFWUNPREVfQkFDS19UQUIpLCBldmVudC5jdHJsQWN0aXZlKCksIGV2ZW50LmFsdEFj
dGl2ZSgpLCBmYWxzZSkKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yQmxh
Y2tCZXJyeUNoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkpCiAgICAgLCBtX2F1dG9SZXBlYXQo
ZmFsc2UpCiAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvckJs
YWNrQmVycnlDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpKQogICAgICwgbV9pc0tleXBhZChm
YWxzZSkKLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQuc2hpZnRBY3RpdmUoKSB8fCAoZXZlbnQuY2hh
cmFjdGVyKCkgPT0gS0VZQ09ERV9CQUNLX1RBQikpIC8vIEJhY2tUYWIgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgU2hpZnQgKyBUYWIuCi0gICAgLCBtX2N0cmxLZXkoZXZlbnQuY3RybEFjdGl2ZSgpKQot
ICAgICwgbV9hbHRLZXkoZXZlbnQuYWx0QWN0aXZlKCkpCi0gICAgLCBtX21ldGFLZXkoZmFsc2Up
CiAgICAgLCBtX3VubW9kaWZpZWRDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpCiB7CiAgICAg
dW5zaWduZWQgc2hvcnQgY2hhcmFjdGVyID0gYWRqdXN0Q2hhcmFjdGVyRnJvbU9TKGV2ZW50LmNo
YXJhY3RlcigpKTsKQEAgLTQ2MSwxNiArNDU3LDE2IEBAIGJvb2wgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpjdXJyZW50Q2Fwc0wKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKK3ZvaWQgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVu
dDo6VHlwZSB0eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiB7CiAgICAgLy8g
Q2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwg
YXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJU
KG1fdHlwZSA9PSBLZXlEb3duKTsKKyAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6
OktleURvd24pOwogICAgIG1fdHlwZSA9IHR5cGU7CiAKICAgICBpZiAoYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93
bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmco
KTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAJKHJldmlz
aW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTcgKzEyNSwxNyBA
QCBib29sIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmlzT3Zlck1pCiAKIHZvaWQgR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kVGFwRG93bkdlc3R1cmVFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQogewotICAgIGdl
c3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcERvd25UeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVuUG9z
aXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwg
bV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0
dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24sIG1fZmlyc3RUb3VjaFBvc2l0
aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAu
ZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZv
aWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsK
LSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpUYXBUeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVu
UG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtl
eSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCwgbV9maXJzdFRvdWNoUG9zaXRp
b24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5m
LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAogdm9p
ZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmREb3VibGVDbGlja0dlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVz
KQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0
VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtl
eSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVu
ZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwLCBt
X2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRv
dWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0
YUtleSkpOwogfQogCiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25z
dCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCkBAIC0x
NTksMTIgKzE1OSwxMiBAQCBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMg
CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZUJl
Z2luKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVy
ZXMpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBv
aW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbiwgdG91
Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAw
LmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9
CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZUVu
ZChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVz
LCBmbG9hdCB4VmVsb2NpdHksIGZsb2F0IHlWZWxvY2l0eSkKIHsKLSAgICBnZXN0dXJlcy0+YXBw
ZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRU
eXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3Vj
aFRpbWUsIHhWZWxvY2l0eSwgeVZlbG9jaXR5LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0
S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2
ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQsIHRvdWNoUG9pbnQucG9zKCksIHRv
dWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgeFZlbG9jaXR5LCB5VmVsb2Np
dHksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2
b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZFNjCiAgICAgZmxvYXQgZGVsdGFYKHRvdWNoUG9pbnQucG9zKCkueCgpIC0gbV9maXJzdFRvdWNo
UG9zaXRpb24ueCgpKTsKICAgICBmbG9hdCBkZWx0YVkodG91Y2hQb2ludC5wb3MoKS55KCkgLSBt
X2ZpcnN0VG91Y2hQb3NpdGlvbi55KCkpOwogCi0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9y
bUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZSwgdG91
Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCBk
ZWx0YVgsIGRlbHRhWSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNj
cmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRhWCwgZGVsdGFZLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKICAgICBtX2ZpcnN0VG91Y2hQb3NpdGlv
biA9IHRvdWNoUG9pbnQucG9zKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsOCArNDgsOCBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1
YXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQogICAgIC8vIENhbiBvbmx5IGNo
YW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sg
aW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0g
S2V5RG93bik7Ci0gICAgQVNTRVJUKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09IENoYXIp
OworICAgIEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93bik7CisgICAgQVNT
RVJUKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biB8fCB0eXBlID09IFBsYXRmb3Jt
RXZlbnQ6OkNoYXIpOwogICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgaWYgKGJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAJKHJldmlzaW9uIDEwMzA3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDI2ICsyOTcsMjggQEAgYm9vbCBQb3B1cENvbnRhaW5l
cjo6aGFuZGxlVG91Y2hFdmVudChjbwogYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAg
c3dpdGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6VGFwVHlwZTogewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92
ZShnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCks
IE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2
ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRL
ZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsK
LSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBv
c2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3Vz
ZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXko
KSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJl
RXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1
cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQs
IC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVu
dC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXko
KSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVUYXA6IHsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2Vz
dHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0
dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50
LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1w
KCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJl
RXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFs
dEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkp
OworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBv
c2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVu
dC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5
KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CiAg
ICAgICAgIC8vIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGZha2VNb3VzZU1vdmUpOwogICAgICAgICBo
YW5kbGVNb3VzZURvd25FdmVudChmYWtlTW91c2VEb3duKTsKICAgICAgICAgaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0g
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6IHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVF
dmVudC5nbG9iYWxQb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVu
dC5kZWx0YVkoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpIC8gMTIwLjBmLCBnZXN0dXJlRXZlbnQu
ZGVsdGFZKCkgLyAxMjAuMGYsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBnZXN0dXJlRXZlbnQu
c2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgp
LCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50
aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKLSAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlRhcERvd25UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJl
Z2luOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duOgogICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksMTIg
KzE5OSwxMiBAQCBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlclR5cGVFdmVudChjb25zdCBQCiAgICAg
Ly8gV2UgdXNlIFJhd0tleURvd24vQ2hhci9LZXlVcCBldmVudCBzY2hlbWUgb24gYWxsIHBsYXRm
b3JtcywKICAgICAvLyBzbyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIgKG5vdCBSYXdLZXlE
b3duKSB0eXBlIGV2ZW50CiAgICAgLy8gaXMgY29uc2lkZXJlZCBhcyBjaGFyYWN0ZXIgdHlwZSBl
dmVudC4KLSAgICByZXR1cm4gZXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q2hhcjsKKyAgICByZXR1cm4gZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXI7CiB9
CiAKIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpLZXlVcCkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OktleVVwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghbnVtSXRlbXMoKSAmJiBl
dmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKSAhPSBWS0VZX0VTQ0FQRSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtODgzLDkgKzg4Myw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6
aGFuZGxlV2gKIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpoYW5kbGVHZXN0dXJl
RXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICBp
ZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVn
aW5UeXBlKQorICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVTY3JvbGxCZWdpbikKICAgICAgICAgYmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAgZWxz
ZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xs
RW5kVHlwZSkKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVTY3JvbGxFbmQpCiAgICAgICAgIGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudEVmbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMyArNDAsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3du
KiBldmVudCkKLSAgICA6IG1fdHlwZShLZXlEb3duKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywg
IkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEi
KSkKICAgICAsIG1fdGV4dChTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpKQogICAgICwg
bV91bm1vZGlmaWVkVGV4dChTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpKQotICAgICwg
bV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNo
aWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5t
b2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogewogICAgIFN0cmlu
ZyBrZXlOYW1lID0gU3RyaW5nKGV2ZW50LT5rZXkpOwogICAgIG1fa2V5SWRlbnRpZmllciA9IGtl
eUlkZW50aWZpZXJGb3JFdmFzS2V5TmFtZShrZXlOYW1lKTsKQEAgLTU4LDEyICs1NCw4IEBAIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKIH0KIAogUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
IGV2ZW50KQotICAgIDogbV90eXBlKEtleVVwKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlVcCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMs
ICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNv
bnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQi
KSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAg
ICAgLCBtX3RleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSkKLSAgICAsIG1fc2hp
ZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIp
KQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZp
ZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2Rp
Zmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKIHsKICAgICBTdHJpbmcga2V5
TmFtZSA9IFN0cmluZyhldmVudC0+a2V5KTsKICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVu
dGlmaWVyRm9yRXZhc0tleU5hbWUoa2V5TmFtZSk7CkBAIC03OSw3ICs3MSw3IEBAIHZvaWQgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUKICAgICBBU1NFUlQobV90eXBlID09IEtl
eURvd24pOwogICAgIG1fdHlwZSA9IHR5cGU7CiAKLSAgICBpZiAodHlwZSA9PSBSYXdLZXlEb3du
KSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAg
ICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygp
OwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZv
cm1Nb3VzZUV2ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUGxhdGZvcm1Nb3VzZUV2ZW50RWZsLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDQzICs0OCwzMSBAQCB2b2lkIFBsYXRmb3JtTW91c2VFdmVudDo6c2V0
Q2xpY2tDb3VudCh1CiB9CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50
KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXZlbnQsIEludFBvaW50IHBvc2l0aW9uKQot
ICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi54KCks
IGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50
LT5tb2RpZmllcnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMs
ICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBv
c2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKICAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpKQog
ICAgICwgbV9idXR0b24oTW91c2VCdXR0b24oZXZlbnQtPmJ1dHRvbiAtIDEpKQotICAgICwgbV9l
dmVudFR5cGUoTW91c2VFdmVudFByZXNzZWQpCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21v
ZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtl
eShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkK
LSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50
LT5tb2RpZmllcnMsICJNZXRhIikpCiAgICAgLCBtX3RpbWVzdGFtcChjdXJyZW50VGltZSgpKQog
ewogICAgIHNldENsaWNrQ291bnQoZXZlbnQtPmZsYWdzKTsKIH0KIAogUGxhdGZvcm1Nb3VzZUV2
ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXZlbnQs
IEludFBvaW50IHBvc2l0aW9uKQotICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2Fu
dmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCisg
ICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlm
aWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICwgbV9wb3NpdGlvbihJbnRQb2lu
dChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0
aW9uLnkoKSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMu
eCwgZXZlbnQtPmNhbnZhcy55KSkKICAgICAsIG1fYnV0dG9uKE1vdXNlQnV0dG9uKGV2ZW50LT5i
dXR0b24gLSAxKSkKLSAgICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRSZWxlYXNlZCkKLSAgICAs
IG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJT
aGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKICAgICAsIG1fdGlt
ZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiB7CiAgICAgc2V0Q2xpY2tDb3VudChldmVudC0+ZmxhZ3Mp
OwogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX01vdmUqIGV2ZW50LCBJbnRQb2ludCBwb3NpdGlvbikKLSAgICA6IG1fcG9z
aXRpb24oSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQt
PmN1ci5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmll
cnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0
YSIpKQorICAgICwgbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54IC0gcG9z
aXRpb24ueCgpLCBldmVudC0+Y3VyLmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCwgZXZlbnQtPmN1ci5j
YW52YXMueSkpCiAgICAgLCBtX2J1dHRvbihNb3VzZUJ1dHRvbihldmVudC0+YnV0dG9ucyAtIDEp
KQotICAgICwgbV9ldmVudFR5cGUoTW91c2VFdmVudE1vdmVkKQogICAgICwgbV9jbGlja0NvdW50
KDApCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19z
ZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFL
ZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAg
ICAgLCBtX3RpbWVzdGFtcChjdXJyZW50VGltZSgpKQogewogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAJKHJl
dmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdo
ZWVsRXZlbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMyArNDMsMTAgQEAgZW51bSB7
CiB9OwogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX1doZWVsKiBldikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQoZXYtPmNh
bnZhcy54LCBldi0+Y2FudmFzLnkpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpXaGVlbCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJTaGlmdCIp
LCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkNvbnRyb2wiKSwgZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKElu
dFBvaW50KGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KSkKICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oSW50UG9pbnQoZXYtPmNhbnZhcy54LCBldi0+Y2FudmFzLnkpKQogICAgICwgbV9ncmFudWxh
cml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlf
bW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJTaGlmdCIpKQotICAgICwgbV9jdHJsS2V5
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAg
ICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJBbHQi
KSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVy
cywgIk1ldGEiKSkKICAgICAsIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQog
ewogICAgIC8vIEEgbmVnYXRpdmUgeiB2YWx1ZSBtZWFucyAoaW4gRUZMKSB0aGF0IHdlIGFyZSBz
Y3JvbGxpbmcgZG93biwgc28gd2UgbmVlZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAJKHJldmlzaW9u
IDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDcgQEAgU3RyaW5nIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6c2luZ2xlQ2hhcgogLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0
aCB0aGUgb3RoZXIgcGxhdGZvcm0gZXZlbnQgY29uc3RydWN0b3JzCiAvLyBUT0RPOiBtX2dka0V2
ZW50S2V5IHNob3VsZCBiZSByZWZjb3VudGVkCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRm
b3JtS2V5Ym9hcmRFdmVudChHZGtFdmVudEtleSogZXZlbnQpCi0gICAgOiBtX3R5cGUoKGV2ZW50
LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkgPyBLZXlVcCA6IEtleURvd24pCisgICAgOiBQbGF0
Zm9ybUV2ZW50KChldmVudC0+dHlwZSA9PSBHREtfS0VZX1JFTEVBU0UpID8gUGxhdGZvcm1FdmVu
dDo6S2V5VXAgOiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAoZXZlbnQtPnN0YXRlICYgR0RLX1NI
SUZUX01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tUYWIpLCBldmVudC0+
c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLLCBldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLLCBl
dmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQogICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3Rl
clN0cmluZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlk
ZW50aWZpZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQpAQCAtNTU1LDEwICs1NTUsNiBA
QCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiAgICAgLCBtX3dpbmRv
d3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvckdka0tleUNvZGUoZXZlbnQtPmtleXZh
bCkpCiAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKGV2ZW50LT5rZXl2YWwpCiAgICAgLCBt
X2lzS2V5cGFkKGV2ZW50LT5rZXl2YWwgPj0gR0RLX0tQX1NwYWNlICYmIGV2ZW50LT5rZXl2YWwg
PD0gR0RLX0tQXzkpCi0gICAgLCBtX3NoaWZ0S2V5KChldmVudC0+c3RhdGUgJiBHREtfU0hJRlRf
TUFTSykgfHwgKGV2ZW50LT5rZXl2YWwgPT0gR0RLXzMyNzBfQmFja1RhYikpCi0gICAgLCBtX2N0
cmxLZXkoZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSykKLSAgICAsIG1fYWx0S2V5KGV2
ZW50LT5zdGF0ZSAmIEdES19NT0QxX01BU0spCi0gICAgLCBtX21ldGFLZXkoZXZlbnQtPnN0YXRl
ICYgR0RLX01FVEFfTUFTSykKICAgICAsIG1fZ2RrRXZlbnRLZXkoZXZlbnQpCiB7CiB9CkBAIC01
NzIsNyArNTY4LDcgQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQog
ICAgIGlmIChiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAodHlwZSA9PSBSYXdLZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bikgewogICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91
bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
TW91c2VFdmVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgUGxhdGZv
cm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoRwogICAgIGNhc2UgR0RLXzJCVVRUT05f
UFJFU1M6CiAgICAgY2FzZSBHREtfM0JVVFRPTl9QUkVTUzoKICAgICBjYXNlIEdES19CVVRUT05f
UkVMRUFTRToKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICBpZiAoZXZl
bnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNFKSB7Ci0gICAgICAgICAgICBtX2V2ZW50VHlw
ZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwogICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlID09IEdES19CVVRUT05fUFJFU1MpCiAgICAgICAgICAg
ICBtX2NsaWNrQ291bnQgPSAxOwpAQCAtODcsNyArODcsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudChHCiAKICAgICBzd2l0Y2ggKG1vdGlvbi0+dHlwZSkgewogICAg
IGNhc2UgR0RLX01PVElPTl9OT1RJRlk6Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVu
dE1vdmVkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAg
ICAgICBtX2J1dHRvbiA9IE5vQnV0dG9uOwogICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdo
ZWVsRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxF
dmVudChHCiB7CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IGRlbHRhID0gMTsKIAorICAgIG1fdHlw
ZSA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOworCiAgICAgbV9kZWx0YVggPSAwOwogICAgIG1fZGVs
dGFZID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tleUV2ZW50SU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9LZXlFdmVudElP
Uy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNyArNTAsMTMgQEAgc3RhdGljIFN0
cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoVwogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChXZWJFdmVudCAqZXZlbnQpCi0gICAgOiBtX3R5cGUo
ZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleVVwID8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlV
cCA6IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICA6IFBsYXRmb3JtRXZlbnQo
ZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleVVwID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFz
a1NoaWZ0LCBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wsIGV2
ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlLCBldmVudC5tb2Rp
ZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQpCiAgICAgLCBtX3RleHQoZXZlbnQu
Y2hhcmFjdGVycykKICAgICAsIG1fdW5tb2RpZmllZFRleHQoZXZlbnQuY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JLZXlF
dmVudChldmVudCkpCiAgICAgLCBtX2F1dG9SZXBlYXQoZXZlbnQuaXNLZXlSZXBlYXRpbmcpCiAg
ICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZShldmVudC5rZXlDb2RlKQogICAgICwgbV9pc0tl
eXBhZChmYWxzZSkgLy8gaVBob25lIGRvZXMgbm90IGRpc3Rpbmd1aXNoIHRoZSBudW1wYWQgPHJk
YXI6Ly9wcm9ibGVtLzcxOTA4MzU+Ci0gICAgLCBtX3NoaWZ0S2V5KGV2ZW50Lm1vZGlmaWVyRmxh
Z3MgJiBXZWJFdmVudEZsYWdNYXNrU2hpZnQpCi0gICAgLCBtX2N0cmxLZXkoZXZlbnQubW9kaWZp
ZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb250cm9sKQotICAgICwgbV9hbHRLZXkoZXZlbnQu
bW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5hdGUpCi0gICAgLCBtX21ldGFL
ZXkoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kKQogICAgICwg
bV9FdmVudChldmVudCkKIHsKICAgICBBU1NFUlQoZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleURv
d24gfHwgZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleVVwKTsKQEAgLTk0LDcgKzkwLDcgQEAgdm9p
ZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQogICAgIGlmIChiYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBSYXdL
ZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewog
ICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0
cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0tleUV2ZW50TWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNyBA
QCBzdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFCiB9CiAKIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KE5TRXZlbnQgKmV2ZW50KQotICAg
IDogbV90eXBlKGlzS2V5VXBFdmVudChldmVudCkgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eVVwIDogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIDogUGxhdGZvcm1FdmVu
dChpc0tleVVwRXZlbnQoZXZlbnQpID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1h
bmRLZXlNYXNrKQogICAgICwgbV90ZXh0KHRleHRGcm9tRXZlbnQoZXZlbnQpKQogICAgICwgbV91
bm1vZGlmaWVkVGV4dCh1bm1vZGlmaWVkVGV4dEZyb21FdmVudChldmVudCkpCiAgICAgLCBtX2tl
eUlkZW50aWZpZXIoa2V5SWRlbnRpZmllckZvcktleUV2ZW50KGV2ZW50KSkKQEAgLTE5NywxMCAr
MTk3LDYgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogICAgICwg
bV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudCkp
CiAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKFtldmVudCBrZXlDb2RlXSkKICAgICAsIG1f
aXNLZXlwYWQoaXNLZXlwYWRFdmVudChldmVudCkpCi0gICAgLCBtX3NoaWZ0S2V5KFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQotICAgICwgbV9jdHJsS2V5KFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spCi0gICAgLCBtX2FsdEtleShbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spCi0gICAgLCBtX21ldGFLZXkoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKICAgICAsIG1fbWFjRXZlbnQo
ZXZlbnQpCiB7CiAgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRv
bid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3Vz
ZUV2ZW50TWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNTcg
KzExOSw0OSBAQCBJbnRQb2ludCBnbG9iYWxQb2ludEZvckV2ZW50KE5TRXZlbnQgKmV2CiAgICAg
fQogfQogCi1zdGF0aWMgTW91c2VFdmVudFR5cGUgbW91c2VFdmVudEZvck5TRXZlbnQoTlNFdmVu
dCogZXZlbnQpIAorc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbW91c2VFdmVudEZvck5TRXZl
bnQoTlNFdmVudCogZXZlbnQpIAogewogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAgICAg
Y2FzZSBOU1Njcm9sbFdoZWVsOgotICAgICAgICByZXR1cm4gTW91c2VFdmVudFNjcm9sbDsKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlU2Nyb2xsOwogICAgIGNhc2UgTlNMZWZ0
TW91c2VEcmFnZ2VkOgogICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKICAgICBjYXNlIE5T
T3RoZXJNb3VzZURyYWdnZWQ6CiAgICAgY2FzZSBOU01vdXNlTW92ZWQ6Ci0gICAgICAgIHJldHVy
biBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkOwogICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgogICAgIGNhc2UgTlNSaWdodE1vdXNlRG93
bjoKICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50
UHJlc3NlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAg
ICBjYXNlIE5TTGVmdE1vdXNlVXA6CiAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKICAgICBjYXNl
IE5TT3RoZXJNb3VzZVVwOgotICAgICAgICByZXR1cm4gTW91c2VFdmVudFJlbGVhc2VkOworICAg
ICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gTW91c2VFdmVudE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6TW91c2VNb3ZlZDsKICAgICB9CiB9CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZv
cm1Nb3VzZUV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCi0gICAgOiBt
X3Bvc2l0aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQorICAgIDogUGxhdGZv
cm1FdmVudChtb3VzZUV2ZW50Rm9yTlNFdmVudChldmVudCksIFtldmVudCBtb2RpZmllckZsYWdz
XSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlN
YXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCisgICAgLCBtX3Bvc2l0aW9uKHBvaW50
Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9i
YWxQb2ludEZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fYnV0dG9uKG1vdXNlQnV0dG9uRm9yRXZl
bnQoZXZlbnQpKQotICAgICwgbV9ldmVudFR5cGUobW91c2VFdmVudEZvck5TRXZlbnQoZXZlbnQp
KQogICAgICwgbV9jbGlja0NvdW50KGNsaWNrQ291bnRGb3JFdmVudChldmVudCkpCi0gICAgLCBt
X3NoaWZ0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQotICAgICwg
bV9jdHJsS2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spCi0gICAg
LCBtX2FsdEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spCi0g
ICAgLCBtX21ldGFLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykK
ICAgICAsIG1fdGltZXN0YW1wKFtldmVudCB0aW1lc3RhbXBdKQogICAgICwgbV9tb2RpZmllckZs
YWdzKFtldmVudCBtb2RpZmllckZsYWdzXSkKICAgICAsIG1fZXZlbnROdW1iZXIoW2V2ZW50IGV2
ZW50TnVtYmVyXSkKIHsKIH0KIAotUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZl
bnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0dG9uIGJ1
dHRvbiwgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlLAorUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0
Zm9ybU1vdXNlRXZlbnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1v
dXNlQnV0dG9uIGJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKQotICAgIDogbV9wb3Np
dGlvbihJbnRQb2ludCh4LCB5KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXks
IGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoeCwg
eSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGdsb2JhbFgsIGdsb2JhbFkpKQog
ICAgICwgbV9idXR0b24oYnV0dG9uKQotICAgICwgbV9ldmVudFR5cGUoZXZlbnRUeXBlKQogICAg
ICwgbV9jbGlja0NvdW50KGNsaWNrQ291bnQpCi0gICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQot
ICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgLCBtX2FsdEtleShhbHRLZXkpCi0gICAgLCBt
X21ldGFLZXkobWV0YUtleSkKICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICAsIG1f
bW9kaWZpZXJGbGFncyhtb2RpZmllckZsYWdzKQogICAgICwgbV9ldmVudE51bWJlcihldmVudE51
bWJlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzMSw5ICsxMDMx
LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudAogCiB2b2lkIFNj
cm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlKQorICAgIGlmIChnZXN0dXJlRXZl
bnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbikKICAgICAgICAg
YmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAgZWxzZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSkKKyAgICBlbHNlIGlmIChnZXN0
dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQpCiAgICAg
ICAgIGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1doZWVsRXZlbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05
MCwxMyArOTAsMTAgQEAgc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRQog
fQogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChOU0V2ZW50KiBldmVu
dCwgTlNWaWV3ICp3aW5kb3dWaWV3KQotICAgIDogbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2
ZW50LCB3aW5kb3dWaWV3KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hl
ZWwsIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0Fs
dGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2sp
CisgICAgLCBtX3Bvc2l0aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQogICAg
ICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1f
Z3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBtX3NoaWZ0S2V5KFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQotICAgICwgbV9jdHJsS2V5KFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spCi0gICAgLCBtX2FsdEtleShb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spCi0gICAgLCBtX21ldGFL
ZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKICAgICAsIG1fcGhh
c2UocGhhc2VGb3JFdmVudChldmVudCkpCiAgICAgLCBtX21vbWVudHVtUGhhc2UobW9tZW50dW1Q
aGFzZUZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fdGltZXN0YW1wKFtldmVudCB0aW1lc3RhbXBd
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudFF0LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OTYsNyArNTk2LDcgQEAgc3RhdGljIFN0cmluZyBrZXlUZXh0Rm9yS2V5RXZlbnQoY29uc3Qg
UQogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUUtleUV2ZW50
KiBldmVudCkKIHsKICAgICBjb25zdCBpbnQgc3RhdGUgPSBldmVudC0+bW9kaWZpZXJzKCk7Ci0g
ICAgbV90eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlSZWxlYXNlKSA/IEtleVVw
IDogS2V5RG93bjsKKyAgICBtX3R5cGUgPSAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OktleVJl
bGVhc2UpID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwog
ICAgIG1fdGV4dCA9IGtleVRleHRGb3JLZXlFdmVudChldmVudCk7CiAgICAgbV91bm1vZGlmaWVk
VGV4dCA9IG1fdGV4dDsgLy8gRklYTUU6IG5vdCBjb3JyZWN0CiAgICAgbV9rZXlJZGVudGlmaWVy
ID0ga2V5SWRlbnRpZmllckZvclF0S2V5Q29kZShldmVudC0+a2V5KCkpOwpAQCAtNjE0LDEwICs2
MTQsMTAgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogdm9pZCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlIHR5cGUs
IGJvb2wpCiB7CiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJh
d0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVy
c2lvbnMuCi0gICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlEb3duKTsKKyAgICBBU1NFUlQobV90eXBl
ID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pOwogICAgIG1fdHlwZSA9IHR5cGU7CiAKLSAgICBp
ZiAodHlwZSA9PSBSYXdLZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6
UmF3S2V5RG93bikgewogICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1v
ZGlmaWVkVGV4dCA9IFN0cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCShyZXZpc2lv
biAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZl
bnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDQyICs0Myw0MiBAQCBzdGF0aWMgdm9pZCBt
b3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5CiAgICAgc2hpZnRLZXkgPSBrZXlib2FyZE1vZGlm
aWVycyAmIFF0OjpTaGlmdE1vZGlmaWVyOwogfQogCi1zdGF0aWMgdm9pZCBtb3VzZUV2ZW50VHlw
ZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChjb25zdCBRRXZlbnQqIGV2ZW50LCBNb3VzZUV2ZW50
VHlwZSYgbW91c2VFdmVudFR5cGUsIE1vdXNlQnV0dG9uJiBtb3VzZUJ1dHRvbikKK3N0YXRpYyB2
b2lkIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGNvbnN0IFFFdmVudCog
ZXZlbnQsIFBsYXRmb3JtRXZlbnQ6OlR5cGUmIG1vdXNlRXZlbnRUeXBlLCBNb3VzZUJ1dHRvbiYg
bW91c2VCdXR0b24pCiB7CiAgICAgZW51bSB7IE1vdXNlRXZlbnQsIEdyYXBoaWNzU2NlbmVNb3Vz
ZUV2ZW50IH0gZnJhbWV3b3JrTW91c2VFdmVudFR5cGU7CiAgICAgc3dpdGNoIChldmVudC0+dHlw
ZSgpKSB7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uRGJsQ2xpY2s6CiAgICAgY2FzZSBR
RXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3M6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBl
ID0gTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3Nl
ZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2U6CiAg
ICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudDsKLSAgICAgICAgbW91
c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBl
ID0gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBRRXZlbnQ6Ok1vdXNlTW92ZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBN
b3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAg
ICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAg
ICBicmVhazsKICNpZiAhZGVmaW5lZChRVF9OT19HUkFQSElDU1ZJRVcpCiAgICAgY2FzZSBRRXZl
bnQ6OkdyYXBoaWNzU2NlbmVNb3VzZURvdWJsZUNsaWNrOgogICAgIGNhc2UgUUV2ZW50OjpHcmFw
aGljc1NjZW5lTW91c2VQcmVzczoKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBH
cmFwaGljc1NjZW5lTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2
ZW50UHJlc3NlZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVByZXNzZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5l
TW91c2VSZWxlYXNlOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IEdyYXBoaWNz
U2NlbmVNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxl
YXNlZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVh
c2VkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNl
TW92ZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBHcmFwaGljc1NjZW5lTW91
c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAg
ICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50OwotICAgICAg
ICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgbW91c2VFdmVudFR5
cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTg2LDEyICs4NiwxMiBAQCBzdGF0aWMgdm9pZCBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0
dG9uCiAgICAgc3dpdGNoIChmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSkgewogICAgIGNhc2UgTW91
c2VFdmVudDogewogICAgICAgICBjb25zdCBRTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFFNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICBtb3VzZUJ1dHRvbnMg
PSBtb3VzZUV2ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25z
KCkgOiBtb3VzZUV2ZW50LT5idXR0b24oKTsKKyAgICAgICAgbW91c2VCdXR0b25zID0gbW91c2VF
dmVudFR5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSA6IG1vdXNlRXZlbnQtPmJ1dHRvbigpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBHcmFwaGljc1NjZW5lTW91c2VFdmVudDogewogICAgICAgICBjb25zdCBRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAgIG1vdXNlQnV0dG9ucyA9IG1vdXNlRXZl
bnRUeXBlID09IE1vdXNlRXZlbnRNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSA6IG1vdXNl
RXZlbnQtPmJ1dHRvbigpOworICAgICAgICBtb3VzZUJ1dHRvbnMgPSBtb3VzZUV2ZW50VHlwZSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9ucygpIDogbW91
c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xMTMs
NyArMTEzLDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoUQogCiAg
ICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSBoYW5kbGUgYSBjb250ZXh0IG1lbnUgZXZlbnQgaGVy
ZSBhcyB3ZSBkbyBpbiBQbGF0Zm9ybU1vdXNlRXZlbnQoUUlucHV0RXZlbnQqLCBpbnQpPwogICAg
IC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzI4Pi4K
LSAgICBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChldmVudCwgbV9ldmVu
dFR5cGUsIG1fYnV0dG9uKTsKKyAgICBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFF
dmVudChldmVudCwgbV90eXBlLCBtX2J1dHRvbik7CiAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50
KGV2ZW50LT5wb3MoKS50b1BvaW50KCkpOwogICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2lu
dChldmVudC0+c2NyZWVuUG9zKCkpOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoUQogI2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6Q29udGV4dE1lbnUpIHsKICAgICAgICAg
aXNDb250ZXh0TWVudUV2ZW50ID0gdHJ1ZTsKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2
ZW50UHJlc3NlZDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2Vk
OwogICAgICAgICBRQ29udGV4dE1lbnVFdmVudCogY2UgPSBzdGF0aWNfY2FzdDxRQ29udGV4dE1l
bnVFdmVudCo+KGV2ZW50KTsKICAgICAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50KGNlLT5wb3Mo
KSk7CiAgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChjZS0+Z2xvYmFsUG9zKCkp
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2
ZW50KFEKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIWlzQ29udGV4dE1lbnVFdmVudCkgewotICAg
ICAgICBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChldmVudCwgbV9ldmVu
dFR5cGUsIG1fYnV0dG9uKTsKKyAgICAgICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZy
b21RRXZlbnQoZXZlbnQsIG1fdHlwZSwgbV9idXR0b24pOwogICAgICAgICBRTW91c2VFdmVudCog
bW91c2VFdmVudCA9IHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50Kj4oZXZlbnQpOwogICAgICAgICBt
X3Bvc2l0aW9uID0gSW50UG9pbnQobW91c2VFdmVudC0+cG9zKCkpOwogICAgICAgICBtX2dsb2Jh
bFBvc2l0aW9uID0gSW50UG9pbnQobW91c2VFdmVudC0+Z2xvYmFsUG9zKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCShyZXZpc2lvbiAxMDMw
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSwxMyArNTksMTAgQEAgdm9pZCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OmFw
cGx5RGVsdGEoaW50IAogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChR
R3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQqIGUpCiAjaWZuZGVmIFFUX05PX1dIRUVMRVZFTlQKLSAg
ICA6IG1fcG9zaXRpb24oZS0+cG9zKCkudG9Qb2ludCgpKQorICAgIDogUGxhdGZvcm1FdmVudChQ
bGF0Zm9ybUV2ZW50OjpXaGVlbCwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllciwg
ZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0
OjpBbHRNb2RpZmllciwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0YU1vZGlmaWVyKQorICAgICwg
bV9wb3NpdGlvbihlLT5wb3MoKS50b1BvaW50KCkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGUt
PnNjcmVlblBvcygpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCkKLSAgICAsIG1fc2hpZnRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcikK
LSAgICAsIG1fY3RybEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIpCi0g
ICAgLCBtX2FsdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllcikKLSAgICAsIG1f
bWV0YUtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCiAgICAgLCBtX2RpcmVj
dGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNlbmRpZgogewpAQCAtNzgsMTMgKzc1LDEw
IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KFEKIAogUGxhdGZvcm1X
aGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGUpCiAjaWZuZGVmIFFU
X05PX1dIRUVMRVZFTlQKLSAgICA6IG1fcG9zaXRpb24oZS0+cG9zKCkpCisgICAgOiBQbGF0Zm9y
bUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1v
ZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIsIGUtPm1vZGlmaWVy
cygpICYgUXQ6OkFsdE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIp
CisgICAgLCBtX3Bvc2l0aW9uKGUtPnBvcygpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihlLT5n
bG9iYWxQb3MoKSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQp
Ci0gICAgLCBtX3NoaWZ0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0TW9kaWZpZXIpCi0g
ICAgLCBtX2N0cmxLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQotICAg
ICwgbV9hbHRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIpCi0gICAgLCBtX21l
dGFLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0YU1vZGlmaWVyKQogICAgICwgbV9kaXJlY3Rp
b25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjZW5kaWYKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQyLDkgKzE0Miw5IEBAIHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcldpbmRv
d3NLZXkKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQoV1BBUkFNIGNvZGUs
IExQQVJBTSBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdHlwZSkKK3N0YXRp
YyBib29sIGlzS2V5cGFkRXZlbnQoV1BBUkFNIGNvZGUsIExQQVJBTSBrZXlEYXRhLCBQbGF0Zm9y
bUV2ZW50OjpUeXBlIHR5cGUpCiB7Ci0gICAgaWYgKHR5cGUgIT0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpSYXdLZXlEb3duICYmIHR5cGUgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCkK
KyAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duICYmIHR5cGUgIT0gUGxh
dGZvcm1FdmVudDo6S2V5VXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAo
Y29kZSkgewpAQCAtMTg3LDE4ICsxODcsMTQgQEAgc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChX
UEFSQU0gY29kZSwgTAogc3RhdGljIGlubGluZSBTdHJpbmcgc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KFVDaGFyIGMpIHsgcmV0dXJuIFN0cmluZygmYywgMSk7IH0KIAogUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoSFdORCwgV1BBUkFNIGNvZGUsIExQQVJBTSBrZXlE
YXRhLCBUeXBlIHR5cGUsIGJvb2wgc3lzdGVtS2V5KQotICAgIDogbV90eXBlKHR5cGUpCi0gICAg
LCBtX3RleHQoKHR5cGUgPT0gQ2hhcikgPyBzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoY29kZSkgOiBT
dHJpbmcoKSkKLSAgICAsIG1fdW5tb2RpZmllZFRleHQoKHR5cGUgPT0gQ2hhcikgPyBzaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoY29kZSkgOiBTdHJpbmcoKSkKLSAgICAsIG1fa2V5SWRlbnRpZmllcigo
dHlwZSA9PSBDaGFyKSA/IFN0cmluZygpIDoga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2Rl
KGNvZGUpKQorICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBHZXRLZXlTdGF0ZShWS19TSElGVCkg
JiBISUdIX0JJVF9NQVNLX1NIT1JULCBHZXRLZXlTdGF0ZShWS19DT05UUk9MKSAmIEhJR0hfQklU
X01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCwg
ZmFsc2UpCisgICAgLCBtX3RleHQoKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgPyBzaW5n
bGVDaGFyYWN0ZXJTdHJpbmcoY29kZSkgOiBTdHJpbmcoKSkKKyAgICAsIG1fdW5tb2RpZmllZFRl
eHQoKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgPyBzaW5nbGVDaGFyYWN0ZXJTdHJpbmco
Y29kZSkgOiBTdHJpbmcoKSkKKyAgICAsIG1fa2V5SWRlbnRpZmllcigodHlwZSA9PSBQbGF0Zm9y
bUV2ZW50OjpDaGFyKSA/IFN0cmluZygpIDoga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2Rl
KGNvZGUpKQogICAgICwgbV9hdXRvUmVwZWF0KEhJV09SRChrZXlEYXRhKSAmIEtGX1JFUEVBVCkK
ICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKCh0eXBlID09IFJhd0tleURvd24gfHwgdHlw
ZSA9PSBLZXlVcCkgPyBjb2RlIDogMCkKICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUobV93
aW5kb3dzVmlydHVhbEtleUNvZGUpCiAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoY29k
ZSwga2V5RGF0YSwgdHlwZSkpCi0gICAgLCBtX3NoaWZ0S2V5KEdldEtleVN0YXRlKFZLX1NISUZU
KSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX2N0cmxLZXkoR2V0S2V5U3RhdGUoVktf
Q09OVFJPTCkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9hbHRLZXkoR2V0S2V5U3Rh
dGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9tZXRhS2V5KGZhbHNl
KQogICAgICwgbV9pc1N5c3RlbUtleShzeXN0ZW1LZXkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3Jt
TW91c2VFdmVudFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGlj
IEludFBvaW50IGdsb2JhbFBvc2l0aW9uRm9yRXZlbnQoSAogICAgIHJldHVybiBwb2ludDsKIH0K
IAotc3RhdGljIE1vdXNlRXZlbnRUeXBlIG1lc3NhZ2VUb0V2ZW50VHlwZShVSU5UIG1lc3NhZ2Up
CitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtZXNzYWdlVG9FdmVudFR5cGUoVUlOVCBtZXNz
YWdlKQogewogICAgIHN3aXRjaCAobWVzc2FnZSkgewogICAgICAgICBjYXNlIFdNX0xCVVRUT05E
QkxDTEs6CkBAIC01OCwzNSArNTgsMzIgQEAgc3RhdGljIE1vdXNlRXZlbnRUeXBlIG1lc3NhZ2VU
b0V2ZW50VHlwZQogICAgICAgICBjYXNlIFdNX0xCVVRUT05ET1dOOgogICAgICAgICBjYXNlIFdN
X1JCVVRUT05ET1dOOgogICAgICAgICBjYXNlIFdNX01CVVRUT05ET1dOOgotICAgICAgICAgICAg
cmV0dXJuIE1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZDsKIAogICAgICAgICBjYXNlIFdNX0xCVVRUT05VUDoKICAgICAgICAg
Y2FzZSBXTV9SQlVUVE9OVVA6CiAgICAgICAgIGNhc2UgV01fTUJVVFRPTlVQOgotICAgICAgICAg
ICAgcmV0dXJuIE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogCiAjaWYgIU9TKFdJTkNFKQogICAgICAgICBjYXNlIFdN
X01PVVNFTEVBVkU6CiAjZW5kaWYKICAgICAgICAgY2FzZSBXTV9NT1VTRU1PVkU6Ci0gICAgICAg
ICAgICByZXR1cm4gTW91c2VFdmVudE1vdmVkOworICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQ7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgLy9Nb3ZlIGlzIHJlbGF0aXZlbHkgaGFybWxl
c3MKLSAgICAgICAgICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICB9CiB9CisKIFBsYXRmb3JtTW91c2VF
dmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0g
d1BhcmFtLCBMUEFSQU0gbFBhcmFtLCBib29sIGRpZEFjdGl2YXRlV2ViVmlldykKLSAgICA6IG1f
cG9zaXRpb24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQorICAgIDogUGxhdGZvcm1F
dmVudChtZXNzYWdlVG9FdmVudFR5cGUobWVzc2FnZSksIHdQYXJhbSAmIE1LX1NISUZULCB3UGFy
YW0gJiBNS19DT05UUk9MLCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hP
UlQsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKKyAgICAsIG1f
cG9zaXRpb24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihnbG9iYWxQb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCiAgICAgLCBtX2Ns
aWNrQ291bnQoMCkKLSAgICAsIG1fc2hpZnRLZXkod1BhcmFtICYgTUtfU0hJRlQpCi0gICAgLCBt
X2N0cmxLZXkod1BhcmFtICYgTUtfQ09OVFJPTCkKLSAgICAsIG1fYWx0S2V5KEdldEtleVN0YXRl
KFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fbWV0YUtleShtX2FsdEtl
eSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2VycwogICAgICwgbV9k
aWRBY3RpdmF0ZVdlYlZpZXcoZGlkQWN0aXZhdGVXZWJWaWV3KQotICAgICwgbV9ldmVudFR5cGUo
bWVzc2FnZVRvRXZlbnRUeXBlKG1lc3NhZ2UpKQogICAgICwgbV9tb2RpZmllckZsYWdzKHdQYXJh
bSkKIHsKICAgICBtX3RpbWVzdGFtcCA9IDo6R2V0VGlja0NvdW50KCkqMC4wMDE7IC8vIEdldFRp
Y2tDb3VudCByZXR1cm5zIG1pbGxpc2Vjb25kcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NiwxMCArNjYsNyBAQCBzdGF0aWMgaW50IHZlcnRpY2FsU2Nyb2xsTGluZXMoKQogfQogCiBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChIV05EIGhXbmQsIGNvbnN0IEZs
b2F0U2l6ZSYgZGVsdGEsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uKQotICAgIDogbV9zaGlm
dEtleShmYWxzZSkKLSAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAsIG1fYWx0S2V5KGZhbHNl
KQotICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2
ZW50OjpXaGVlbCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZShmYWxzZSkKIHsKICAgICBtX2RlbHRhWCA9IGRlbHRhLndpZHRo
KCk7CkBAIC04OCwxMiArODUsOSBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxF
dmVudChICiB9CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQg
aFduZCwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCBpc01vdXNlSFdoZWVsKQot
ICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCisgICAgOiBQ
bGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCB3UGFyYW0gJiBNS19TSElGVCwgd1Bh
cmFtICYgTUtfQ09OVFJPTCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NI
T1JULCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCisgICAgLCBt
X3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQotICAgICwgbV9z
aGlmdEtleSh3UGFyYW0gJiBNS19TSElGVCkKLSAgICAsIG1fY3RybEtleSh3UGFyYW0gJiBNS19D
T05UUk9MKQotICAgICwgbV9hbHRLZXkoR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9N
QVNLX1NIT1JUKQotICAgICwgbV9tZXRhS2V5KG1fYWx0S2V5KSAvLyBGSVhNRTogV2UnbGwgaGF2
ZSB0byB0ZXN0IG90aGVyIGJyb3dzZXJzCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURl
dmljZShmYWxzZSkKIHsKICAgICAvLyBIb3cgbWFueSBwaXhlbHMgc2hvdWxkIHdlIHNjcm9sbCBw
ZXIgbGluZT8gIEdlY2tvIHVzZXMgdGhlIGhlaWdodCBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3d4L0tleWJvYXJkRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAkocmV2aXNpb24gMTAzMDc0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzM3LDE0ICszMzcsMTQgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29k
ZUZvcktleUV2ZW50KHVucwogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnQod3hLZXlFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgp
ID09IHd4RVZUX0tFWV9VUCkKLSAgICAgICAgbV90eXBlID0gS2V5VXA7CisgICAgICAgIG1fdHlw
ZSA9IFBsYXRmb3JtRXZlbnQ6OktleVVwOwogICAgIGVsc2UgaWYgKGV2ZW50LkdldEV2ZW50VHlw
ZSgpID09IHd4RVZUX0tFWV9ET1dOKQotICAgICAgICBtX3R5cGUgPSBLZXlEb3duOworICAgICAg
ICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogICAgIGVsc2UgaWYgKGV2ZW50Lkdl
dEV2ZW50VHlwZSgpID09IHd4RVZUX0NIQVIpCi0gICAgICAgIG1fdHlwZSA9IENoYXI7CisgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6OkNoYXI7CiAgICAgZWxzZQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICBpZiAobV90eXBlICE9IENoYXIpCisgICAgaWYgKG1fdHlw
ZSAhPSBQbGF0Zm9ybUV2ZW50OjpDaGFyKQogICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJ
ZGVudGlmaWVyRm9yV3hLZXlDb2RlKGV2ZW50LkdldEtleUNvZGUoKSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIC8vRU5URVIgaXMgYW4gZWRpdGluZyBjb21tYW5kIHByb2Nlc3NlZCBhcyBhIGNoYXIg
KG9ubHkgRW50ZXIgYW5kIFRhYiBhcmUpCkBAIC0zNzEsOSArMzcxLDkgQEAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wpCiB7CiAgICAgLy8gQ2Fu
IG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMg
d2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJUKG1f
dHlwZSA9PSBLZXlEb3duKTsKKyAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24pOwogICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikg
eworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAg
bV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsK
ICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VFdmVu
dFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZUV2
ZW50V3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
eC9Nb3VzZUV2ZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNiArMzMsMjUgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VF
dmVudChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCB3eFBvaW50JiBnbG9iYWxQb2lu
dCwgaW50IGNsaWNrQ291bnQpCi0gICAgOiBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkp
Ci0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50KQotICAgICwgbV9zaGlmdEtleShl
dmVudC5TaGlmdERvd24oKSkKLSAgICAsIG1fY3RybEtleShldmVudC5DbWREb3duKCkgfHwgZXZl
bnQuQ29udHJvbERvd24oKSkKLSAgICAsIG1fYWx0S2V5KGV2ZW50LkFsdERvd24oKSkKLSAgICAs
IG1fbWV0YUtleShldmVudC5NZXRhRG93bigpKSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0
IG90aGVyIGJyb3dzZXJzCitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlRnJvbU1vdXNl
RXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICB3eEV2ZW50VHlwZSB0eXBl
ID0gZXZlbnQuR2V0RXZlbnRUeXBlKCk7Ci0gICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92
ZWQ7Ci0gICAgCi0gICAgaWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9ET1dOIHx8IHR5cGUgPT0gd3hF
VlRfTUlERExFX0RPV04gfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9ET1dOKQotICAgICAgICBtX2V2
ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOwotICAgIAotICAgIGVsc2UgaWYgKHR5cGUgPT0g
d3hFVlRfTEVGVF9VUCB8fCB0eXBlID09IHd4RVZUX01JRERMRV9VUCB8fCB0eXBlID09IHd4RVZU
X1JJR0hUX1VQIHx8IAotICAgICAgICAgICAgICAgIHR5cGUgPT0gd3hFVlRfTEVGVF9EQ0xJQ0sg
fHwgdHlwZSA9PSB3eEVWVF9NSURETEVfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfUklHSFRfRENM
SUNLKQotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKIAorICAgIGlm
ICh0eXBlID09IHd4RVZUX0xFRlRfRE9XTiB8fCB0eXBlID09IHd4RVZUX01JRERMRV9ET1dOIHx8
IHR5cGUgPT0gd3hFVlRfUklHSFRfRE9XTikKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUHJlc3NlZDsKKyAgICBlbHNlIGlmICh0eXBlID09IHd4RVZUX0xFRlRfVVAgfHwgdHlw
ZSA9PSB3eEVWVF9NSURETEVfVVAgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9VUCB8fCB0eXBlID09
IHd4RVZUX0xFRlRfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RDTElDSyB8fCB0eXBl
ID09IHd4RVZUX1JJR0hUX0RDTElDSykKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUmVsZWFzZWQ7CiAgICAgZWxzZSBpZiAodHlwZSA9PSB3eEVWVF9NT1RJT04pCi0gICAgICAg
IG1fZXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6TW91c2VNb3ZlZDsKKworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVk
OworfQorCitQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCB3eE1v
dXNlRXZlbnQmIGV2ZW50LCBjb25zdCB3eFBvaW50JiBnbG9iYWxQb2ludCwgaW50IGNsaWNrQ291
bnQpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGVGcm9tTW91c2VFdmVudChldmVudCksIGV2ZW50
LlNoaWZ0RG93bigpLCBldmVudC5DbWREb3duKCkgfHwgZXZlbnQuQ29udHJvbERvd24oKSwgZXZl
bnQuQWx0RG93bigpLCBldmVudC5NZXRhRG93bigpKQorICAgIDogbV9wb3NpdGlvbihldmVudC5H
ZXRQb3NpdGlvbigpKQorICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludCkKK3sKIAog
ICAgIGlmIChldmVudC5MZWZ0SXNEb3duKCkgfHwgZXZlbnQuQnV0dG9uKHd4TU9VU0VfQlROX0xF
RlQpKQogICAgICAgICBtX2J1dHRvbiA9IExlZnRCdXR0b247CkBAIC02MCwxMSArNTksOCBAQCBQ
bGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjCiAgICAgICAgIG1fYnV0dG9u
ID0gUmlnaHRCdXR0b247CiAgICAgZWxzZSBpZiAoZXZlbnQuTWlkZGxlSXNEb3duKCkgfHwgZXZl
bnQuQnV0dG9uKHd4TU9VU0VfQlROX01JRERMRSkpCiAgICAgICAgIG1fYnV0dG9uID0gTWlkZGxl
QnV0dG9uOwotICAgIGVsc2UgaWYgKCFtX2V2ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQpCi0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCiAKLSAgICBpZiAobV9ldmVudFR5cGUgPT0g
TW91c2VFdmVudE1vdmVkKQorICAgIGlmIChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZCkKICAgICAgICAgbV9jbGlja0NvdW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIG1fY2xp
Y2tDb3VudCA9IGNsaWNrQ291bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9N
b3VzZVdoZWVsRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd3gvTW91c2VXaGVlbEV2ZW50V3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEzICszMywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50LCBjb25z
dCB3eFBvaW50JiBnbG9iYWxQb2ludCkKLSAgICA6IG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRp
b24oKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGV2ZW50LlNo
aWZ0RG93bigpLCBldmVudC5Db250cm9sRG93bigpLCBldmVudC5BbHREb3duKCksIGV2ZW50Lk1l
dGFEb3duKCkpCisgICAgLCBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCiAgICAgLCBt
X2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50KQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxC
eVBpeGVsV2hlZWxFdmVudCkKLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQuU2hpZnREb3duKCkpCi0g
ICAgLCBtX2N0cmxLZXkoZXZlbnQuQ29udHJvbERvd24oKSkKLSAgICAsIG1fYWx0S2V5KGV2ZW50
LkFsdERvd24oKSkKLSAgICAsIG1fbWV0YUtleShldmVudC5NZXRhRG93bigpKSAvLyBGSVhNRTog
V2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVyIGJyb3dzZXJzCiAgICAgLCBtX2RlbHRhWCgwKSAvLyB3
eCBkb2Vzbid0IHN1cHBvcnQgaG9yaXpvbnRhbCBtb3VzZSB3aGVlbCBzY3JvbGxpbmcKICAgICAs
IG1fZGVsdGFZKGV2ZW50LkdldFdoZWVsUm90YXRpb24oKSAvIGV2ZW50LkdldFdoZWVsRGVsdGEo
KSkKICAgICAsIG1fd2hlZWxUaWNrc1gobV9kZWx0YVgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTYyNSwxOSArNjI1LDE5IEBAIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXkKICAgICBFdmVudFJlY29yZCByZWNvcmQ7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7Ci0gICAgICAgIC8vIFRoaXMgZXZlbnQgaXMgdGhl
IHJlc3VsdCBvZiBhIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biB3aGljaAorICAgICAg
ICAvLyBUaGlzIGV2ZW50IGlzIHRoZSByZXN1bHQgb2YgYSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
IHdoaWNoCiAgICAgICAgIC8vIHdhcyBkaXNhbWJpZ3VhdGVkIGludG8gYSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlJhd0tleURvd24uIFNpbmNlCiAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgYWNj
ZXNzIHRvIHRoZSB0ZXh0IGhlcmUsIHdlIHJldHVybiwgYW5kIHdhaXQgZm9yIHRoZQogICAgICAg
ICAvLyBjb3JyZXNwb25kaW5nIGV2ZW50IGJhc2VkIG9uIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q2hhci4KICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkgewogICAgICAgICAvLyBXaGljaCB3b3VsZCBiZSB0
aGlzIG9uZS4gVGhpcyBldmVudCB3YXMgZGlzYW1iaWd1YXRlZCBmcm9tIHRoZSBzYW1lCi0gICAg
ICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biwgYnV0IHRvIGEgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpDaGFyLAorICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCBi
dXQgdG8gYSBQbGF0Zm9ybUV2ZW50OjpDaGFyLAogICAgICAgICAvLyB3aGljaCByZXRhaW5zIHRo
ZSB0ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGV2ZW50LiBTbywgd2UgY2FuIHNhZmVseSBwYXNzCiAg
ICAgICAgIC8vIG9uIHRoZSBldmVudCBhcyBhIGtleS1kb3duIGV2ZW50IHRvIHRoZSBwbHVnaW4u
CiAgICAgICAgIHJlY29yZC53aGF0ID0ga2V5RG93bjsKICAgICB9IGVsc2UgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQpIHsKLSAgICAgICAgLy8gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpLZXlVcCBldmVudHMgYWx3YXlzIGhhdmUgdGhlIHRleHQsIHNvIG5vdGhp
bmcKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudDo6S2V5VXAgZXZlbnRzIGFsd2F5cyBoYXZlIHRo
ZSB0ZXh0LCBzbyBub3RoaW5nCiAgICAgICAgIC8vIGZhbmN5IGhlcmUuCiAgICAgICAgIHJlY29y
ZC53aGF0ID0ga2V5VXA7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgSW50
ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0KICAgICB9CiAKICNpZiBFTkFCTEUoR0VT
VFVSRV9FVkVOVFMpCi0gICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpEb3VibGVUYXBUeXBlLCBJbnRQb2ludCh0eCwgdHkpLCBJbnRQb2ludCh0eCwgdHkp
LCAwLCBzY2FsZSwgMC5mLCAwLCAwLCAwLCAwKTsKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCBw
Z2UoUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCwgSW50UG9pbnQodHgsIHR5KSwgSW50
UG9pbnQodHgsIHR5KSwgMCwgc2NhbGUsIDAuZiwgMCwgMCwgMCwgMCk7CiAgICAgZG9jdW1lbnQt
PnZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwZ2Up
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2NhbGUpOwpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpX
ZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRm
b3JtV2hlZWxFdmVudDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJk
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQ6Oldl
YktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkVkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVu
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkcmFnRW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFu
ZHNJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KToKKwogMjAxMS0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXNlIGJpdCBmaWVsZCBmb3IgYm9vbCBtZW1i
ZXJzIG9mIFdlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDIwICszNCwyNyBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50IDog
cHVibGljCiBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiB3ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAg
ICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6
TW91c2VEb3duOgotICAgICAgICAgICAgbV9ldmVudFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2ZW50
UHJlc3NlZDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUHJlc3NlZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpN
b3VzZVVwOgotICAgICAgICAgICAgbV9ldmVudFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2ZW50UmVs
ZWFzZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVJlbGVhc2VkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1v
dXNlTW92ZToKLSAgICAgICAgICAgIG1fZXZlbnRUeXBlID0gV2ViQ29yZTo6TW91c2VFdmVudE1v
dmVkOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAorICAgICAgICBtX3NoaWZ0S2V5ID0g
d2ViRXZlbnQuc2hpZnRLZXkoKTsKKyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJv
bEtleSgpOworICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBt
X21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1Nb3Vz
ZUV2ZW50CiAgICAgICAgIHN3aXRjaCAod2ViRXZlbnQuYnV0dG9uKCkpIHsKICAgICAgICAgY2Fz
ZSBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjoKICAgICAgICAgICAgIG1fYnV0dG9uID0gV2ViQ29y
ZTo6Tm9CdXR0b247CkBAIC02OSwxMCArNzYsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZ2xvYmFs
UG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAgICAgICBtX2NsaWNrQ291
bnQgPSB3ZWJFdmVudC5jbGlja0NvdW50KCk7CiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZl
bnQudGltZXN0YW1wKCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgp
OwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1f
YWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50
Lm1ldGFLZXkoKTsKIAogICAgICAgICBtX21vZGlmaWVyRmxhZ3MgPSAwOwogICAgICAgICBpZiAo
bV9zaGlmdEtleSkKQEAgLTk5LDYgKzEwMiwxNCBAQCBjbGFzcyBXZWJLaXQyUGxhdGZvcm1XaGVl
bEV2ZW50IDogcHVibGljCiBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudChj
b25zdCBXZWJXaGVlbEV2ZW50JiB3ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3Jt
RXZlbnQKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CisgICAgICAgIG1f
c2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJF
dmVudC5jb250cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7
CisgICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQ
bGF0Zm9ybVdoZWVsRXZlbnQKICAgICAgICAgbV9wb3NpdGlvbiA9IHdlYkV2ZW50LnBvc2l0aW9u
KCk7CiAgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigp
OwogICAgICAgICBtX2RlbHRhWCA9IHdlYkV2ZW50LmRlbHRhKCkud2lkdGgoKTsKQEAgLTEwNiwx
MCArMTE3LDYgQEAgcHVibGljOgogICAgICAgICBtX3doZWVsVGlja3NYID0gd2ViRXZlbnQud2hl
ZWxUaWNrcygpLndpZHRoKCk7CiAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSB3ZWJFdmVudC53aGVl
bFRpY2tzKCkuaGVpZ2h0KCk7CiAgICAgICAgIG1fZ3JhbnVsYXJpdHkgPSAod2ViRXZlbnQuZ3Jh
bnVsYXJpdHkoKSA9PSBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSA/IFdl
YkNvcmU6OlNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgOiBXZWJDb3JlOjpTY3JvbGxCeVBpeGVsV2hl
ZWxFdmVudDsKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAg
ICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkg
PSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtl
eSgpOwogICAgICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA9IHdlYkV2ZW50LmRp
cmVjdGlvbkludmVydGVkRnJvbURldmljZSgpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAg
bV9waGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPih3
ZWJFdmVudC5waGFzZSgpKTsKQEAgLTEyOSwyMiArMTM2LDMwIEBAIGNsYXNzIFdlYktpdDJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQgOiBwdWIKIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZvcm1LZXli
b2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAg
ICAgLy8gUGxhdGZvcm1FdmVudAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewog
ICAgICAgICBjYXNlIFdlYkV2ZW50OjpLZXlEb3duOgotICAgICAgICAgICAgbV90eXBlID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6S2V5RG93bjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFdlYkV2ZW50OjpLZXlVcDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6S2V5VXA7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpLZXlVcDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpS
YXdLZXlEb3duOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpS
YXdLZXlEb3duOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6
UmF3S2V5RG93bjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkV2ZW50OjpD
aGFyOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOwor
ICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q2hhcjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hp
ZnRLZXkoKTsKKyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAg
ICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkgPSB3
ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50CiAg
ICAgICAgIG1fdGV4dCA9IHdlYkV2ZW50LnRleHQoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4
dCA9IHdlYkV2ZW50LnVubW9kaWZpZWRUZXh0KCk7CiAgICAgICAgIG1fa2V5SWRlbnRpZmllciA9
IHdlYkV2ZW50LmtleUlkZW50aWZpZXIoKTsKQEAgLTE1MiwxMCArMTY3LDYgQEAgcHVibGljOgog
ICAgICAgICBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlID0gd2ViRXZlbnQubmF0aXZlVmlydHVhbEtl
eUNvZGUoKTsKICAgICAgICAgbV9hdXRvUmVwZWF0ID0gd2ViRXZlbnQuaXNBdXRvUmVwZWF0KCk7
CiAgICAgICAgIG1faXNLZXlwYWQgPSB3ZWJFdmVudC5pc0tleXBhZCgpOwotICAgICAgICBtX3No
aWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZl
bnQuY29udHJvbEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwot
ICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CiAgICAgICAgIAogI2lmIFBM
QVRGT1JNKFdJTikKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIG1faXNTeXN0ZW1L
ZXkgYXZhaWxhYmxlIChhbmQgZmFsc2UpIG9uIGFsbCBwbGF0Zm9ybXMKQEAgLTE3NSwyMCArMTg2
LDI3IEBAIGNsYXNzIFdlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudCA6IHB1YmwKIHB1YmxpYzoK
ICAgICBXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiB3
ZWJFdmVudCkKICAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgc3dpdGNo
ICh3ZWJFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNjcm9s
bEJlZ2luOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEJlZ2luVHlwZTsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdl
YkV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXA6Ci0gICAgICAgICAgICBtX3R5
cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZTsKKyAgICAgICAgICAgIG1fdHlwZSA9
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9CiAKKyAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7CisgICAg
ICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRLZXkg
PSB3ZWJFdmVudC5hbHRLZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtl
eSgpOworCisgICAgICAgIC8vIFBsYXRmb3JtR2VzdHVyZUV2ZW50CiAgICAgICAgIG1fcG9zaXRp
b24gPSB3ZWJFdmVudC5wb3NpdGlvbigpOwogICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gd2Vi
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKTsKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50
aW1lc3RhbXAoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2LDcg
KzcwNiw3IEBACiAJCUJDQTBFRjlGMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ew
RUY5RDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oICovOyB9OwogCQlC
Q0EwRUZBMDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY5RTEyMzMyNjQy
MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgKi87IH07CiAJCUJDQTI4NEQ2MTQ5
MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyODRENDE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25u
ZWN0aW9uLm1tICovOyB9OwotCQlCQ0EyODRENzE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ey
ODRENTE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLmggKi87IH07CisJCUJDQTI4NEQ3
MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI4NEQ1MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nv
bm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCUJDQTU2QTFDMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2QTFBMTJGOTAy
OEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQuaCAqLzsgfTsKIAkJQkNBNTZBMUQxMkY5
MDI4RTAwQzU2NkM3IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E1NkExQjEyRjkwMjhFMDBDNTY2QzcgLyog
V2ViR3JhcGhpY3NDb250ZXh0LmNwcCAqLzsgfTsKIAkJQkNBNTZBNjUxMkY5QzhGOTAwQzU2NkM3
IC8qIFdLR3JhcGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0E1NkE2MzEyRjlDOEY5MDBDNTY2QzcgLyogV0tHcmFwaGljc0NvbnRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMDMwNzQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0
b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW4KICAgICAgICAgLy8gRHVyaW5nIFJhd0tl
eURvd24gZXZlbnRzIGlmIGFuIGVkaXRvciBjb21tYW5kIHdpbGwgaW5zZXJ0IHRleHQsIGRlZmVy
CiAgICAgICAgIC8vIHRoZSBpbnNlcnRpb24gdW50aWwgdGhlIGtleXByZXNzIGV2ZW50LiBXZSB3
YW50IGtleWRvd24gdG8gYnViYmxlIHVwCiAgICAgICAgIC8vIHRocm91Z2ggdGhlIERPTSBmaXJz
dC4KLSAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgICAgICBpZiAoZXhlY3V0ZVBl
bmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLCBmYWxzZSkp
CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE4Myw4ICsxMTgzLDggQEAgc3RhdGljIGJvb2wgaGFuZGxl
TW91c2VFdmVudChjb25zdCBXZWJNbwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3Jt
TW91c2VFdmVudCA9IHBsYXRmb3JtKG1vdXNlRXZlbnQpOwogCi0gICAgc3dpdGNoIChwbGF0Zm9y
bU1vdXNlRXZlbnQuZXZlbnRUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2
ZW50UHJlc3NlZDoKKyAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC50eXBlKCkpIHsKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6CiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChpc0NvbnRleHRDbGljayhwbGF0Zm9ybU1vdXNlRXZlbnQpKQogICAgICAgICAg
ICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7
CkBAIC0xMTk1LDkgKzExOTUsOSBAQCBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0
IFdlYk1vCiAKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVkOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudFJlbGVhc2VkOgorICAgICAgICBjYXNlIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CiAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAg
ICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRNb3ZlZDoKKyAgICAgICAgY2FzZSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZU1vdmVkOgogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+bW91c2VNb3ZlZChwbGF0Zm9ybU1vdXNlRXZlbnQsIG9ubHlVcGRhdGVTY3JvbGxiYXJz
KTsKIAogICAgICAgICBkZWZhdWx0OgpAQCAtMTUzMiw3ICsxNTMyLDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YQogCiAgICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZh
bGlkICYmIGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgewogICAgICAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChwbGF0Zm9ybShldmVudCkpOwotICAgICAg
ICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OlJhd0tleURvd24pOworICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtl
eURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAgICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+c2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlv
bkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUo
cGxhdGZvcm1FdmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5MDMsNyArMTkwMyw3IEBAIGJvb2wgV2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQKIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOwog
Ci0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdL
ZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1h
dGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0
ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8v
IHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRp
YXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZl
bnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIg
Y2hhcmFjdGVyLCBvciBFbnRlcikuCkBAIC0yMDUxLDcgKzIwNTEsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2luCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1
cm47CiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0
IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgotICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBldmVudChhZGp1c3RlZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBM
ZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoYWRqdXN0ZWRD
bGllbnRQb3NpdGlvbiwgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgUGxhdGZv
cm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJl
bnRUaW1lKCkpOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFn
U291cmNlRW5kZWRBdChldmVudCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcg
QEAgYm9vbCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludAogICAgICAgICAgICAg
ICAgIGJvb2wgY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3IgPSBjb21tYW5kLmV4ZWN1dGUoZXZlbnQp
OwogICAgICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kRXhlY3V0ZWRCeUVk
aXRvcjsKICAgICAgICAgICAgICAgICBpZiAoIWNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGJvb2wgcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2aW9yID0gZXZl
bnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURv
d24gJiYgcGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbW1hbmRzW2ldLmNv
bW1hbmROYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBwZXJmb3JtZWROb25FZGl0aW5n
QmVoYXZpb3IgPSBldmVudC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJh
d0tleURvd24gJiYgcGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbW1hbmRz
W2ldLmNvbW1hbmROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9
IHBlcmZvcm1lZE5vbkVkaXRpbmdCZWhhdmlvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtMjA5LDcgKzIwOSw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQKICAgICAgICAgfQogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8g
dGV4dCBpbnNlcnRpb24gY29tbWFuZHMsIGRlZmF1bHQga2V5ZG93biBoYW5kbGVyIGlzIHRoZSBy
aWdodCB0aW1lIHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmRzLgogICAgICAgICAvLyBLZXlwcmVzcyAo
Q2hhciBldmVudCkgaGFuZGxlciBpcyB0aGUgbGF0ZXN0IG9wcG9ydHVuaXR5IHRvIGV4ZWN1dGUu
Ci0gICAgICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50
LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSB7CisgICAgICAgIGlmICgh
aGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6Q2hhcikgewogICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkID0gZXhlY3V0
ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLCBldmVu
dCk7CiAgICAgICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmNsZWFyKCk7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwNzQpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmludGVycHJldEtleUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJk
RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6a2V5Ym9hcmRTaG9ydGN1dCk6Cisg
ICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcik6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hl
ZWxFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1
aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OnRv
UGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAg
ICAgICAgKiB0ZXN0cy9LZXlib2FyZFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpLZXlib2Fy
ZFRlc3Q6OmludGVycHJldEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0
OjppbnRlcnByZXRPU01vZGlmaWVyS2V5UHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2Fy
ZFRlc3Q6OmludGVycHJldEN0cmxLZXlQcmVzcyk6CisgICAgICAgIChXZWJLaXQ6OktleWJvYXJk
VGVzdDo6aW50ZXJwcmV0VGFiKToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0OjppbnRl
cnByZXROZXdMaW5lKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0
cy9Qb3B1cE1lbnVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVz
dDo6c2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQ
b3B1cE1lbnVUZXN0OjpzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpURVNUX0YpOgorCiAyMDExLTEyLTE1ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEVuYWJsZSBDU1NfRklMVEVSUyBpbiBDaHJvbWl1bS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
CShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBAIGNvbnN0IGNo
YXIqIEVkaXRvckNsaWVudEltcGw6OmludGVycHJldEsKICAgICBpZiAoa2V5RXZlbnQtPm1ldGFL
ZXkoKSkKICAgICAgICAgbW9kaWZpZXJzIHw9IE1ldGFLZXk7CiAKLSAgICBpZiAoa2V5RXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAo
a2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAg
IGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldnQtPmtleUNvZGUoKTsKICAgICAgICAg
cmV0dXJuIG1hcEtleSA/IGtleURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOwogICAg
IH0KQEAgLTU2Nyw3ICs1NjcsNyBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmhhbmRsZUVkaXRp
bmdLZXliCiAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KTsK
ICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUg
ZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdwogICAgICAgICAvLyBj
b21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91
bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRv
IGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseQpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9u
IDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjYsMTMgKzU2NiwxMyBAQCBXZWJTdHJpbmcg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6a2V5Ym9hCiAgICAgICAgIC8vIEZvbGxvdyB0aGUgc2Ft
ZSBvcmRlciBhcyBNb3ppbGxhIE1TQUEgaW1wbGVtZW50YXRpb246CiAgICAgICAgIC8vIEN0cmwr
QWx0K1NoaWZ0K01ldGEra2V5LiBNU0ROIHN0YXRlcyB0aGF0IGtleWJvYXJkIHNob3J0Y3V0IHN0
cmluZ3MKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSBsb2NhbGl6ZWQgYW5kIGRlZmluZXMgdGhl
IHNlcGFyYXRvciBhcyAiKyIuCi0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkN0cmxLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50
OjpDdHJsS2V5KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIkN0cmwrIjsKLSAgICAg
ICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5KQorICAgICAg
ICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6QWx0S2V5KQogICAgICAgICAgICAgbW9k
aWZpZXJTdHJpbmcgKz0gIkFsdCsiOwotICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3Jt
RXZlbnQ6OlNoaWZ0S2V5KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIlNoaWZ0KyI7
Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Ok1ldGFLZXkp
CisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5KQogICAgICAg
ICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIldpbisiOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxNSArNzUsMTUgQEAg
UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZQogICAgIHN3aXRjaCAoZS50
eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6CiAgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpNb3VzZUxlYXZlOiAgLy8gc3ludGhlc2l6ZSBhIG1vdmUgZXZlbnQKLSAgICAg
ICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpNb3VzZURvd246Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNz
ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgIG1f
ZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBA
IC0xMDMsNiArMTAzLDggQEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVl
bAogICAgIG1fd2hlZWxUaWNrc1kgPSBlLndoZWVsVGlja3NZOwogICAgIG1fZ3JhbnVsYXJpdHkg
PSBlLnNjcm9sbEJ5UGFnZSA/CiAgICAgICAgIFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgOiBTY3Jv
bGxCeVBpeGVsV2hlZWxFdmVudDsKKyAgICAKKyAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpX
aGVlbDsKICAgICBtX3NoaWZ0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hp
ZnRLZXkpOwogICAgIG1fY3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNv
bnRyb2xLZXkpOwogICAgIG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6
QWx0S2V5KTsKQEAgLTEyMiwxNiArMTI0LDE2IEBAIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRl
cjo6UGxhdGZvcm1HZXMKIHsKICAgICBzd2l0Y2ggKGUudHlwZSkgewogICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgotICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxFbmQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxVcGRhdGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVRhcDoKLSAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcFR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMTUwLDIxICsxNTIsMjEgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0
Zm9ybUdlcwogCiAvLyBNYWtlUGxhdGZvcm1LZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpUeXBlIHRvUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1
dEV2ZW50OjpUeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdG9Q
bGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleVVwOgotICAgICAg
ICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6OktleVVwOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6S2V5RG93bjoKLSAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjsKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtRXZlbnQ6OktleURvd247CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpSYXdL
ZXlEb3duOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3du
OworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bjsKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6OkNoYXI6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OkNoYXI7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpDaGFyOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duOwogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGUpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyMDUsNyArMjIwNSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0
KAogewogICAgIFBsYXRmb3JtTW91c2VFdmVudCBwbWUoY2xpZW50UG9pbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY3JlZW5Qb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSwgMCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmRy
YWdTb3VyY2VFbmRlZEF0KHBtZSwKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4o
b3BlcmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tleWJvYXJk
VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LZXli
b2FyZFRlc3QuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogICAgIC8vIEUuZy4sIHNlbmRpbmcgaW4gdGhlIGVudGVyIGtleSBnaXZlcyBiYWNr
ICJJbnNlcnROZXdsaW5lIi4KICAgICBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudCgKICAg
ICAgICAgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViS2V5Ym9hcmRFdmVudCwKLSAgICAgICAg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIGtleVR5cGUpCisgICAgICAgIFBsYXRmb3JtRXZl
bnQ6OlR5cGUga2V5VHlwZSkKICAgICB7CiAgICAgICAgIEVkaXRvckNsaWVudEltcGwgZWRpdG9y
SW1wbCgwKTsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlciBldnQod2ViS2V5
Ym9hcmRFdmVudCk7CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViSW5wdXRF
dmVudDo6TW9kaWZpZXJzIG9zTW9kaWZpZXIgPSBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5Owog
I2VuZGlmCiAgICAgICAgIHNldHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCBrZXlDb2Rl
LCBvc01vZGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJk
RXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHJldHVy
biBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKTsKICAgICB9CiAKICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCBw
cmVzc2luZyBkb3duIGN0cmwrfGtleUNvZGV8LgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQ7CiAgICAgICAgIHNl
dHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCBrZXlDb2RlLCBXZWJJbnB1dEV2ZW50OjpD
b250cm9sS2V5KTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZl
bnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHJldHVybiBp
bnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3du
KTsKICAgICB9CiAKICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCB0eXBp
bmcgYSB0YWIuCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV2Vi
S2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50OwogICAgICAgICBzZXR1cEtleURvd25FdmVudCgm
a2V5Ym9hcmRFdmVudCwgJ1x0JywgbW9kaWZpZXJzKTsKLSAgICAgICAgcmV0dXJuIGludGVycHJl
dEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7Cisg
ICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2
ZW50OjpDaGFyKTsKICAgICB9CiAKICAgICAvLyBMaWtlIGludGVycHJldEtleUV2ZW50LCBidXQg
d2l0aCB0eXBpbmcgYSBuZXdsaW5lLgpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIFdlYktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKICAgICAgICAgc2V0dXBL
ZXlEb3duRXZlbnQoJmtleWJvYXJkRXZlbnQsICdccicsIG1vZGlmaWVycyk7Ci0gICAgICAgIHJl
dHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkNoYXIpOworICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVu
dCwgUGxhdGZvcm1FdmVudDo6Q2hhcik7CiAgICAgfQogCiAgICAgLy8gQSBuYW1lIGZvciAibm8g
bW9kaWZpZXJzIHNldCIuCkBAIC0xNjksNyArMTY5LDcgQEAgVEVTVF9GKEtleWJvYXJkVGVzdCwg
VGVzdEVzY2FwZSkKICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwgV2ViQ29y
ZTo6VktFWV9FU0NBUEUsIG5vTW9kaWZpZXJzKTsKIAogICAgIGNvbnN0IGNoYXIqIHJlc3VsdCA9
IGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duKTsKICAgICBFWFBFQ1RfU1RSRVEoIkNhbmNlbCIsIHJlc3VsdCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNw
cAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1
cE1lbnVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDEzICsyMzUsMTMgQEAgcHJvdGVj
dGVkOgogICAgIC8vIFNpbXVsYXRlcyBhIG1vdXNlIGV2ZW50IG9uIHRoZSBzZWxlY3QgcG9wdXAu
CiAgICAgdm9pZCBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChjb25zdCBJbnRQb2ludCYgcG9p
bnQpCiAgICAgewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwg
cG9pbnQsIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLAorICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgICAgICBtX3dlYlZpZXctPnNl
bGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlRG93bkV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KICAg
ICB2b2lkIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAg
ICAgewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQs
IExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1vdXNlRXZlbnQocG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVJlbGVhc2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CiAgICAgICAgIG1fd2ViVmlldy0+c2VsZWN0
UG9wdXAoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudCk7CiAgICAgfQpAQCAt
MzczLDcgKzM3Myw3IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBNb3VzZU92ZXJJdGUK
ICAgICAvLyBZIG9mIDE4IHRvIGJlIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEgKDEyIGZvbnQgcGx1
cyBib3JkZXIgYW5kIG1vcmUgdG8gYmUgc2FmZSkuCiAgICAgSW50UG9pbnQgcm93MVBvaW50KDIs
IDE4KTsKICAgICAvLyBTaW11bGF0ZSB0aGUgbW91c2UgbW92aW5nIG92ZXIgdGhlIGZpcnN0IGl0
ZW0uCi0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocm93MVBvaW50LCByb3cxUG9p
bnQsIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsCisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1v
dXNlRXZlbnQocm93MVBvaW50LCByb3cxUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsKICAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhh
bmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVm
bDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorCiAyMDExLTEyLTE1ICBSYXBoYWVsIEt1
Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIENsZWFu
IHVwIGFuZCByZWZhY3RvciB0aGUgbWVtb3J5IGNhY2hlIGZ1bmN0aW9ucyBpbiBld2tfc2V0dGlu
Z3MuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRF
ZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
Myw3ICs0MDMsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvCiAK
ICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChp
bnRlcnByZXRLZXlFdmVudChldmVudCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50
eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQg
ZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cg
Y29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hv
dWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0
byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBm
b2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChl
LmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5k
bGVyKToKKwogMjAxMS0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gVXBkYXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3Ig
MS43LjMgcmVsZWFzZQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQoSwogICAgICAgICAvLyBEdXJpbmcgUmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9y
IGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwgZGVmZXIKICAgICAgICAgLy8gdGhlIGluc2VydGlv
biB1bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQuIFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAK
ICAgICAgICAgLy8gdGhyb3VnaCB0aGUgRE9NIGZpcnN0LgotICAgICAgICBpZiAocGxhdGZvcm1F
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAg
ICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pIHsKICAgICAgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1l
LCBmYWxzZSkpCiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlz
aW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfcG9wdXBfbWUKICAgICBsb2NhdGlvbi5zaHJ1bmtUbyhJbnRQb2ludCh2aWV3
LT53aWR0aCgpIC0gZ0NvbnRleHRNZW51TWFyZ2luLCB2aWV3LT5oZWlnaHQoKSAtIGdDb250ZXh0
TWVudU1hcmdpbikpOwogCiAgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29udmVydFdpZGdldFBv
aW50VG9TY3JlZW5Qb2ludCh3aWRnZXQsIGxvY2F0aW9uKSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9iYWxQb2ludCwgUmlnaHRCdXR0b24sIE1vdXNlRXZlbnRQ
cmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2
ZW50X3RpbWUoKSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9i
YWxQb2ludCwgUmlnaHRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwog
ICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VC
S0lUX1dFQl9WSUVXKHdpZGdldCksIGV2ZW50KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmFnU291cmNlRW5kZWRBdDpvcGVyYXRp
b246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGN1cnJl
bnRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ludGVycHJldEtleUV2
ZW50OnNhdmluZ0NvbW1hbmRzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToK
KyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2lsbENsaWNrT25MaW5rOndpdGhVUkw6XSk6
CisKIDIwMTEtMTItMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgTWFjIGJ1aWxkIGZpeCBhZnRlciByMTAyODc0LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTEsNyArODExLDcgQEAgLSAo
dm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZAogICAgICAgICByZXR1cm47CiAg
ICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkg
c2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVu
dChJbnRQb2ludCh3aW5kb3dMb2MpLCBnbG9iYWxQb2ludCh3aW5kb3dMb2MsIFt2aWV3LT5wbGF0
Zm9ybVdpZGdldCgpIHdpbmRvd10pLAotICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92
ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsKKyAgICAg
ICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwogICAgIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChldmVudCwgKERyYWdPcGVyYXRpb24p
b3BlcmF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzM5LDcgKzM3MzksNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50CiAgICAgc3dpdGNoIChbZXZlbnQgdHlw
ZV0pIHsKICAgICBjYXNlIE5TS2V5RG93bjogewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQgcGxhdGZvcm1FdmVudChldmVudCk7Ci0gICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1
YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAg
ICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pOwogICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRm
b3JtRXZlbnQsIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgfQog
ICAgIGNhc2UgTlNLZXlVcDoKQEAgLTUzODEsNyArNTM4MSw3IEBAIC0gKEJPT0wpX2ludGVycHJl
dEtleUV2ZW50OihLZXlib2FyZEV2ZW4KICAgICAgICAgfQogICAgICAgICAvLyBJZiB0aGVyZSBh
cmUgbm8gdGV4dCBpbnNlcnRpb24gY29tbWFuZHMsIGRlZmF1bHQga2V5ZG93biBoYW5kbGVyIGlz
IHRoZSByaWdodCB0aW1lIHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmRzLgogICAgICAgICAvLyBLZXlw
cmVzcyAoQ2hhciBldmVudCkgaGFuZGxlciBpcyB0aGUgbGF0ZXN0IG9wcG9ydHVuaXR5IHRvIGV4
ZWN1dGUuCi0gICAgICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9y
bUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKQorICAgICAgICBp
ZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09
IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgICAgICBbc2VsZiBfZXhlY3V0ZVNhdmVkS2V5
cHJlc3NDb21tYW5kc107CiAgICAgfQogICAgIF9wcml2YXRlLT5pbnRlcnByZXRLZXlFdmVudHNQ
YXJhbWV0ZXJzID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcu
bW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERG
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYwLDcgKzk2MCw3IEBAIC0gKHZvaWQpUERGVmll
d1dpbGxDbGlja09uTGluazooUERGVmlldyAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE5TS2V5RG93bjogewogICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBlKG5z
RXZlbnQpOwotICAgICAgICAgICAgcGUuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgICAgICBwZS5kaXNhbWJpZ3VhdGVL
ZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgICAgICAgICBldmVu
dCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCB0cnVl
LCB0cnVlLCAwLAogICAgICAgICAgICAgICAgIHBlLmtleUlkZW50aWZpZXIoKSwgcGUud2luZG93
c1ZpcnR1YWxLZXlDb2RlKCksCiAgICAgICAgICAgICAgICAgcGUuY3RybEtleSgpLCBwZS5hbHRL
ZXkoKSwgcGUuc2hpZnRLZXkoKSwgcGUubWV0YUtleSgpLCBmYWxzZSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRR
dDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dCk6CisKIDIwMTEtMTItMTQgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF0gR2V0IHJpZCBvZiBsYXllcmluZyB2aW9sYXRpb24gaW4g
UGx1Z2luVmlld1F0CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIERyYWdDbGllbnRRdDo6c3RhcnREcmFnKERyYWdJbWFnZVJlCiAgICAg
ICAgIFF0OjpEcm9wQWN0aW9uIGFjdHVhbERyb3BBY3Rpb24gPSBkcmFnLT5leGVjKGRyYWdPcGVy
YXRpb25zVG9Ecm9wQWN0aW9ucyhkcmFnT3BlcmF0aW9uTWFzaykpOwogCiAgICAgICAgIC8vIFNl
bmQgZHJhZ0VuZCBldmVudAotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbWUobV93ZWJQYWdl
LT52aWV3KCktPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwg
TGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgMCk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtZShtX3dlYlBhZ2UtPnZpZXcoKS0+
bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBvcygpLCBMZWZ0QnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgMCk7CiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQo
bWUsIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oYWN0dWFsRHJvcEFjdGlvbikpOwogICAgIH0K
ICAgICBmcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnRW5kZWQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
Y3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDExLDcgKzQxMSw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXZlbnQgPSBldmVudC0+a2V5RXZl
bnQoKTsKLSAgICBpZiAoIWtldmVudCB8fCBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleVVwKQorICAgIGlmICgha2V2ZW50IHx8IGtldmVudC0+dHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6OktleVVwKQogICAgICAgICByZXR1cm47CiAKICAgICBOb2RlKiBzdGFydCA9
IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5jb250YWluZXJOb2RlKCk7CkBAIC00NDEsNyAr
NDQxLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogICAgICAg
ICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhl
bSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlw
cmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGlu
c2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCiAgICAgICAgICAgICBpZiAoY21kICYm
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjbWQpLmlzVGV4dEluc2VydGlvbigpCi0gICAgICAg
ICAgICAgICAgJiYga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdL
ZXlEb3duKQorICAgICAgICAgICAgICAgICYmIGtldmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6OlJhd0tleURvd24pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBt
X3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIEVk
aXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAKICAgICAgICAgICAgIC8vIFRleHQg
aW5zZXJ0aW9uLgogICAgICAgICAgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0ID0gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpL
ZXlEb3duICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChr
ZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duICYmICFrZXZlbnQtPnRleHQo
KS5pc0VtcHR5KCkpIHsKIAogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5hbHRLZXkoKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTE1ICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2Ug
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBB
Y2Nlc3NpYmxlQmFzZS5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0tleWJv
YXJkU2hvcnRjdXQpOgorICAgICAgICAqIFdlYkRyb3BTb3VyY2UuY3BwOgorICAgICAgICAoZ2Vu
ZXJhdGVNb3VzZUV2ZW50KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6OmtleVVwKToKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKFdlYlZpZXc6OmtleURvd24pOgorICAgICAgICAoV2ViVmlldzo6a2V5UHJl
c3MpOgorCiAyMDExLTEyLTE0ICBKaW5nIFpoYW8gIDxqaW5nemhhb0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgT3BlbmluZyB0d28gcG9wdXAgbWVudXMgYnkgZGlzcGF0Y2hFdmVudCgpIG1ha2Vz
IHByb2JsZW1zLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVF
bGVtZW50QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXli
b2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJGcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC0zNjYsMTMgKzM2NiwxMyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlCiAgICAgICAgIC8vIEZv
bGxvdyB0aGUgc2FtZSBvcmRlciBhcyBNb3ppbGxhIE1TQUEgaW1wbGVtZW50YXRpb246CiAgICAg
ICAgIC8vIEN0cmwrQWx0K1NoaWZ0K01ldGEra2V5LiBNU0ROIHN0YXRlcyB0aGF0IGtleWJvYXJk
IHNob3J0Y3V0IHN0cmluZ3MKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSBsb2NhbGl6ZWQgYW5k
IGRlZmluZXMgdGhlIHNlcGFyYXRvciBhcyAiKyIuCi0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQ
bGF0Zm9ybUV2ZW50OjpDdHJsS2V5KQogICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9
ICJDdHJsKyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OkFsdEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OkFsdEtleSkK
ICAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVycyArPSAiQWx0KyI7Ci0gICAgICAgIGlmICht
b2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlNoaWZ0S2V5KQorICAgICAgICBpZiAo
bW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpCiAgICAgICAgICAgICBhY2Nlc3NL
ZXlNb2RpZmllcnMgKz0gIlNoaWZ0KyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6Ok1ldGFLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9y
bUV2ZW50OjpNZXRhS2V5KQogICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJXaW4r
IjsKICAgICB9CiAgICAgKnNob3J0Y3V0ID0gQlN0cmluZyhTdHJpbmcoYWNjZXNzS2V5TW9kaWZp
ZXJzICsgYWNjZXNzS2V5KSkucmVsZWFzZSgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
RHJvcFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNv
dXJjZS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BT
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw4IEBAIFNURE1FVEhPRElNUF8o
VUxPTkcpIFdlYkRyb3BTb3VyY2U6OlJlbGUKICAgICByZXR1cm4gYzsKIH0KIAotUGxhdGZvcm1N
b3VzZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZWJWaWV3KiB3ZWJWaWV3LCBib29sIGlzRHJh
ZykgeworUGxhdGZvcm1Nb3VzZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZWJWaWV3KiB3ZWJW
aWV3LCBib29sIGlzRHJhZykKK3sKICAgICBQT0lOVEwgcHQ7CiAgICAgOjpHZXRDdXJzb3JQb3Mo
KExQUE9JTlQpJnB0KTsKICAgICBQT0lOVEwgbG9jYWxwdCA9IHB0OwpAQCAtMTAxLDcgKzEwMiw3
IEBAIFBsYXRmb3JtTW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2UKICAgICBpZiAoU1VD
Q0VFREVEKHdlYlZpZXctPnZpZXdXaW5kb3coKE9MRV9IQU5ETEUqKSZ2aWV3V2luZG93KSkpCiAg
ICAgICAgIDo6U2NyZWVuVG9DbGllbnQodmlld1dpbmRvdywgKExQUE9JTlQpJmxvY2FscHQpOwog
ICAgIHJldHVybiBQbGF0Zm9ybU1vdXNlRXZlbnQoSW50UG9pbnQobG9jYWxwdC54LCBsb2NhbHB0
LnkpLCBJbnRQb2ludChwdC54LCBwdC55KSwKLSAgICAgICAgaXNEcmFnID8gTGVmdEJ1dHRvbiA6
IE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBjdXJyZW50VGltZSgpKTsKKyAgICAgICAgaXNEcmFnID8gTGVmdEJ1dHRvbiA6IE5vQnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgY3VycmVudFRpbWUoKSk7CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVy
eUNvbnRpbnVlRHJhZyhCT09MIGZFc2NhcGVQcmVzc2VkLCBEV09SRCBncmZLZXlTdGF0ZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxMyw3ICsxODEzLDcgQEAgYm9v
bCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLAogCiBib29sIFdlYlZpZXc6Omtl
eVVwKFdQQVJBTSB2aXJ0dWFsS2V5Q29kZSwgTFBBUkFNIGtleURhdGEsIGJvb2wgc3lzdGVtS2V5
RG93bikKIHsKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2luZG93
LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCwg
c3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmll
d1dpbmRvdywgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6OktleVVwLCBz
eXN0ZW1LZXlEb3duKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIG1fY3VycmVudENoYXJhY3RlckNvZGUg
PSAwOwpAQCAtMTk1NSw3ICsxOTU1LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudAogCiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAo
a2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAg
IC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8g
ZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlh
IEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBv
biBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhh
dCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAg
ICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVy
KS4KQEAgLTE5ODMsNyArMTk4Myw3IEBAIGJvb2wgV2ViVmlldzo6a2V5RG93bihXUEFSQU0gdmly
dHVhbEtleUMKICNlbmRpZgogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biwgc3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtleUNvZGUsIGtleURh
dGEsIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOwogICAgIGJvb2wg
aGFuZGxlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5RXZlbnQpOwogCiAg
ICAgLy8gVGhlc2UgZXZlbnRzIGNhbm5vdCBiZSBjYW5jZWxlZCwgYW5kIHdlIGhhdmUgbm8gZGVm
YXVsdCBoYW5kbGluZyBmb3IgdGhlbS4KQEAgLTIwNTUsNyArMjA1NSw3IEBAIGJvb2wgV2ViVmll
dzo6a2V5UHJlc3MoV1BBUkFNIGNoYXJDb2RlLCAKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3csIGNoYXJDb2RlLCBrZXlEYXRh
LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOworICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdXaW5kb3csIGNoYXJDb2RlLCBrZXlEYXRh
LCBQbGF0Zm9ybUV2ZW50OjpDaGFyLCBzeXN0ZW1LZXlEb3duKTsKICAgICAvLyBJRSBkb2VzIG5v
dCBkaXNwYXRjaCBrZXlwcmVzcyBldmVudCBmb3IgV01fU1lTQ0hBUi4KICAgICBpZiAoc3lzdGVt
S2V5RG93bikKICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlQWNj
ZXNzS2V5KGtleUV2ZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMw
NzQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpoYW5kbGVLZXlEb3duKToKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUtleVBy
ZXNzKToKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUtleVVwKToKKwogMjAxMS0xMi0xNCAgSmlu
ZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBv
cHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW5jZS9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93aW5j
ZS9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgV2Vi
Vmlldzo6aGFuZGxlS2V5RG93bihXUEFSQU0gdmlydHUKIHsKICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNv
ZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biwgc3lzdGVtS2V5
RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxl
LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgc3lz
dGVtS2V5RG93bik7CiAgICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5r
ZXlFdmVudChrZXlFdmVudCk7CiAKICAgICAvLyBUaGVzZSBldmVudHMgY2Fubm90IGJlIGNhbmNl
bGVkLCBhbmQgd2UgaGF2ZSBubyBkZWZhdWx0IGhhbmRsaW5nIGZvciB0aGVtLgpAQCAtMzcwLDcg
KzM3MCw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlS2V5UHJlc3MoV1BBUkFNIGNoYXIKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hh
bmRsZSwgY2hhckNvZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwgc3lz
dGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93
SGFuZGxlLCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6Q2hhciwgc3lzdGVtS2V5
RG93bik7CiAgICAgLy8gSUUgZG9lcyBub3QgZGlzcGF0Y2gga2V5cHJlc3MgZXZlbnQgZm9yIFdN
X1NZU0NIQVIuCiAgICAgaWYgKHN5c3RlbUtleURvd24pCiAgICAgICAgIHJldHVybiBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUFjY2Vzc0tleShrZXlFdmVudCk7CkBAIC0zODIsNyArMzgy
LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVLZXlQcmVzcyhXUEFSQU0gY2hhcgogCiBib29sIFdl
YlZpZXc6OmhhbmRsZUtleVVwKFdQQVJBTSB2aXJ0dWFsS2V5Q29kZSwgTFBBUkFNIGtleURhdGEs
IGJvb2wgc3lzdGVtS2V5RG93bikKIHsKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZl
bnQobV93aW5kb3dIYW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleVVwLCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQga2V5RXZlbnQobV93aW5kb3dIYW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0
Zm9ybUV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7CiAKICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChrZXlFdmVudCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFdpbkNFLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw3
ICszODQsNyBAQCBib29sIEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5CiAKICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRl
cnByZXRLZXlFdmVudChldmVudCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9l
c24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29t
bWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxk
IGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBl
aXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1
cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcu
IFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0No
YW5nZUxvZwkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRXeDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50V3g6OmludGVycHJldEtleUV2ZW50KToKKwogMjAxMS0xMi0xMSAgUm9iaW4g
RHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgogCiAgICAgICAgIEFkZCBhIFVSTCBhcmd1bWVudCB0
byB0aGUgd3hXZWJWaWV3IGNvbnN0cnVjdG9yLApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisr
KyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBFZGl0b3JDbGllbnRXeDo6aGFuZGxl
RWRpdGluZ0tleWJvYQogCiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKIAotICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAg
IGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAg
ICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9k
ZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRl
ZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBp
dCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRh
YiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGlmIG5vdCB0byBsZXQgYSBDSEFSIGV2ZW50IGJlIGdl
bmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rl
ciwgb3IgRW50ZXIpLgpAQCAtNDA5LDcgKzQwOSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V3g6Omhh
bmRsZUVkaXRpbmdLZXlib2EKIAogY29uc3QgY2hhciogRWRpdG9yQ2xpZW50V3g6OmludGVycHJl
dEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2dCkKIHsKLSAgICBBU1NFUlQoZXZ0LT5r
ZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duIHx8
IGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7
CisgICAgQVNTRVJUKGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJh
d0tleURvd24gfHwgZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hh
cik7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5RG93bkNvbW1h
bmRzTWFwID0gMDsKICAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5UHJl
c3NDb21tYW5kc01hcCA9IDA7CkBAIC00MzMsNyArNDMzLDcgQEAgY29uc3QgY2hhciogRWRpdG9y
Q2xpZW50V3g6OmludGVycHJldEtleQogICAgIGlmIChldnQtPmN0cmxLZXkoKSkKICAgICAgICAg
bW9kaWZpZXJzIHw9IEN0cmxLZXk7CiAKLSAgICBpZiAoZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkg
PT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGV2dC0+a2V5
RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAg
aW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+a2V5Q29kZSgpOwogICAgICAgICBy
ZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CiAgICAg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119633</attachid>
            <date>2011-12-16 10:45:34 -0800</date>
            <delta_ts>2011-12-16 12:53:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111216104528.patch</filename>
            <type>text/plain</type>
            <size>168157</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMS0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRN
ZW51XSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMpOgorICAgICAgICAqIHBhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICog
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycyk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL3d4L0V2ZW50SGFuZGxlcld4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Y3RybEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxhdGZvcm1F
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9s
bEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hl
ZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZvck5TRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNl
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXlwYWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVu
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0eXBl
RnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorCiAyMDExLTEyLTE2ICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPiwgSmFrdWIgV2llY3pvcmVrICA8andpZWN6b3Jl
a0B3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciA8b2wgcmV2ZXJzZWQ+LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDU0LDYgKzEwNTQsNyBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBwbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAKKyAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAogICAgIHBsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
ICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg3OSw2ICsyODc5LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVS
SVV0aWxzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE4LDYgKzExMTgsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQu
Y3BwIFwKICAgICBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIFwKICAgICBw
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgXAogICAgIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTAzMDc0KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYwNyw4ICs2MDcs
OCBAQCBfX1pON1dlYkNvcmUyMG1ha2VSR0JBMzJGcm9tRmxvYXRzRWZmZmYKIF9fWk43V2ViQ29y
ZTIwcHJvdG9jb2xJc0phdmFTY3JpcHRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMUJh
Y2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQogX19aTjdXZWJDb3JlMjFNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2Ci1fX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudDI0ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50RU5TMF80VHlwZUViCiBfX1pON1dlYkNvcmUy
MVBsYXRmb3JtS2V5Ym9hcmRFdmVudEMxRVA3TlNFdmVudAorX19aTjdXZWJDb3JlMjFQbGF0Zm9y
bUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0ZUtleURvd25FdmVudEVOU18xM1BsYXRmb3JtRXZl
bnQ0VHlwZUViCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5k
aW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVz
b3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQ
TlNfMzJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1
ZXN0RQogX19aTjdXZWJDb3JlMjFTVkdEb2N1bWVudEV4dGVuc2lvbnMyMXNhbXBsZUFuaW1hdGlv
bkF0VGltZUVSS04zV1RGNlN0cmluZ0VQTlNfMTRTVkdTTUlMRWxlbWVudEVkCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYzMCw2ICsyNjYzMCwxNCBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxQbGF0Zm9ybUV2ZW50LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cUGxhdGZvcm1FdmVudC5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDMwNzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTUwNzMsNiArNTA3Myw4IEBACiAJCUJDNUE4Njg1MEMzMzY3NjAwMEVFQTY0
OSAvKiBET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNUE4NjgyMEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uaCAqLzsg
fTsKIAkJQkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUE4NkIzMEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgKi87IH07CiAJCUJDNUE4NkI2MEMzMzY3
RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1QTg2QjQwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2Vs
ZWN0aW9uLmggKi87IH07CisJCUJDNUM3NjJBMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NUM3NjI4MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCAqLzsgfTsKKwkJQkM1
Qzc2MkIxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAv
KiBQbGF0Zm9ybUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkM1Q0ZDQTkxMUY3OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlvblN0cmF0
ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVD
RkNBODExRjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzVFQjVEQjBFODFCN0VB
MDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUVC
NUREMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUVCNURDMEU4MUI4REQwMEIyNTk2NSAvKiBP
dXRsaW5lVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTIzOTksNiArMTI0MDEsOCBAQAogCQlCQzVBODY4MzBDMzM2NzYwMDBFRUE2NDkg
LyogRE9NU2VsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NU2VsZWN0aW9u
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1QTg2QjMwQzMzNjdFODAwRUVB
NjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVNlbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNUE4NkI0MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01TZWxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkM1Qzc2MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1FdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1Q0ZDQTgxMUY3
OTMzMjAwOTlFRDA5IC8qIExvY2FsaXphdGlvblN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExvY2FsaXphdGlvblN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCb3JkZXJWYWx1ZS5oOyBwYXRoID0gc3R5
bGUvQm9yZGVyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RUI1REMw
RTgxQjhERDAwQjI1OTY1IC8qIE91dGxpbmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBPdXRsaW5lVmFsdWUuaDsgcGF0aCA9IHN0eWxlL091dGxpbmVWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyNTYsNiArMjAyNjAsOCBAQAogCQkJCTFB
RDhGODFBMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwICovLAogCQkJ
CTFBRDhGODE5MTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLywKIAkJ
CQk5MzVDNDc2QTA5QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggKi8sCisJ
CQkJQkM1Qzc2MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwICovLAorCQkJ
CUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8sCiAJCQkJQkNC
QjhBQjQxM0YxQUZCMDAwNzM0REYwIC8qIFBPREFyZW5hLmggKi8sCiAJCQkJMUYzRjE5NTIxNDk5
Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLywKIAkJCQlCQ0JCOEFCNTEzRjFB
RkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCAqLywKQEAgLTI0ODc2LDYgKzI0ODgyLDcgQEAK
IAkJCQlGMzVBRTVBQzE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI2QzE3QTNFMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9T
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGls
ZUNhY2hlTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0
MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjNG
MTk1MzE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFQ0VCNjgxNDk5NzkwRDAwQ0REM0E0IC8qIEZFQ29tcG9zaXRlQXJpdGhtZXRpY05F
T04uaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzAsNiArMjc3NzcsNyBAQAogCQkJCThDMTA5MTk4
MTQ5NEZCMTIwMEI1RDNGRSAvKiBDU1NFbGVtZW50U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzA2RTRFNjE0OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwRkE0MTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxl
Q2FjaGVMYXllci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDNUM3NjJBMTQ5N0ZFMTQwMEJDNDc3
NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUNFQjY3MTQ5OTc5
MEQwMENERDNBNCAvKiBGRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5RUNFQjY5MTQ5OTc5MEQwMENERDNBNCAvKiBGRUdhdXNzaWFuQmx1ck5FT04uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNkIxNDk5NzkwRDAwQ0REM0E0IC8qIEZFTGlnaHRp
bmdORU9OLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTkwLDcgKzI1OTAsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnUK
ICAgICAvLyBTaW11bGF0ZSBhIGNsaWNrIGluIHRoZSBtaWRkbGUgb2YgdGhlIG9iamVjdC4KICAg
ICBMYXlvdXRQb2ludCBjbGlja1BvaW50ID0gbV9vYmplY3QtPmNsaWNrUG9pbnQoKTsKICAgICAK
LSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChjbGlja1BvaW50LCBjbGlja1BvaW50
LCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVu
dChjbGlja1BvaW50LCBjbGlja1BvaW50LCBSaWdodEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7
CiAgICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1l
bnVFdmVudChtb3VzZUV2ZW50KTsKICAgICBpZiAoaGFuZGxlZCkKICAgICAgICAgcGFnZS0+Y2hy
b21lKCktPnNob3dDb250ZXh0TWVudSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0tleWJv
YXJkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsMjAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
Rm9yS2V5Ym9hcmRFdmVudFR5cGUoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHR5cGUpCitz
dGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVu
dFR5cGUoUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewot
ICAgICAgICBjYXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA6CisgICAgICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6S2V5VXA6CiAgICAgICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLmtl
eXVwRXZlbnQ7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3du
OgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd246CiAgICAgICAgICAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmtleWRvd25FdmVudDsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OkNoYXI6CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6Q2hhcjoKICAg
ICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudDsKLSAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd246CisgICAgICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6S2V5RG93bjoKICAgICAgICAgICAgIC8vIFRoZSBjYWxsZXIgc2hvdWxkIGRpc2FtYmln
dWF0ZSB0aGUgY29tYmluZWQgZXZlbnQgaW50byBSYXdLZXlEb3duIG9yIENoYXIgZXZlbnRzLgog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lv
biAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGludCBkZXRhaWwsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCkK
IHsKLSAgICBBU1NFUlQoZXZlbnQuZXZlbnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkIHx8IGV2
ZW50LmJ1dHRvbigpICE9IE5vQnV0dG9uKTsKKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgfHwgZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0b24pOwog
CiAgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNl
bW92ZUV2ZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFBsYXRmb3JtTW91c2VF
dmVudCBjcmVhdGVNb3VzZUV2ZQogICAgIHNoaWZ0S2V5ID0gY3RybEtleSA9IGFsdEtleSA9IG1l
dGFLZXkgPSBmYWxzZTsKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2Rp
ZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpOwogICAgIHJldHVy
biBQbGF0Zm9ybU1vdXNlRXZlbnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRh
LT5nbG9iYWxQb3NpdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91
c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGFLZXksIGN1cnJlbnRUaW1lKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMzMsMTkgKzIy
MzMsMTkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgIC8v
IGVuZCBnZXN0dXJlIGFzIHdlbGwuCiAKICAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkp
IHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZToKKyAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duOgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlVGFwOiB7CiAgICAgICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIGNvZGUgdG8g
bm90IGhpdCB0ZXN0IG11bHRpcGxlIHRpbWVzIG9uY2UgaGl0IHRlc3RpbmcgaGFzIGJlZW4gY29y
cmVjdGVkIGFzIHN1Z2dlc3RlZCBhYm92ZS4KLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZh
a2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQ
b3NpdGlvbigpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEs
IGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJl
RXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1l
c3RhbXAoKSk7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50
LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXko
KSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAg
ICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVu
dFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBn
ZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVu
dC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJl
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92
ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVF
dmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFL
ZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQs
IC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVu
dC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXko
KSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFs
UG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0
cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBn
ZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1v
dmUpOwogICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAg
ICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGU6IHsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6IHsK
ICAgICAgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlzb3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlj
a011bHRpcGxpZXI7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBs
ZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92ZSBmaXhtZSBoYXMgYmVlbiBhZGRyZXNzZWQuCiAgICAg
ICAgIEludFBvaW50IHBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLngoKSwgZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCkueSgpKTsKQEAgLTIyNTQsOSArMjI1NCw5IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY28KICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50
aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91Ymxl
VGFwOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDogewogICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIyNjQsNiArMjI2NCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlRXZlbnQoY28KICAgICAgICAgdmlldy0+aGFuZGxlR2VzdHVyZUV2ZW50KGdl
c3R1cmVFdmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAjZW5kaWYKQEAgLTIzNTcsOSArMjM2MCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzZW5kQ29u
dGV4dE1lbnVFdmVudEYKICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciB3ZWIgY29tcGF0aWJp
bGl0eS4KIAogI2lmIE9TKFdJTkRPV1MpCi0gICAgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlID0g
TW91c2VFdmVudFJlbGVhc2VkOworICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZlbnRUeXBlID0g
UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICNlbHNlCi0gICAgTW91c2VFdmVudFR5cGUg
ZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBl
dmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAjZW5kaWYKIAogICAgIFBs
YXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgUmln
aHRCdXR0b24sIGV2ZW50VHlwZSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6
Y3VycmVudFRpbWUoKSk7CkBAIC0yNDE3LDcgKzI0MjAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
ZmFrZU1vdXNlTW92ZUV2ZW50VGltCiAgICAgYm9vbCBtZXRhS2V5OwogICAgIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFs
dEtleSwgbWV0YUtleSk7CiAgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQgPSB2aWV3LT5jb250ZW50
c1RvU2NyZWVuKEludFJlY3Qodmlldy0+d2luZG93VG9Db250ZW50cyhtX2N1cnJlbnRNb3VzZVBv
c2l0aW9uKSwgSW50U2l6ZSgpKSkubG9jYXRpb24oKTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlTW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGdsb2JhbFBvaW50LCBO
b0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBt
ZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
TW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGdsb2JhbFBvaW50LCBOb0J1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwg
bWV0YUtleSwgY3VycmVudFRpbWUoKSk7CiAgICAgbW91c2VNb3ZlZChmYWtlTW91c2VNb3ZlRXZl
bnQpOwogfQogCkBAIC0yNDcxLDggKzI0NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
QWNjZXNzS2V5KGNvbnN0CiAgICAgLy8gSUUgbWF0Y2hlcyBsb3dlciBhbmQgdXBwZXIgY2FzZSBh
Y2Nlc3Mga2V5cyByZWdhcmRsZXNzIG9mIFNoaWZ0IGtleSBzdGF0ZSAtIGJ1dCBpZiBib3RoIHVw
cGVyIGFuZAogICAgIC8vIGxvd2VyIGNhc2UgdmFyaWFudHMgYXJlIHByZXNlbnQgaW4gYSBkb2N1
bWVudCwgdGhlIGNvcnJlY3QgZWxlbWVudCBpcyBtYXRjaGVkIGJhc2VkIG9uIFNoaWZ0IGtleSBz
dGF0ZS4KICAgICAvLyBGaXJlZm94IG9ubHkgbWF0Y2hlcyBhbiBhY2Nlc3Mga2V5IGlmIFNoaWZ0
IGlzIG5vdCBwcmVzc2VkLCBhbmQgZG9lcyB0aGF0IGNhc2UtaW5zZW5zaXRpdmVseS4KLSAgICBB
U1NFUlQoIShhY2Nlc3NLZXlNb2RpZmllcnMoKSAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hp
ZnRLZXkpKTsKLSAgICBpZiAoKGV2dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlNoaWZ0S2V5KSAhPSBhY2Nlc3NLZXlNb2RpZmllcnMoKSkKKyAgICBBU1NFUlQoIShhY2Nl
c3NLZXlNb2RpZmllcnMoKSAmIFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KSk7CisgICAgaWYgKChl
dnQubW9kaWZpZXJzKCkgJiB+UGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1v
ZGlmaWVycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIGtleSA9IGV2dC51
bm1vZGlmaWVkVGV4dCgpOwogICAgIEVsZW1lbnQqIGVsZW0gPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5nZXRFbGVtZW50QnlBY2Nlc3NLZXkoa2V5Lmxvd2VyKCkpOwpAQCAtMjUyMCw3ICsyNTIzLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewogICAgICAgICAgICAg
Ly8gSWYgYSBrZXkgaXMgcHJlc3NlZCB3aGlsZSB0aGUgcGFuU2Nyb2xsIGlzIGluIHByb2dyZXNz
IHRoZW4gd2Ugd2FudCB0byBzdG9wCi0gICAgICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24gfHwgaW5pdGlhbEtleUV2ZW50
LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIAorICAgICAgICAg
ICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biB8
fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIAog
ICAgICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAogICAgICAgICAgICAgLy8g
SWYgd2Ugd2VyZSBpbiBwYW5zY3JvbGwgbW9kZSwgd2Ugc3dhbGxvdyB0aGUga2V5IGV2ZW50CkBA
IC0yNTUwLDI1ICsyNTUzLDI1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQ
bGF0Zm8KICAgICAvLyBPbiBXaW5kb3dzLCBXZWJLaXQgZXhwbGljaXRseSBjYWxscyBoYW5kbGVB
Y2Nlc3NLZXkoKSBpbnN0ZWFkIG9mIGRpc3BhdGNoaW5nIGEga2V5cHJlc3MgZXZlbnQgZm9yIFdN
X1NZU0NIQVIgbWVzc2FnZXMuCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIGN1cnJlbnRseSBtYXRj
aCBlaXRoZXIgTWFjIG9yIFdpbmRvd3MgYmVoYXZpb3IsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRo
ZXkgc2VuZCBjb21iaW5lZCBLZXlEb3duIGV2ZW50cy4KICAgICBib29sIG1hdGNoZWRBbkFjY2Vz
c0tleSA9IGZhbHNlOwotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQogICAgICAgICBtYXRjaGVkQW5BY2Nlc3NLZXkgPSBo
YW5kbGVBY2Nlc3NLZXkoaW5pdGlhbEtleUV2ZW50KTsKIAogICAgIC8vIEZJWE1FOiBpdCB3b3Vs
ZCBiZSBmYWlyIHRvIGxldCBhbiBpbnB1dCBtZXRob2QgaGFuZGxlIEtleVVwIGV2ZW50cyBiZWZv
cmUgRE9NIGRpc3BhdGNoLgotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpCisgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6S2V5VXAgfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpDaGFyKQogICAgICAgICByZXR1cm4gIW5vZGUtPmRpc3BhdGNoS2V5RXZlbnQo
aW5pdGlhbEtleUV2ZW50KTsKIAogICAgIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IG5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzKCk7CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjOwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlEb3duRXZlbnQgPSBpbml0
aWFsS2V5RXZlbnQ7ICAgIAotICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikKLSAgICAgICAga2V5RG93bkV2ZW50LmRpc2FtYmln
dWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24sIGJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUpOworICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBs
YXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCisgICAgICAgIGtleURvd25FdmVudC5kaXNhbWJpZ3Vh
dGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSk7CiAgICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleWRvd24gPSBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0
VmlldygpKTsKICAgICBpZiAobWF0Y2hlZEFuQWNjZXNzS2V5KQogICAgICAgICBrZXlkb3duLT5z
ZXREZWZhdWx0UHJldmVudGVkKHRydWUpOwogICAgIGtleWRvd24tPnNldFRhcmdldChub2RlKTsK
IAotICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UmF3S2V5RG93bikgeworICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChrZXlk
b3duLCBlYyk7CiAgICAgICAgIC8vIElmIGZyYW1lIGNoYW5nZWQgYXMgYSByZXN1bHQgb2Yga2V5
ZG93biBkaXNwYXRjaCwgdGhlbiByZXR1cm4gdHJ1ZSB0byBhdm9pZCBzZW5kaW5nIGEgc3Vic2Vx
dWVudCBrZXlwcmVzcyBtZXNzYWdlIHRvIHRoZSBuZXcgZnJhbWUuCiAgICAgICAgIGJvb2wgY2hh
bmdlZEZvY3VzZWRGcmFtZSA9IG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lICE9IG1fZnJhbWUt
PnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtMjYw
Nyw3ICsyNjEwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwog
ICAgIH0KIAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlQcmVzc0V2ZW50ID0gaW5pdGlh
bEtleUV2ZW50OwotICAgIGtleVByZXNzRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7Cisg
ICAga2V5UHJlc3NFdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6
Q2hhciwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7CiAgICAgaWYgKGtleVByZXNzRXZlbnQu
dGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGtleWRvd25SZXN1bHQ7CiAgICAgUmVm
UHRyPEtleWJvYXJkRXZlbnQ+IGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVBy
ZXNzRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwpAQCAtMjc4Niw3
ICsyNzg5LDcgQEAgc3RhdGljIGJvb2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQQogCiBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBMZWZ0
QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgIT0gTW91c2VFdmVudE1vdmVkKSB7
CisgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5l
dmVudCgpLnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKSB7CiAgICAgICAgIC8v
IElmIHdlIGFsbG93ZWQgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGJyaWRnZSB0byBoYW5kbGUgYSBk
cmFnCiAgICAgICAgIC8vIGxhc3QgdGltZSwgdGhlbiBtX21vdXNlUHJlc3NlZCBtaWdodCBzdGls
bCBiZSBzZXQuIFNvIHdlCiAgICAgICAgIC8vIGNsZWFyIGl0IG5vdyB0byBtYWtlIHN1cmUgdGhl
IG5leHQgbW92ZSBhZnRlciBhIGRyYWcKQEAgLTI4MjIsNyArMjgyNSw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMKICAgICAvLyBGb3IgZHJhZ3Mgc3RhcnRpbmcg
aW4gdGhlIHNlbGVjdGlvbiwgdGhlIHVzZXIgbXVzdCB3YWl0IGJldHdlZW4gdGhlIG1vdXNlZG93
biBhbmQgbW91c2VkcmFnLAogICAgIC8vIG9yIGVsc2Ugd2UgYmFpbCBvbiB0aGUgZHJhZ2dpbmcg
c3R1ZmYgYW5kIGFsbG93IHNlbGVjdGlvbiB0byBvY2N1cgogICAgIGlmIChtX21vdXNlRG93bk1h
eVN0YXJ0RHJhZyAmJiBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3RlYWQgJiYgKGRyYWdTdGF0
ZSgpLm1fZHJhZ1R5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSAmJiBldmVudC5ldmVu
dCgpLnRpbWVzdGFtcCgpIC0gbV9tb3VzZURvd25UaW1lc3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7
Ci0gICAgICAgIEFTU0VSVChldmVudC5ldmVudCgpLmV2ZW50VHlwZSgpID09IE1vdXNlRXZlbnRN
b3ZlZCk7CisgICAgICAgIEFTU0VSVChldmVudC5ldmVudCgpLnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZU1vdmVkKTsKICAgICAgICAgaWYgKChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlICYg
RHJhZ1NvdXJjZUFjdGlvbkltYWdlKSkgewogICAgICAgICAgICAgLy8gLi4uIHVubGVzcyB0aGUg
bW91c2UgaXMgb3ZlciBhbiBpbWFnZSwgdGhlbiB3ZSBzdGFydCBkcmFnZ2luZyBqdXN0IHRoZSBp
bWFnZQogICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSA9IERyYWdTb3VyY2VBY3Rp
b25JbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRs
ZXJCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2JsYWNr
YmVycnkvRXZlbnRIYW5kbGVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dGFic1Rv
QWxsRm9ybUNvbnRyb2xzCiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZp
ZXJzKCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAg
cmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmZv
Y3VzRG9jdW1lbnRWaWV3KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZl
bnRIYW5kbGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDkgKzE0OCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lk
Z2V0TW91c2VEb3duRXYKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJz
KCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2Vsc2UKLSAgICBy
ZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6OkFsdEtleTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Vm
bC9FdmVudEhhbmRsZXJFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2
ICsxMjAsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50CiAKIHVu
c2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKLSAgICByZXR1cm4g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
OkFsdEtleTsKIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxl
ckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5k
bGVyR3RrLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ndGsv
RXZlbnRIYW5kbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiAvLyBHVEsrIG11c3Qgc2Nyb2xsIGhvcml6b250YWxseSBpZiB0aGUgbW91c2UgcG9pbnRlciBp
cyBvbiB0b3Agb2YgdGhlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxOSw5ICs3MTksOSBAQCB1bnNp
Z25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVyCiAgICAgLy8gU28sIHdlIHVzZSBD
b250cm9sIGluIHRoaXMgY2FzZSwgZXZlbiB0aG91Z2ggaXQgY29uZmxpY3RzIHdpdGggRW1hY3Mt
c3R5bGUga2V5IGJpbmRpbmdzLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTA3PiBmb3IgbW9yZSBkZXRhaWwuCiAgICAgaWYgKEFYT2JqZWN0
Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXk7CisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OwogCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkocmV2aXNp
b24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw5ICsxMjQsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFz
c01vdXNlUmVsZWFzZUV2ZW50CiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycygpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4g
UGxhdGZvcm1FdmVudDo6Q3RybEtleSB8IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbHNlCi0g
ICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpBbHRLZXk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25Fdgog
CiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpBbHRLZXk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRI
YW5kbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRI
YW5kbGVyV3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3d4
L0V2ZW50SGFuZGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIFBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWEKIAogdW5zaWduZWQgRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUV2ZW50X2gKKyNkZWZpbmUgUGxhdGZvcm1FdmVudF9o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1FdmVudCB7CitwdWJsaWM6
CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgTm9UeXBlID0gMCwKKworICAgICAgICAvLyBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQKKyAgICAgICAgS2V5RG93biwKKyAgICAgICAgS2V5VXAsCisgICAg
ICAgIFJhd0tleURvd24sCisgICAgICAgIENoYXIsCisKKyAgICAgICAgLy8gUGxhdGZvcm1Nb3Vz
ZUV2ZW50CisgICAgICAgIE1vdXNlTW92ZWQsCisgICAgICAgIE1vdXNlUHJlc3NlZCwKKyAgICAg
ICAgTW91c2VSZWxlYXNlZCwKKyAgICAgICAgTW91c2VTY3JvbGwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgV2hlZWwsCisgICAgICAgIAorICAgICAg
ICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xsQmVnaW4sCisg
ICAgICAgIEdlc3R1cmVTY3JvbGxFbmQsCisgICAgICAgIEdlc3R1cmVTY3JvbGxVcGRhdGUsCisg
ICAgICAgIEdlc3R1cmVUYXAsCisgICAgICAgIEdlc3R1cmVUYXBEb3duLAorICAgICAgICBHZXN0
dXJlRG91YmxlVGFwLAorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CisKKworICAgIC8vIEV2ZW50IE1vZGlmaWVycwor
CisgICAgZW51bSBNb2RpZmllcktleSB7CisgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKKyAgICAg
ICAgQ3RybEtleSA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKKyAgICAgICAg
U2hpZnRLZXkgPSAxIDw8IDMKKyAgICB9OworCisgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9
CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9CisKKyAgICB1
bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChhbHRLZXko
KSA/IEFsdEtleSA6IDApCisgICAgICAgICAgICB8IChjdHJsS2V5KCkgPyBDdHJsS2V5IDogMCkK
KyAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1ldGFLZXkgOiAwKQorICAgICAgICAgICAgfCAo
c2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUGxh
dGZvcm1FdmVudCgpCisgICAgICAgIDogbV9zaGlmdEtleShmYWxzZSkKKyAgICAgICAgLCBtX2N0
cmxLZXkoZmFsc2UpCisgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCisgICAgICAgICwgbV9tZXRh
S2V5KGZhbHNlKQorICAgICAgICAsIG1fdHlwZShOb1R5cGUpCisgICAgeworICAgIH0KKworICAg
IFBsYXRmb3JtRXZlbnQoVHlwZSB0eXBlKQorICAgICAgICA6IG1fc2hpZnRLZXkoZmFsc2UpCisg
ICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQorICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQorICAg
ICAgICAsIG1fbWV0YUtleShmYWxzZSkKKyAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICB7Cisg
ICAgfQorCisgICAgUGxhdGZvcm1FdmVudChUeXBlIHR5cGUsIGJvb2wgc2hpZnRLZXksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAgOiBtX3NoaWZ0S2V5
KHNoaWZ0S2V5KQorICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQorICAgICAgICAsIG1fYWx0
S2V5KGFsdEtleSkKKyAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKKyAgICAgICAgLCBtX3R5
cGUodHlwZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX3NoaWZ0S2V5OworICAgIGJvb2wg
bV9jdHJsS2V5OworICAgIGJvb2wgbV9hbHRLZXk7CisgICAgYm9vbCBtX21ldGFLZXk7CisgICAg
dW5zaWduZWQgbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUGxhdGZvcm1FdmVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUdlc3R1cmVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtR2VzdHVyZUV2ZW50LmgJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDQy
ICsyOSwzMCBAQAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIAogI2luY2x1ZGUgIkludFBv
aW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2
ZW50IDogcHVibGljIFBsYXRmb3JtRXZlbnQgewogcHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0g
ICAgICAgIFNjcm9sbEJlZ2luVHlwZSwKLSAgICAgICAgU2Nyb2xsRW5kVHlwZSwKLSAgICAgICAg
U2Nyb2xsVXBkYXRlVHlwZSwKLSAgICAgICAgVGFwVHlwZSwKLSAgICAgICAgVGFwRG93blR5cGUs
Ci0gICAgICAgIERvdWJsZVRhcFR5cGUsCi0gICAgfTsKLQogICAgIFBsYXRmb3JtR2VzdHVyZUV2
ZW50KCkKLSAgICAgICAgOiBtX3R5cGUoU2Nyb2xsQmVnaW5UeXBlKQorICAgICAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luKQogICAgICAgICAsIG1f
dGltZXN0YW1wKDApCisgICAgICAgICwgbV9kZWx0YVgoMCkKKyAgICAgICAgLCBtX2RlbHRhWSgw
KQogICAgIHsKICAgICB9CiAKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudChUeXBlIHR5cGUsIGNv
bnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBj
b25zdCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBmbG9hdCBkZWx0YVgsIGNvbnN0IGZsb2F0IGRl
bHRhWSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRh
S2V5KQotICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5
cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIGRvdWJsZSB0aW1lc3RhbXAsIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBi
b29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisg
ICAgICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBt
ZXRhS2V5KQogICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICwgbV9nbG9i
YWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3Rh
bXApCiAgICAgICAgICwgbV9kZWx0YVgoZGVsdGFYKQogICAgICAgICAsIG1fZGVsdGFZKGRlbHRh
WSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQotICAgICAgICAsIG1fY3RybEtleShj
dHJsS2V5KQotICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKLSAgICAgICAgLCBtX21ldGFLZXko
bWV0YUtleSkKICAgICB7CiAgICAgfQogCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9Ci0KICAgICBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uOyB9IC8vIFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgogICAgIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRp
b247IH0gLy8gU2NyZWVuIGNvb3JkaW5hdGVzLgogCkBAIC03MiwyMiArNjAsMTMgQEAgcHVibGlj
OgogCiAgICAgZmxvYXQgZGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVg7IH0KICAgICBm
bG9hdCBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWTsgfQotICAgIGJvb2wgc2hpZnRL
ZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgYm9vbCBjdHJsS2V5KCkgY29u
c3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVy
biBtX2FsdEtleTsgfQotICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtl
eTsgfQotCisgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgVHlwZSBtX3R5cGU7CiAgICAgSW50UG9pbnQg
bV9wb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwogICAgIGRvdWJsZSBt
X3RpbWVzdGFtcDsKICAgICBmbG9hdCBtX2RlbHRhWDsKICAgICBmbG9hdCBtX2RlbHRhWTsKLSAg
ICBib29sIG1fc2hpZnRLZXk7Ci0gICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAgYm9vbCBtX2FsdEtl
eTsKLSAgICBib29sIG1fbWV0YUtleTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
CShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsOCBAQAogI2lmbmRlZiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnRfaAogI2RlZmluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnRfaAog
Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50Lmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNjUsNDAgKzY2LDE0IEBAIHR5cGVkZWYgc3Ry
dWN0IF9FdmFzX0V2ZW50X0tleV9VcCBFdmFzX0UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50IDogcHVibGljIFBsYXRm
b3JtRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIHsKLSAgICAgICAgICAg
IC8vIEtleURvd24gaXMgc2VudCBieSBwbGF0Zm9ybXMgc3VjaCBhcyBNYWMgT1MgWCwgZ3RrIGFu
ZCBRdCwgYW5kIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBib3RoIHBoeXNpY2FsIHByZXNzZWQga2V5
LCBhbmQgaXRzIHRyYW5zbGF0aW9uLgotICAgICAgICAgICAgLy8gRm9yIERPTSBwcm9jZXNzaW5n
LCBpdCBuZWVkcyB0byBiZSBkaXNhbWJpZ3VhdGVkIGFzIFJhd0tleURvd24gb3IgQ2hhciBldmVu
dC4KLSAgICAgICAgICAgIEtleURvd24sCi0KLSAgICAgICAgICAgIC8vIEtleVVwIGlzIHNlbnQg
YnkgYWxsIHBsYXRmb3Jtcy4KLSAgICAgICAgICAgIEtleVVwLAotCi0gICAgICAgICAgICAvLyBU
aGVzZSBldmVudHMgYXJlIHNlbnQgYnkgcGxhdGZvcm1zIHN1Y2ggYXMgV2luZG93cyBhbmQgd3hX
aWRnZXRzLiBSYXdLZXlEb3duIG9ubHkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgcGh5c2ljYWwg
a2V5LCBhbmQgQ2hhcgotICAgICAgICAgICAgLy8gb25seSBoYXMgaW5mb3JtYXRpb24gYWJvdXQg
YSBjaGFyYWN0ZXIgaXQgd2FzIHRyYW5zbGF0ZWQgaW50by4KLSAgICAgICAgICAgIFJhd0tleURv
d24sCi0gICAgICAgICAgICBDaGFyCi0gICAgICAgIH07Ci0KLSAgICAgICAgZW51bSBNb2RpZmll
cktleSB7Ci0gICAgICAgICAgICBBbHRLZXkgPSAxIDw8IDAsCi0gICAgICAgICAgICBDdHJsS2V5
ID0gMSA8PCAxLAotICAgICAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKLSAgICAgICAgICAgIFNo
aWZ0S2V5ID0gMSA8PCAzCi0gICAgICAgIH07Ci0KICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50KCkKLSAgICAgICAgICAgIDogbV90eXBlKEtleURvd24pCisgICAgICAgICAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93bikKICAgICAgICAgICAgICwgbV9hdXRvUmVw
ZWF0KGZhbHNlKQogICAgICAgICAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgwKQogICAg
ICAgICAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKDApCiAgICAgICAgICAgICAsIG1faXNL
ZXlwYWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAg
ICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKICNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JN
KENIUk9NSVVNKQogICAgICAgICAgICAgLCBtX2lzU3lzdGVtS2V5KGZhbHNlKQogI2VuZGlmCkBA
IC0xMTAsOCArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKwogICAgICAgICB2b2lkIGRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlLCBi
b29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZSk7IC8vIE9ubHkgdXNlZCBvbiBw
bGF0Zm9ybXMgdGhhdCBuZWVkIGl0LCBpLmUuIHRob3NlIHRoYXQgZ2VuZXJhdGUgS2V5RG93biBl
dmVudHMuCiAKICAgICAgICAgLy8gVGV4dCBhcyBhcyBnZW5lcmF0ZWQgYnkgcHJvY2Vzc2luZyBh
IHZpcnR1YWwga2V5IGNvZGUgd2l0aCBhIGtleWJvYXJkIGxheW91dApAQCAtMTM5LDE2ICsxMTMs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNBdXRvUmVwZWF0KCkgY29u
c3QgeyByZXR1cm4gbV9hdXRvUmVwZWF0OyB9CiAgICAgICAgIHZvaWQgc2V0SXNBdXRvUmVwZWF0
KGJvb2wgaW4pIHsgbV9hdXRvUmVwZWF0ID0gaW47IH0KICAgICAgICAgYm9vbCBpc0tleXBhZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNLZXlwYWQ7IH0KLSAgICAgICAgYm9vbCBzaGlmdEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICAgICAgYm9vbCBjdHJsS2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9hbHRLZXk7IH0KLSAgICAgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRhS2V5OyB9Ci0gICAgICAgIHVuc2lnbmVkIG1vZGlmaWVycygpIGNvbnN0IHsKLSAgICAgICAg
ICAgIHJldHVybiAoYWx0S2V5KCkgPyBBbHRLZXkgOiAwKQotICAgICAgICAgICAgICAgIHwgKGN0
cmxLZXkoKSA/IEN0cmxLZXkgOiAwKQotICAgICAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1l
dGFLZXkgOiAwKQotICAgICAgICAgICAgICAgIHwgKHNoaWZ0S2V5KCkgPyBTaGlmdEtleSA6IDAp
OwotICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudENhcHNMb2NrU3RhdGUo
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hp
ZnRLZXksIGJvb2wmIGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CkBAIC0x
OTMsNyArMTU3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFR5cGUgbV90eXBlOwogICAgICAgICBTdHJpbmcgbV90ZXh0OwogICAgICAg
ICBTdHJpbmcgbV91bm1vZGlmaWVkVGV4dDsKICAgICAgICAgU3RyaW5nIG1fa2V5SWRlbnRpZmll
cjsKQEAgLTIwMSwxMCArMTY0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQg
bV93aW5kb3dzVmlydHVhbEtleUNvZGU7CiAgICAgICAgIGludCBtX25hdGl2ZVZpcnR1YWxLZXlD
b2RlOwogICAgICAgICBib29sIG1faXNLZXlwYWQ7Ci0gICAgICAgIGJvb2wgbV9zaGlmdEtleTsK
LSAgICAgICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAgICAgIGJvb2wgbV9hbHRLZXk7Ci0gICAgICAg
IGJvb2wgbV9tZXRhS2V5OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBSZXRhaW5QdHI8
TlNFdmVudD4gbV9tYWNFdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtTW91c2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtTW91c2VFdmVudC5oCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBQbGF0Zm9ybU1vdXNlRXZlbnRfaAogCiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAKICNpZiBQTEFURk9STShHVEspCiB0eXBl
ZGVmIHN0cnVjdCBfR2RrRXZlbnRCdXR0b24gR2RrRXZlbnRCdXR0b247CkBAIC02MSwxOCArNjIs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIC8vIFRoZXNlIGJ1dHRvbiBudW1i
ZXJzIG1hdGNoIHRoZSBvbmVzIHVzZWQgaW4gdGhlIERPTSBBUEksIDAgdGhyb3VnaCAyLCBleGNl
cHQgZm9yIE5vQnV0dG9uIHdoaWNoIGlzbid0IHNwZWNpZmllZC4KICAgICBlbnVtIE1vdXNlQnV0
dG9uIHsgTm9CdXR0b24gPSAtMSwgTGVmdEJ1dHRvbiwgTWlkZGxlQnV0dG9uLCBSaWdodEJ1dHRv
biB9OwotICAgIGVudW0gTW91c2VFdmVudFR5cGUgeyBNb3VzZUV2ZW50TW92ZWQsIE1vdXNlRXZl
bnRQcmVzc2VkLCBNb3VzZUV2ZW50UmVsZWFzZWQsIE1vdXNlRXZlbnRTY3JvbGwgfTsKICAgICAK
LSAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQgeworICAgIGNsYXNzIFBsYXRmb3JtTW91c2VF
dmVudCA6IHB1YmxpYyBQbGF0Zm9ybUV2ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBsYXRm
b3JtTW91c2VFdmVudCgpCi0gICAgICAgICAgICA6IG1fYnV0dG9uKE5vQnV0dG9uKQotICAgICAg
ICAgICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50TW92ZWQpCisgICAgICAgICAgICA6IFBsYXRm
b3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkKKyAgICAgICAgICAgICwgbV9idXR0
b24oTm9CdXR0b24pCiAgICAgICAgICAgICAsIG1fY2xpY2tDb3VudCgwKQotICAgICAgICAgICAg
LCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fdGltZXN0YW1wKDApCiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJG
bGFncygwKQogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTgzLDE3ICs3OSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgTW91c2VCdXR0b24gYnV0dG9uLCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdCwgYm9vbCBj
dHJsLCBib29sIGFsdCwgYm9vbCBtZXRhLCBkb3VibGUgdGltZXN0YW1wKQotICAgICAgICAgICAg
OiBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE1vdXNl
QnV0dG9uIGJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCkKKyAgICAgICAgICAg
IDogUGxhdGZvcm1FdmVudCh0eXBlLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5
KQorICAgICAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX2ds
b2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX2J1dHRvbihidXR0
b24pCi0gICAgICAgICAgICAsIG1fZXZlbnRUeXBlKGV2ZW50VHlwZSkKICAgICAgICAgICAgICwg
bV9jbGlja0NvdW50KGNsaWNrQ291bnQpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnQp
Ci0gICAgICAgICAgICAsIG1fY3RybEtleShjdHJsKQotICAgICAgICAgICAgLCBtX2FsdEtleShh
bHQpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhKQogICAgICAgICAgICAgLCBtX3RpbWVz
dGFtcCh0aW1lc3RhbXApCiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJGbGFncygwKQogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTEwMiw2ICs5NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZmFsc2UpCiAjZW5kaWYKICAgICAgICAgewor
ICAgICAgICAgICAgLy9BU1NFUlQoaXNQbGF0Zm9ybU1vdXNlRXZlbnRUeXBlKHR5cGUpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBwb3MoKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uOyB9CkBAIC0xMTQsNyArMTA3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBpbnQgbW92ZW1lbnRZKCkgY29uc3QgeyByZXR1cm4gbV9tb3ZlbWVudERlbHRhLnkoKTsg
fQogI2VuZGlmCiAgICAgICAgIE1vdXNlQnV0dG9uIGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YnV0dG9uOyB9Ci0gICAgICAgIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXZlbnRUeXBlOyB9CiAgICAgICAgIGludCBjbGlja0NvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9jbGlja0NvdW50OyB9CiAgICAgICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVy
biBtX3NoaWZ0S2V5OyB9CiAgICAgICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3RybEtleTsgfQpAQCAtMTQyLDcgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBk
ZWZpbmVkKF9fT0JKQ19fKQogICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqLCBO
U1ZpZXcgKndpbmRvd1ZpZXcpOwogI2VuZGlmCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChp
bnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24gYnV0dG9u
LCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChp
bnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24gYnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKTsKICAgICAgICAgaW50
IGV2ZW50TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQpAQCAtMTcwLDEy
ICsxNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEludFBvaW50IG1fbW92ZW1l
bnREZWx0YTsKICNlbmRpZgogICAgICAgICBNb3VzZUJ1dHRvbiBtX2J1dHRvbjsKLSAgICAgICAg
TW91c2VFdmVudFR5cGUgbV9ldmVudFR5cGU7CiAgICAgICAgIGludCBtX2NsaWNrQ291bnQ7Ci0g
ICAgICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICAgICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAgICAg
IGJvb2wgbV9hbHRLZXk7Ci0gICAgICAgIGJvb2wgbV9tZXRhS2V5OwogICAgICAgICBkb3VibGUg
bV90aW1lc3RhbXA7IC8vIHVuaXQ6IHNlY29uZHMKICAgICAgICAgdW5zaWduZWQgbV9tb2RpZmll
ckZsYWdzOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1XaGVlbEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgUGxhdGZvcm1XaGVlbEV2ZW50X2gKIAogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1FdmVudC5oIgogCiAjaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBzdHJ1Y3Qg
X0dka0V2ZW50U2Nyb2xsIEdka0V2ZW50U2Nyb2xsOwpAQCAtODQsMTggKzg1LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBQbGF0Zm9ybVdoZWVs
RXZlbnQgeworICAgIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudCA6IHB1YmxpYyBQbGF0Zm9ybUV2
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCgpCi0gICAgICAg
ICAgICA6IG1fZGVsdGFYKDApCisgICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1F
dmVudDo6V2hlZWwpCisgICAgICAgICAgICAsIG1fZGVsdGFYKDApCiAgICAgICAgICAgICAsIG1f
ZGVsdGFZKDApCiAgICAgICAgICAgICAsIG1fd2hlZWxUaWNrc1goMCkKICAgICAgICAgICAgICwg
bV93aGVlbFRpY2tzWSgwKQogICAgICAgICAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50KQotICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAg
ICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAg
ICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZGlyZWN0aW9uSW52
ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICAgICAgLCBtX2hhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMoZmFsc2UpCkBAIC0xMDcsMTcgKzEwNSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIH0KIAogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSW50UG9pbnQgcG9zaXRp
b24sIEludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwg
ZmxvYXQgd2hlZWxUaWNrc1gsIGZsb2F0IHdoZWVsVGlja3NZLCBQbGF0Zm9ybVdoZWVsRXZlbnRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBtZXRhS2V5KQotICAgICAgICAgICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9u
KQorICAgICAgICAgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBzaGlm
dEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KQorICAgICAgICAgICAgLCBtX3Bvc2l0aW9u
KHBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9u
KQogICAgICAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCiAgICAgICAgICAgICAsIG1fZGVsdGFZ
KGRlbHRhWSkKICAgICAgICAgICAgICwgbV93aGVlbFRpY2tzWCh3aGVlbFRpY2tzWCkKICAgICAg
ICAgICAgICwgbV93aGVlbFRpY2tzWSh3aGVlbFRpY2tzWSkKICAgICAgICAgICAgICwgbV9ncmFu
dWxhcml0eShncmFudWxhcml0eSkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkK
LSAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgICAgICAgICAsIG1fYWx0S2V5
KGFsdEtleSkKLSAgICAgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCiAgICAgICAgICAgICAs
IG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICAgICAgLCBtX2hh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2UpCkBAIC0xMzksMTEgKzEzNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBn
cmFudWxhcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJpdHk7IH0KIAotICAgICAgICBi
b29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgICAgICBib29s
IGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICAgICAgYm9vbCBhbHRL
ZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtleTsgfQotICAgICAgICBib29sIG1ldGFLZXkoKSBj
b25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KLQogICAgICAgICBpbnQgeCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24ueCgpOyB9IC8vIFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgogICAg
ICAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ueSgpOyB9CiAgICAgICAgIGlu
dCBnbG9iYWxYKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbi54KCk7IH0gLy8gU2Ny
ZWVuIGNvb3JkaW5hdGVzLgpAQCAtMjA4LDEwICsxOTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGZsb2F0IG1fd2hlZWxUaWNrc1g7CiAgICAgICAgIGZsb2F0IG1fd2hlZWxUaWNr
c1k7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7
Ci0gICAgICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICAgICAgYm9vbCBtX2N0cmxLZXk7Ci0gICAg
ICAgIGJvb2wgbV9hbHRLZXk7Ci0gICAgICAgIGJvb2wgbV9tZXRhS2V5OwogICAgICAgICBib29s
IG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBM
QVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBib29sIG1faGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JOb25lLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDcg
KzQ3Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFcKICNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCiB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbShjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQogewotICAgIEFTU0VSVChwZ2UudHlwZSgpID09
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlKTsKKyAgICBBU1NFUlQocGdlLnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwKTsKICAgICAvLyBGSVhNRTog
bW9kaWZ5IHRoaXMgc28gd2UgY2FuIHN0YXJ0IGV2ZW4gaWYgdGhlIHRpbWVyIGlzIGFjdGl2ZS4K
ICAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICBtX2N1cnJl
bnRab29tU2NhbGUgPSAxOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JO
b25lOjp6b29tKGNvbnN0IFBsYXQKICAgICAgICAgbV96b29tRGF0YS5tX2Rlc2lyZWRUcmFuc1gg
PSAoMSAtIHNjYWxlKSAqIHBnZS5nbG9iYWxQb3NpdGlvbigpLngoKTsKICAgICAgICAgbV96b29t
RGF0YS5tX2Rlc2lyZWRUcmFuc1kgPSAoMSAtIHNjYWxlKSAqIHBnZS5nbG9iYWxQb3NpdGlvbigp
LnkoKTsKICNpZiBFTkFCTEUoRE9VQkxFX1RBUF9DRU5URVJTKQotICAgICAgICBpZiAocGdlLnR5
cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSkgeworICAgICAgICBp
ZiAocGdlLnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwKSB7CiAgICAg
ICAgICAgICAvLyBab29tIHRvIGNlbnRyZSBvZiBkaXNwbGF5LiBQaW5jaC10by16b29tIG1heSBu
b3Qgd2FudCB0aGlzIGJlaGF2aW91ci4KICAgICAgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVk
VHJhbnNYICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpIC8gMiAtIHBnZS5nbG9i
YWxQb3NpdGlvbigpLngoKTsKICAgICAgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNZ
ICs9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWlnaHQoKSAvIDIgLSBwZ2UuZ2xvYmFsUG9z
aXRpb24oKS55KCk7CkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
OmhhbmRsZUdlc3R1cmVFdgogewogICAgIFRSQUNFX0VWRU5UKCJTY3JvbGxBbmltYXRvck5vbmU6
OmhhbmRsZUdlc3R1cmVFdmVudCIsIHRoaXMsIDApOwogICAgIHN3aXRjaCAocGdlLnR5cGUoKSkg
ewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CisgICAgY2Fz
ZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgogICAgICAgICB6b29tKHBnZSk7CiAg
ICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tC
ZXJyeS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNywyNSArNDI3LDIxIEBAIHN0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXAKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5
RG93bjsKICAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlV
cDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA7CisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlVcDsKICAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpLZXlib2FyZEV2ZW50OjpLZXlDaGFyOgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpDaGFyOwogICAgIH0KIH0KIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQgZXZlbnQpCi0g
ICAgOiBtX3R5cGUodG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShldmVudC50eXBl
KCkpKQorICAgIDogUGxhdGZvcm1FdmVudCh0b1dlYkNvcmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRU
eXBlKGV2ZW50LnR5cGUoKSksIGV2ZW50LnNoaWZ0QWN0aXZlKCkgfHwgKGV2ZW50LmNoYXJhY3Rl
cigpID09IEtFWUNPREVfQkFDS19UQUIpLCBldmVudC5jdHJsQWN0aXZlKCksIGV2ZW50LmFsdEFj
dGl2ZSgpLCBmYWxzZSkKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yQmxh
Y2tCZXJyeUNoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSkpCiAgICAgLCBtX2F1dG9SZXBlYXQo
ZmFsc2UpCiAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvckJs
YWNrQmVycnlDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpKQogICAgICwgbV9pc0tleXBhZChm
YWxzZSkKLSAgICAsIG1fc2hpZnRLZXkoZXZlbnQuc2hpZnRBY3RpdmUoKSB8fCAoZXZlbnQuY2hh
cmFjdGVyKCkgPT0gS0VZQ09ERV9CQUNLX1RBQikpIC8vIEJhY2tUYWIgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgU2hpZnQgKyBUYWIuCi0gICAgLCBtX2N0cmxLZXkoZXZlbnQuY3RybEFjdGl2ZSgpKQot
ICAgICwgbV9hbHRLZXkoZXZlbnQuYWx0QWN0aXZlKCkpCi0gICAgLCBtX21ldGFLZXkoZmFsc2Up
CiAgICAgLCBtX3VubW9kaWZpZWRDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpCiB7CiAgICAg
dW5zaWduZWQgc2hvcnQgY2hhcmFjdGVyID0gYWRqdXN0Q2hhcmFjdGVyRnJvbU9TKGV2ZW50LmNo
YXJhY3RlcigpKTsKQEAgLTQ2MSwxNiArNDU3LDE2IEBAIGJvb2wgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpjdXJyZW50Q2Fwc0wKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKK3ZvaWQgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVu
dDo6VHlwZSB0eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiB7CiAgICAgLy8g
Q2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwg
YXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJU
KG1fdHlwZSA9PSBLZXlEb3duKTsKKyAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6
OktleURvd24pOwogICAgIG1fdHlwZSA9IHR5cGU7CiAKICAgICBpZiAoYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93
bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmco
KTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAJKHJldmlz
aW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTcgKzEyNSwxNyBA
QCBib29sIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmlzT3Zlck1pCiAKIHZvaWQgR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kVGFwRG93bkdlc3R1cmVFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQogewotICAgIGdl
c3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcERvd25UeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVuUG9z
aXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwg
bV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0
dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24sIG1fZmlyc3RUb3VjaFBvc2l0
aW9uLCBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAu
ZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZv
aWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsK
LSAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpUYXBUeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVu
UG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtl
eSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCwgbV9maXJzdFRvdWNoUG9zaXRp
b24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5m
LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAogdm9p
ZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmREb3VibGVDbGlja0dlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVz
KQogewotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0
VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtl
eSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVu
ZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwLCBt
X2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRv
dWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0
YUtleSkpOwogfQogCiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25z
dCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCkBAIC0x
NTksMTIgKzE1OSwxMiBAQCBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMg
CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZUJl
Z2luKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVy
ZXMpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBv
aW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBs
YXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbiwgdG91
Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAw
LmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9
CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kU2Nyb2xsR2VzdHVyZUVu
ZChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVz
LCBmbG9hdCB4VmVsb2NpdHksIGZsb2F0IHlWZWxvY2l0eSkKIHsKLSAgICBnZXN0dXJlcy0+YXBw
ZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRU
eXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3Vj
aFRpbWUsIHhWZWxvY2l0eSwgeVZlbG9jaXR5LCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0
S2V5LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2
ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQsIHRvdWNoUG9pbnQucG9zKCksIHRv
dWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgeFZlbG9jaXR5LCB5VmVsb2Np
dHksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2
b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVVcGRhdGUo
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZFNjCiAgICAgZmxvYXQgZGVsdGFYKHRvdWNoUG9pbnQucG9zKCkueCgpIC0gbV9maXJzdFRvdWNo
UG9zaXRpb24ueCgpKTsKICAgICBmbG9hdCBkZWx0YVkodG91Y2hQb2ludC5wb3MoKS55KCkgLSBt
X2ZpcnN0VG91Y2hQb3NpdGlvbi55KCkpOwogCi0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9y
bUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZSwgdG91
Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCBk
ZWx0YVgsIGRlbHRhWSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5
KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNj
cmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRhWCwgZGVsdGFZLCBtX3NoaWZ0S2V5LCBt
X2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKICAgICBtX2ZpcnN0VG91Y2hQb3NpdGlv
biA9IHRvdWNoUG9pbnQucG9zKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsOCArNDgsOCBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1
YXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQogICAgIC8vIENhbiBvbmx5IGNo
YW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sg
aW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0g
S2V5RG93bik7Ci0gICAgQVNTRVJUKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09IENoYXIp
OworICAgIEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93bik7CisgICAgQVNT
RVJUKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biB8fCB0eXBlID09IFBsYXRmb3Jt
RXZlbnQ6OkNoYXIpOwogICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgaWYgKGJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAJKHJldmlzaW9uIDEwMzA3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDI2ICsyOTcsMjggQEAgYm9vbCBQb3B1cENvbnRhaW5l
cjo6aGFuZGxlVG91Y2hFdmVudChjbwogYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAg
c3dpdGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6VGFwVHlwZTogewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92
ZShnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCks
IE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2
ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRL
ZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsK
LSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBv
c2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3Vz
ZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXko
KSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJl
RXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1
cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQs
IC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVu
dC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXko
KSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVUYXA6IHsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2Vz
dHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0
dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50
LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1w
KCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJl
RXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFs
dEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkp
OworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBv
c2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVu
dC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5
KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CiAg
ICAgICAgIC8vIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGZha2VNb3VzZU1vdmUpOwogICAgICAgICBo
YW5kbGVNb3VzZURvd25FdmVudChmYWtlTW91c2VEb3duKTsKICAgICAgICAgaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0g
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKKyAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6IHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVF
dmVudC5nbG9iYWxQb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVu
dC5kZWx0YVkoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpIC8gMTIwLjBmLCBnZXN0dXJlRXZlbnQu
ZGVsdGFZKCkgLyAxMjAuMGYsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBnZXN0dXJlRXZlbnQu
c2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgp
LCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50
aGV0aWNXaGVlbEV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKLSAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlRhcERvd25UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJl
Z2luOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duOgogICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksMTIg
KzE5OSwxMiBAQCBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlclR5cGVFdmVudChjb25zdCBQCiAgICAg
Ly8gV2UgdXNlIFJhd0tleURvd24vQ2hhci9LZXlVcCBldmVudCBzY2hlbWUgb24gYWxsIHBsYXRm
b3JtcywKICAgICAvLyBzbyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIgKG5vdCBSYXdLZXlE
b3duKSB0eXBlIGV2ZW50CiAgICAgLy8gaXMgY29uc2lkZXJlZCBhcyBjaGFyYWN0ZXIgdHlwZSBl
dmVudC4KLSAgICByZXR1cm4gZXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q2hhcjsKKyAgICByZXR1cm4gZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXI7CiB9
CiAKIGJvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpLZXlVcCkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OktleVVwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghbnVtSXRlbXMoKSAmJiBl
dmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKSAhPSBWS0VZX0VTQ0FQRSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtODgzLDkgKzg4Myw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6
aGFuZGxlV2gKIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpoYW5kbGVHZXN0dXJl
RXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICBp
ZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVn
aW5UeXBlKQorICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVTY3JvbGxCZWdpbikKICAgICAgICAgYmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAgZWxz
ZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xs
RW5kVHlwZSkKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVTY3JvbGxFbmQpCiAgICAgICAgIGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudEVmbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMyArNDAsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3du
KiBldmVudCkKLSAgICA6IG1fdHlwZShLZXlEb3duKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlm
aWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywg
IkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEi
KSkKICAgICAsIG1fdGV4dChTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpKQogICAgICwg
bV91bm1vZGlmaWVkVGV4dChTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpKQotICAgICwg
bV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNo
aWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5t
b2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogewogICAgIFN0cmlu
ZyBrZXlOYW1lID0gU3RyaW5nKGV2ZW50LT5rZXkpOwogICAgIG1fa2V5SWRlbnRpZmllciA9IGtl
eUlkZW50aWZpZXJGb3JFdmFzS2V5TmFtZShrZXlOYW1lKTsKQEAgLTU4LDEyICs1NCw4IEBAIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKIH0KIAogUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
IGV2ZW50KQotICAgIDogbV90eXBlKEtleVVwKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlVcCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMs
ICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNv
bnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQi
KSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAg
ICAgLCBtX3RleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSkKLSAgICAsIG1fc2hp
ZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIp
KQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZp
ZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2Rp
Zmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKIHsKICAgICBTdHJpbmcga2V5
TmFtZSA9IFN0cmluZyhldmVudC0+a2V5KTsKICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVu
dGlmaWVyRm9yRXZhc0tleU5hbWUoa2V5TmFtZSk7CkBAIC03OSw3ICs3MSw3IEBAIHZvaWQgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUKICAgICBBU1NFUlQobV90eXBlID09IEtl
eURvd24pOwogICAgIG1fdHlwZSA9IHR5cGU7CiAKLSAgICBpZiAodHlwZSA9PSBSYXdLZXlEb3du
KSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAg
ICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygp
OwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZv
cm1Nb3VzZUV2ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUGxhdGZvcm1Nb3VzZUV2ZW50RWZsLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDQzICs0OCwzMSBAQCB2b2lkIFBsYXRmb3JtTW91c2VFdmVudDo6c2V0
Q2xpY2tDb3VudCh1CiB9CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50
KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXZlbnQsIEludFBvaW50IHBvc2l0aW9uKQot
ICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi54KCks
IGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50
LT5tb2RpZmllcnMsICJTaGlmdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1v
ZGlmaWVycywgIkNvbnRyb2wiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2Rp
ZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMs
ICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBv
c2l0aW9uLngoKSwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKICAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpKQog
ICAgICwgbV9idXR0b24oTW91c2VCdXR0b24oZXZlbnQtPmJ1dHRvbiAtIDEpKQotICAgICwgbV9l
dmVudFR5cGUoTW91c2VFdmVudFByZXNzZWQpCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21v
ZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtl
eShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkK
LSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50
LT5tb2RpZmllcnMsICJNZXRhIikpCiAgICAgLCBtX3RpbWVzdGFtcChjdXJyZW50VGltZSgpKQog
ewogICAgIHNldENsaWNrQ291bnQoZXZlbnQtPmZsYWdzKTsKIH0KIAogUGxhdGZvcm1Nb3VzZUV2
ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXZlbnQs
IEludFBvaW50IHBvc2l0aW9uKQotICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2Fu
dmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCisg
ICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlm
aWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICwgbV9wb3NpdGlvbihJbnRQb2lu
dChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0
aW9uLnkoKSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGV2ZW50LT5jYW52YXMu
eCwgZXZlbnQtPmNhbnZhcy55KSkKICAgICAsIG1fYnV0dG9uKE1vdXNlQnV0dG9uKGV2ZW50LT5i
dXR0b24gLSAxKSkKLSAgICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRSZWxlYXNlZCkKLSAgICAs
IG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJT
aGlmdCIpKQotICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+
bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKICAgICAsIG1fdGlt
ZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiB7CiAgICAgc2V0Q2xpY2tDb3VudChldmVudC0+ZmxhZ3Mp
OwogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX01vdmUqIGV2ZW50LCBJbnRQb2ludCBwb3NpdGlvbikKLSAgICA6IG1fcG9z
aXRpb24oSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwgZXZlbnQt
PmN1ci5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmll
cnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0
YSIpKQorICAgICwgbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54IC0gcG9z
aXRpb24ueCgpLCBldmVudC0+Y3VyLmNhbnZhcy55IC0gcG9zaXRpb24ueSgpKSkKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCwgZXZlbnQtPmN1ci5j
YW52YXMueSkpCiAgICAgLCBtX2J1dHRvbihNb3VzZUJ1dHRvbihldmVudC0+YnV0dG9ucyAtIDEp
KQotICAgICwgbV9ldmVudFR5cGUoTW91c2VFdmVudE1vdmVkKQogICAgICwgbV9jbGlja0NvdW50
KDApCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19z
ZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFL
ZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAg
ICAgLCBtX3RpbWVzdGFtcChjdXJyZW50VGltZSgpKQogewogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAJKHJl
dmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdo
ZWVsRXZlbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMyArNDMsMTAgQEAgZW51bSB7
CiB9OwogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX1doZWVsKiBldikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQoZXYtPmNh
bnZhcy54LCBldi0+Y2FudmFzLnkpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpXaGVlbCwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJTaGlmdCIp
LCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkNvbnRyb2wiKSwgZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJBbHQiKSwgZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJNZXRhIikpCisgICAgLCBtX3Bvc2l0aW9uKElu
dFBvaW50KGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KSkKICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oSW50UG9pbnQoZXYtPmNhbnZhcy54LCBldi0+Y2FudmFzLnkpKQogICAgICwgbV9ncmFudWxh
cml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlf
bW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJTaGlmdCIpKQotICAgICwgbV9jdHJsS2V5
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQ29udHJvbCIpKQotICAg
ICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJBbHQi
KSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVy
cywgIk1ldGEiKSkKICAgICAsIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQog
ewogICAgIC8vIEEgbmVnYXRpdmUgeiB2YWx1ZSBtZWFucyAoaW4gRUZMKSB0aGF0IHdlIGFyZSBz
Y3JvbGxpbmcgZG93biwgc28gd2UgbmVlZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAJKHJldmlzaW9u
IDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDcgQEAgU3RyaW5nIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6c2luZ2xlQ2hhcgogLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0
aCB0aGUgb3RoZXIgcGxhdGZvcm0gZXZlbnQgY29uc3RydWN0b3JzCiAvLyBUT0RPOiBtX2dka0V2
ZW50S2V5IHNob3VsZCBiZSByZWZjb3VudGVkCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRm
b3JtS2V5Ym9hcmRFdmVudChHZGtFdmVudEtleSogZXZlbnQpCi0gICAgOiBtX3R5cGUoKGV2ZW50
LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkgPyBLZXlVcCA6IEtleURvd24pCisgICAgOiBQbGF0
Zm9ybUV2ZW50KChldmVudC0+dHlwZSA9PSBHREtfS0VZX1JFTEVBU0UpID8gUGxhdGZvcm1FdmVu
dDo6S2V5VXAgOiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAoZXZlbnQtPnN0YXRlICYgR0RLX1NI
SUZUX01BU0spIHx8IChldmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tUYWIpLCBldmVudC0+
c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLLCBldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLLCBl
dmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQogICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3Rl
clN0cmluZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlk
ZW50aWZpZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQpAQCAtNTU1LDEwICs1NTUsNiBA
QCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiAgICAgLCBtX3dpbmRv
d3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvckdka0tleUNvZGUoZXZlbnQtPmtleXZh
bCkpCiAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKGV2ZW50LT5rZXl2YWwpCiAgICAgLCBt
X2lzS2V5cGFkKGV2ZW50LT5rZXl2YWwgPj0gR0RLX0tQX1NwYWNlICYmIGV2ZW50LT5rZXl2YWwg
PD0gR0RLX0tQXzkpCi0gICAgLCBtX3NoaWZ0S2V5KChldmVudC0+c3RhdGUgJiBHREtfU0hJRlRf
TUFTSykgfHwgKGV2ZW50LT5rZXl2YWwgPT0gR0RLXzMyNzBfQmFja1RhYikpCi0gICAgLCBtX2N0
cmxLZXkoZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSykKLSAgICAsIG1fYWx0S2V5KGV2
ZW50LT5zdGF0ZSAmIEdES19NT0QxX01BU0spCi0gICAgLCBtX21ldGFLZXkoZXZlbnQtPnN0YXRl
ICYgR0RLX01FVEFfTUFTSykKICAgICAsIG1fZ2RrRXZlbnRLZXkoZXZlbnQpCiB7CiB9CkBAIC01
NzIsNyArNTY4LDcgQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQog
ICAgIGlmIChiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAodHlwZSA9PSBSYXdLZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bikgewogICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91
bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
TW91c2VFdmVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgUGxhdGZv
cm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoRwogICAgIGNhc2UgR0RLXzJCVVRUT05f
UFJFU1M6CiAgICAgY2FzZSBHREtfM0JVVFRPTl9QUkVTUzoKICAgICBjYXNlIEdES19CVVRUT05f
UkVMRUFTRToKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICBpZiAoZXZl
bnQtPnR5cGUgPT0gR0RLX0JVVFRPTl9SRUxFQVNFKSB7Ci0gICAgICAgICAgICBtX2V2ZW50VHlw
ZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwogICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlID09IEdES19CVVRUT05fUFJFU1MpCiAgICAgICAgICAg
ICBtX2NsaWNrQ291bnQgPSAxOwpAQCAtODcsNyArODcsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudChHCiAKICAgICBzd2l0Y2ggKG1vdGlvbi0+dHlwZSkgewogICAg
IGNhc2UgR0RLX01PVElPTl9OT1RJRlk6Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVu
dE1vdmVkOworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAg
ICAgICBtX2J1dHRvbiA9IE5vQnV0dG9uOwogICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdo
ZWVsRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxF
dmVudChHCiB7CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IGRlbHRhID0gMTsKIAorICAgIG1fdHlw
ZSA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOworCiAgICAgbV9kZWx0YVggPSAwOwogICAgIG1fZGVs
dGFZID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tleUV2ZW50SU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9LZXlFdmVudElP
Uy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tl
eUV2ZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNyArNTAsMTMgQEAgc3RhdGljIFN0
cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoVwogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChXZWJFdmVudCAqZXZlbnQpCi0gICAgOiBtX3R5cGUo
ZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleVVwID8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlV
cCA6IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICA6IFBsYXRmb3JtRXZlbnQo
ZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleVVwID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFz
a1NoaWZ0LCBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wsIGV2
ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlLCBldmVudC5tb2Rp
ZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQpCiAgICAgLCBtX3RleHQoZXZlbnQu
Y2hhcmFjdGVycykKICAgICAsIG1fdW5tb2RpZmllZFRleHQoZXZlbnQuY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JLZXlF
dmVudChldmVudCkpCiAgICAgLCBtX2F1dG9SZXBlYXQoZXZlbnQuaXNLZXlSZXBlYXRpbmcpCiAg
ICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZShldmVudC5rZXlDb2RlKQogICAgICwgbV9pc0tl
eXBhZChmYWxzZSkgLy8gaVBob25lIGRvZXMgbm90IGRpc3Rpbmd1aXNoIHRoZSBudW1wYWQgPHJk
YXI6Ly9wcm9ibGVtLzcxOTA4MzU+Ci0gICAgLCBtX3NoaWZ0S2V5KGV2ZW50Lm1vZGlmaWVyRmxh
Z3MgJiBXZWJFdmVudEZsYWdNYXNrU2hpZnQpCi0gICAgLCBtX2N0cmxLZXkoZXZlbnQubW9kaWZp
ZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb250cm9sKQotICAgICwgbV9hbHRLZXkoZXZlbnQu
bW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5hdGUpCi0gICAgLCBtX21ldGFL
ZXkoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kKQogICAgICwg
bV9FdmVudChldmVudCkKIHsKICAgICBBU1NFUlQoZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleURv
d24gfHwgZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleVVwKTsKQEAgLTk0LDcgKzkwLDcgQEAgdm9p
ZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQogICAgIGlmIChiYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBSYXdL
ZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewog
ICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0
cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0tleUV2ZW50TWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNyBA
QCBzdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFCiB9CiAKIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KE5TRXZlbnQgKmV2ZW50KQotICAg
IDogbV90eXBlKGlzS2V5VXBFdmVudChldmVudCkgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eVVwIDogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIDogUGxhdGZvcm1FdmVu
dChpc0tleVVwRXZlbnQoZXZlbnQpID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1h
bmRLZXlNYXNrKQogICAgICwgbV90ZXh0KHRleHRGcm9tRXZlbnQoZXZlbnQpKQogICAgICwgbV91
bm1vZGlmaWVkVGV4dCh1bm1vZGlmaWVkVGV4dEZyb21FdmVudChldmVudCkpCiAgICAgLCBtX2tl
eUlkZW50aWZpZXIoa2V5SWRlbnRpZmllckZvcktleUV2ZW50KGV2ZW50KSkKQEAgLTE5NywxMCAr
MTk3LDYgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogICAgICwg
bV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudCkp
CiAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKFtldmVudCBrZXlDb2RlXSkKICAgICAsIG1f
aXNLZXlwYWQoaXNLZXlwYWRFdmVudChldmVudCkpCi0gICAgLCBtX3NoaWZ0S2V5KFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQotICAgICwgbV9jdHJsS2V5KFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spCi0gICAgLCBtX2FsdEtleShbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spCi0gICAgLCBtX21ldGFLZXkoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKICAgICAsIG1fbWFjRXZlbnQo
ZXZlbnQpCiB7CiAgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRv
bid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3Vz
ZUV2ZW50TWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNTcg
KzExOSw0OSBAQCBJbnRQb2ludCBnbG9iYWxQb2ludEZvckV2ZW50KE5TRXZlbnQgKmV2CiAgICAg
fQogfQogCi1zdGF0aWMgTW91c2VFdmVudFR5cGUgbW91c2VFdmVudEZvck5TRXZlbnQoTlNFdmVu
dCogZXZlbnQpIAorc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbW91c2VFdmVudEZvck5TRXZl
bnQoTlNFdmVudCogZXZlbnQpIAogewogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAgICAg
Y2FzZSBOU1Njcm9sbFdoZWVsOgotICAgICAgICByZXR1cm4gTW91c2VFdmVudFNjcm9sbDsKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlU2Nyb2xsOwogICAgIGNhc2UgTlNMZWZ0
TW91c2VEcmFnZ2VkOgogICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKICAgICBjYXNlIE5T
T3RoZXJNb3VzZURyYWdnZWQ6CiAgICAgY2FzZSBOU01vdXNlTW92ZWQ6Ci0gICAgICAgIHJldHVy
biBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkOwogICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgogICAgIGNhc2UgTlNSaWdodE1vdXNlRG93
bjoKICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAgICAgIHJldHVybiBNb3VzZUV2ZW50
UHJlc3NlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAg
ICBjYXNlIE5TTGVmdE1vdXNlVXA6CiAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKICAgICBjYXNl
IE5TT3RoZXJNb3VzZVVwOgotICAgICAgICByZXR1cm4gTW91c2VFdmVudFJlbGVhc2VkOworICAg
ICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gTW91c2VFdmVudE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6TW91c2VNb3ZlZDsKICAgICB9CiB9CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZv
cm1Nb3VzZUV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCi0gICAgOiBt
X3Bvc2l0aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQorICAgIDogUGxhdGZv
cm1FdmVudChtb3VzZUV2ZW50Rm9yTlNFdmVudChldmVudCksIFtldmVudCBtb2RpZmllckZsYWdz
XSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlN
YXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCisgICAgLCBtX3Bvc2l0aW9uKHBvaW50
Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9i
YWxQb2ludEZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fYnV0dG9uKG1vdXNlQnV0dG9uRm9yRXZl
bnQoZXZlbnQpKQotICAgICwgbV9ldmVudFR5cGUobW91c2VFdmVudEZvck5TRXZlbnQoZXZlbnQp
KQogICAgICwgbV9jbGlja0NvdW50KGNsaWNrQ291bnRGb3JFdmVudChldmVudCkpCi0gICAgLCBt
X3NoaWZ0S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQotICAgICwg
bV9jdHJsS2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spCi0gICAg
LCBtX2FsdEtleShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spCi0g
ICAgLCBtX21ldGFLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykK
ICAgICAsIG1fdGltZXN0YW1wKFtldmVudCB0aW1lc3RhbXBdKQogICAgICwgbV9tb2RpZmllckZs
YWdzKFtldmVudCBtb2RpZmllckZsYWdzXSkKICAgICAsIG1fZXZlbnROdW1iZXIoW2V2ZW50IGV2
ZW50TnVtYmVyXSkKIHsKIH0KIAotUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZl
bnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0dG9uIGJ1
dHRvbiwgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlLAorUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0
Zm9ybU1vdXNlRXZlbnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1v
dXNlQnV0dG9uIGJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKQotICAgIDogbV9wb3Np
dGlvbihJbnRQb2ludCh4LCB5KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXks
IGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoeCwg
eSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGdsb2JhbFgsIGdsb2JhbFkpKQog
ICAgICwgbV9idXR0b24oYnV0dG9uKQotICAgICwgbV9ldmVudFR5cGUoZXZlbnRUeXBlKQogICAg
ICwgbV9jbGlja0NvdW50KGNsaWNrQ291bnQpCi0gICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQot
ICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgLCBtX2FsdEtleShhbHRLZXkpCi0gICAgLCBt
X21ldGFLZXkobWV0YUtleSkKICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICAsIG1f
bW9kaWZpZXJGbGFncyhtb2RpZmllckZsYWdzKQogICAgICwgbV9ldmVudE51bWJlcihldmVudE51
bWJlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzMSw5ICsxMDMx
LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudAogCiB2b2lkIFNj
cm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlKQorICAgIGlmIChnZXN0dXJlRXZl
bnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbikKICAgICAgICAg
YmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAgZWxzZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSkKKyAgICBlbHNlIGlmIChnZXN0
dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQpCiAgICAg
ICAgIGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1doZWVsRXZlbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05
MCwxMyArOTAsMTAgQEAgc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRQog
fQogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChOU0V2ZW50KiBldmVu
dCwgTlNWaWV3ICp3aW5kb3dWaWV3KQotICAgIDogbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2
ZW50LCB3aW5kb3dWaWV3KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hl
ZWwsIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0Fs
dGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2sp
CisgICAgLCBtX3Bvc2l0aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQogICAg
ICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1f
Z3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBtX3NoaWZ0S2V5KFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQotICAgICwgbV9jdHJsS2V5KFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spCi0gICAgLCBtX2FsdEtleShb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spCi0gICAgLCBtX21ldGFL
ZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKICAgICAsIG1fcGhh
c2UocGhhc2VGb3JFdmVudChldmVudCkpCiAgICAgLCBtX21vbWVudHVtUGhhc2UobW9tZW50dW1Q
aGFzZUZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fdGltZXN0YW1wKFtldmVudCB0aW1lc3RhbXBd
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudFF0LmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OTYsNyArNTk2LDcgQEAgc3RhdGljIFN0cmluZyBrZXlUZXh0Rm9yS2V5RXZlbnQoY29uc3Qg
UQogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUUtleUV2ZW50
KiBldmVudCkKIHsKICAgICBjb25zdCBpbnQgc3RhdGUgPSBldmVudC0+bW9kaWZpZXJzKCk7Ci0g
ICAgbV90eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlSZWxlYXNlKSA/IEtleVVw
IDogS2V5RG93bjsKKyAgICBtX3R5cGUgPSAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OktleVJl
bGVhc2UpID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwog
ICAgIG1fdGV4dCA9IGtleVRleHRGb3JLZXlFdmVudChldmVudCk7CiAgICAgbV91bm1vZGlmaWVk
VGV4dCA9IG1fdGV4dDsgLy8gRklYTUU6IG5vdCBjb3JyZWN0CiAgICAgbV9rZXlJZGVudGlmaWVy
ID0ga2V5SWRlbnRpZmllckZvclF0S2V5Q29kZShldmVudC0+a2V5KCkpOwpAQCAtNjE0LDEwICs2
MTQsMTAgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogdm9pZCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlIHR5cGUs
IGJvb2wpCiB7CiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJh
d0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVy
c2lvbnMuCi0gICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlEb3duKTsKKyAgICBBU1NFUlQobV90eXBl
ID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pOwogICAgIG1fdHlwZSA9IHR5cGU7CiAKLSAgICBp
ZiAodHlwZSA9PSBSYXdLZXlEb3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6
UmF3S2V5RG93bikgewogICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1v
ZGlmaWVkVGV4dCA9IFN0cmluZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCShyZXZpc2lv
biAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZl
bnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDQyICs0Myw0MiBAQCBzdGF0aWMgdm9pZCBt
b3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5CiAgICAgc2hpZnRLZXkgPSBrZXlib2FyZE1vZGlm
aWVycyAmIFF0OjpTaGlmdE1vZGlmaWVyOwogfQogCi1zdGF0aWMgdm9pZCBtb3VzZUV2ZW50VHlw
ZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChjb25zdCBRRXZlbnQqIGV2ZW50LCBNb3VzZUV2ZW50
VHlwZSYgbW91c2VFdmVudFR5cGUsIE1vdXNlQnV0dG9uJiBtb3VzZUJ1dHRvbikKK3N0YXRpYyB2
b2lkIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGNvbnN0IFFFdmVudCog
ZXZlbnQsIFBsYXRmb3JtRXZlbnQ6OlR5cGUmIG1vdXNlRXZlbnRUeXBlLCBNb3VzZUJ1dHRvbiYg
bW91c2VCdXR0b24pCiB7CiAgICAgZW51bSB7IE1vdXNlRXZlbnQsIEdyYXBoaWNzU2NlbmVNb3Vz
ZUV2ZW50IH0gZnJhbWV3b3JrTW91c2VFdmVudFR5cGU7CiAgICAgc3dpdGNoIChldmVudC0+dHlw
ZSgpKSB7CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uRGJsQ2xpY2s6CiAgICAgY2FzZSBR
RXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3M6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBl
ID0gTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3Nl
ZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2U6CiAg
ICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudDsKLSAgICAgICAgbW91
c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBl
ID0gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBRRXZlbnQ6Ok1vdXNlTW92ZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBN
b3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAg
ICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAg
ICBicmVhazsKICNpZiAhZGVmaW5lZChRVF9OT19HUkFQSElDU1ZJRVcpCiAgICAgY2FzZSBRRXZl
bnQ6OkdyYXBoaWNzU2NlbmVNb3VzZURvdWJsZUNsaWNrOgogICAgIGNhc2UgUUV2ZW50OjpHcmFw
aGljc1NjZW5lTW91c2VQcmVzczoKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBH
cmFwaGljc1NjZW5lTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2
ZW50UHJlc3NlZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVByZXNzZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5l
TW91c2VSZWxlYXNlOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IEdyYXBoaWNz
U2NlbmVNb3VzZUV2ZW50OwotICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxl
YXNlZDsKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVh
c2VkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNl
TW92ZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBHcmFwaGljc1NjZW5lTW91
c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAg
ICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50OwotICAgICAg
ICBtb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgbW91c2VFdmVudFR5
cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTg2LDEyICs4NiwxMiBAQCBzdGF0aWMgdm9pZCBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0
dG9uCiAgICAgc3dpdGNoIChmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSkgewogICAgIGNhc2UgTW91
c2VFdmVudDogewogICAgICAgICBjb25zdCBRTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFFNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICBtb3VzZUJ1dHRvbnMg
PSBtb3VzZUV2ZW50VHlwZSA9PSBNb3VzZUV2ZW50TW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25z
KCkgOiBtb3VzZUV2ZW50LT5idXR0b24oKTsKKyAgICAgICAgbW91c2VCdXR0b25zID0gbW91c2VF
dmVudFR5cGUgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSA6IG1vdXNlRXZlbnQtPmJ1dHRvbigpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBHcmFwaGljc1NjZW5lTW91c2VFdmVudDogewogICAgICAgICBjb25zdCBRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAgIG1vdXNlQnV0dG9ucyA9IG1vdXNlRXZl
bnRUeXBlID09IE1vdXNlRXZlbnRNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSA6IG1vdXNl
RXZlbnQtPmJ1dHRvbigpOworICAgICAgICBtb3VzZUJ1dHRvbnMgPSBtb3VzZUV2ZW50VHlwZSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9ucygpIDogbW91
c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xMTMs
NyArMTEzLDEwIEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFEKIAog
ICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgaGFuZGxlIGEgY29udGV4dCBtZW51IGV2ZW50IGhl
cmUgYXMgd2UgZG8gaW4gUGxhdGZvcm1Nb3VzZUV2ZW50KFFJbnB1dEV2ZW50KiwgaW50KT8KICAg
ICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDcyOD4u
Ci0gICAgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoZXZlbnQsIG1fZXZl
bnRUeXBlLCBtX2J1dHRvbik7CisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlOworICAgIG1v
dXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCB0eXBlLCBtX2J1dHRv
bik7CisKKyAgICBtX3R5cGUgPSB0eXBlOwogICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChldmVu
dC0+cG9zKCkudG9Qb2ludCgpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZXZl
bnQtPnNjcmVlblBvcygpKTsKIApAQCAtMTMwLDcgKzEzMyw3IEBAIFBsYXRmb3JtTW91c2VFdmVu
dDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFEKICNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkNvbnRleHRNZW51KSB7CiAgICAgICAgIGlzQ29u
dGV4dE1lbnVFdmVudCA9IHRydWU7Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFBy
ZXNzZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAg
ICAgICAgUUNvbnRleHRNZW51RXZlbnQqIGNlID0gc3RhdGljX2Nhc3Q8UUNvbnRleHRNZW51RXZl
bnQqPihldmVudCk7CiAgICAgICAgIG1fcG9zaXRpb24gPSBJbnRQb2ludChjZS0+cG9zKCkpOwog
ICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoY2UtPmdsb2JhbFBvcygpKTsKQEAg
LTEzOCw4ICsxNDEsMTEgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQo
UQogICAgIH0KICNlbmRpZgogICAgIGlmICghaXNDb250ZXh0TWVudUV2ZW50KSB7Ci0gICAgICAg
IG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBtX2V2ZW50VHlw
ZSwgbV9idXR0b24pOworICAgICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGU7CisgICAgICAg
IG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCB0eXBlLCBtX2J1
dHRvbik7CiAgICAgICAgIFFNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8UU1v
dXNlRXZlbnQqPihldmVudCk7CisKKyAgICAgICAgbV90eXBlID0gdHlwZTsKICAgICAgICAgbV9w
b3NpdGlvbiA9IEludFBvaW50KG1vdXNlRXZlbnQtPnBvcygpKTsKICAgICAgICAgbV9nbG9iYWxQ
b3NpdGlvbiA9IEludFBvaW50KG1vdXNlRXZlbnQtPmdsb2JhbFBvcygpKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJKHJldmlzaW9u
IDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMCBAQCB2b2lkIFBsYXRmb3JtV2hlZWxFdmVu
dDo6YXBwbHlEZWx0YShpbnQgCiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2
ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCogZSkKICNpZm5kZWYgUVRfTk9fV0hFRUxFVkVO
VAotICAgIDogbV9wb3NpdGlvbihlLT5wb3MoKS50b1BvaW50KCkpCisgICAgOiBQbGF0Zm9ybUV2
ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlm
aWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIsIGUtPm1vZGlmaWVycygp
ICYgUXQ6OkFsdE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCisg
ICAgLCBtX3Bvc2l0aW9uKGUtPnBvcygpLnRvUG9pbnQoKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZS0+c2NyZWVuUG9zKCkpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVl
bEV2ZW50KQotICAgICwgbV9zaGlmdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlm
aWVyKQotICAgICwgbV9jdHJsS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmll
cikKLSAgICAsIG1fYWx0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVyKQotICAg
ICwgbV9tZXRhS2V5KGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcikKICAgICAsIG1f
ZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogI2VuZGlmCiB7CkBAIC03OCwxMyAr
NzUsMTAgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoUQogCiBQbGF0
Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChRV2hlZWxFdmVudCogZSkKICNpZm5k
ZWYgUVRfTk9fV0hFRUxFVkVOVAotICAgIDogbV9wb3NpdGlvbihlLT5wb3MoKSkKKyAgICA6IFBs
YXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGUtPm1vZGlmaWVycygpICYgUXQ6OlNo
aWZ0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllciwgZS0+bW9k
aWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2Rp
ZmllcikKKyAgICAsIG1fcG9zaXRpb24oZS0+cG9zKCkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGUtPmdsb2JhbFBvcygpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxF
dmVudCkKLSAgICAsIG1fc2hpZnRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmll
cikKLSAgICAsIG1fY3RybEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIp
Ci0gICAgLCBtX2FsdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllcikKLSAgICAs
IG1fbWV0YUtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCiAgICAgLCBtX2Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNlbmRpZgogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCShyZXZpc2lvbiAxMDMwNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDIsOSArMTQyLDkgQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9y
V2luZG93c0tleQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChXUEFSQU0g
Y29kZSwgTFBBUkFNIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBlKQor
c3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChXUEFSQU0gY29kZSwgTFBBUkFNIGtleURhdGEsIFBs
YXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlJhd0tleURvd24gJiYgdHlwZSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eVVwKQorICAgIGlmICh0eXBlICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gJiYgdHlwZSAh
PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dp
dGNoIChjb2RlKSB7CkBAIC0xODcsMTggKzE4NywxNCBAQCBzdGF0aWMgYm9vbCBpc0tleXBhZEV2
ZW50KFdQQVJBTSBjb2RlLCBMCiBzdGF0aWMgaW5saW5lIFN0cmluZyBzaW5nbGVDaGFyYWN0ZXJT
dHJpbmcoVUNoYXIgYykgeyByZXR1cm4gU3RyaW5nKCZjLCAxKTsgfQogCiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChIV05ELCBXUEFSQU0gY29kZSwgTFBBUkFN
IGtleURhdGEsIFR5cGUgdHlwZSwgYm9vbCBzeXN0ZW1LZXkpCi0gICAgOiBtX3R5cGUodHlwZSkK
LSAgICAsIG1fdGV4dCgodHlwZSA9PSBDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2Rl
KSA6IFN0cmluZygpKQotICAgICwgbV91bm1vZGlmaWVkVGV4dCgodHlwZSA9PSBDaGFyKSA/IHNp
bmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQotICAgICwgbV9rZXlJZGVudGlm
aWVyKCh0eXBlID09IENoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tl
eUNvZGUoY29kZSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIEdldEtleVN0YXRlKFZLX1NI
SUZUKSAmIEhJR0hfQklUX01BU0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX0NPTlRST0wpICYgSElH
SF9CSVRfTUFTS19TSE9SVCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NI
T1JULCBmYWxzZSkKKyAgICAsIG1fdGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/
IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQorICAgICwgbV91bm1vZGlm
aWVkVGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0
cmluZyhjb2RlKSA6IFN0cmluZygpKQorICAgICwgbV9rZXlJZGVudGlmaWVyKCh0eXBlID09IFBs
YXRmb3JtRXZlbnQ6OkNoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tl
eUNvZGUoY29kZSkpCiAgICAgLCBtX2F1dG9SZXBlYXQoSElXT1JEKGtleURhdGEpICYgS0ZfUkVQ
RUFUKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoKHR5cGUgPT0gUmF3S2V5RG93biB8
fCB0eXBlID09IEtleVVwKSA/IGNvZGUgOiAwKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29k
ZShtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSkKICAgICAsIG1faXNLZXlwYWQoaXNLZXlwYWRFdmVu
dChjb2RlLCBrZXlEYXRhLCB0eXBlKSkKLSAgICAsIG1fc2hpZnRLZXkoR2V0S2V5U3RhdGUoVktf
U0hJRlQpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fY3RybEtleShHZXRLZXlTdGF0
ZShWS19DT05UUk9MKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX2FsdEtleShHZXRL
ZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX21ldGFLZXko
ZmFsc2UpCiAgICAgLCBtX2lzU3lzdGVtS2V5KHN5c3RlbUtleSkKIHsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZlbnRXaW4u
Y3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxh
dGZvcm1Nb3VzZUV2ZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBz
dGF0aWMgSW50UG9pbnQgZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChICiAgICAgcmV0dXJuIHBvaW50
OwogfQogCi1zdGF0aWMgTW91c2VFdmVudFR5cGUgbWVzc2FnZVRvRXZlbnRUeXBlKFVJTlQgbWVz
c2FnZSkKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1lc3NhZ2VUb0V2ZW50VHlwZShVSU5U
IG1lc3NhZ2UpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7CiAgICAgICAgIGNhc2UgV01fTEJV
VFRPTkRCTENMSzoKQEAgLTU4LDM1ICs1OCwzMiBAQCBzdGF0aWMgTW91c2VFdmVudFR5cGUgbWVz
c2FnZVRvRXZlbnRUeXBlCiAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRPV046CiAgICAgICAgIGNh
c2UgV01fUkJVVFRPTkRPV046CiAgICAgICAgIGNhc2UgV01fTUJVVFRPTkRPV046Ci0gICAgICAg
ICAgICByZXR1cm4gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxhdGZv
cm1FdmVudDo6TW91c2VQcmVzc2VkOwogCiAgICAgICAgIGNhc2UgV01fTEJVVFRPTlVQOgogICAg
ICAgICBjYXNlIFdNX1JCVVRUT05VUDoKICAgICAgICAgY2FzZSBXTV9NQlVUVE9OVVA6Ci0gICAg
ICAgICAgICByZXR1cm4gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAKICNpZiAhT1MoV0lOQ0UpCiAgICAgICAgIGNh
c2UgV01fTU9VU0VMRUFWRToKICNlbmRpZgogICAgICAgICBjYXNlIFdNX01PVVNFTU9WRToKLSAg
ICAgICAgICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAvL01vdmUgaXMgcmVsYXRpdmVseSBo
YXJtbGVzcwotICAgICAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgIH0KIH0KKwogUGxhdGZvcm1N
b3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0sIGJvb2wgZGlkQWN0aXZhdGVXZWJWaWV3KQotICAg
IDogbV9wb3NpdGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCisgICAgOiBQbGF0
Zm9ybUV2ZW50KG1lc3NhZ2VUb0V2ZW50VHlwZShtZXNzYWdlKSwgd1BhcmFtICYgTUtfU0hJRlQs
IHdQYXJhbSAmIE1LX0NPTlRST0wsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFT
S19TSE9SVCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQorICAg
ICwgbV9wb3NpdGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCiAgICAgLCBtX2ds
b2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKICAgICAs
IG1fY2xpY2tDb3VudCgwKQotICAgICwgbV9zaGlmdEtleSh3UGFyYW0gJiBNS19TSElGVCkKLSAg
ICAsIG1fY3RybEtleSh3UGFyYW0gJiBNS19DT05UUk9MKQotICAgICwgbV9hbHRLZXkoR2V0S2V5
U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9tZXRhS2V5KG1f
YWx0S2V5KSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVyIGJyb3dzZXJzCiAgICAg
LCBtX2RpZEFjdGl2YXRlV2ViVmlldyhkaWRBY3RpdmF0ZVdlYlZpZXcpCi0gICAgLCBtX2V2ZW50
VHlwZShtZXNzYWdlVG9FdmVudFR5cGUobWVzc2FnZSkpCiAgICAgLCBtX21vZGlmaWVyRmxhZ3Mo
d1BhcmFtKQogewogICAgIG1fdGltZXN0YW1wID0gOjpHZXRUaWNrQ291bnQoKSowLjAwMTsgLy8g
R2V0VGlja0NvdW50IHJldHVybnMgbWlsbGlzZWNvbmRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDEwICs2Niw3IEBAIHN0YXRpYyBpbnQgdmVydGljYWxTY3JvbGxMaW5lcygpCiB9
CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQgaFduZCwgY29u
c3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24pCi0gICAgOiBt
X3NoaWZ0S2V5KGZhbHNlKQotICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAgICwgbV9hbHRLZXko
ZmFsc2UpCi0gICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRm
b3JtRXZlbnQ6OldoZWVsLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGly
ZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogewogICAgIG1fZGVsdGFYID0gZGVsdGEu
d2lkdGgoKTsKQEAgLTg4LDEyICs4NSw5IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1X
aGVlbEV2ZW50KEgKIH0KIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQo
SFdORCBoV25kLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLCBib29sIGlzTW91c2VIV2hl
ZWwpCi0gICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKKyAg
ICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIHdQYXJhbSAmIE1LX1NISUZU
LCB3UGFyYW0gJiBNS19DT05UUk9MLCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01B
U0tfU0hPUlQsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKKyAg
ICAsIG1fcG9zaXRpb24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQogICAgICwgbV9n
bG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCi0gICAg
LCBtX3NoaWZ0S2V5KHdQYXJhbSAmIE1LX1NISUZUKQotICAgICwgbV9jdHJsS2V5KHdQYXJhbSAm
IE1LX0NPTlRST0wpCi0gICAgLCBtX2FsdEtleShHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hf
QklUX01BU0tfU0hPUlQpCi0gICAgLCBtX21ldGFLZXkobV9hbHRLZXkpIC8vIEZJWE1FOiBXZSds
bCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKICAgICAsIG1fZGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlKGZhbHNlKQogewogICAgIC8vIEhvdyBtYW55IHBpeGVscyBzaG91bGQgd2Ugc2Ny
b2xsIHBlciBsaW5lPyAgR2Vja28gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwCShyZXZpc2lvbiAx
MDMwNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsMTQgKzMzNywxNCBAQCBzdGF0aWMgaW50IHdpbmRvd3NL
ZXlDb2RlRm9yS2V5RXZlbnQodW5zCiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCh3eEtleUV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQuR2V0RXZlbnRU
eXBlKCkgPT0gd3hFVlRfS0VZX1VQKQotICAgICAgICBtX3R5cGUgPSBLZXlVcDsKKyAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgZWxzZSBpZiAoZXZlbnQuR2V0RXZl
bnRUeXBlKCkgPT0gd3hFVlRfS0VZX0RPV04pCi0gICAgICAgIG1fdHlwZSA9IEtleURvd247Cisg
ICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6OktleURvd247CiAgICAgZWxzZSBpZiAoZXZl
bnQuR2V0RXZlbnRUeXBlKCkgPT0gd3hFVlRfQ0hBUikKLSAgICAgICAgbV90eXBlID0gQ2hhcjsK
KyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6Q2hhcjsKICAgICBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGlmIChtX3R5cGUgIT0gQ2hhcikKKyAgICBpZiAo
bV90eXBlICE9IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgIG1fa2V5SWRlbnRpZmllciA9
IGtleUlkZW50aWZpZXJGb3JXeEtleUNvZGUoZXZlbnQuR2V0S2V5Q29kZSgpKTsKICAgICBlbHNl
IHsKICAgICAgICAgLy9FTlRFUiBpcyBhbiBlZGl0aW5nIGNvbW1hbmQgcHJvY2Vzc2VkIGFzIGEg
Y2hhciAob25seSBFbnRlciBhbmQgVGFiIGFyZSkKQEAgLTM3MSw5ICszNzEsOSBAQCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9vbCkKIHsKICAgICAv
LyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFy
LCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBBU1NF
UlQobV90eXBlID09IEtleURvd24pOworICAgIEFTU0VSVChtX3R5cGUgPT0gUGxhdGZvcm1FdmVu
dDo6S2V5RG93bik7CiAgICAgbV90eXBlID0gdHlwZTsKLSAgICBpZiAodHlwZSA9PSBSYXdLZXlE
b3duKSB7CisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAg
ICAgICBtX3RleHQgPSBTdHJpbmcoKTsKICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmlu
ZygpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3Vz
ZUV2ZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01v
dXNlRXZlbnRXeC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L01vdXNlRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDI2ICszMywyNSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1N
b3VzZUV2ZW50KGNvbnN0IHd4TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHd4UG9pbnQmIGdsb2Jh
bFBvaW50LCBpbnQgY2xpY2tDb3VudCkKLSAgICA6IG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRp
b24oKSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnQpCi0gICAgLCBtX3NoaWZ0
S2V5KGV2ZW50LlNoaWZ0RG93bigpKQotICAgICwgbV9jdHJsS2V5KGV2ZW50LkNtZERvd24oKSB8
fCBldmVudC5Db250cm9sRG93bigpKQotICAgICwgbV9hbHRLZXkoZXZlbnQuQWx0RG93bigpKQot
ICAgICwgbV9tZXRhS2V5KGV2ZW50Lk1ldGFEb3duKCkpIC8vIEZJWE1FOiBXZSdsbCBoYXZlIHRv
IHRlc3Qgb3RoZXIgYnJvd3NlcnMKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGVGcm9t
TW91c2VFdmVudChjb25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIHd4RXZlbnRUeXBl
IHR5cGUgPSBldmVudC5HZXRFdmVudFR5cGUoKTsKLSAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZl
bnRNb3ZlZDsKLSAgICAKLSAgICBpZiAodHlwZSA9PSB3eEVWVF9MRUZUX0RPV04gfHwgdHlwZSA9
PSB3eEVWVF9NSURETEVfRE9XTiB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RPV04pCi0gICAgICAg
IG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7Ci0gICAgCi0gICAgZWxzZSBpZiAodHlw
ZSA9PSB3eEVWVF9MRUZUX1VQIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX1VQIHx8IHR5cGUgPT0g
d3hFVlRfUklHSFRfVVAgfHwgCi0gICAgICAgICAgICAgICAgdHlwZSA9PSB3eEVWVF9MRUZUX0RD
TElDSyB8fCB0eXBlID09IHd4RVZUX01JRERMRV9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVWVF9SSUdI
VF9EQ0xJQ0spCi0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOwogCisg
ICAgaWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9ET1dOIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RP
V04gfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9ET1dOKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkOworICAgIGVsc2UgaWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9VUCB8
fCB0eXBlID09IHd4RVZUX01JRERMRV9VUCB8fCB0eXBlID09IHd4RVZUX1JJR0hUX1VQIHx8IHR5
cGUgPT0gd3hFVlRfTEVGVF9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVWVF9NSURETEVfRENMSUNLIHx8
IHR5cGUgPT0gd3hFVlRfUklHSFRfRENMSUNLKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6TW91c2VSZWxlYXNlZDsKICAgICBlbHNlIGlmICh0eXBlID09IHd4RVZUX01PVElPTikKLSAg
ICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOworCisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQ7Cit9CisKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0
IHd4TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHd4UG9pbnQmIGdsb2JhbFBvaW50LCBpbnQgY2xp
Y2tDb3VudCkKKyAgICA6IFBsYXRmb3JtRXZlbnQodHlwZUZyb21Nb3VzZUV2ZW50KGV2ZW50KSwg
ZXZlbnQuU2hpZnREb3duKCksIGV2ZW50LkNtZERvd24oKSB8fCBldmVudC5Db250cm9sRG93bigp
LCBldmVudC5BbHREb3duKCksIGV2ZW50Lk1ldGFEb3duKCkpCisgICAgOiBtX3Bvc2l0aW9uKGV2
ZW50LkdldFBvc2l0aW9uKCkpCisgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50KQor
ewogCiAgICAgaWYgKGV2ZW50LkxlZnRJc0Rvd24oKSB8fCBldmVudC5CdXR0b24od3hNT1VTRV9C
VE5fTEVGVCkpCiAgICAgICAgIG1fYnV0dG9uID0gTGVmdEJ1dHRvbjsKQEAgLTYwLDExICs1OSw4
IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGMKICAgICAgICAgbV9i
dXR0b24gPSBSaWdodEJ1dHRvbjsKICAgICBlbHNlIGlmIChldmVudC5NaWRkbGVJc0Rvd24oKSB8
fCBldmVudC5CdXR0b24od3hNT1VTRV9CVE5fTUlERExFKSkKICAgICAgICAgbV9idXR0b24gPSBN
aWRkbGVCdXR0b247Ci0gICAgZWxzZSBpZiAoIW1fZXZlbnRUeXBlID09IE1vdXNlRXZlbnRNb3Zl
ZCkKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KIAotICAgIGlmIChtX2V2ZW50VHlw
ZSA9PSBNb3VzZUV2ZW50TW92ZWQpCisgICAgaWYgKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkKQogICAgICAgICBtX2NsaWNrQ291bnQgPSAwOwogICAgIGVsc2UKICAgICAgICAg
bV9jbGlja0NvdW50ID0gY2xpY2tDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTMgKzMzLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0IHd4TW91c2VFdmVudCYgZXZlbnQs
IGNvbnN0IHd4UG9pbnQmIGdsb2JhbFBvaW50KQotICAgIDogbV9wb3NpdGlvbihldmVudC5HZXRQ
b3NpdGlvbigpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgZXZl
bnQuU2hpZnREb3duKCksIGV2ZW50LkNvbnRyb2xEb3duKCksIGV2ZW50LkFsdERvd24oKSwgZXZl
bnQuTWV0YURvd24oKSkKKyAgICAsIG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRpb24oKSkKICAg
ICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnQpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNj
cm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShldmVudC5TaGlmdERvd24o
KSkKLSAgICAsIG1fY3RybEtleShldmVudC5Db250cm9sRG93bigpKQotICAgICwgbV9hbHRLZXko
ZXZlbnQuQWx0RG93bigpKQotICAgICwgbV9tZXRhS2V5KGV2ZW50Lk1ldGFEb3duKCkpIC8vIEZJ
WE1FOiBXZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKICAgICAsIG1fZGVsdGFYKDAp
IC8vIHd4IGRvZXNuJ3Qgc3VwcG9ydCBob3Jpem9udGFsIG1vdXNlIHdoZWVsIHNjcm9sbGluZwog
ICAgICwgbV9kZWx0YVkoZXZlbnQuR2V0V2hlZWxSb3RhdGlvbigpIC8gZXZlbnQuR2V0V2hlZWxE
ZWx0YSgpKQogICAgICwgbV93aGVlbFRpY2tzWChtX2RlbHRhWCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysg
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjI1LDE5ICs2MjUsMTkgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleQogICAgIEV2ZW50UmVjb3JkIHJlY29yZDsKIAogICAgIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKLSAgICAgICAgLy8gVGhpcyBldmVudCBp
cyB0aGUgcmVzdWx0IG9mIGEgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duIHdoaWNoCisg
ICAgICAgIC8vIFRoaXMgZXZlbnQgaXMgdGhlIHJlc3VsdCBvZiBhIFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24gd2hpY2gKICAgICAgICAgLy8gd2FzIGRpc2FtYmlndWF0ZWQgaW50byBhIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bi4gU2luY2UKICAgICAgICAgLy8gd2UgZG9uJ3QgaGF2
ZSBhY2Nlc3MgdG8gdGhlIHRleHQgaGVyZSwgd2UgcmV0dXJuLCBhbmQgd2FpdCBmb3IgdGhlCiAg
ICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgZXZlbnQgYmFzZWQgb24gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpDaGFyLgogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7CiAgICAgICAgIC8vIFdoaWNoIHdvdWxk
IGJlIHRoaXMgb25lLiBUaGlzIGV2ZW50IHdhcyBkaXNhbWJpZ3VhdGVkIGZyb20gdGhlIHNhbWUK
LSAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duLCBidXQgdG8gYSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIsCisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQ6OktleURv
d24sIGJ1dCB0byBhIFBsYXRmb3JtRXZlbnQ6OkNoYXIsCiAgICAgICAgIC8vIHdoaWNoIHJldGFp
bnMgdGhlIHRleHQgZnJvbSB0aGUgb3JpZ2luYWwgZXZlbnQuIFNvLCB3ZSBjYW4gc2FmZWx5IHBh
c3MKICAgICAgICAgLy8gb24gdGhlIGV2ZW50IGFzIGEga2V5LWRvd24gZXZlbnQgdG8gdGhlIHBs
dWdpbi4KICAgICAgICAgcmVjb3JkLndoYXQgPSBrZXlEb3duOwogICAgIH0gZWxzZSBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5dXBFdmVudCkgewotICAgICAgICAvLyBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwIGV2ZW50cyBhbHdheXMgaGF2ZSB0aGUgdGV4dCwgc28g
bm90aGluZworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCBldmVudHMgYWx3YXlzIGhh
dmUgdGhlIHRleHQsIHNvIG5vdGhpbmcKICAgICAgICAgLy8gZmFuY3kgaGVyZS4KICAgICAgICAg
cmVjb3JkLndoYXQgPSBrZXlVcDsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybQogICAgIH0KIAogI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCBwZ2UoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUsIEludFBvaW50KHR4LCB0eSksIEludFBvaW50KHR4
LCB0eSksIDAsIHNjYWxlLCAwLmYsIDAsIDAsIDAsIDApOworICAgIFBsYXRmb3JtR2VzdHVyZUV2
ZW50IHBnZShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwLCBJbnRQb2ludCh0eCwgdHkp
LCBJbnRQb2ludCh0eCwgdHkpLCAwLCBzY2FsZSwgMC5mLCAwLCAwLCAwLCAwKTsKICAgICBkb2N1
bWVudC0+dmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50
KHBnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzY2FsZSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZl
bnQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQy
UGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6V2ViS2l0MlBsYXRmb3JtS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYWdFbmRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3ND
b21tYW5kc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGlu
Z0tleWJvYXJkRXZlbnQpOgorCiAyMDExLTEyLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVc2UgYml0IGZpZWxkIGZvciBib29s
IG1lbWJlcnMgb2YgV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAxMDMwNzQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMjAgKzM0LDI3IEBAIGNsYXNzIFdlYktpdDJQbGF0Zm9ybU1vdXNlRXZl
bnQgOiBwdWJsaWMKIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVu
dAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkV2
ZW50OjpNb3VzZURvd246Ci0gICAgICAgICAgICBtX2V2ZW50VHlwZSA9IFdlYkNvcmU6Ok1vdXNl
RXZlbnRQcmVzc2VkOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6TW91c2VQcmVzc2VkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZl
bnQ6Ok1vdXNlVXA6Ci0gICAgICAgICAgICBtX2V2ZW50VHlwZSA9IFdlYkNvcmU6Ok1vdXNlRXZl
bnRSZWxlYXNlZDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVu
dDo6TW91c2VNb3ZlOgotICAgICAgICAgICAgbV9ldmVudFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2
ZW50TW92ZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCisgICAgICAgIG1fc2hpZnRL
ZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5j
b250cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7CisgICAg
ICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQbGF0Zm9y
bU1vdXNlRXZlbnQKICAgICAgICAgc3dpdGNoICh3ZWJFdmVudC5idXR0b24oKSkgewogICAgICAg
ICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgogICAgICAgICAgICAgbV9idXR0b24gPSBX
ZWJDb3JlOjpOb0J1dHRvbjsKQEAgLTY5LDEwICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fY2xp
Y2tDb3VudCA9IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsKICAgICAgICAgbV90aW1lc3RhbXAgPSB3
ZWJFdmVudC50aW1lc3RhbXAoKTsKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0
S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAg
ICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2Vi
RXZlbnQubWV0YUtleSgpOwogCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CiAgICAgICAg
IGlmIChtX3NoaWZ0S2V5KQpAQCAtOTksNiArMTAyLDE0IEBAIGNsYXNzIFdlYktpdDJQbGF0Zm9y
bVdoZWVsRXZlbnQgOiBwdWJsaWMKIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZvcm1XaGVlbEV2
ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gUGxh
dGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKKyAgICAg
ICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7CisgICAgICAgIG1fY3RybEtleSA9
IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRL
ZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworCisgICAgICAg
IC8vIFBsYXRmb3JtV2hlZWxFdmVudAogICAgICAgICBtX3Bvc2l0aW9uID0gd2ViRXZlbnQucG9z
aXRpb24oKTsKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0
aW9uKCk7CiAgICAgICAgIG1fZGVsdGFYID0gd2ViRXZlbnQuZGVsdGEoKS53aWR0aCgpOwpAQCAt
MTA2LDEwICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2hlZWxUaWNrc1ggPSB3ZWJFdmVu
dC53aGVlbFRpY2tzKCkud2lkdGgoKTsKICAgICAgICAgbV93aGVlbFRpY2tzWSA9IHdlYkV2ZW50
LndoZWVsVGlja3MoKS5oZWlnaHQoKTsKICAgICAgICAgbV9ncmFudWxhcml0eSA9ICh3ZWJFdmVu
dC5ncmFudWxhcml0eSgpID09IFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQp
ID8gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlV2hlZWxFdmVudCA6IFdlYkNvcmU6OlNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50OwotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsK
LSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBtX2Fs
dEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5t
ZXRhS2V5KCk7CiAgICAgICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gd2ViRXZl
bnQuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
ICAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2U+KHdlYkV2ZW50LnBoYXNlKCkpOwpAQCAtMTI5LDIyICsxMzYsMzAgQEAgY2xhc3MgV2ViS2l0
MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCA6IHB1YgogcHVibGljOgogICAgIFdlYktpdDJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViRXZlbnQpCiAgICAgewor
ICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAgIHN3aXRjaCAod2ViRXZlbnQudHlwZSgp
KSB7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OktleURvd246Ci0gICAgICAgICAgICBtX3R5cGUg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAgICAgICAgICBtX3R5cGUgPSBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV2ViRXZlbnQ6OktleVVwOgotICAgICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRm
b3JtRXZlbnQ6OktleVVwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZl
bnQ6OlJhd0tleURvd246Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlJhd0tleURvd247CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2
ZW50OjpSYXdLZXlEb3duOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZl
bnQ6OkNoYXI6Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNo
YXI7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpDaGFyOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVu
dC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7
CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7CisgICAgICAgIG1fbWV0YUtl
eSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICAvLyBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQKICAgICAgICAgbV90ZXh0ID0gd2ViRXZlbnQudGV4dCgpOwogICAgICAgICBtX3VubW9kaWZp
ZWRUZXh0ID0gd2ViRXZlbnQudW5tb2RpZmllZFRleHQoKTsKICAgICAgICAgbV9rZXlJZGVudGlm
aWVyID0gd2ViRXZlbnQua2V5SWRlbnRpZmllcigpOwpAQCAtMTUyLDEwICsxNjcsNiBAQCBwdWJs
aWM6CiAgICAgICAgIG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSB3ZWJFdmVudC5uYXRpdmVWaXJ0
dWFsS2V5Q29kZSgpOwogICAgICAgICBtX2F1dG9SZXBlYXQgPSB3ZWJFdmVudC5pc0F1dG9SZXBl
YXQoKTsKICAgICAgICAgbV9pc0tleXBhZCA9IHdlYkV2ZW50LmlzS2V5cGFkKCk7Ci0gICAgICAg
IG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3
ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5
KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKICAgICAgICAgCiAj
aWYgUExBVEZPUk0oV0lOKQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgbV9pc1N5
c3RlbUtleSBhdmFpbGFibGUgKGFuZCBmYWxzZSkgb24gYWxsIHBsYXRmb3JtcwpAQCAtMTc1LDIw
ICsxODYsMjcgQEAgY2xhc3MgV2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50IDogcHVibAogcHVi
bGljOgogICAgIFdlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZl
bnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAogICAgICAgICBz
d2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkV2ZW50OjpHZXN0dXJl
U2Nyb2xsQmVnaW46Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgV2ViRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZTsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdl
YkNvcmU6OlBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNpbmdsZVRhcDoKLSAgICAgICAgICAg
IG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOworICAgICAgICAgICAgbV90
eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcDsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KIAorICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsK
KyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAgICAgICBtX2Fs
dEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5t
ZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnQKICAgICAgICAgbV9w
b3NpdGlvbiA9IHdlYkV2ZW50LnBvc2l0aW9uKCk7CiAgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24g
PSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2
ZW50LnRpbWVzdGFtcCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03
MDYsNyArNzA2LDcgQEAKIAkJQkNBMEVGOUYxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21t
YW5kUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQTBFRjlEMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmggKi87IH07
CiAJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjlFMTIz
MzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCAqLzsgfTsKIAkJQkNBMjg0
RDYxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI4NEQ0MTQ5MkYyQzcwMDFGOTA0MiAvKiBX
S0Nvbm5lY3Rpb24ubW0gKi87IH07Ci0JCUJDQTI4NEQ3MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQTI4NEQ1MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQkNB
Mjg0RDcxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMjg0RDUxNDkyRjJDNzAwMUY5MDQyIC8q
IFdLQ29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJQkNBNTZBMUMxMkY5MDI4RTAwQzU2NkM3IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBNTZBMUEx
MkY5MDI4RTAwQzU2NkM3IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5oICovOyB9OwogCQlCQ0E1NkEx
RDEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3JhcGhpY3NDb250ZXh0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2QTFCMTJGOTAyOEUwMEM1NjZD
NyAvKiBXZWJHcmFwaGljc0NvbnRleHQuY3BwICovOyB9OwogCQlCQ0E1NkE2NTEyRjlDOEY5MDBD
NTY2QzcgLyogV0tHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2QTYzMTJGOUM4RjkwMEM1NjZDNyAvKiBXS0dyYXBoaWNz
Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJF
ZGl0b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEw
MzA3NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbgogICAgICAgICAvLyBEdXJpbmcg
UmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwg
ZGVmZXIKICAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQu
IFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAKICAgICAgICAgLy8gdGhyb3VnaCB0aGUgRE9N
IGZpcnN0LgotICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlw
ZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgICAgIGlmIChleGVj
dXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGZh
bHNlKSkKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgzLDggKzExODMsOCBAQCBzdGF0aWMgYm9vbCBo
YW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vCiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxh
dGZvcm1Nb3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VFdmVudCk7CiAKLSAgICBzd2l0Y2ggKHBs
YXRmb3JtTW91c2VFdmVudC5ldmVudFR5cGUoKSkgewotICAgICAgICBjYXNlIFdlYkNvcmU6Ok1v
dXNlRXZlbnRQcmVzc2VkOgorICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUoKSkg
eworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDoKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKGlzQ29udGV4dENsaWNrKHBsYXRmb3JtTW91c2VFdmVudCkpCiAgICAg
ICAgICAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1l
bnUoKTsKQEAgLTExOTUsOSArMTE5NSw5IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQo
Y29uc3QgV2ViTW8KIAogICAgICAgICAgICAgcmV0dXJuIGhhbmRsZWQ7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UmVsZWFzZWQ6CisgICAgICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDoKICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCk7
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudE1vdmVkOgorICAgICAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ6CiAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5tb3VzZU1vdmVkKHBsYXRmb3JtTW91c2VFdmVudCwgb25seVVwZGF0ZVNjcm9s
bGJhcnMpOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNTMyLDcgKzE1MzIsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhCiAKICAgICBpZiAoaXNLZXlib2FyZEV2
ZW50VmFsaWQgJiYgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7CiAgICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50KHBsYXRmb3JtKGV2ZW50KSk7Ci0g
ICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1
YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGly
ZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIEtleWJvYXJkRXZlbnQ6OmNy
ZWF0ZShwbGF0Zm9ybUV2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkuZ2V0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgYm9vbCBX
ZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudAogCiAgICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0
KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGlu
Zm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5z
ZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAg
ICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBp
bW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVz
cyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBh
IFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KQEAgLTIwNTEsNyArMjA1MSw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW4KICAgICBpZiAoIXZpZXcpCiAgICAgICAg
IHJldHVybjsKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJl
LCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCi0gICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRp
b24sIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChhZGp1
c3RlZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
Y3VycmVudFRpbWUoKSk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsx
NTMsNyBAQCBib29sIFdlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50CiAgICAgICAg
ICAgICAgICAgYm9vbCBjb21tYW5kRXhlY3V0ZWRCeUVkaXRvciA9IGNvbW1hbmQuZXhlY3V0ZShl
dmVudCk7CiAgICAgICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IGNvbW1hbmRFeGVjdXRl
ZEJ5RWRpdG9yOwogICAgICAgICAgICAgICAgIGlmICghY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3Ip
IHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBwZXJmb3JtZWROb25FZGl0aW5nQmVoYXZpb3Ig
PSBldmVudC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3
S2V5RG93biAmJiBwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29tbWFuZHNb
aV0uY29tbWFuZE5hbWUpOworICAgICAgICAgICAgICAgICAgICBib29sIHBlcmZvcm1lZE5vbkVk
aXRpbmdCZWhhdmlvciA9IGV2ZW50LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93biAmJiBwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29t
bWFuZHNbaV0uY29tbWFuZE5hbWUpOwogICAgICAgICAgICAgICAgICAgICBldmVudFdhc0hhbmRs
ZWQgfD0gcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2aW9yOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7CkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudAogICAgICAgICB9CiAgICAgICAgIC8vIElmIHRoZXJlIGFy
ZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaXMg
dGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMuCiAgICAgICAgIC8vIEtleXBy
ZXNzIChDaGFyIGV2ZW50KSBoYW5kbGVyIGlzIHRoZSBsYXRlc3Qgb3Bwb3J0dW5pdHkgdG8gZXhl
Y3V0ZS4KLSAgICAgICAgaWYgKCFoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBsYXRmb3Jt
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpIHsKKyAgICAgICAg
aWYgKCFoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSB7CiAgICAgICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBl
eGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCks
IGV2ZW50KTsKICAgICAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCkuY2xlYXIoKTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3
NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6aW50ZXJwcmV0S2V5RXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgICogc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjprZXlib2FyZFNob3J0Y3V0
KToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWls
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZv
cm1XaGVlbEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUV2
ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktp
dDo6dG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQp
OgorICAgICAgICAqIHRlc3RzL0tleWJvYXJkVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oktl
eWJvYXJkVGVzdDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2Fy
ZFRlc3Q6OmludGVycHJldE9TTW9kaWZpZXJLZXlQcmVzcyk6CisgICAgICAgIChXZWJLaXQ6Oktl
eWJvYXJkVGVzdDo6aW50ZXJwcmV0Q3RybEtleVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6S2V5
Ym9hcmRUZXN0OjppbnRlcnByZXRUYWIpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6
OmludGVycHJldE5ld0xpbmUpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAq
IHRlc3RzL1BvcHVwTWVudVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1l
bnVUZXN0OjpzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlNl
bGVjdFBvcHVwTWVudVRlc3Q6OnNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1RfRik6CisKIDIwMTEtMTItMTUgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5j
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRW5hYmxlIENTU19GSUxURVJTIGluIENocm9taXVt
LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1w
bC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNyArNTQ0LDcgQEAgY29u
c3QgY2hhciogRWRpdG9yQ2xpZW50SW1wbDo6aW50ZXJwcmV0SwogICAgIGlmIChrZXlFdmVudC0+
bWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMgfD0gTWV0YUtleTsKIAotICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAg
IGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAg
ICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+a2V5Q29kZSgpOwogICAg
ICAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7
CiAgICAgfQpAQCAtNTY3LDcgKzU2Nyw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6aGFuZGxl
RWRpdGluZ0tleWIKICAgICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChl
dnQpOwogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKGNvbW1hbmROYW1lKTsKIAotICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09
IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3Qg
aGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93CiAgICAgICAg
IC8vIGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9y
IHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNv
cmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2
aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NiwxMyArNTY2LDEzIEBAIFdlYlN0
cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjprZXlib2EKICAgICAgICAgLy8gRm9sbG93IHRo
ZSBzYW1lIG9yZGVyIGFzIE1vemlsbGEgTVNBQSBpbXBsZW1lbnRhdGlvbjoKICAgICAgICAgLy8g
Q3RybCtBbHQrU2hpZnQrTWV0YStrZXkuIE1TRE4gc3RhdGVzIHRoYXQga2V5Ym9hcmQgc2hvcnRj
dXQgc3RyaW5ncwogICAgICAgICAvLyBzaG91bGQgbm90IGJlIGxvY2FsaXplZCBhbmQgZGVmaW5l
cyB0aGUgc2VwYXJhdG9yIGFzICIrIi4KLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Q3RybEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3Jt
RXZlbnQ6OkN0cmxLZXkpCiAgICAgICAgICAgICBtb2RpZmllclN0cmluZyArPSAiQ3RybCsiOwot
ICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXkpCisg
ICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXkpCiAgICAgICAgICAg
ICBtb2RpZmllclN0cmluZyArPSAiQWx0KyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OlNoaWZ0S2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxh
dGZvcm1FdmVudDo6U2hpZnRLZXkpCiAgICAgICAgICAgICBtb2RpZmllclN0cmluZyArPSAiU2hp
ZnQrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6TWV0
YUtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXkpCiAg
ICAgICAgICAgICBtb2RpZmllclN0cmluZyArPSAiV2luKyI7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDE1ICs3NSwx
NSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlCiAgICAgc3dpdGNo
IChlLnR5cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToKICAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Ok1vdXNlTGVhdmU6ICAvLyBzeW50aGVzaXplIGEgbW92ZSBldmVudAot
ICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgbV90eXBlID0g
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50
UHJlc3NlZDsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKLSAgICAg
ICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgICAgIG1fdHlwZSA9IFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVs
dDoKQEAgLTEwMyw2ICsxMDMsOCBAQCBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9y
bVdoZWVsCiAgICAgbV93aGVlbFRpY2tzWSA9IGUud2hlZWxUaWNrc1k7CiAgICAgbV9ncmFudWxh
cml0eSA9IGUuc2Nyb2xsQnlQYWdlID8KICAgICAgICAgU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCA6
IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OworICAgIAorICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6OldoZWVsOwogICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50
OjpTaGlmdEtleSk7CiAgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVu
dDo6Q29udHJvbEtleSk7CiAgICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2
ZW50OjpBbHRLZXkpOwpAQCAtMTIyLDE2ICsxMjQsMTYgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRC
dWlsZGVyOjpQbGF0Zm9ybUdlcwogewogICAgIHN3aXRjaCAoZS50eXBlKSB7CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46Ci0gICAgICAgIG1fdHlwZSA9IFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgotICAgICAgICBtX3R5cGUgPSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZTsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgotICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlVGFwOgotICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6VGFwVHlwZTsKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRh
cDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xNTAsMjEgKzE1MiwyMSBAQCBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6
OlBsYXRmb3JtR2VzCiAKIC8vIE1ha2VQbGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGlubGluZSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdl
YklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1FdmVudDo6VHlw
ZSB0b1BsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQog
ewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6S2V5VXA6Ci0g
ICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwOworICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6S2V5VXA7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpLZXlEb3du
OgotICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAgICAg
ICByZXR1cm4gUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6
OlJhd0tleURvd246Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tl
eURvd247CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duOwogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q2hhcjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OkNoYXI7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHJldHVybiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
OktleURvd247CiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEwMzA3NCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIwNSw3ICsyMjA1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVu
ZGVkQXQoCiB7CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBtZShjbGllbnRQb2ludCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNjcmVlblBvaW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlLCAwKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+ZHJhZ1NvdXJjZUVuZGVkQXQocG1lLAogICAgICAgICBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0
aW9uPihvcGVyYXRpb24pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW5u
ZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwCShyZXZpc2lvbiAx
MDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29n
bml6ZXJUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczLDE0ICsxNzMsMTQgQEAgdm9pZCBT
aW11bGF0ZUFuZFRlc3RGaXJzdENsaWNrKEluc3BlY3RhYgogICAgIEJ1aWxkYWJsZVBsYXRmb3Jt
VG91Y2hFdmVudCBwcmVzc0V2ZW50KFdlYkNvcmU6OlRvdWNoU3RhcnQsIHByZXNzLCAxMDAwLik7
CiAgICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0
dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxz
ZSkpOwogICAgIEFTU0VSVF9FUSgodW5zaWduZWQgaW50KTEsIGdlc3R1cmVTdGFydC0+c2l6ZSgp
KTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBlLCAoKmdl
c3R1cmVTdGFydClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOwogICAgIEFTU0VSVF9FUShH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRl
KCkpOwogCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHJlbGVhc2UoMTAsIDE2LCBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpOwogICAgIEJ1aWxkYWJsZVBsYXRmb3Jt
VG91Y2hFdmVudCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6VG91Y2hFbmQsIHJlbGVhc2UsIDEwMDAu
ICsgMC43KTsKICAgICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50
PiA+IGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZl
bnQsIGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpMSwgZ2VzdHVyZUVuZC0+
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGUsICgq
Z2VzdHVyZUVuZClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVRhcCwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOwogfQogCiB0eXBlZGVmIE93blB0cjxW
ZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gR2VzdHVyZXM7CkBAIC0zMjYs
NyArMzI2LDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgRElTQUJMRURfZAogICAg
IEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBwcmVzc0V2ZW50KFdlYkNvcmU6OlRvdWNoU3Rh
cnQsIHByZXNzLCAxMDAwICsgLjUpOwogICAgIEdlc3R1cmVzIGdlc3R1cmVTdGFydChnbS5wcm9j
ZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHByZXNzRXZlbnQsIGZhbHNlKSk7CiAgICAgQVNTRVJU
X0VRKDF1LCBnZXN0dXJlU3RhcnQtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7CisgICAg
QVNTRVJUX0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duLCAoKmdlc3R1cmVTdGFydClb
MF0udHlwZSgpKTsKICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6UGVu
ZGluZ1N5bnRoZXRpY0NsaWNrLCBnbS5zdGF0ZSgpKTsKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3Jt
VG91Y2hQb2ludCBtb3ZlKDEwLCAxNiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKTsK
QEAgLTMzOSw4ICszMzksOCBAQCBURVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCBESVNBQkxF
RF9kCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3Jl
OjpUb3VjaEVuZCwgcmVsZWFzZSwgMTAwMCArIC41ICsgLjAyKTsKICAgICBHZXN0dXJlcyBnZXN0
dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxz
ZSkpOwogICAgIEFTU0VSVF9FUSgydSwgZ2VzdHVyZUVuZC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGUsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgp
KTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUsICgq
Z2VzdHVyZUVuZClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVRhcCwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CiAgICAg
QVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUo
KSk7CiB9CiAKQEAgLTM1NCwyMiArMzU0LDIyIEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRl
c3QsIGRvdWJsZVRhcEcKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NFdmVu
dChXZWJDb3JlOjpUb3VjaFN0YXJ0LCBwcmVzcywgMTAwMC4gKyAwLjcgKyAwLjAxKTsKICAgICBH
ZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVz
c0V2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgxdSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkp
OwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsICgqZ2Vz
dHVyZVN0YXJ0KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlVGFwRG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUo
KSk7CiAKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgxMCwgNTAsIFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2
ZW50IG1vdmVFdmVudChXZWJDb3JlOjpUb3VjaE1vdmUsIG1vdmUsIDEwMDAuICsgMC43ICsgMC4w
Mik7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZU1vdmUoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0
dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKDJ1LCBnZXN0dXJlTW92ZS0+
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2lu
VHlwZSwgKCpnZXN0dXJlTW92ZSlbMF0udHlwZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGUsICgqZ2VzdHVyZU1vdmUpWzFdLnR5cGUoKSk7
CisgICAgQVNTRVJUX0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbiwgKCpnZXN0
dXJlTW92ZSlbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZSwgKCpnZXN0dXJlTW92ZSlbMV0udHlwZSgpKTsKICAgICBBU1NFUlRfRVEo
R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6U2Nyb2xsLCBnbS5zdGF0ZSgpKTsKIAogICAgIEJ1
aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaFJlbGVhc2VkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVs
ZWFzZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlLCAxMDAwLiArIDAuNyArIDAuMDMp
OwogICAgIEdlc3R1cmVzIGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJl
cyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKDF1LCBnZXN0dXJlRW5kLT5z
aXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlw
ZSwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlU2Nyb2xsRW5kLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CiAgICAgQVNTRVJU
X0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7CiB9
CiAKQEAgLTM4NSwxNCArMzg1LDE0IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGRv
dWJsZVRhcEcKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NFdmVudChXZWJD
b3JlOjpUb3VjaFN0YXJ0LCBwcmVzcywgMTAwMC4gKyAwLjcgKyAwLjAxKTsKICAgICBHZXN0dXJl
cyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50
LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgxdSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwotICAg
IEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsICgqZ2VzdHVyZVN0
YXJ0KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFw
RG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUoKSk7CiAK
ICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZShhd2F5RnJvbUZpcnN0Q2xp
Y2sueCgpLCBhd2F5RnJvbUZpcnN0Q2xpY2sueSgpLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UmVsZWFzZWQpOwogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCByZWxlYXNlRXZlbnQo
V2ViQ29yZTo6VG91Y2hFbmQsIHJlbGVhc2UsIDEwMDAuICsgMC43ICsgMC4wMjUpOwogICAgIEdl
c3R1cmVzIGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNl
RXZlbnQsIGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKDF1LCBnZXN0dXJlRW5kLT5zaXplKCkpOwot
ICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZSwgKCpnZXN0dXJlRW5k
KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwLCAo
Kmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7CiB9CiAKQEAgLTQwNSwyMSArNDA1LDIx
IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIHRhcERvd25XaXQKICAgICBCdWlsZGFi
bGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NFdmVudChXZWJDb3JlOjpUb3VjaFN0YXJ0LCBwcmVz
cyk7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2Vz
dHVyZXMocHJlc3NFdmVudCwgZmFsc2UpKTsKICAgICBBU1NFUlRfRVEoMXUsIGdlc3R1cmVTdGFy
dC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25U
eXBlLCAoKmdlc3R1cmVTdGFydClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOwogICAgIEFT
U0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ss
IGdtLnN0YXRlKCkpOwogCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAs
IDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQpOwogICAgIEJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29yZTo6VG91Y2hNb3ZlLCBtb3ZlKTsKICAgICBH
ZXN0dXJlcyBnZXN0dXJlTW92ZShnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKG1vdmVF
dmVudCwgZmFsc2UpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdlc3R1cmVN
b3ZlLT5zaXplKCk7IGkrKykKLSAgICAgICAgQVNTRVJUX05FKFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpUYXBUeXBlLCAoKmdlc3R1cmVNb3ZlKVtpXS50eXBlKCkpOworICAgICAgICBBU1NFUlRfTkUo
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCwgKCpnZXN0dXJlTW92ZSlbaV0udHlwZSgpKTsKICAg
ICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6U2Nyb2xsLCBnbS5zdGF0ZSgp
KTsKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCByZWxlYXNlKDEwLCA1MCwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRv
dWNoRXZlbnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlKTsKICAgICBH
ZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFz
ZUV2ZW50LCBmYWxzZSkpOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVy
ZUVuZC0+c2l6ZSgpOyBpKyspCi0gICAgICAgIEFTU0VSVF9ORShQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6VGFwVHlwZSwgKCpnZXN0dXJlRW5kKVtpXS50eXBlKCkpOworICAgICAgICBBU1NFUlRfTkUo
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCwgKCpnZXN0dXJlRW5kKVtpXS50eXBlKCkpOwogICAg
IEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRl
KCkpOwogfQogCkBAIC00MzIsNyArNDMyLDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVz
dCwgdGFwRG93bldpdAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBwcmVzc0V2ZW50
KFdlYkNvcmU6OlRvdWNoU3RhcnQsIHByZXNzLCAxMDAwLik7CiAgICAgR2VzdHVyZXMgZ2VzdHVy
ZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocHJlc3NFdmVudCwgZmFsc2Up
KTsKICAgICBBU1NFUlRfRVEoMXUsIGdlc3R1cmVTdGFydC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBlLCAoKmdlc3R1cmVTdGFydClbMF0u
dHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24sICgq
Z2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOwogICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOwogCiAgICAgQnVp
bGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAsIDE2LCBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQpOwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXpl
clRlc3QsIHRhcERvd25XaXQKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVsZWFz
ZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlLCAxMDAwLiArIDAuMDExKTsKICAgICBH
ZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFz
ZUV2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgxdSwgZ2VzdHVyZUVuZC0+c2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGUsICgqZ2VzdHVyZUVu
ZClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcCwg
KCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOwogICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwogfQogCkBAIC00NjEsNyArNDYxLDcg
QEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgbm9Eb3VibGVUYQogICAgIEJ1aWxkYWJs
ZVBsYXRmb3JtVG91Y2hFdmVudCBwcmVzc0V2ZW50KFdlYkNvcmU6OlRvdWNoU3RhcnQsIHByZXNz
LCAxMDAwICsgLjggKyAxMCArIC4xKTsKICAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJv
Y2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VS
VF9FUSgxdSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6VGFwRG93blR5cGUsICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOworICAg
IEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93biwgKCpnZXN0dXJlU3RhcnQp
WzBdLnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBl
bmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUoKSk7CiAKICAgICBCdWlsZGFibGVQbGF0Zm9y
bVRvdWNoUG9pbnQgbW92ZSgxMCwgMTYsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7
CkBAIC00NzQsNyArNDc0LDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgbm9Eb3Vi
bGVUYQogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCByZWxlYXNlRXZlbnQoV2ViQ29y
ZTo6VG91Y2hFbmQsIHJlbGVhc2UsIDEwMDAgKyAuOCArIDEwICsgLjEgKyAuMDIpOwogICAgIEdl
c3R1cmVzIGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNl
RXZlbnQsIGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKDF1LCBnZXN0dXJlRW5kLT5zaXplKCkpOwot
ICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZSwgKCpnZXN0dXJlRW5k
KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwLCAo
Kmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7CiB9CiAKQEAgLTQ5OCwxMCArNDk4LDEw
IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGdlc3R1cmVTY3IKICAgICBib29sIHNj
cm9sbFN0YXJ0ZWQgPSBmYWxzZSwgc2Nyb2xsVXBkYXRlZCA9IGZhbHNlOwogICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZ2VzdHVyZVN0YXJ0LT5zaXplKCk7IGkrKykgewogICAgICAg
ICBzd2l0Y2ggKCgqZ2VzdHVyZVN0YXJ0KVtpXS50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgorICAgICAgICBjYXNlIFBsYXRmb3Jt
RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKICAgICAgICAgICAgIHNjcm9sbFN0YXJ0ZWQgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbFVwZGF0ZVR5cGU6CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZToKICAgICAgICAgICAgIHNjcm9sbFVwZGF0ZWQgPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC01MTksNyArNTE5LDcgQEAgVEVTVF9G
KEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZ2VzdHVyZVNjcgogICAgIEdlc3R1cmVzIGdlc3R1cmVF
bmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQsIGZhbHNlKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnZXN0dXJlRW5kLT5zaXplKCk7IGkr
KykgewogICAgICAgICBzd2l0Y2ggKCgqZ2VzdHVyZUVuZClbaV0udHlwZSgpKSB7Ci0gICAgICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKICAgICAgICAgICAgIHNjcm9sbEVuZCA9
IHRydWU7CiAgICAgICAgICAgICBBU1NFUlRfRVEoKCpnZXN0dXJlRW5kKVtpXS5kZWx0YVgoKSwg
MCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoKCpnZXN0dXJlRW5kKVtpXS5kZWx0YVkoKSwgMCk7
CkBAIC01NDEsNyArNTQxLDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgZmxpY2tH
ZXN0dQogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBwcmVzc0V2ZW50KFdlYkNvcmU6
OlRvdWNoU3RhcnQsIHByZXNzLCAxMDAwLik7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdt
LnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocHJlc3NFdmVudCwgZmFsc2UpKTsKICAgICBB
U1NFUlRfRVEoKHVuc2lnbmVkIGludCkxLCBnZXN0dXJlU3RhcnQtPnNpemUoKSk7Ci0gICAgQVNT
RVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJlU3RhcnQp
WzBdLnR5cGUoKSk7CisgICAgQVNTRVJUX0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3du
LCAoKmdlc3R1cmVTdGFydClbMF0udHlwZSgpKTsKICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bTo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBnbS5zdGF0ZSgpKTsKIAogICAg
IEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBtb3ZlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkKTsKQEAgLTU1MCwxMCArNTUwLDEwIEBAIFRFU1RfRihHZXN0dXJlUmVj
b2duaXplclRlc3QsIGZsaWNrR2VzdHUKICAgICBib29sIHNjcm9sbFN0YXJ0ZWQgPSBmYWxzZSwg
c2Nyb2xsVXBkYXRlZCA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
Z2VzdHVyZU1vdmUtPnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAoKCpnZXN0dXJlTW92
ZSlbaV0udHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEJlZ2luVHlwZToKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVn
aW46CiAgICAgICAgICAgICBzY3JvbGxTdGFydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOgor
ICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6CiAgICAgICAg
ICAgICBzY3JvbGxVcGRhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgpAQCAtNTY5LDcgKzU2OSw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3Qs
IGZsaWNrR2VzdHUKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVsZWFzZUV2ZW50
KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlLCAxMDAwLiArIDAuMDYpOwogICAgIEdlc3R1cmVz
IGdlc3R1cmVFbmQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhyZWxlYXNlRXZlbnQs
IGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpIDEsIGdlc3R1cmVFbmQtPnNp
emUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBl
LCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJUX0VRKFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxFbmQsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKICAgICBBU1NFUlRf
RVEoKCpnZXN0dXJlRW5kKVswXS5kZWx0YVgoKSwgMCk7CiAgICAgQVNTRVJUX0VRKCgqZ2VzdHVy
ZUVuZClbMF0uZGVsdGFZKCksIDE3NTAuKTsKICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKQEAgLTczOSw3ICs3MzksNyBAQCBU
RVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCBzYW1wbGVGbGljCiAgICAgICAgIC8vIEZpcnN0
IGV2ZW50IChUb3VjaFN0YXJ0KSBzaG91bGQgcHJvZHVjZSBhIFRvdWNoRG93biBnZXN0dXJlCiAg
ICAgICAgIEdlc3R1cmVzIGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1
cmVzKHNhbXBsZUZsaWNrU2VxdWVuY2VbaV0ubV9kYXRhWzBdLT5tX2V2ZW50LCBmYWxzZSkpOwog
ICAgICAgICBBU1NFUlRfRVEoKHVuc2lnbmVkIGludCkxLCBnZXN0dXJlU3RhcnQtPnNpemUoKSkg
PDwgZmFpbHVyZU1lc3NhZ2U7Ci0gICAgICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6VGFwRG93blR5cGUsICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpIDw8IGZhaWx1cmVNZXNz
YWdlOworICAgICAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24sICgq
Z2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpIDw8IGZhaWx1cmVNZXNzYWdlOwogICAgICAgICBBU1NF
UlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBn
bS5zdGF0ZSgpKSA8PCBmYWlsdXJlTWVzc2FnZTsKIAogICAgICAgICAvLyBUaGVuIHdlIGhhdmUg
YSBidW5jaCBvZiBUb3VjaE1vdmUgZXZlbnRzCkBAIC03NDksNyArNzQ5LDcgQEAgVEVTVF9GKEdl
c3R1cmVSZWNvZ25pemVyVGVzdCwgc2FtcGxlRmxpYwogICAgICAgICAvLyBMYXN0IGV2ZW50IChU
b3VjaEVuZCkgc2hvdWxkIGdlbmVyYXRlIGEgRmxpY2sgZ2VzdHVyZQogICAgICAgICBHZXN0dXJl
cyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoc2FtcGxlRmxpY2tT
ZXF1ZW5jZVtpXS5tX2RhdGFbc2FtcGxlRmxpY2tTZXF1ZW5jZVtpXS5tX24gLSAxXS0+bV9ldmVu
dCwgZmFsc2UpKTsKICAgICAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpIDEsIGdlc3R1cmVF
bmQtPnNpemUoKSkgPDwgZmFpbHVyZU1lc3NhZ2U7Ci0gICAgICAgIEFTU0VSVF9FUShQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpIDw8
IGZhaWx1cmVNZXNzYWdlOworICAgICAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbEVuZCwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpIDw8IGZhaWx1cmVNZXNzYWdlOwog
ICAgICAgICBkb3VibGUgeFZlbG9jaXR5ID0gKCpnZXN0dXJlRW5kKVswXS5kZWx0YVgoKTsKICAg
ICAgICAgZG91YmxlIHlWZWxvY2l0eSA9ICgqZ2VzdHVyZUVuZClbMF0uZGVsdGFZKCk7CiAgICAg
ICAgIGRvdWJsZSB2ZWxvY2l0eSA9IHNxcnQoeFZlbG9jaXR5ICogeFZlbG9jaXR5ICsgeVZlbG9j
aXR5ICogeVZlbG9jaXR5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvS2V5
Ym9hcmRUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0tleWJvYXJkVGVzdC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvS2V5Ym9hcmRUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgLy8gRS5nLiwgc2VuZGluZyBpbiB0aGUgZW50ZXIga2V5IGdpdmVz
IGJhY2sgIkluc2VydE5ld2xpbmUiLgogICAgIGNvbnN0IGNoYXIqIGludGVycHJldEtleUV2ZW50
KAogICAgICAgICBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3ZWJLZXlib2FyZEV2ZW50LAotICAg
ICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUga2V5VHlwZSkKKyAgICAgICAgUGxhdGZv
cm1FdmVudDo6VHlwZSBrZXlUeXBlKQogICAgIHsKICAgICAgICAgRWRpdG9yQ2xpZW50SW1wbCBl
ZGl0b3JJbXBsKDApOwogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyIGV2dCh3
ZWJLZXlib2FyZEV2ZW50KTsKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBXZWJJ
bnB1dEV2ZW50OjpNb2RpZmllcnMgb3NNb2RpZmllciA9IFdlYklucHV0RXZlbnQ6OkNvbnRyb2xL
ZXk7CiAjZW5kaWYKICAgICAgICAgc2V0dXBLZXlEb3duRXZlbnQoJmtleWJvYXJkRXZlbnQsIGtl
eUNvZGUsIG9zTW9kaWZpZXIpOwotICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5
Ym9hcmRFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAg
cmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtRXZlbnQ6OlJh
d0tleURvd24pOwogICAgIH0KIAogICAgIC8vIExpa2UgaW50ZXJwcmV0S2V5RXZlbnQsIGJ1dCB3
aXRoIHByZXNzaW5nIGRvd24gY3RybCt8a2V5Q29kZXwuCkBAIC05Myw3ICs5Myw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIFdlYktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKICAgICAg
ICAgc2V0dXBLZXlEb3duRXZlbnQoJmtleWJvYXJkRXZlbnQsIGtleUNvZGUsIFdlYklucHV0RXZl
bnQ6OkNvbnRyb2xLZXkpOwotICAgICAgICByZXR1cm4gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9h
cmRFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgcmV0
dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtRXZlbnQ6OlJhd0tl
eURvd24pOwogICAgIH0KIAogICAgIC8vIExpa2UgaW50ZXJwcmV0S2V5RXZlbnQsIGJ1dCB3aXRo
IHR5cGluZyBhIHRhYi4KQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQ7CiAgICAgICAgIHNldHVwS2V5RG93bkV2
ZW50KCZrZXlib2FyZEV2ZW50LCAnXHQnLCBtb2RpZmllcnMpOwotICAgICAgICByZXR1cm4gaW50
ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFy
KTsKKyAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRm
b3JtRXZlbnQ6OkNoYXIpOwogICAgIH0KIAogICAgIC8vIExpa2UgaW50ZXJwcmV0S2V5RXZlbnQs
IGJ1dCB3aXRoIHR5cGluZyBhIG5ld2xpbmUuCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgV2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50OwogICAgICAgICBz
ZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwgJ1xyJywgbW9kaWZpZXJzKTsKLSAgICAg
ICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6Q2hhcik7CisgICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2Fy
ZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpDaGFyKTsKICAgICB9CiAKICAgICAvLyBBIG5hbWUgZm9y
ICJubyBtb2RpZmllcnMgc2V0Ii4KQEAgLTE2OSw3ICsxNjksNyBAQCBURVNUX0YoS2V5Ym9hcmRU
ZXN0LCBUZXN0RXNjYXBlKQogICAgIHNldHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50LCBX
ZWJDb3JlOjpWS0VZX0VTQ0FQRSwgbm9Nb2RpZmllcnMpOwogCiAgICAgY29uc3QgY2hhciogcmVz
dWx0ID0gaW50ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURv
d24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jt
RXZlbnQ6OlJhd0tleURvd24pOwogICAgIEVYUEVDVF9TVFJFUSgiQ2FuY2VsIiwgcmVzdWx0KTsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRl
c3QuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1BvcHVwTWVudVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsMTMgKzIzNSwxMyBAQCBw
cm90ZWN0ZWQ6CiAgICAgLy8gU2ltdWxhdGVzIGEgbW91c2UgZXZlbnQgb24gdGhlIHNlbGVjdCBw
b3B1cC4KICAgICB2b2lkIHNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50KGNvbnN0IEludFBvaW50
JiBwb2ludCkKICAgICB7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBv
aW50LCBwb2ludCwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsCisgICAgICAgIFBsYXRm
b3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvaW50LCBwb2ludCwgTGVmdEJ1dHRvbiwgUGxhdGZv
cm1FdmVudDo6TW91c2VQcmVzc2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CiAgICAgICAgIG1fd2ViVmll
dy0+c2VsZWN0UG9wdXAoKS0+aGFuZGxlTW91c2VEb3duRXZlbnQobW91c2VFdmVudCk7CiAgICAg
fQogICAgIHZvaWQgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50KGNvbnN0IEludFBvaW50JiBwb2lu
dCkKICAgICB7Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvaW50LCBw
b2ludCwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJlbGVhc2VkLAorICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUmVsZWFzZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsKICAgICAgICAgbV93ZWJWaWV3LT5z
ZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKICAgICB9
CkBAIC0zNzMsNyArMzczLDcgQEAgVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIE1vdXNlT3Zl
ckl0ZQogICAgIC8vIFkgb2YgMTggdG8gYmUgb24gdGhlIGl0ZW0gYXQgaW5kZXggMSAoMTIgZm9u
dCBwbHVzIGJvcmRlciBhbmQgbW9yZSB0byBiZSBzYWZlKS4KICAgICBJbnRQb2ludCByb3cxUG9p
bnQoMiwgMTgpOwogICAgIC8vIFNpbXVsYXRlIHRoZSBtb3VzZSBtb3Zpbmcgb3ZlciB0aGUgZmly
c3QgaXRlbS4KLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChyb3cxUG9pbnQsIHJv
dzFQb2ludCwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwKKyAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgbW91c2VFdmVudChyb3cxUG9pbnQsIHJvdzFQb2ludCwgTm9CdXR0b24sIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOwogICAgIG1fd2ViVmlldy0+c2VsZWN0UG9wdXAo
KS0+aGFuZGxlTW91c2VNb3ZlRXZlbnQobW91c2VFdmVudCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTE1ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTEtMTItMTUgIFJhcGhh
ZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0g
Q2xlYW4gdXAgYW5kIHJlZmFjdG9yIHRoZSBtZW1vcnkgY2FjaGUgZnVuY3Rpb25zIGluIGV3a19z
ZXR0aW5ncy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAzLDcgKzQwMyw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5
Ym8KIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUo
KSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdl
YktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRl
IGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRv
ciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJD
b3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFu
Z2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAg
Ly8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTE1ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50
cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19wb3B1cF9tZW51
X2hhbmRsZXIpOgorCiAyMDExLTEyLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRhdGUgTkVXUyBhbmQgY29uZmlndXJlLmFj
IGZvciAxLjcuMyByZWxlYXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLCiAgICAgICAgIC8vIER1cmluZyBSYXdLZXlEb3duIGV2ZW50cyBpZiBhbiBl
ZGl0b3IgY29tbWFuZCB3aWxsIGluc2VydCB0ZXh0LCBkZWZlcgogICAgICAgICAvLyB0aGUgaW5z
ZXJ0aW9uIHVudGlsIHRoZSBrZXlwcmVzcyBldmVudC4gV2Ugd2FudCBrZXlkb3duIHRvIGJ1YmJs
ZSB1cAogICAgICAgICAvLyB0aHJvdWdoIHRoZSBET00gZmlyc3QuCi0gICAgICAgIGlmIChwbGF0
Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7
CisgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bikgewogICAgICAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMo
ZnJhbWUsIGZhbHNlKSkKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKIApJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAko
cmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjcsNyArNDI3LDcgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19wb3B1cF9tZQogICAgIGxvY2F0aW9uLnNocnVua1RvKEludFBvaW50
KHZpZXctPndpZHRoKCkgLSBnQ29udGV4dE1lbnVNYXJnaW4sIHZpZXctPmhlaWdodCgpIC0gZ0Nv
bnRleHRNZW51TWFyZ2luKSk7CiAKICAgICBJbnRQb2ludCBnbG9iYWxQb2ludChjb252ZXJ0V2lk
Z2V0UG9pbnRUb1NjcmVlblBvaW50KHdpZGdldCwgbG9jYXRpb24pKTsKLSAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgZXZlbnQobG9jYXRpb24sIGdsb2JhbFBvaW50LCBSaWdodEJ1dHRvbiwgTW91c2VF
dmVudFByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBndGtfZ2V0X2N1cnJl
bnRfZXZlbnRfdGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQobG9jYXRpb24s
IGdsb2JhbFBvaW50LCBSaWdodEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUo
KSk7CiAgICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVu
dChXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSwgZXZlbnQpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMi0xNSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VFbmRlZEF0Om9w
ZXJhdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
Y3VycmVudEtleWJvYXJkRXZlbnQpOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW50ZXJwcmV0
S2V5RXZlbnQ6c2F2aW5nQ29tbWFuZHM6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IFBERlZpZXdXaWxsQ2xpY2tPbkxpbms6d2l0aFVS
TDpdKToKKwogMjAxMS0xMi0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBNYWMgYnVpbGQgZml4IGFmdGVyIHIxMDI4NzQuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxMSw3ICs4MTEsNyBA
QCAtICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kCiAgICAgICAgIHJldHVy
bjsKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQg
dGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGV2ZW50KEludFBvaW50KHdpbmRvd0xvYyksIGdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXct
PnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSksCi0gICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZl
bnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwor
ICAgICAgICBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7CiAgICAgX3ByaXZhdGUtPmNvcmVG
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJh
dGlvbilvcGVyYXRpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3MzksNyArMzczOSw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnQKICAgICBzd2l0Y2ggKFtldmVu
dCB0eXBlXSkgewogICAgIGNhc2UgTlNLZXlEb3duOiB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudCBwbGF0Zm9ybUV2ZW50KGV2ZW50KTsKLSAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsK
KyAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1F
dmVudDo6UmF3S2V5RG93bik7CiAgICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUo
cGxhdGZvcm1FdmVudCwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKICAg
ICB9CiAgICAgY2FzZSBOU0tleVVwOgpAQCAtNTM4MSw3ICs1MzgxLDcgQEAgLSAoQk9PTClfaW50
ZXJwcmV0S2V5RXZlbnQ6KEtleWJvYXJkRXZlbgogICAgICAgICB9CiAgICAgICAgIC8vIElmIHRo
ZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBrZXlkb3duIGhhbmRs
ZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMuCiAgICAgICAgIC8v
IEtleXByZXNzIChDaGFyIGV2ZW50KSBoYW5kbGVyIGlzIHRoZSBsYXRlc3Qgb3Bwb3J0dW5pdHkg
dG8gZXhlY3V0ZS4KLSAgICAgICAgaWYgKCFoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBs
YXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpCisgICAg
ICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikKICAgICAgICAgICAgIFtzZWxmIF9leGVjdXRlU2F2
ZWRLZXlwcmVzc0NvbW1hbmRzXTsKICAgICB9CiAgICAgX3ByaXZhdGUtPmludGVycHJldEtleUV2
ZW50c1BhcmFtZXRlcnMgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
REZWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERG
Vmlldy5tbQkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQREZWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NjAsNyArOTYwLDcgQEAgLSAodm9pZClQ
REZWaWV3V2lsbENsaWNrT25MaW5rOihQREZWaWV3IAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgTlNLZXlEb3duOiB7CiAgICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
cGUobnNFdmVudCk7Ci0gICAgICAgICAgICBwZS5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgICAgIHBlLmRpc2FtYmln
dWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAgICAgICAg
IGV2ZW50ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQs
IHRydWUsIHRydWUsIDAsCiAgICAgICAgICAgICAgICAgcGUua2V5SWRlbnRpZmllcigpLCBwZS53
aW5kb3dzVmlydHVhbEtleUNvZGUoKSwKICAgICAgICAgICAgICAgICBwZS5jdHJsS2V5KCksIHBl
LmFsdEtleSgpLCBwZS5zaGlmdEtleSgpLCBwZS5tZXRhS2V5KCksIGZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTE1ICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2Ug
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Ns
aWVudFF0OjpzdGFydERyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KToKKwogMjAxMS0xMi0xNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Ri
b0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBHZXQgcmlkIG9mIGxheWVyaW5nIHZpb2xhdGlv
biBpbiBQbHVnaW5WaWV3UXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0RyYWdDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDcgKzEwNSw3IEBAIHZvaWQgRHJhZ0NsaWVudFF0OjpzdGFydERyYWcoRHJhZ0ltYWdlUmUK
ICAgICAgICAgUXQ6OkRyb3BBY3Rpb24gYWN0dWFsRHJvcEFjdGlvbiA9IGRyYWctPmV4ZWMoZHJh
Z09wZXJhdGlvbnNUb0Ryb3BBY3Rpb25zKGRyYWdPcGVyYXRpb25NYXNrKSk7CiAKICAgICAgICAg
Ly8gU2VuZCBkcmFnRW5kIGV2ZW50Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtZShtX3dl
YlBhZ2UtPnZpZXcoKS0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBv
cygpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAwKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmll
dygpLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRC
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAwKTsKICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5k
ZWRBdChtZSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihhY3R1YWxEcm9wQWN0aW9uKSk7CiAg
ICAgfQogICAgIGZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCktPmRyYWdFbmRlZCgpOwpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsNyArNDExLDcg
QEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogICAgICAgICByZXR1
cm47CiAKICAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIGtldmVudCA9IGV2ZW50LT5r
ZXlFdmVudCgpOwotICAgIGlmICgha2V2ZW50IHx8IGtldmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5VXApCisgICAgaWYgKCFrZXZlbnQgfHwga2V2ZW50LT50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6S2V5VXApCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIHN0
YXJ0ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLmNvbnRhaW5lck5vZGUoKTsKQEAgLTQ0
MSw3ICs0NDEsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAg
ICAgICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRs
ZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBh
IGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAgICAgLy8gKGUuZy4gVGFiIHRo
YXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KICAgICAgICAgICAgIGlmIChj
bWQgJiYgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0aW9uKCkKLSAg
ICAgICAgICAgICAgICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlJhd0tleURvd24pCisgICAgICAgICAgICAgICAgJiYga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6UmF3S2V5RG93bikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIG1fcGFnZS0+dHJpZ2dlckFjdGlvbihhY3Rpb24pOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKIAogICAgICAgICAgICAgLy8g
VGV4dCBpbnNlcnRpb24uCiAgICAgICAgICAgICBib29sIHNob3VsZEluc2VydFRleHQgPSBmYWxz
ZTsKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OktleURvd24gJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
aWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6OktleURvd24gJiYgIWtldmVudC0+
dGV4dCgpLmlzRW1wdHkoKSkgewogCiAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtl
eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmFsdEtleSgpKQpJbmRleDog
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTItMTUgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEg
YmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpnZXRfYWNj
S2V5Ym9hcmRTaG9ydGN1dCk6CisgICAgICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAg
IChnZW5lcmF0ZU1vdXNlRXZlbnQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6a2V5VXApOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJk
RXZlbnQpOgorICAgICAgICAoV2ViVmlldzo6a2V5RG93bik6CisgICAgICAgIChXZWJWaWV3Ojpr
ZXlQcmVzcyk6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkg
bWFrZXMgcHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCShy
ZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlbmRlckZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJP
YmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTM2NiwxMyArMzY2
LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICAgICAg
Ly8gRm9sbG93IHRoZSBzYW1lIG9yZGVyIGFzIE1vemlsbGEgTVNBQSBpbXBsZW1lbnRhdGlvbjoK
ICAgICAgICAgLy8gQ3RybCtBbHQrU2hpZnQrTWV0YStrZXkuIE1TRE4gc3RhdGVzIHRoYXQga2V5
Ym9hcmQgc2hvcnRjdXQgc3RyaW5ncwogICAgICAgICAvLyBzaG91bGQgbm90IGJlIGxvY2FsaXpl
ZCBhbmQgZGVmaW5lcyB0aGUgc2VwYXJhdG9yIGFzICIrIi4KLSAgICAgICAgaWYgKG1vZGlmaWVy
cyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVy
cyAmIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkpCiAgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmll
cnMgKz0gIkN0cmwrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6QWx0S2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVudDo6QWx0
S2V5KQogICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJBbHQrIjsKLSAgICAgICAg
aWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6U2hpZnRLZXkpCisgICAgICAg
IGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleSkKICAgICAgICAgICAgIGFj
Y2Vzc0tleU1vZGlmaWVycyArPSAiU2hpZnQrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6TWV0YUtleSkKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBs
YXRmb3JtRXZlbnQ6Ok1ldGFLZXkpCiAgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgKz0g
IldpbisiOwogICAgIH0KICAgICAqc2hvcnRjdXQgPSBCU3RyaW5nKFN0cmluZyhhY2Nlc3NLZXlN
b2RpZmllcnMgKyBhY2Nlc3NLZXkpKS5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJEcm9wU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJE
cm9wU291cmNlLmNwcAkocmV2aXNpb24gMTAzMDc0KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
RHJvcFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgU1RETUVUSE9E
SU1QXyhVTE9ORykgV2ViRHJvcFNvdXJjZTo6UmVsZQogICAgIHJldHVybiBjOwogfQogCi1QbGF0
Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wg
aXNEcmFnKSB7CitQbGF0Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3VzZUV2ZW50KFdlYlZpZXcq
IHdlYlZpZXcsIGJvb2wgaXNEcmFnKQorewogICAgIFBPSU5UTCBwdDsKICAgICA6OkdldEN1cnNv
clBvcygoTFBQT0lOVCkmcHQpOwogICAgIFBPSU5UTCBsb2NhbHB0ID0gcHQ7CkBAIC0xMDEsNyAr
MTAyLDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZQogICAgIGlm
IChTVUNDRUVERUQod2ViVmlldy0+dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJnZpZXdXaW5kb3cp
KSkKICAgICAgICAgOjpTY3JlZW5Ub0NsaWVudCh2aWV3V2luZG93LCAoTFBQT0lOVCkmbG9jYWxw
dCk7CiAgICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChJbnRQb2ludChsb2NhbHB0LngsIGxv
Y2FscHQueSksIEludFBvaW50KHB0LngsIHB0LnkpLAotICAgICAgICBpc0RyYWcgPyBMZWZ0QnV0
dG9uIDogTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGN1cnJlbnRUaW1lKCkpOworICAgICAgICBpc0RyYWcgPyBMZWZ0QnV0dG9uIDogTm9C
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKTsKIH0KIAogU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6
OlF1ZXJ5Q29udGludWVEcmFnKEJPT0wgZkVzY2FwZVByZXNzZWQsIERXT1JEIGdyZktleVN0YXRl
KQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDEwMzA3NCkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDcgKzE4MTMsNyBA
QCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sCiAKIGJvb2wgV2ViVmll
dzo6a2V5VXAoV1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBMUEFSQU0ga2V5RGF0YSwgYm9vbCBzeXN0
ZW1LZXlEb3duKQogewotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3ZpZXdX
aW5kb3csIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Oktl
eVVwLCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQo
bV92aWV3V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6S2V5
VXAsIHN5c3RlbUtleURvd24pOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgbV9jdXJyZW50Q2hhcmFjdGVy
Q29kZSA9IDA7CkBAIC0xOTU1LDcgKzE5NTUsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRp
bmdLZXlib2FyZEV2ZW50CiAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAotICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAg
IGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAg
ICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9k
ZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRl
ZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBp
dCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRh
YiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRl
ZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3Ig
RW50ZXIpLgpAQCAtMTk4Myw3ICsxOTgzLDcgQEAgYm9vbCBXZWJWaWV3OjprZXlEb3duKFdQQVJB
TSB2aXJ0dWFsS2V5QwogI2VuZGlmCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQga2V5RXZlbnQobV92aWV3V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwga2V5RGF0YSwgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duLCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwg
a2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgc3lzdGVtS2V5RG93bik7CiAgICAg
Ym9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChrZXlFdmVudCk7
CiAKICAgICAvLyBUaGVzZSBldmVudHMgY2Fubm90IGJlIGNhbmNlbGVkLCBhbmQgd2UgaGF2ZSBu
byBkZWZhdWx0IGhhbmRsaW5nIGZvciB0aGVtLgpAQCAtMjA1NSw3ICsyMDU1LDcgQEAgYm9vbCBX
ZWJWaWV3OjprZXlQcmVzcyhXUEFSQU0gY2hhckNvZGUsIAogewogICAgIEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAg
UGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgY2hhckNvZGUsIGtl
eURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93bik7CisgICAg
UGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgY2hhckNvZGUsIGtl
eURhdGEsIFBsYXRmb3JtRXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOwogICAgIC8vIElFIGRv
ZXMgbm90IGRpc3BhdGNoIGtleXByZXNzIGV2ZW50IGZvciBXTV9TWVNDSEFSLgogICAgIGlmIChz
eXN0ZW1LZXlEb3duKQogICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5k
bGVBY2Nlc3NLZXkoa2V5RXZlbnQpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwMzA3NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OmhhbmRsZUtleURvd24pOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxl
S2V5UHJlc3MpOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlS2V5VXApOgorCiAyMDExLTEyLTE0
ICBKaW5nIFpoYW8gIDxqaW5nemhhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlbmluZyB0
d28gcG9wdXAgbWVudXMgYnkgZGlzcGF0Y2hFdmVudCgpIG1ha2VzIHByb2JsZW1zLgpJbmRleDog
U291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9v
bCBXZWJWaWV3OjpoYW5kbGVLZXlEb3duKFdQQVJBTSB2aXJ0dQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0g
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCB2aXJ0dWFs
S2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duLCBzeXN0
ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5kb3dI
YW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3du
LCBzeXN0ZW1LZXlEb3duKTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmtleUV2ZW50KGtleUV2ZW50KTsKIAogICAgIC8vIFRoZXNlIGV2ZW50cyBjYW5ub3QgYmUg
Y2FuY2VsZWQsIGFuZCB3ZSBoYXZlIG5vIGRlZmF1bHQgaGFuZGxpbmcgZm9yIHRoZW0uCkBAIC0z
NzAsNyArMzcwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVLZXlQcmVzcyhXUEFSQU0gY2hhcgog
ewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogCi0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2lu
ZG93SGFuZGxlLCBjaGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFy
LCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93
aW5kb3dIYW5kbGUsIGNoYXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpDaGFyLCBzeXN0
ZW1LZXlEb3duKTsKICAgICAvLyBJRSBkb2VzIG5vdCBkaXNwYXRjaCBrZXlwcmVzcyBldmVudCBm
b3IgV01fU1lTQ0hBUi4KICAgICBpZiAoc3lzdGVtS2V5RG93bikKICAgICAgICAgcmV0dXJuIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlQWNjZXNzS2V5KGtleUV2ZW50KTsKQEAgLTM4Miw3
ICszODIsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUtleVByZXNzKFdQQVJBTSBjaGFyCiAKIGJv
b2wgV2ViVmlldzo6aGFuZGxlS2V5VXAoV1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBMUEFSQU0ga2V5
RGF0YSwgYm9vbCBzeXN0ZW1LZXlEb3duKQogewotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBr
ZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5VXAsIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUsIGtleURhdGEs
IFBsYXRmb3JtRXZlbnQ6OktleVVwLCBzeXN0ZW1LZXlEb3duKTsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGtleUV2ZW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50V2luQ0UuY3BwCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzg0LDcgKzM4NCw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdLZXkK
IAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktp
dCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhv
dyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBz
aG91bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3Jl
IHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2Vz
IGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgLy8g
KGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwNzQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJh
c2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFd4OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRXeDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDExLTEyLTExICBS
b2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5jb20+CiAKICAgICAgICAgQWRkIGEgVVJMIGFyZ3Vt
ZW50IHRvIHRoZSB3eFdlYlZpZXcgY29uc3RydWN0b3IsCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJKHJldmlzaW9uIDEwMzA3
NCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5MCw3ICszOTAsNyBAQCBib29sIEVkaXRvckNsaWVudFd4Ojpo
YW5kbGVFZGl0aW5nS2V5Ym9hCiAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOwogCi0gICAgaWYg
KGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7
CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikg
ewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91
dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4
ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxl
YXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUu
Zy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgaWYgbm90IHRvIGxldCBhIENIQVIgZXZlbnQg
YmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hh
cmFjdGVyLCBvciBFbnRlcikuCkBAIC00MDksNyArNDA5LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRX
eDo6aGFuZGxlRWRpdGluZ0tleWJvYQogCiBjb25zdCBjaGFyKiBFZGl0b3JDbGllbnRXeDo6aW50
ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZ0KQogewotICAgIEFTU0VSVChl
dnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURv
d24gfHwgZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpD
aGFyKTsKKyAgICBBU1NFUlQoZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93biB8fCBldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpDaGFyKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlEb3du
Q29tbWFuZHNNYXAgPSAwOwogICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBr
ZXlQcmVzc0NvbW1hbmRzTWFwID0gMDsKQEAgLTQzMyw3ICs0MzMsNyBAQCBjb25zdCBjaGFyKiBF
ZGl0b3JDbGllbnRXeDo6aW50ZXJwcmV0S2V5CiAgICAgaWYgKGV2dC0+Y3RybEtleSgpKQogICAg
ICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsKIAotICAgIGlmIChldnQtPmtleUV2ZW50KCktPnR5
cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoZXZ0
LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAg
ICAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5rZXlDb2RlKCk7CiAgICAg
ICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsK
ICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119656</attachid>
            <date>2011-12-16 12:53:54 -0800</date>
            <delta_ts>2011-12-16 13:16:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74685-20111216125348.patch</filename>
            <type>text/plain</type>
            <size>170147</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBAQAorMjAxMS0xMi0xNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBi
YXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIGJhc2UgY2xhc3MgZm9yIFBsYXRmb3JtTW91c2VFdmVudCwgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LCBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgYW5kIFBsYXRmb3JtR2VzdHVyZUV2
ZW50IGFuZCBtb3ZlIFR5cGUgZW51bWVyYXRpb24gYW5kIG1vZGlmaWVycyBkb3duIHRvIGl0Lgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNw
cDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6c2hpZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6Y3RybEtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjphbHRLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6bWV0YUtleSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50Ojptb2RpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1FdmVudDo6UGxhdGZvcm1FdmVudCk6CisgICAgICAgIEFkZCBuZXcgY2xhc3MuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNo
b3dDb250ZXh0TWVudV0pOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKToKKyAgICAgICAgKiBk
b20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlTW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVBY2Nlc3NLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAqIHBhZ2UvYmxhY2tiZXJy
eS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0V2ZW50
SGFuZGxlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNj
ZXNzS2V5TW9kaWZpZXJzKToKKyAgICAgICAgKiBwYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMpOgor
ICAgICAgICAqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nl
c3NLZXlNb2RpZmllcnMpOgorICAgICAgICAqIHBhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMpOgorICAg
ICAgICAqIHBhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAgICAgICogcGFnZS93eC9FdmVu
dEhhbmRsZXJXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tl
eU1vZGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpQbGF0Zm9ybUdlc3R1cmVF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzS2V5cGFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudDo6YnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVu
dDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ck5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjp6b29tKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJs
YWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJDb3JlUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBs
YXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRUYXBEb3duR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06
OmFwcGVuZERvdWJsZUNsaWNrR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1
cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJl
RW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVu
ZFNjcm9sbEdlc3R1cmVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cExpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDaGFyYWN0ZXJUeXBl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVLZXlFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdl
c3R1cmVFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRm
b3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtTW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRm
b3JtV2hlZWxFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZl
bnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0tleUV2ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9LZXlFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudEZv
ck5TRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9y
bU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93
bkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNL
ZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBs
YXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91
c2VFdmVudFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVG9FdmVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0eXBlRnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2
ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hl
ZWxFdmVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcg
bmV3IG5hbWVzL2NsYXNzIG1vZGlmaWVyIGFzIG5lY2Vzc2FyeS4KKwogMjAxMS0xMi0xNiAgQnJh
bmltaXIgTGFtYm92ICA8YmxhbWJvdkBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
c3ZnL2NsaXAtcGF0aC9jbGlwLWluLW1hc2suc3ZnIGZhaWxzIG9uIFdpbmRvd3MgYW5kIExpbnV4
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNTQsNiArMTA1NCw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCiAgICAgcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcAorICAgIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCiAgICAgcGxhdGZvcm0vUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAogICAgIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yODc5LDYgKzI4NzksOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
VVJJVXRpbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1FdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZl
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24u
aCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTExMTgsNiArMTExOCw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogICAg
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIFwKICAgICBwbGF0Zm9y
bS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBcCisgICAgcGxhdGZvcm0vUGxhdGZvcm1FdmVu
dC5jcHAgXAogICAgIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgXAogICAg
IHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMDMwOTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNjA3LDggKzYw
Nyw4IEBAIF9fWk43V2ViQ29yZTIwbWFrZVJHQkEzMkZyb21GbG9hdHNFZmZmZgogX19aTjdXZWJD
b3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIx
QmFja0ZvcndhcmRDb250cm9sbGVyMTFpdGVtQXRJbmRleEVpCiBfX1pON1dlYkNvcmUyMU1lbW9y
eVByZXNzdXJlSGFuZGxlcjdpbnN0YWxsRXYKLV9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRFTlMwXzRUeXBlRWIKIF9fWk43V2ViQ29y
ZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdOU0V2ZW50CitfX1pON1dlYkNvcmUyMVBsYXRm
b3JtS2V5Ym9hcmRFdmVudDI0ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50RU5TXzEzUGxhdGZvcm1F
dmVudDRUeXBlRWIKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjBzZXJ2ZVBl
bmRpbmdSZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RQogX19aTjdXZWJDb3JlMjFS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIyNHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZEVQTlNfNUZyYW1l
RVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RVJLTlNfMTVSZXNvdXJjZVJl
cXVlc3RFCiBfX1pON1dlYkNvcmUyMVNWR0RvY3VtZW50RXh0ZW5zaW9uczIxc2FtcGxlQW5pbWF0
aW9uQXRUaW1lRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNWR1NNSUxFbGVtZW50RWQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtNjk1LDYgKzY5NSw4IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vTm90SW1wbGVtZW50ZWQu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxh
dGZvcm1HZXN0dXJlRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2NjMwLDYgKzI2NjMwLDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXFBsYXRmb3JtRXZlbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQbGF0Zm9ybUV2ZW50LmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwMzA5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNTA3Myw2ICs1MDczLDggQEAKIAkJQkM1QTg2ODUwQzMzNjc2MDAwRUVB
NjQ5IC8qIERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM1QTg2ODIwQzMzNjc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5oICov
OyB9OwogCQlCQzVBODZCNTBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1QTg2QjMwQzMz
NjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQkM1QTg2QjYwQzMz
NjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVBODZCNDBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01T
ZWxlY3Rpb24uaCAqLzsgfTsKKwkJQkM1Qzc2MkExNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3Jt
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM1Qzc2MjgxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwICovOyB9OworCQlC
QzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1Qzc2MjkxNDk3RkUxNDAwQkM0Nzc1
IC8qIFBsYXRmb3JtRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQzVDRkNBOTExRjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3Ry
YXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NUNGQ0E4MTFGNzkzMzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRpb25TdHJhdGVneS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUVCNURCMEU4MUI3
RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM1RUI1REEwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM1
RUI1REQwRTgxQjhERDAwQjI1OTY1IC8qIE91dGxpbmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RUI1REMwRTgxQjhERDAwQjI1OTY1IC8q
IE91dGxpbmVWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMjM5OSw2ICsxMjQwMSw4IEBACiAJCUJDNUE4NjgzMEMzMzY3NjAwMEVFQTY0
OSAvKiBET01TZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01TZWxlY3Rp
b24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVBODZCMzBDMzM2N0U4MDBF
RUE2NDkgLyogSlNET01TZWxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NU2VsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM1QTg2QjQwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVNlbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzVDNzYyODE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1Qzc2MjkxNDk3RkUxNDAwQkM0
Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVDRkNBODEx
Rjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemF0aW9uU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM1RUI1REEwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJvcmRlclZhbHVlLmg7IHBhdGggPSBz
dHlsZS9Cb3JkZXJWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVFQjVE
QzBFODFCOEREMDBCMjU5NjUgLyogT3V0bGluZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE91dGxpbmVWYWx1ZS5oOyBwYXRoID0gc3R5bGUvT3V0bGluZVZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDI1Niw2ICsyMDI2MCw4IEBACiAJCQkJ
MUFEOEY4MUExMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgKi8sCiAJ
CQkJMUFEOEY4MTkxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5oICovLAog
CQkJCTkzNUM0NzZBMDlBQzRENEYwMEE2QUFCNCAvKiBQbGF0Zm9ybVdoZWVsRXZlbnQuaCAqLywK
KwkJCQlCQzVDNzYyODE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5jcHAgKi8sCisJ
CQkJQkM1Qzc2MjkxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCAqLywKIAkJCQlC
Q0JCOEFCNDEzRjFBRkIwMDA3MzRERjAgLyogUE9EQXJlbmEuaCAqLywKIAkJCQkxRjNGMTk1MjE0
OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oICovLAogCQkJCUJDQkI4QUI1MTNG
MUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovLApAQCAtMjQ4NzYsNiArMjQ4ODIsNyBA
QAogCQkJCUYzNUFFNUFDMTQ5MjVGNUIwMDRENTc3NiAvKiBET01XcmFwcGVyVmlzaXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjZDMTdBM0UxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1J
T1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwRkEzMTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJU
aWxlQ2FjaGVMYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM1Qzc2MkIxNDk3RkUxNDAwQkM0
Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwRkFGMTQ5ODAw
RDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFG
M0YxOTUzMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUVDRUI2ODE0OTk3OTBEMDBDREQzQTQgLyogRkVDb21wb3NpdGVBcml0aG1ldGlj
TkVPTi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc3MCw2ICsyNzc3Nyw3IEBACiAJCQkJOEMxMDkx
OTgxNDk0RkIxMjAwQjVEM0ZFIC8qIENTU0VsZW1lbnRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdGMTdBQyAvKiBLaWxsUmluZ05vbmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBGQTQxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRp
bGVDYWNoZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkM1Qzc2MkExNDk3RkUxNDAwQkM0
Nzc1IC8qIFBsYXRmb3JtRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFQ0VCNjcxNDk5
NzkwRDAwQ0REM0E0IC8qIEZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlFQ0VCNjkxNDk5NzkwRDAwQ0REM0E0IC8qIEZFR2F1c3NpYW5CbHVyTkVPTi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVDRUI2QjE0OTk3OTBEMDBDREQzQTQgLyogRkVMaWdo
dGluZ05FT04uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbQkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1OTAsNyArMjU5MCw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVu
dQogICAgIC8vIFNpbXVsYXRlIGEgY2xpY2sgaW4gdGhlIG1pZGRsZSBvZiB0aGUgb2JqZWN0Lgog
ICAgIExheW91dFBvaW50IGNsaWNrUG9pbnQgPSBtX29iamVjdC0+Y2xpY2tQb2ludCgpOwogICAg
IAotICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KGNsaWNrUG9pbnQsIGNsaWNrUG9p
bnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2
ZW50KGNsaWNrUG9pbnQsIGNsaWNrUG9pbnQsIFJpZ2h0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgp
KTsKICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0
TWVudUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmIChoYW5kbGVkKQogICAgICAgICBwYWdlLT5j
aHJvbWUoKS0+c2hvd0NvbnRleHRNZW51KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwyMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGVGb3JLZXlib2FyZEV2ZW50VHlwZShQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdHlwZSkK
K3N0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGVGb3JLZXlib2FyZEV2
ZW50VHlwZShQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDoKKyAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUV2ZW50OjpLZXlVcDoKICAgICAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCku
a2V5dXBFdmVudDsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURv
d246CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bjoKICAgICAgICAgICAg
IHJldHVybiBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50OwotICAgICAgICBjYXNlIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Q2hhcjoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpDaGFyOgog
ICAgICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50OwotICAgICAgICBj
YXNlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bjoKKyAgICAgICAgY2FzZSBQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duOgogICAgICAgICAgICAgLy8gVGhlIGNhbGxlciBzaG91bGQgZGlzYW1i
aWd1YXRlIHRoZSBjb21iaW5lZCBldmVudCBpbnRvIFJhd0tleURvd24gb3IgQ2hhciBldmVudHMu
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHJldmlz
aW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQ
dHI8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFyZ2V0
KQogewotICAgIEFTU0VSVChldmVudC5ldmVudFR5cGUoKSA9PSBNb3VzZUV2ZW50TW92ZWQgfHwg
ZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0b24pOworICAgIEFTU0VSVChldmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCB8fCBldmVudC5idXR0b24oKSAhPSBOb0J1dHRvbik7
CiAKICAgICBib29sIGlzQ2FuY2VsYWJsZSA9IGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkubW91
c2Vtb3ZlRXZlbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGNyZWF0ZU1vdXNlRXZlCiAgICAgc2hpZnRLZXkgPSBjdHJsS2V5ID0gYWx0S2V5ID0g
bWV0YUtleSA9IGZhbHNlOwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1v
ZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSk7CiAgICAgcmV0
dXJuIFBsYXRmb3JtTW91c2VFdmVudChkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSwgZHJhZ0Rh
dGEtPmdsb2JhbFBvc2l0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0
QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0YUtleSwgY3VycmVudFRpbWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzMywxOSAr
MjIzMywxOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvCiAgICAg
Ly8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAogICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUo
KSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBlOgorICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd246CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKKyAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVUYXA6IHsKICAgICAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSB0
byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGltZXMgb25jZSBoaXQgdGVzdGluZyBoYXMgYmVlbiBj
b3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3ZlLgotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2Jh
bFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8g
MSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1
cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRp
bWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2Vz
dHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0
QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZl
bnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtl
eSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwot
ICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0
aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2
ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCks
IGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2
ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1
cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVy
ZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0
YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50
Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3Nl
ZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2
ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtl
eSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9i
YWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLCAv
KiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQu
Y3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCks
IGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CiAgICAgICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNl
TW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NFdmVudChmYWtlTW91c2VEb3duKTsKICAg
ICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBk
YXRlVHlwZTogeworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTog
ewogICAgICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXaGVlbEV2ZW50Ojp0
aWNrTXVsdGlwbGllcjsKICAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBpbnRlcmltIGlt
cGxlbWVudGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVuIGFkZHJlc3NlZC4KICAg
ICAgICAgSW50UG9pbnQgcG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueCgpLCBnZXN0dXJl
RXZlbnQucG9zaXRpb24oKS55KCkpOwpAQCAtMjI1NCw5ICsyMjU0LDkgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5
bnRoZXRpY1doZWVsRXZlbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2Fz
ZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKLSAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6U2Nyb2xsRW5kVHlwZToKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3Vi
bGVUYXA6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOiB7CiAgICAgICAgIEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2NCw2ICsyMjY0LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZUdlc3R1cmVFdmVudChjbwogICAgICAgICB2aWV3LT5oYW5kbGVHZXN0dXJlRXZlbnQo
Z2VzdHVyZUV2ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KICNlbmRpZgpAQCAtMjM1Nyw5ICsyMzYwLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRD
b250ZXh0TWVudUV2ZW50RgogICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHdlYiBjb21wYXRp
YmlsaXR5LgogCiAjaWYgT1MoV0lORE9XUykKLSAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUg
PSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAgUGxhdGZvcm1FdmVudDo6VHlwZSBldmVudFR5cGUg
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogI2Vsc2UKLSAgICBNb3VzZUV2ZW50VHlw
ZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyAgICBQbGF0Zm9ybUV2ZW50OjpUeXBl
IGV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICNlbmRpZgogCiAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBS
aWdodEJ1dHRvbiwgZXZlbnRUeXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RG
OjpjdXJyZW50VGltZSgpKTsKQEAgLTI0MTcsNyArMjQyMCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpmYWtlTW91c2VNb3ZlRXZlbnRUaW0KICAgICBib29sIG1ldGFLZXk7CiAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwg
YWx0S2V5LCBtZXRhS2V5KTsKICAgICBJbnRQb2ludCBnbG9iYWxQb2ludCA9IHZpZXctPmNvbnRl
bnRzVG9TY3JlZW4oSW50UmVjdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fY3VycmVudE1vdXNl
UG9zaXRpb24pLCBJbnRTaXplKCkpKS5sb2NhdGlvbigpOwotICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBmYWtlTW91c2VNb3ZlRXZlbnQobV9jdXJyZW50TW91c2VQb3NpdGlvbiwgZ2xvYmFsUG9pbnQs
IE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXks
IG1ldGFLZXksIGN1cnJlbnRUaW1lKCkpOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91
c2VNb3ZlRXZlbnQobV9jdXJyZW50TW91c2VQb3NpdGlvbiwgZ2xvYmFsUG9pbnQsIE5vQnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5
LCBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmVF
dmVudCk7CiB9CiAKQEAgLTI0NzEsOCArMjQ3NCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVBY2Nlc3NLZXkoY29uc3QKICAgICAvLyBJRSBtYXRjaGVzIGxvd2VyIGFuZCB1cHBlciBjYXNl
IGFjY2VzcyBrZXlzIHJlZ2FyZGxlc3Mgb2YgU2hpZnQga2V5IHN0YXRlIC0gYnV0IGlmIGJvdGgg
dXBwZXIgYW5kCiAgICAgLy8gbG93ZXIgY2FzZSB2YXJpYW50cyBhcmUgcHJlc2VudCBpbiBhIGRv
Y3VtZW50LCB0aGUgY29ycmVjdCBlbGVtZW50IGlzIG1hdGNoZWQgYmFzZWQgb24gU2hpZnQga2V5
IHN0YXRlLgogICAgIC8vIEZpcmVmb3ggb25seSBtYXRjaGVzIGFuIGFjY2VzcyBrZXkgaWYgU2hp
ZnQgaXMgbm90IHByZXNzZWQsIGFuZCBkb2VzIHRoYXQgY2FzZS1pbnNlbnNpdGl2ZWx5LgotICAg
IEFTU0VSVCghKGFjY2Vzc0tleU1vZGlmaWVycygpICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpT
aGlmdEtleSkpOwotICAgIGlmICgoZXZ0Lm1vZGlmaWVycygpICYgflBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1vZGlmaWVycygpKQorICAgIEFTU0VSVCghKGFj
Y2Vzc0tleU1vZGlmaWVycygpICYgUGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpKTsKKyAgICBpZiAo
KGV2dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9ybUV2ZW50OjpTaGlmdEtleSkgIT0gYWNjZXNzS2V5
TW9kaWZpZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTdHJpbmcga2V5ID0gZXZ0
LnVubW9kaWZpZWRUZXh0KCk7CiAgICAgRWxlbWVudCogZWxlbSA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPmdldEVsZW1lbnRCeUFjY2Vzc0tleShrZXkubG93ZXIoKSk7CkBAIC0yNTIwLDcgKzI1MjMs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgaWYgKHBhZ2UtPm1haW5GcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzKSB7CiAgICAgICAgICAg
ICAvLyBJZiBhIGtleSBpcyBwcmVzc2VkIHdoaWxlIHRoZSBwYW5TY3JvbGwgaXMgaW4gcHJvZ3Jl
c3MgdGhlbiB3ZSB3YW50IHRvIHN0b3AKLSAgICAgICAgICAgIGlmIChpbml0aWFsS2V5RXZlbnQu
dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biB8fCBpbml0aWFsS2V5RXZl
bnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgCisgICAgICAg
ICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
IHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikg
CiAgICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogCiAgICAgICAgICAgICAv
LyBJZiB3ZSB3ZXJlIGluIHBhbnNjcm9sbCBtb2RlLCB3ZSBzd2FsbG93IHRoZSBrZXkgZXZlbnQK
QEAgLTI1NTAsMjUgKzI1NTMsMjUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0
IFBsYXRmbwogICAgIC8vIE9uIFdpbmRvd3MsIFdlYktpdCBleHBsaWNpdGx5IGNhbGxzIGhhbmRs
ZUFjY2Vzc0tleSgpIGluc3RlYWQgb2YgZGlzcGF0Y2hpbmcgYSBrZXlwcmVzcyBldmVudCBmb3Ig
V01fU1lTQ0hBUiBtZXNzYWdlcy4KICAgICAvLyBPdGhlciBwbGF0Zm9ybXMgY3VycmVudGx5IG1h
dGNoIGVpdGhlciBNYWMgb3IgV2luZG93cyBiZWhhdmlvciwgZGVwZW5kaW5nIG9uIHdoZXRoZXIg
dGhleSBzZW5kIGNvbWJpbmVkIEtleURvd24gZXZlbnRzLgogICAgIGJvb2wgbWF0Y2hlZEFuQWNj
ZXNzS2V5ID0gZmFsc2U7Ci0gICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpLZXlEb3duKQorICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgp
ID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pCiAgICAgICAgIG1hdGNoZWRBbkFjY2Vzc0tleSA9
IGhhbmRsZUFjY2Vzc0tleShpbml0aWFsS2V5RXZlbnQpOwogCiAgICAgLy8gRklYTUU6IGl0IHdv
dWxkIGJlIGZhaXIgdG8gbGV0IGFuIGlucHV0IG1ldGhvZCBoYW5kbGUgS2V5VXAgZXZlbnRzIGJl
Zm9yZSBET00gZGlzcGF0Y2guCi0gICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikKKyAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgIHJldHVybiAhbm9kZS0+ZGlzcGF0Y2hLZXlFdmVu
dChpbml0aWFsS2V5RXZlbnQpOwogCiAgICAgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
ID0gbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleURvd25FdmVudCA9IGlu
aXRpYWxLZXlFdmVudDsgICAgCi0gICAgaWYgKGtleURvd25FdmVudC50eXBlKCkgIT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKQotICAgICAgICBrZXlEb3duRXZlbnQuZGlzYW1i
aWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biwgYmFj
a3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7CisgICAgaWYgKGtleURvd25FdmVudC50eXBlKCkgIT0g
UGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAga2V5RG93bkV2ZW50LmRpc2FtYmln
dWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duLCBiYWNrd2FyZENvbXBh
dGliaWxpdHlNb2RlKTsKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5ZG93biA9IEtleWJv
YXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1
bHRWaWV3KCkpOwogICAgIGlmIChtYXRjaGVkQW5BY2Nlc3NLZXkpCiAgICAgICAgIGtleWRvd24t
PnNldERlZmF1bHRQcmV2ZW50ZWQodHJ1ZSk7CiAgICAga2V5ZG93bi0+c2V0VGFyZ2V0KG5vZGUp
OwogCi0gICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICBub2RlLT5kaXNwYXRjaEV2ZW50KGtl
eWRvd24sIGVjKTsKICAgICAgICAgLy8gSWYgZnJhbWUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiBr
ZXlkb3duIGRpc3BhdGNoLCB0aGVuIHJldHVybiB0cnVlIHRvIGF2b2lkIHNlbmRpbmcgYSBzdWJz
ZXF1ZW50IGtleXByZXNzIG1lc3NhZ2UgdG8gdGhlIG5ldyBmcmFtZS4KICAgICAgICAgYm9vbCBj
aGFuZ2VkRm9jdXNlZEZyYW1lID0gbV9mcmFtZS0+cGFnZSgpICYmIG1fZnJhbWUgIT0gbV9mcmFt
ZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC0y
NjA3LDcgKzI2MTAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZv
CiAgICAgfQogCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleVByZXNzRXZlbnQgPSBpbml0
aWFsS2V5RXZlbnQ7Ci0gICAga2V5UHJlc3NFdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQo
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsK
KyAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50
OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBpZiAoa2V5UHJlc3NFdmVu
dC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ga2V5ZG93blJlc3VsdDsKICAgICBS
ZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5cHJlc3MgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5
UHJlc3NFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CkBAIC0yNzg2
LDcgKzI3ODksNyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBCiAK
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlmIChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExl
ZnRCdXR0b24gfHwgZXZlbnQuZXZlbnQoKS5ldmVudFR5cGUoKSAhPSBNb3VzZUV2ZW50TW92ZWQp
IHsKKyAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50
LmV2ZW50KCkudHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpIHsKICAgICAgICAg
Ly8gSWYgd2UgYWxsb3dlZCB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgYnJpZGdlIHRvIGhhbmRsZSBh
IGRyYWcKICAgICAgICAgLy8gbGFzdCB0aW1lLCB0aGVuIG1fbW91c2VQcmVzc2VkIG1pZ2h0IHN0
aWxsIGJlIHNldC4gU28gd2UKICAgICAgICAgLy8gY2xlYXIgaXQgbm93IHRvIG1ha2Ugc3VyZSB0
aGUgbmV4dCBtb3ZlIGFmdGVyIGEgZHJhZwpAQCAtMjgyMiw3ICsyODI1LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91cwogICAgIC8vIEZvciBkcmFncyBzdGFydGlu
ZyBpbiB0aGUgc2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91c2Vk
b3duIGFuZCBtb3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFnZ2lu
ZyBzdHVmZiBhbmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3VyCiAgICAgaWYgKG1fbW91c2VEb3du
TWF5U3RhcnREcmFnICYmIG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCAmJiAoZHJhZ1N0
YXRlKCkubV9kcmFnVHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIGV2ZW50LmV2
ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkp
IHsKLSAgICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50KCkuZXZlbnRUeXBlKCkgPT0gTW91c2VFdmVu
dE1vdmVkKTsKKyAgICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50KCkudHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQpOwogICAgICAgICBpZiAoKGRyYWdTdGF0ZSgpLm1fZHJhZ1R5cGUg
JiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKSB7CiAgICAgICAgICAgICAvLyAuLi4gdW5sZXNzIHRo
ZSBtb3VzZSBpcyBvdmVyIGFuIGltYWdlLCB0aGVuIHdlIHN0YXJ0IGRyYWdnaW5nIGp1c3QgdGhl
IGltYWdlCiAgICAgICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdUeXBlID0gRHJhZ1NvdXJjZUFj
dGlvbkltYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFu
ZGxlckJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYmxh
Y2tiZXJyeS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp0YWJz
VG9BbGxGb3JtQ29udHJvbHMKIAogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2Rp
ZmllcnMoKQogewotICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAg
ICByZXR1cm4gUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6
Zm9jdXNEb2N1bWVudFZpZXcoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9F
dmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDgsOSArMTQ4LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NX
aWRnZXRNb3VzZURvd25FdgogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmll
cnMoKQogewogI2lmIE9TKERBUldJTikKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpDdHJsS2V5IHwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiAjZWxzZQotICAg
IHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZv
cm1FdmVudDo6QWx0S2V5OwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDYgKzEyMCw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnQKIAog
dW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotICAgIHJldHVy
biBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6QWx0S2V5OwogfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5k
bGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhh
bmRsZXJHdGsuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2d0
ay9FdmVudEhhbmRsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudAogCiB1bnNpZ25lZCBFdmVu
dEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiB9
CiAKIC8vIEdUSysgbXVzdCBzY3JvbGwgaG9yaXpvbnRhbGx5IGlmIHRoZSBtb3VzZSBwb2ludGVy
IGlzIG9uIHRvcCBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0JKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzE5LDkgKzcxOSw5IEBAIHVu
c2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXIKICAgICAvLyBTbywgd2UgdXNl
IENvbnRyb2wgaW4gdGhpcyBjYXNlLCBldmVuIHRob3VnaCBpdCBjb25mbGljdHMgd2l0aCBFbWFj
cy1zdHlsZSBrZXkgYmluZGluZ3MuCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDc+IGZvciBtb3JlIGRldGFpbC4KICAgICBpZiAoQVhPYmpl
Y3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZUVuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q3RybEtleTsKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CiAKLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0
dXJuIFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkgfCBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCShyZXZp
c2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDkgKzEyNCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzTW91c2VSZWxlYXNlRXZlbnQKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9k
aWZpZXJzKCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5IHwgUGxhdGZvcm1FdmVudDo6QWx0S2V5OwogI2Vsc2UK
LSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6OkFsdEtleTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw3ICsxMTgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1dpZGdldE1vdXNlRG93bkV2
CiAKIHVuc2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKIHsKLSAgICBy
ZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6OkFsdEtleTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS93eC9FdmVu
dEhhbmRsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS93eC9FdmVu
dEhhbmRsZXJXeC5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
d3gvRXZlbnRIYW5kbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAg
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYQogCiB1bnNpZ25lZCBFdmVu
dEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6QWx0S2V5OworICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtRXZlbnRfaAorI2RlZmluZSBQbGF0Zm9ybUV2ZW50
X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUV2ZW50IHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBOb1R5cGUgPSAwLAorCisgICAgICAgIC8vIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudAorICAgICAgICBLZXlEb3duLAorICAgICAgICBLZXlVcCwKKyAg
ICAgICAgUmF3S2V5RG93biwKKyAgICAgICAgQ2hhciwKKworICAgICAgICAvLyBQbGF0Zm9ybU1v
dXNlRXZlbnQKKyAgICAgICAgTW91c2VNb3ZlZCwKKyAgICAgICAgTW91c2VQcmVzc2VkLAorICAg
ICAgICBNb3VzZVJlbGVhc2VkLAorICAgICAgICBNb3VzZVNjcm9sbCwKKyAgICAgICAgCisgICAg
ICAgIC8vIFBsYXRmb3JtV2hlZWxFdmVudAorICAgICAgICBXaGVlbCwKKyAgICAgICAgCisgICAg
ICAgIC8vIFBsYXRmb3JtR2VzdHVyZUV2ZW50CisgICAgICAgIEdlc3R1cmVTY3JvbGxCZWdpbiwK
KyAgICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKyAgICAgICAgR2VzdHVyZVNjcm9sbFVwZGF0ZSwK
KyAgICAgICAgR2VzdHVyZVRhcCwKKyAgICAgICAgR2VzdHVyZVRhcERvd24sCisgICAgICAgIEdl
c3R1cmVEb3VibGVUYXAsCisgICAgfTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KKworCisgICAgLy8gRXZlbnQgTW9kaWZpZXJz
CisKKyAgICBlbnVtIE1vZGlmaWVyS2V5IHsKKyAgICAgICAgQWx0S2V5ID0gMSA8PCAwLAorICAg
ICAgICBDdHJsS2V5ID0gMSA8PCAxLAorICAgICAgICBNZXRhS2V5ID0gMSA8PCAyLAorICAgICAg
ICBTaGlmdEtleSA9IDEgPDwgMworICAgIH07CisKKyAgICBib29sIHNoaWZ0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7
IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KKworICAg
IHVuc2lnbmVkIG1vZGlmaWVycygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKGFsdEtl
eSgpID8gQWx0S2V5IDogMCkKKyAgICAgICAgICAgIHwgKGN0cmxLZXkoKSA/IEN0cmxLZXkgOiAw
KQorICAgICAgICAgICAgfCAobWV0YUtleSgpID8gTWV0YUtleSA6IDApCisgICAgICAgICAgICB8
IChzaGlmdEtleSgpID8gU2hpZnRLZXkgOiAwKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBQ
bGF0Zm9ybUV2ZW50KCkKKyAgICAgICAgOiBtX3NoaWZ0S2V5KGZhbHNlKQorICAgICAgICAsIG1f
Y3RybEtleShmYWxzZSkKKyAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKKyAgICAgICAgLCBtX21l
dGFLZXkoZmFsc2UpCisgICAgICAgICwgbV90eXBlKE5vVHlwZSkKKyAgICB7CisgICAgfQorCisg
ICAgUGxhdGZvcm1FdmVudChUeXBlIHR5cGUpCisgICAgICAgIDogbV9zaGlmdEtleShmYWxzZSkK
KyAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCisgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCisg
ICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsK
KyAgICB9CisKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IG1fc2hpZnRL
ZXkoc2hpZnRLZXkpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwgbV9h
bHRLZXkoYWx0S2V5KQorICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgICAgICAsIG1f
dHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fc2hpZnRLZXk7CisgICAgYm9v
bCBtX2N0cmxLZXk7CisgICAgYm9vbCBtX2FsdEtleTsKKyAgICBib29sIG1fbWV0YUtleTsKKyAg
ICB1bnNpZ25lZCBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBQbGF0Zm9ybUV2ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1HZXN0dXJlRXZlbnQuaAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NDIgKzI5LDMwIEBACiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogCiAjaW5jbHVkZSAiSW50
UG9pbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQgeworY2xhc3MgUGxhdGZvcm1HZXN0dXJl
RXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1FdmVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBUeXBlIHsK
LSAgICAgICAgU2Nyb2xsQmVnaW5UeXBlLAotICAgICAgICBTY3JvbGxFbmRUeXBlLAotICAgICAg
ICBTY3JvbGxVcGRhdGVUeXBlLAotICAgICAgICBUYXBUeXBlLAotICAgICAgICBUYXBEb3duVHlw
ZSwKLSAgICAgICAgRG91YmxlVGFwVHlwZSwKLSAgICB9OwotCiAgICAgUGxhdGZvcm1HZXN0dXJl
RXZlbnQoKQotICAgICAgICA6IG1fdHlwZShTY3JvbGxCZWdpblR5cGUpCisgICAgICAgIDogUGxh
dGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAgICwg
bV90aW1lc3RhbXAoMCkKKyAgICAgICAgLCBtX2RlbHRhWCgwKQorICAgICAgICAsIG1fZGVsdGFZ
KDApCiAgICAgewogICAgIH0KIAotICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5cGUgdHlwZSwg
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IGNvbnN0IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRlbHRhWCwgY29uc3QgZmxvYXQg
ZGVsdGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1l
dGFLZXkpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQo
VHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgZG91YmxlIHRpbWVzdGFtcCwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVks
IGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkK
KyAgICAgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXks
IG1ldGFLZXkpCiAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgLCBtX2ds
b2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVz
dGFtcCkKICAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCiAgICAgICAgICwgbV9kZWx0YVkoZGVs
dGFZKQotICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5
KGN0cmxLZXkpCi0gICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtl
eShtZXRhS2V5KQogICAgIHsKICAgICB9CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KLQogICAgIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3Np
dGlvbjsgfSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCiAKQEAgLTcyLDIyICs2MCwxMyBAQCBwdWJs
aWM6CiAKICAgICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQogICAg
IGZsb2F0IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9Ci0gICAgYm9vbCBzaGlm
dEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICBib29sIGN0cmxLZXkoKSBj
b25zdCB7IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWx0S2V5OyB9Ci0gICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
S2V5OyB9Ci0KKyAgICAKIHByb3RlY3RlZDoKLSAgICBUeXBlIG1fdHlwZTsKICAgICBJbnRQb2lu
dCBtX3Bvc2l0aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgZG91Ymxl
IG1fdGltZXN0YW1wOwogICAgIGZsb2F0IG1fZGVsdGFYOwogICAgIGZsb2F0IG1fZGVsdGFZOwot
ICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAgICBib29sIG1fYWx0
S2V5OwotICAgIGJvb2wgbV9tZXRhS2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmgJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw4IEBACiAjaWZuZGVm
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudF9oCiAjZGVmaW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVudF9o
CiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC02NSw0MCArNjYsMTQgQEAgdHlwZWRlZiBz
dHJ1Y3QgX0V2YXNfRXZlbnRfS2V5X1VwIEV2YXNfRQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgewotICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgOiBwdWJsaWMgUGxh
dGZvcm1FdmVudCB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgewotICAgICAgICAg
ICAgLy8gS2V5RG93biBpcyBzZW50IGJ5IHBsYXRmb3JtcyBzdWNoIGFzIE1hYyBPUyBYLCBndGsg
YW5kIFF0LCBhbmQgaGFzIGluZm9ybWF0aW9uIGFib3V0IGJvdGggcGh5c2ljYWwgcHJlc3NlZCBr
ZXksIGFuZCBpdHMgdHJhbnNsYXRpb24uCi0gICAgICAgICAgICAvLyBGb3IgRE9NIHByb2Nlc3Np
bmcsIGl0IG5lZWRzIHRvIGJlIGRpc2FtYmlndWF0ZWQgYXMgUmF3S2V5RG93biBvciBDaGFyIGV2
ZW50LgotICAgICAgICAgICAgS2V5RG93biwKLQotICAgICAgICAgICAgLy8gS2V5VXAgaXMgc2Vu
dCBieSBhbGwgcGxhdGZvcm1zLgotICAgICAgICAgICAgS2V5VXAsCi0KLSAgICAgICAgICAgIC8v
IFRoZXNlIGV2ZW50cyBhcmUgc2VudCBieSBwbGF0Zm9ybXMgc3VjaCBhcyBXaW5kb3dzIGFuZCB3
eFdpZGdldHMuIFJhd0tleURvd24gb25seSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwaHlzaWNh
bCBrZXksIGFuZCBDaGFyCi0gICAgICAgICAgICAvLyBvbmx5IGhhcyBpbmZvcm1hdGlvbiBhYm91
dCBhIGNoYXJhY3RlciBpdCB3YXMgdHJhbnNsYXRlZCBpbnRvLgotICAgICAgICAgICAgUmF3S2V5
RG93biwKLSAgICAgICAgICAgIENoYXIKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIE1vZGlm
aWVyS2V5IHsKLSAgICAgICAgICAgIEFsdEtleSA9IDEgPDwgMCwKLSAgICAgICAgICAgIEN0cmxL
ZXkgPSAxIDw8IDEsCi0gICAgICAgICAgICBNZXRhS2V5ID0gMSA8PCAyLAotICAgICAgICAgICAg
U2hpZnRLZXkgPSAxIDw8IDMKLSAgICAgICAgfTsKLQogICAgICAgICBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoKQotICAgICAgICAgICAgOiBtX3R5cGUoS2V5RG93bikKKyAgICAgICAgICAgIDogUGxh
dGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQogICAgICAgICAgICAgLCBtX2F1dG9S
ZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAg
ICAgICAgICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoMCkKICAgICAgICAgICAgICwgbV9p
c0tleXBhZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAg
ICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oQ0hST01JVU0pCiAgICAgICAgICAgICAsIG1faXNTeXN0ZW1LZXkoZmFsc2UpCiAjZW5kaWYK
QEAgLTExMCw4ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB7
CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQorCiAgICAgICAgIHZvaWQgZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUs
IGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlKTsgLy8gT25seSB1c2VkIG9u
IHBsYXRmb3JtcyB0aGF0IG5lZWQgaXQsIGkuZS4gdGhvc2UgdGhhdCBnZW5lcmF0ZSBLZXlEb3du
IGV2ZW50cy4KIAogICAgICAgICAvLyBUZXh0IGFzIGFzIGdlbmVyYXRlZCBieSBwcm9jZXNzaW5n
IGEgdmlydHVhbCBrZXkgY29kZSB3aXRoIGEga2V5Ym9hcmQgbGF5b3V0CkBAIC0xMzksMTYgKzEx
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQoKSBj
b25zdCB7IHJldHVybiBtX2F1dG9SZXBlYXQ7IH0KICAgICAgICAgdm9pZCBzZXRJc0F1dG9SZXBl
YXQoYm9vbCBpbikgeyBtX2F1dG9SZXBlYXQgPSBpbjsgfQogICAgICAgICBib29sIGlzS2V5cGFk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0tleXBhZDsgfQotICAgICAgICBib29sIHNoaWZ0S2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgICAgICBib29sIGN0cmxLZXkoKSBjb25z
dCB7IHJldHVybiBtX2N0cmxLZXk7IH0KLSAgICAgICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJl
dHVybiBtX2FsdEtleTsgfQotICAgICAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBt
X21ldGFLZXk7IH0KLSAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QgewotICAgICAg
ICAgICAgcmV0dXJuIChhbHRLZXkoKSA/IEFsdEtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAo
Y3RybEtleSgpID8gQ3RybEtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAobWV0YUtleSgpID8g
TWV0YUtleSA6IDApCi0gICAgICAgICAgICAgICAgfCAoc2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDog
MCk7Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgYm9vbCBjdXJyZW50Q2Fwc0xvY2tTdGF0
ZSgpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShib29sJiBz
aGlmdEtleSwgYm9vbCYgY3RybEtleSwgYm9vbCYgYWx0S2V5LCBib29sJiBtZXRhS2V5KTsKQEAg
LTE5Myw3ICsxNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIFN0cmluZyBtX3RleHQ7CiAgICAg
ICAgIFN0cmluZyBtX3VubW9kaWZpZWRUZXh0OwogICAgICAgICBTdHJpbmcgbV9rZXlJZGVudGlm
aWVyOwpAQCAtMjAxLDEwICsxNjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGlu
dCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmlydHVhbEtl
eUNvZGU7CiAgICAgICAgIGJvb2wgbV9pc0tleXBhZDsKLSAgICAgICAgYm9vbCBtX3NoaWZ0S2V5
OwotICAgICAgICBib29sIG1fY3RybEtleTsKLSAgICAgICAgYm9vbCBtX2FsdEtleTsKLSAgICAg
ICAgYm9vbCBtX21ldGFLZXk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFJldGFpblB0
cjxOU0V2ZW50PiBtX21hY0V2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1Nb3VzZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Nb3VzZUV2ZW50LmgJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIFBsYXRmb3JtTW91c2VFdmVudF9oCiAKICNpbmNsdWRlICJJbnRQb2lu
dC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5
cGVkZWYgc3RydWN0IF9HZGtFdmVudEJ1dHRvbiBHZGtFdmVudEJ1dHRvbjsKQEAgLTYxLDE4ICs2
MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgLy8gVGhlc2UgYnV0dG9uIG51
bWJlcnMgbWF0Y2ggdGhlIG9uZXMgdXNlZCBpbiB0aGUgRE9NIEFQSSwgMCB0aHJvdWdoIDIsIGV4
Y2VwdCBmb3IgTm9CdXR0b24gd2hpY2ggaXNuJ3Qgc3BlY2lmaWVkLgogICAgIGVudW0gTW91c2VC
dXR0b24geyBOb0J1dHRvbiA9IC0xLCBMZWZ0QnV0dG9uLCBNaWRkbGVCdXR0b24sIFJpZ2h0QnV0
dG9uIH07Ci0gICAgZW51bSBNb3VzZUV2ZW50VHlwZSB7IE1vdXNlRXZlbnRNb3ZlZCwgTW91c2VF
dmVudFByZXNzZWQsIE1vdXNlRXZlbnRSZWxlYXNlZCwgTW91c2VFdmVudFNjcm9sbCB9OwogICAg
IAotICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudCB7CisgICAgY2xhc3MgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IDogcHVibGljIFBsYXRmb3JtRXZlbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50KCkKLSAgICAgICAgICAgIDogbV9idXR0b24oTm9CdXR0b24pCi0gICAg
ICAgICAgICAsIG1fZXZlbnRUeXBlKE1vdXNlRXZlbnRNb3ZlZCkKKyAgICAgICAgICAgIDogUGxh
dGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKQorICAgICAgICAgICAgLCBtX2J1
dHRvbihOb0J1dHRvbikKICAgICAgICAgICAgICwgbV9jbGlja0NvdW50KDApCi0gICAgICAgICAg
ICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAg
ICAgICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbWV0YUtleShmYWxz
ZSkKICAgICAgICAgICAgICwgbV90aW1lc3RhbXAoMCkKICAgICAgICAgICAgICwgbV9tb2RpZmll
ckZsYWdzKDApCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtODMsMTcgKzc5LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBNb3VzZUJ1dHRvbiBidXR0b24sIE1vdXNlRXZlbnRUeXBlIGV2ZW50VHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0LCBib29s
IGN0cmwsIGJvb2wgYWx0LCBib29sIG1ldGEsIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgICAgICAg
ICA6IG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChjb25z
dCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgTW91
c2VCdXR0b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wKQorICAgICAgICAg
ICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFL
ZXkpCisgICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fYnV0dG9uKGJ1
dHRvbikKLSAgICAgICAgICAgICwgbV9ldmVudFR5cGUoZXZlbnRUeXBlKQogICAgICAgICAgICAg
LCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlm
dCkKLSAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmwpCi0gICAgICAgICAgICAsIG1fYWx0S2V5
KGFsdCkKLSAgICAgICAgICAgICwgbV9tZXRhS2V5KG1ldGEpCiAgICAgICAgICAgICAsIG1fdGlt
ZXN0YW1wKHRpbWVzdGFtcCkKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTE0LDcgKzEwNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgaW50IG1vdmVtZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fbW92ZW1lbnREZWx0YS55KCk7
IH0KICNlbmRpZgogICAgICAgICBNb3VzZUJ1dHRvbiBidXR0b24oKSBjb25zdCB7IHJldHVybiBt
X2J1dHRvbjsgfQotICAgICAgICBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2V2ZW50VHlwZTsgfQogICAgICAgICBpbnQgY2xpY2tDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpY2tDb3VudDsgfQogICAgICAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9zaGlmdEtleTsgfQogICAgICAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N0cmxLZXk7IH0KQEAgLTE0Miw3ICsxMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
ZGVmaW5lZChfX09CSkNfXykKICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KE5TRXZlbnQgKiwg
TlNWaWV3ICp3aW5kb3dWaWV3KTsKICNlbmRpZgotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQo
aW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0dG9uIGJ1dHRv
biwgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlLAorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQo
aW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNlQnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaWNrQ291
bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtl
eSwgZG91YmxlIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcik7CiAgICAgICAgIGludCBldmVudE51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KQEAgLTE3MCwxMiArMTYxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbnRQb2ludCBtX21vdmVtZW50RGVsdGE7CiAj
ZW5kaWYKICAgICAgICAgTW91c2VCdXR0b24gbV9idXR0b247Ci0gICAgICAgIE1vdXNlRXZlbnRU
eXBlIG1fZXZlbnRUeXBlOwogICAgICAgICBpbnQgbV9jbGlja0NvdW50OwotICAgICAgICBib29s
IG1fc2hpZnRLZXk7Ci0gICAgICAgIGJvb2wgbV9jdHJsS2V5OwotICAgICAgICBib29sIG1fYWx0
S2V5OwotICAgICAgICBib29sIG1fbWV0YUtleTsKICAgICAgICAgZG91YmxlIG1fdGltZXN0YW1w
OyAvLyB1bml0OiBzZWNvbmRzCiAgICAgICAgIHVuc2lnbmVkIG1fbW9kaWZpZXJGbGFnczsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgJKHJl
dmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxF
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBsYXRmb3Jt
V2hlZWxFdmVudF9oCiAKICNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
RXZlbnQuaCIKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0IF9HZGtFdmVudFNj
cm9sbCBHZGtFdmVudFNjcm9sbDsKQEAgLTg0LDE4ICs4NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50IHsKKyAg
ICBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1FdmVudCB7CiAgICAg
cHVibGljOgogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoKQotICAgICAgICAgICAgOiBtX2Rl
bHRhWCgwKQorICAgICAgICAgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVs
KQorICAgICAgICAgICAgLCBtX2RlbHRhWCgwKQogICAgICAgICAgICAgLCBtX2RlbHRhWSgwKQog
ICAgICAgICAgICAgLCBtX3doZWVsVGlja3NYKDApCiAgICAgICAgICAgICAsIG1fd2hlZWxUaWNr
c1koMCkKICAgICAgICAgICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCkKLSAgICAgICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAgICAgICwgbV9jdHJs
S2V5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgICAgICwg
bV9tZXRhS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURl
dmljZShmYWxzZSkKICNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYg
T1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZh
bHNlKQpAQCAtMTA3LDE3ICsxMDUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9
CiAKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEludFBvaW50IHBvc2l0aW9uLCBJbnRQb2lu
dCBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IHdoZWVs
VGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgbWV0YUtleSkKLSAgICAgICAgICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAg
ICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgc2hpZnRLZXksIGN0cmxL
ZXksIGFsdEtleSwgbWV0YUtleSkKKyAgICAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikK
ICAgICAgICAgICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAgICAg
ICAgICwgbV9kZWx0YVgoZGVsdGFYKQogICAgICAgICAgICAgLCBtX2RlbHRhWShkZWx0YVkpCiAg
ICAgICAgICAgICAsIG1fd2hlZWxUaWNrc1god2hlZWxUaWNrc1gpCiAgICAgICAgICAgICAsIG1f
d2hlZWxUaWNrc1kod2hlZWxUaWNrc1kpCiAgICAgICAgICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3Jh
bnVsYXJpdHkpCi0gICAgICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICAg
ICAsIG1fY3RybEtleShjdHJsS2V5KQotICAgICAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCi0g
ICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQogICAgICAgICAgICAgLCBtX2RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZShmYWxzZSkKICNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9S
TShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzKGZhbHNlKQpAQCAtMTM5LDExICsxMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHko
KSBjb25zdCB7IHJldHVybiBtX2dyYW51bGFyaXR5OyB9CiAKLSAgICAgICAgYm9vbCBzaGlmdEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICAgICAgYm9vbCBjdHJsS2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9Ci0gICAgICAgIGJvb2wgYWx0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICAgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1
cm4gbV9tZXRhS2V5OyB9Ci0KICAgICAgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLngoKTsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KICAgICAgICAgaW50IHko
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLnkoKTsgfQogICAgICAgICBpbnQgZ2xvYmFsWCgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb24ueCgpOyB9IC8vIFNjcmVlbiBjb29yZGlu
YXRlcy4KQEAgLTIwOCwxMCArMTk4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBm
bG9hdCBtX3doZWVsVGlja3NYOwogICAgICAgICBmbG9hdCBtX3doZWVsVGlja3NZOwogICAgICAg
ICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OwotICAgICAgICBi
b29sIG1fc2hpZnRLZXk7Ci0gICAgICAgIGJvb2wgbV9jdHJsS2V5OwotICAgICAgICBib29sIG1f
YWx0S2V5OwotICAgICAgICBib29sIG1fbWV0YUtleTsKICAgICAgICAgYm9vbCBtX2RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZTsKICNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgYm9vbCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
Tm9uZS5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsVG9PZmZzZXRXCiAjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6Onpvb20oY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmIHBnZSkKIHsKLSAgICBBU1NFUlQocGdlLnR5cGUoKSA9PSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZSk7CisgICAgQVNTRVJUKHBnZS50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCk7CiAgICAgLy8gRklYTUU6IG1vZGlmeSB0aGlz
IHNvIHdlIGNhbiBzdGFydCBldmVuIGlmIHRoZSB0aW1lciBpcyBhY3RpdmUuCiAgICAgaWYgKCFt
X2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgbV9jdXJyZW50Wm9vbVNjYWxl
ID0gMTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9vbShj
b25zdCBQbGF0CiAgICAgICAgIG1fem9vbURhdGEubV9kZXNpcmVkVHJhbnNYID0gKDEgLSBzY2Fs
ZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS54KCk7CiAgICAgICAgIG1fem9vbURhdGEubV9kZXNp
cmVkVHJhbnNZID0gKDEgLSBzY2FsZSkgKiBwZ2UuZ2xvYmFsUG9zaXRpb24oKS55KCk7CiAjaWYg
RU5BQkxFKERPVUJMRV9UQVBfQ0VOVEVSUykKLSAgICAgICAgaWYgKHBnZS50eXBlKCkgPT0gUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpIHsKKyAgICAgICAgaWYgKHBnZS50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCkgewogICAgICAgICAgICAgLy8g
Wm9vbSB0byBjZW50cmUgb2YgZGlzcGxheS4gUGluY2gtdG8tem9vbSBtYXkgbm90IHdhbnQgdGhp
cyBiZWhhdmlvdXIuCiAgICAgICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWCArPSBt
X3Njcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSAvIDIgLSBwZ2UuZ2xvYmFsUG9zaXRpb24o
KS54KCk7CiAgICAgICAgICAgICBtX3pvb21EYXRhLm1fZGVzaXJlZFRyYW5zWSArPSBtX3Njcm9s
bGFibGVBcmVhLT52aXNpYmxlSGVpZ2h0KCkgLyAyIC0gcGdlLmdsb2JhbFBvc2l0aW9uKCkueSgp
OwpAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpoYW5kbGVHZXN0
dXJlRXYKIHsKICAgICBUUkFDRV9FVkVOVCgiU2Nyb2xsQW5pbWF0b3JOb25lOjpoYW5kbGVHZXN0
dXJlRXZlbnQiLCB0aGlzLCAwKTsKICAgICBzd2l0Y2ggKHBnZS50eXBlKCkpIHsKLSAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgorICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICAgICAgem9vbShwZ2UpOwogICAgICAgICBicmVh
azsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCShy
ZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mjcs
MjUgKzQyNywyMSBAQCBzdGF0aWMgaW5saW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5
Ym9hcmRFdmVudDo6S2V5RG93bjoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6S2V5RG93bjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OktleURvd247CiAgICAg
Y2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5VXA6Ci0gICAgICAg
IHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwOworICAgICAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6S2V5VXA7CiAgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9h
cmRFdmVudDo6S2V5Q2hhcjoKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpDaGFyOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6Q2hhcjsK
ICAgICB9CiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50IGV2ZW50KQotICAgIDogbV90eXBl
KHRvV2ViQ29yZVBsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUoZXZlbnQudHlwZSgpKSkKKyAgICA6
IFBsYXRmb3JtRXZlbnQodG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShldmVudC50
eXBlKCkpLCBldmVudC5zaGlmdEFjdGl2ZSgpIHx8IChldmVudC5jaGFyYWN0ZXIoKSA9PSBLRVlD
T0RFX0JBQ0tfVEFCKSwgZXZlbnQuY3RybEFjdGl2ZSgpLCBldmVudC5hbHRBY3RpdmUoKSwgZmFs
c2UpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllckZvckJsYWNrQmVycnlDaGFy
YWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpKQogICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQogICAg
ICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JCbGFja0JlcnJ5Q2hh
cmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKSkKICAgICAsIG1faXNLZXlwYWQoZmFsc2UpCi0gICAg
LCBtX3NoaWZ0S2V5KGV2ZW50LnNoaWZ0QWN0aXZlKCkgfHwgKGV2ZW50LmNoYXJhY3RlcigpID09
IEtFWUNPREVfQkFDS19UQUIpKSAvLyBCYWNrVGFiIHNob3VsZCBiZSB0cmVhdGVkIGFzIFNoaWZ0
ICsgVGFiLgotICAgICwgbV9jdHJsS2V5KGV2ZW50LmN0cmxBY3RpdmUoKSkKLSAgICAsIG1fYWx0
S2V5KGV2ZW50LmFsdEFjdGl2ZSgpKQotICAgICwgbV9tZXRhS2V5KGZhbHNlKQogICAgICwgbV91
bm1vZGlmaWVkQ2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKQogewogICAgIHVuc2lnbmVkIHNo
b3J0IGNoYXJhY3RlciA9IGFkanVzdENoYXJhY3RlckZyb21PUyhldmVudC5jaGFyYWN0ZXIoKSk7
CkBAIC00NjEsMTYgKzQ1NywxNiBAQCBib29sIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVu
dENhcHNMCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0
eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCit2b2lkIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlw
ZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQogewogICAgIC8vIENhbiBvbmx5IGNo
YW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sg
aW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAgIEFTU0VSVChtX3R5cGUgPT0g
S2V5RG93bik7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKTsK
ICAgICBtX3R5cGUgPSB0eXBlOwogCiAgICAgaWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICBp
ZiAodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIG1fdGV4dCA9
IFN0cmluZygpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gU3RyaW5nKCk7CiAgICAgfSBl
bHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNv
Z25pemVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDMwOTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE3ICsxMjUsMTcgQEAgYm9vbCBHZXN0
dXJlUmVjb2duaXplckNocm9taXVtOjppc092ZXJNaQogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW06OmFwcGVuZFRhcERvd25HZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJlcy0+YXBw
ZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlw
ZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xh
c3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBt
X21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJz
dFRvdWNoU2NyZWVuUG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRL
ZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2b2lkIEdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVy
ZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFw
VHlwZSwgbV9maXJzdFRvdWNoUG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBt
X2xhc3RUb3VjaFRpbWUsIDAuZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5
LCBtX21ldGFLZXkpKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50
KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsIG1fZmlyc3RUb3VjaFBvc2l0aW9uLCBtX2ZpcnN0
VG91Y2hTY3JlZW5Qb3NpdGlvbiwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtl
eSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAKIHZvaWQgR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bTo6YXBwZW5kRG91YmxlQ2xpY2tHZXN0dXJlRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBn
ZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpEb3VibGVUYXBUeXBlLCBtX2ZpcnN0VG91Y2hQb3NpdGlvbiwgbV9maXJzdFRvdWNoU2NyZWVu
UG9zaXRpb24sIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1fc2hpZnRLZXksIG1fY3RybEtl
eSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1H
ZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCwgbV9maXJzdFRvdWNo
UG9zaXRpb24sIG1fZmlyc3RUb3VjaFNjcmVlblBvc2l0aW9uLCBtX2xhc3RUb3VjaFRpbWUsIDAu
ZiwgMC5mLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0K
IAogUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzIEdlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1U
b3VjaEV2ZW50JiBldmVudCwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQpAQCAtMTU5LDEyICsxNTks
MTIgQEAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzIAogCiB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVCZWdpbihjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQogewotICAg
IGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEJlZ2luVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Q
b3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAwLmYsIDAuZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBt
X2FsdEtleSwgbV9tZXRhS2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1
cmVFdmVudChQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4sIHRvdWNoUG9pbnQucG9z
KCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgMC5mLCAwLmYsIG1f
c2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCiB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OmFwcGVuZFNjcm9sbEdlc3R1cmVFbmQoY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcywgZmxvYXQgeFZl
bG9jaXR5LCBmbG9hdCB5VmVsb2NpdHkpCiB7Ci0gICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9y
bUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgdG91Y2hQ
b2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCB4VmVs
b2NpdHksIHlWZWxvY2l0eSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRh
S2V5KSk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kLCB0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNj
cmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIHhWZWxvY2l0eSwgeVZlbG9jaXR5LCBtX3NoaWZ0
S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAogdm9pZCBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjphcHBlbmRTY3JvbGxHZXN0dXJlVXBkYXRlKGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2VzdHVyZXMgZ2VzdHVyZXMpCkBAIC0xNzIsNyAr
MTcyLDcgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjphcHBlbmRTYwogICAgIGZs
b2F0IGRlbHRhWCh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngo
KSk7CiAgICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9pbnQucG9zKCkueSgpIC0gbV9maXJzdFRvdWNo
UG9zaXRpb24ueSgpKTsKIAotICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZl
bnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGUsIHRvdWNoUG9pbnQucG9z
KCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgZGVsdGFYLCBkZWx0
YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOworICAgIGdl
c3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwg
bV9sYXN0VG91Y2hUaW1lLCBkZWx0YVgsIGRlbHRhWSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBt
X2FsdEtleSwgbV9tZXRhS2V5KSk7CiAgICAgbV9maXJzdFRvdWNoUG9zaXRpb24gPSB0b3VjaFBv
aW50LnBvcygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3Bw
CShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDgg
KzQ4LDggQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBm
cm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9u
IGZvciBvdGhlciBjb252ZXJzaW9ucy4KLSAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOwot
ICAgIEFTU0VSVCh0eXBlID09IFJhd0tleURvd24gfHwgdHlwZSA9PSBDaGFyKTsKKyAgICBBU1NF
UlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24pOworICAgIEFTU0VSVCh0eXBlID09
IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24gfHwgdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFy
KTsKICAgICBtX3R5cGUgPSB0eXBlOwogICAgIGlmIChiYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cENvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NywyNiArMjk3LDI4IEBAIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZVRv
dWNoRXZlbnQoY28KIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIHN3aXRjaCAoZ2Vz
dHVyZUV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5
cGU6IHsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwg
TW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtl
eSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1
cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7Ci0gICAgICAgIFBs
YXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBn
ZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNz
ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVF
dmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFL
ZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xv
YmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJlbGVhc2VkLCAvKiBjbGlja0Nv
dW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgp
LCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVF
dmVudC50aW1lc3RhbXAoKSk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwOiB7
CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5w
b3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNo
aWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwg
Z2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9u
KCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0
S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2Vz
dHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBn
ZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXko
KSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJl
RXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgICAgICAvLyBo
YW5kbGVNb3VzZU1vdmVFdmVudChmYWtlTW91c2VNb3ZlKTsKICAgICAgICAgaGFuZGxlTW91c2VE
b3duRXZlbnQoZmFrZU1vdXNlRG93bik7CiAgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlRG91YmxlVGFwOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlU2Nyb2xsVXBkYXRlOiB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0
aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFs
UG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCks
IGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIDEyMC4wZiwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpIC8g
MTIwLjBmLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCks
IGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2
ZW50Lm1ldGFLZXkoKSk7CiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxF
dmVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6U2Nyb2xsRW5kVHlwZToKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3du
VHlwZToKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBj
YXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlVGFwRG93bjoKICAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94
LmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDEyICsxOTksMTIgQEAg
c3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJUeXBlRXZlbnQoY29uc3QgUAogICAgIC8vIFdlIHVzZSBS
YXdLZXlEb3duL0NoYXIvS2V5VXAgZXZlbnQgc2NoZW1lIG9uIGFsbCBwbGF0Zm9ybXMsCiAgICAg
Ly8gc28gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyIChub3QgUmF3S2V5RG93bikgdHlwZSBl
dmVudAogICAgIC8vIGlzIGNvbnNpZGVyZWQgYXMgY2hhcmFjdGVyIHR5cGUgZXZlbnQuCi0gICAg
cmV0dXJuIGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAg
cmV0dXJuIGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyOwogfQogCiBib29sIFBv
cHVwTGlzdEJveDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBl
dmVudCkKIHsKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
S2V5VXApCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW51bUl0ZW1zKCkgJiYgZXZlbnQud2luZG93
c1ZpcnR1YWxLZXlDb2RlKCkgIT0gVktFWV9FU0NBUEUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21p
dW1NYWMubW0JKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4
Myw5ICs4ODMsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZVdoCiAK
IHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7Ci0gICAgaWYgKGdlc3R1cmVF
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKKyAg
ICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xs
QmVnaW4pCiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVyZSgpOwotICAgIGVsc2UgaWYgKGdlc3R1
cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCisg
ICAgZWxzZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJl
U2Nyb2xsRW5kKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJlKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRFZmwuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMg
KzQwLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXZlbnQpCi0g
ICAgOiBtX3R5cGUoS2V5RG93bikKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlm
dCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRyb2wi
KSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJBbHQiKSwgZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAgICAgLCBt
X3RleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSkKICAgICAsIG1fdW5tb2RpZmll
ZFRleHQoU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSkKLSAgICAsIG1fc2hpZnRLZXko
ZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJTaGlmdCIpKQotICAg
ICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAi
Q29udHJvbCIpKQotICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50
LT5tb2RpZmllcnMsICJBbHQiKSkKLSAgICAsIG1fbWV0YUtleShldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKIHsKICAgICBTdHJpbmcga2V5TmFtZSA9
IFN0cmluZyhldmVudC0+a2V5KTsKICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVy
Rm9yRXZhc0tleU5hbWUoa2V5TmFtZSk7CkBAIC01OCwxMiArNTQsOCBAQCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFCiB9CiAKIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldmVudCkKLSAg
ICA6IG1fdHlwZShLZXlVcCkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
VXAsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSwg
ZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIiksIGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV90ZXh0
KFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZykpCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNf
a2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1f
Y3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkNvbnRy
b2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9k
aWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiB7CiAgICAgU3RyaW5nIGtleU5hbWUgPSBTdHJp
bmcoZXZlbnQtPmtleSk7CiAgICAgbV9rZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllckZvckV2
YXNLZXlOYW1lKGtleU5hbWUpOwpAQCAtNzksNyArNzEsNyBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlEb3duKTsKICAg
ICBtX3R5cGUgPSB0eXBlOwogCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgIGlm
ICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0ID0g
U3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9IGVs
c2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVu
dEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtTW91c2VFdmVudEVmbC5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw0MyArNDgsMzEgQEAgdm9pZCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OnNldENsaWNrQ291bnQo
dQogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBJbnRQb2ludCBwb3NpdGlvbikKLSAgICA6IG1fcG9z
aXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2Fu
dmFzLnkgLSBwb3NpdGlvbi55KCkpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50
OjpNb3VzZVByZXNzZWQsIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiU2hpZnQiKSwgZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJD
b250cm9sIiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQWx0
IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQor
ICAgICwgbV9wb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi54KCks
IGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KEludFBvaW50KGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNhbnZhcy55KSkKICAgICAsIG1fYnV0
dG9uKE1vdXNlQnV0dG9uKGV2ZW50LT5idXR0b24gLSAxKSkKLSAgICAsIG1fZXZlbnRUeXBlKE1v
dXNlRXZlbnRQcmVzc2VkKQotICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19z
ZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlf
bW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2Fs
dEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQot
ICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJz
LCAiTWV0YSIpKQogICAgICwgbV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkKIHsKICAgICBzZXRD
bGlja0NvdW50KGV2ZW50LT5mbGFncyk7CiB9CiAKIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZv
cm1Nb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ZW50LCBJbnRQb2ludCBw
b3NpdGlvbikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9z
aXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQorICAgIDogUGxhdGZv
cm1FdmVudChQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLCBldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNoaWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJvbCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
ZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQt
Pm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAsIG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmNh
bnZhcy54IC0gcG9zaXRpb24ueCgpLCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi55KCkpKQog
ICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5j
YW52YXMueSkpCiAgICAgLCBtX2J1dHRvbihNb3VzZUJ1dHRvbihldmVudC0+YnV0dG9uIC0gMSkp
Ci0gICAgLCBtX2V2ZW50VHlwZShNb3VzZUV2ZW50UmVsZWFzZWQpCi0gICAgLCBtX3NoaWZ0S2V5
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAg
ICAsIG1fY3RybEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywg
IkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVu
dC0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBtX21ldGFLZXkoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KGV2ZW50LT5tb2RpZmllcnMsICJNZXRhIikpCiAgICAgLCBtX3RpbWVzdGFtcChjdXJy
ZW50VGltZSgpKQogewogICAgIHNldENsaWNrQ291bnQoZXZlbnQtPmZsYWdzKTsKIH0KIAogUGxh
dGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9Nb3ZlKiBldmVudCwgSW50UG9pbnQgcG9zaXRpb24pCi0gICAgOiBtX3Bvc2l0aW9uKEludFBv
aW50KGV2ZW50LT5jdXIuY2FudmFzLnggLSBwb3NpdGlvbi54KCksIGV2ZW50LT5jdXIuY2FudmFz
LnkgLSBwb3NpdGlvbi55KCkpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNo
aWZ0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiQ29udHJv
bCIpLCBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpLCBl
dmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAs
IG1fcG9zaXRpb24oSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCAtIHBvc2l0aW9uLngoKSwg
ZXZlbnQtPmN1ci5jYW52YXMueSAtIHBvc2l0aW9uLnkoKSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0
aW9uKEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLngsIGV2ZW50LT5jdXIuY2FudmFzLnkpKQog
ICAgICwgbV9idXR0b24oTW91c2VCdXR0b24oZXZlbnQtPmJ1dHRvbnMgLSAxKSkKLSAgICAsIG1f
ZXZlbnRUeXBlKE1vdXNlRXZlbnRNb3ZlZCkKICAgICAsIG1fY2xpY2tDb3VudCgwKQotICAgICwg
bV9zaGlmdEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZlbnQtPm1vZGlmaWVycywgIlNo
aWZ0IikpCi0gICAgLCBtX2N0cmxLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2ZW50LT5t
b2RpZmllcnMsICJDb250cm9sIikpCi0gICAgLCBtX2FsdEtleShldmFzX2tleV9tb2RpZmllcl9p
c19zZXQoZXZlbnQtPm1vZGlmaWVycywgIkFsdCIpKQotICAgICwgbV9tZXRhS2V5KGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChldmVudC0+bW9kaWZpZXJzLCAiTWV0YSIpKQogICAgICwgbV90aW1l
c3RhbXAoY3VycmVudFRpbWUoKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwuY3BwCShyZXZpc2lvbiAxMDMw
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTMgKzQzLDEwIEBAIGVudW0gewogfTsKIAogUGxh
dGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCogZXYpCi0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2LT5jYW52YXMueCwgZXYt
PmNhbnZhcy55KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIGV2
YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiU2hpZnQiKSwgZXZhc19rZXlf
bW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJDb250cm9sIiksIGV2YXNfa2V5X21vZGlm
aWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQWx0IiksIGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChldi0+bW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICwgbV9wb3NpdGlvbihJbnRQb2ludChldi0+
Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50
KGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xs
QnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBtX3NoaWZ0S2V5KGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChldi0+bW9kaWZpZXJzLCAiU2hpZnQiKSkKLSAgICAsIG1fY3RybEtleShldmFzX2tleV9t
b2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkNvbnRyb2wiKSkKLSAgICAsIG1fYWx0S2V5
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQWx0IikpCi0gICAgLCBt
X21ldGFLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJNZXRhIikp
CiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKIHsKICAgICAvLyBB
IG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgKGluIEVGTCkgdGhhdCB3ZSBhcmUgc2Nyb2xsaW5nIGRv
d24sIHNvIHdlIG5lZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIFN0cmluZyBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OnNpbmdsZUNoYXIKIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIG90aGVy
IHBsYXRmb3JtIGV2ZW50IGNvbnN0cnVjdG9ycwogLy8gVE9ETzogbV9nZGtFdmVudEtleSBzaG91
bGQgYmUgcmVmY291bnRlZAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQotICAgIDogbV90eXBlKChldmVudC0+dHlwZSA9PSBH
REtfS0VZX1JFTEVBU0UpID8gS2V5VXAgOiBLZXlEb3duKQorICAgIDogUGxhdGZvcm1FdmVudCgo
ZXZlbnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDog
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgKGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLKSB8
fCAoZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFiKSwgZXZlbnQtPnN0YXRlICYgR0RL
X0NPTlRST0xfTUFTSywgZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSywgZXZlbnQtPnN0YXRl
ICYgR0RLX01FVEFfTUFTSykKICAgICAsIG1fdGV4dChzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXZl
bnQtPmtleXZhbCkpCiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KHNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9y
R2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSkKQEAgLTU1NSwxMCArNTU1LDYgQEAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogICAgICwgbV93aW5kb3dzVmlydHVhbEtl
eUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQogICAgICwg
bV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+a2V5dmFsKQogICAgICwgbV9pc0tleXBhZChl
dmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAmJiBldmVudC0+a2V5dmFsIDw9IEdES19LUF85
KQotICAgICwgbV9zaGlmdEtleSgoZXZlbnQtPnN0YXRlICYgR0RLX1NISUZUX01BU0spIHx8IChl
dmVudC0+a2V5dmFsID09IEdES18zMjcwX0JhY2tUYWIpKQotICAgICwgbV9jdHJsS2V5KGV2ZW50
LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCi0gICAgLCBtX2FsdEtleShldmVudC0+c3RhdGUg
JiBHREtfTU9EMV9NQVNLKQotICAgICwgbV9tZXRhS2V5KGV2ZW50LT5zdGF0ZSAmIEdES19NRVRB
X01BU0spCiAgICAgLCBtX2dka0V2ZW50S2V5KGV2ZW50KQogewogfQpAQCAtNTcyLDcgKzU2OCw3
IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUKICAgICBpZiAoYmFj
a3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUg
PT0gUmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pIHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRl
eHQgPSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAJKHJldmlzaW9uIDEw
MzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw5IEBAIFBsYXRmb3JtTW91c2VFdmVu
dDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEcKICAgICBjYXNlIEdES18yQlVUVE9OX1BSRVNTOgogICAg
IGNhc2UgR0RLXzNCVVRUT05fUFJFU1M6CiAgICAgY2FzZSBHREtfQlVUVE9OX1JFTEVBU0U6Ci0g
ICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgIG1fdHlwZSA9
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgaWYgKGV2ZW50LT50eXBlID09
IEdES19CVVRUT05fUkVMRUFTRSkgewotICAgICAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2
ZW50UmVsZWFzZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJl
bGVhc2VkOwogICAgICAgICAgICAgbV9jbGlja0NvdW50ID0gMDsKICAgICAgICAgfSBlbHNlIGlm
IChldmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1BSRVNTKQogICAgICAgICAgICAgbV9jbGlja0Nv
dW50ID0gMTsKQEAgLTg3LDcgKzg3LDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoRwogCiAgICAgc3dpdGNoIChtb3Rpb24tPnR5cGUpIHsKICAgICBjYXNlIEdES19N
T1RJT05fTk9USUZZOgotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRNb3ZlZDsKKyAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAgbV9idXR0
b24gPSBOb0J1dHRvbjsKICAgICAgICAgbV9jbGlja0NvdW50ID0gMDsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1X
aGVlbEV2ZW50R3RrLmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDggQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoRwogewog
ICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkZWx0YSA9IDE7CiAKKyAgICBtX3R5cGUgPSBQbGF0Zm9y
bUV2ZW50OjpXaGVlbDsKKwogICAgIG1fZGVsdGFYID0gMDsKICAgICBtX2RlbHRhWSA9IDA7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9LZXlFdmVudElPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5RXZlbnRJT1MubW0JKHJldmlz
aW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9LZXlFdmVudElPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTAsMTcgKzUwLDEzIEBAIHN0YXRpYyBTdHJpbmcga2V5SWRl
bnRpZmllckZvcktleUV2ZW50KFcKIH0KIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoV2ViRXZlbnQgKmV2ZW50KQotICAgIDogbV90eXBlKGV2ZW50LnR5cGUg
PT0gV2ViRXZlbnRLZXlVcCA/IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXAgOiBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OktleURvd24pCisgICAgOiBQbGF0Zm9ybUV2ZW50KGV2ZW50LnR5cGUg
PT0gV2ViRXZlbnRLZXlVcCA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tTaGlmdCwgZXZl
bnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb250cm9sLCBldmVudC5tb2RpZmll
ckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSwgZXZlbnQubW9kaWZpZXJGbGFncyAm
IFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kKQogICAgICwgbV90ZXh0KGV2ZW50LmNoYXJhY3RlcnMp
CiAgICAgLCBtX3VubW9kaWZpZWRUZXh0KGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cykKICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQp
KQogICAgICwgbV9hdXRvUmVwZWF0KGV2ZW50LmlzS2V5UmVwZWF0aW5nKQogICAgICwgbV93aW5k
b3dzVmlydHVhbEtleUNvZGUoZXZlbnQua2V5Q29kZSkKICAgICAsIG1faXNLZXlwYWQoZmFsc2Up
IC8vIGlQaG9uZSBkb2VzIG5vdCBkaXN0aW5ndWlzaCB0aGUgbnVtcGFkIDxyZGFyOi8vcHJvYmxl
bS83MTkwODM1PgotICAgICwgbV9zaGlmdEtleShldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZl
bnRGbGFnTWFza1NoaWZ0KQotICAgICwgbV9jdHJsS2V5KGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBX
ZWJFdmVudEZsYWdNYXNrQ29udHJvbCkKLSAgICAsIG1fYWx0S2V5KGV2ZW50Lm1vZGlmaWVyRmxh
Z3MgJiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlKQotICAgICwgbV9tZXRhS2V5KGV2ZW50Lm1v
ZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZCkKICAgICAsIG1fRXZlbnQoZXZl
bnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LnR5cGUgPT0gV2ViRXZlbnRLZXlEb3duIHx8IGV2ZW50
LnR5cGUgPT0gV2ViRXZlbnRLZXlVcCk7CkBAIC05NCw3ICs5MCw3IEBAIHZvaWQgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGUKICAgICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5
TW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgewor
ICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90
ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAg
ICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1h
Yy5tbQkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tl
eUV2ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIGlu
dCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRQogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCkKLSAgICA6IG1fdHlwZShp
c0tleVVwRXZlbnQoZXZlbnQpID8gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCA6IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93bikKKyAgICA6IFBsYXRmb3JtRXZlbnQoaXNLZXlVcEV2
ZW50KGV2ZW50KSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmll
ckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0
ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykK
ICAgICAsIG1fdGV4dCh0ZXh0RnJvbUV2ZW50KGV2ZW50KSkKICAgICAsIG1fdW5tb2RpZmllZFRl
eHQodW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpKQogICAgICwgbV9rZXlJZGVudGlmaWVy
KGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCkpCkBAIC0xOTcsMTAgKzE5Nyw2IEBAIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKICAgICAsIG1fd2luZG93c1Zp
cnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoZXZlbnQpKQogICAgICwgbV9u
YXRpdmVWaXJ0dWFsS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pCiAgICAgLCBtX2lzS2V5cGFkKGlz
S2V5cGFkRXZlbnQoZXZlbnQpKQotICAgICwgbV9zaGlmdEtleShbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAsIG1fY3RybEtleShbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAgICwgbV9hbHRLZXkoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQotICAgICwgbV9tZXRhS2V5KFtldmVudCBtb2RpZmll
ckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAgICAgLCBtX21hY0V2ZW50KGV2ZW50KQogewog
ICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRv
IHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5t
bQkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtTW91c2VFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDU3ICsxMTksNDkgQEAg
SW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50ICpldgogICAgIH0KIH0KIAotc3Rh
dGljIE1vdXNlRXZlbnRUeXBlIG1vdXNlRXZlbnRGb3JOU0V2ZW50KE5TRXZlbnQqIGV2ZW50KSAK
K3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1vdXNlRXZlbnRGb3JOU0V2ZW50KE5TRXZlbnQq
IGV2ZW50KSAKIHsKICAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewogICAgIGNhc2UgTlNTY3Jv
bGxXaGVlbDoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRTY3JvbGw7CisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50OjpNb3VzZVNjcm9sbDsKICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dl
ZDoKICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6CiAgICAgY2FzZSBOU090aGVyTW91c2VE
cmFnZ2VkOgogICAgIGNhc2UgTlNNb3VzZU1vdmVkOgotICAgICAgICByZXR1cm4gTW91c2VFdmVu
dE1vdmVkOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICBj
YXNlIE5TTGVmdE1vdXNlRG93bjoKICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246CiAgICAgY2Fz
ZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICByZXR1cm4gTW91c2VFdmVudFByZXNzZWQ7Cisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAgICAgY2FzZSBOU0xl
ZnRNb3VzZVVwOgogICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6CiAgICAgY2FzZSBOU090aGVyTW91
c2VVcDoKLSAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIE1vdXNlRXZlbnRNb3ZlZDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQ7CiAgICAgfQogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVu
dChOU0V2ZW50KiBldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQotICAgIDogbV9wb3NpdGlvbihw
b2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKKyAgICA6IFBsYXRmb3JtRXZlbnQobW91
c2VFdmVudEZvck5TRXZlbnQoZXZlbnQpLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0
S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU0NvbW1hbmRLZXlNYXNrKQorICAgICwgbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2
ZW50LCB3aW5kb3dWaWV3KSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JF
dmVudChldmVudCkpCiAgICAgLCBtX2J1dHRvbihtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSkK
LSAgICAsIG1fZXZlbnRUeXBlKG1vdXNlRXZlbnRGb3JOU0V2ZW50KGV2ZW50KSkKICAgICAsIG1f
Y2xpY2tDb3VudChjbGlja0NvdW50Rm9yRXZlbnQoZXZlbnQpKQotICAgICwgbV9zaGlmdEtleShb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAsIG1fY3RybEtleShb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAgICwgbV9hbHRLZXko
W2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQotICAgICwgbV9tZXRh
S2V5KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAgICAgLCBtX3Rp
bWVzdGFtcChbZXZlbnQgdGltZXN0YW1wXSkKICAgICAsIG1fbW9kaWZpZXJGbGFncyhbZXZlbnQg
bW9kaWZpZXJGbGFnc10pCiAgICAgLCBtX2V2ZW50TnVtYmVyKFtldmVudCBldmVudE51bWJlcl0p
CiB7CiB9CiAKLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4LCBp
bnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIE1vdXNl
RXZlbnRUeXBlIGV2ZW50VHlwZSwKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2
ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBi
dXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICBpbnQg
Y2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9v
bCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9p
bnQoeCwgeSkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBh
bHRLZXksIG1ldGFLZXkpCisgICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KHgsIHkpKQogICAgICwg
bV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChnbG9iYWxYLCBnbG9iYWxZKSkKICAgICAsIG1fYnV0
dG9uKGJ1dHRvbikKLSAgICAsIG1fZXZlbnRUeXBlKGV2ZW50VHlwZSkKICAgICAsIG1fY2xpY2tD
b3VudChjbGlja0NvdW50KQotICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKLSAgICAsIG1fY3Ry
bEtleShjdHJsS2V5KQotICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICwgbV9tZXRhS2V5KG1l
dGFLZXkpCiAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCiAgICAgLCBtX21vZGlmaWVyRmxh
Z3MobW9kaWZpZXJGbGFncykKICAgICAsIG1fZXZlbnROdW1iZXIoZXZlbnROdW1iZXIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMzEsOSArMTAzMSw5IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQKIAogdm9pZCBTY3JvbGxBbmltYXRv
ck1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRXZlbnQpCiB7Ci0gICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKKyAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pCiAgICAgICAgIGJlZ2luU2Nyb2xs
R2VzdHVyZSgpOwotICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCisgICAgZWxzZSBpZiAoZ2VzdHVyZUV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kKQogICAgICAgICBlbmRTY3Jv
bGxHZXN0dXJlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVl
bEV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
aGVlbEV2ZW50TWFjLm1tCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTAsMTMgKzkwLDEw
IEBAIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZUZvckUKIH0KIAogUGxhdGZv
cm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAq
d2luZG93VmlldykKLSAgICA6IG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93
VmlldykpCisgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYg
TlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlN
YXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKQorICAgICwgbV9w
b3NpdGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkpCiAgICAgLCBtX2dyYW51bGFyaXR5
KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9zaGlmdEtleShbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAsIG1fY3RybEtleShbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQotICAgICwgbV9hbHRLZXkoW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQotICAgICwgbV9tZXRhS2V5KFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCiAgICAgLCBtX3BoYXNlKHBoYXNlRm9y
RXZlbnQoZXZlbnQpKQogICAgICwgbV9tb21lbnR1bVBoYXNlKG1vbWVudHVtUGhhc2VGb3JFdmVu
dChldmVudCkpCiAgICAgLCBtX3RpbWVzdGFtcChbZXZlbnQgdGltZXN0YW1wXSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRRdC5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk2LDcgKzU5
Niw3IEBAIHN0YXRpYyBTdHJpbmcga2V5VGV4dEZvcktleUV2ZW50KGNvbnN0IFEKIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KFFLZXlFdmVudCogZXZlbnQpCiB7
CiAgICAgY29uc3QgaW50IHN0YXRlID0gZXZlbnQtPm1vZGlmaWVycygpOwotICAgIG1fdHlwZSA9
IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6S2V5UmVsZWFzZSkgPyBLZXlVcCA6IEtleURvd247
CisgICAgbV90eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlSZWxlYXNlKSA/IFBs
YXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKICAgICBtX3RleHQg
PSBrZXlUZXh0Rm9yS2V5RXZlbnQoZXZlbnQpOwogICAgIG1fdW5tb2RpZmllZFRleHQgPSBtX3Rl
eHQ7IC8vIEZJWE1FOiBub3QgY29ycmVjdAogICAgIG1fa2V5SWRlbnRpZmllciA9IGtleUlkZW50
aWZpZXJGb3JRdEtleUNvZGUoZXZlbnQtPmtleSgpKTsKQEAgLTYxNCwxMCArNjE0LDEwIEBAIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEUKIHZvaWQgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSB0eXBlLCBib29sKQogewog
ICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9y
IENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgotICAg
IEFTU0VSVChtX3R5cGUgPT0gS2V5RG93bik7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duKTsKICAgICBtX3R5cGUgPSB0eXBlOwogCi0gICAgaWYgKHR5cGUgPT0g
UmF3S2V5RG93bikgeworICAgIGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24p
IHsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQg
PSBTdHJpbmcoKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAkocmV2aXNpb24gMTAzMDk0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMsNDIgQEAgc3RhdGljIHZvaWQgbW91c2VFdmVudE1v
ZGlmaWVyc0Zyb21RdEtleQogICAgIHNoaWZ0S2V5ID0ga2V5Ym9hcmRNb2RpZmllcnMgJiBRdDo6
U2hpZnRNb2RpZmllcjsKIH0KIAotc3RhdGljIHZvaWQgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1
dHRvbkZyb21RRXZlbnQoY29uc3QgUUV2ZW50KiBldmVudCwgTW91c2VFdmVudFR5cGUmIG1vdXNl
RXZlbnRUeXBlLCBNb3VzZUJ1dHRvbiYgbW91c2VCdXR0b24pCitzdGF0aWMgdm9pZCBtb3VzZUV2
ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChjb25zdCBRRXZlbnQqIGV2ZW50LCBQbGF0
Zm9ybUV2ZW50OjpUeXBlJiBtb3VzZUV2ZW50VHlwZSwgTW91c2VCdXR0b24mIG1vdXNlQnV0dG9u
KQogewogICAgIGVudW0geyBNb3VzZUV2ZW50LCBHcmFwaGljc1NjZW5lTW91c2VFdmVudCB9IGZy
YW1ld29ya01vdXNlRXZlbnRUeXBlOwogICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUoKSkgewogICAg
IGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENsaWNrOgogICAgIGNhc2UgUUV2ZW50OjpNb3Vz
ZUJ1dHRvblByZXNzOgogICAgICAgICBmcmFtZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZl
bnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAg
IG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlOgogICAgICAgICBmcmFt
ZXdvcmtNb3VzZUV2ZW50VHlwZSA9IE1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBl
ID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUV2ZW50OjpN
b3VzZU1vdmU6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudDsK
LSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1vdXNl
RXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7CiAj
aWYgIWRlZmluZWQoUVRfTk9fR1JBUEhJQ1NWSUVXKQogICAgIGNhc2UgUUV2ZW50OjpHcmFwaGlj
c1NjZW5lTW91c2VEb3VibGVDbGljazoKICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1v
dXNlUHJlc3M6CiAgICAgICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQ7Ci0gICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7
CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlUmVsZWFz
ZToKICAgICAgICAgZnJhbWV3b3JrTW91c2VFdmVudFR5cGUgPSBHcmFwaGljc1NjZW5lTW91c2VF
dmVudDsKLSAgICAgICAgbW91c2VFdmVudFR5cGUgPSBNb3VzZUV2ZW50UmVsZWFzZWQ7CisgICAg
ICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3VzZU1vdmU6CiAgICAg
ICAgIGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ7Ci0g
ICAgICAgIG1vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudE1vdmVkOworICAgICAgICBtb3VzZUV2
ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGZyYW1ld29ya01vdXNlRXZlbnRUeXBlID0gTW91c2VFdmVudDsKLSAgICAgICAgbW91c2VFdmVu
dFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUGxhdGZv
cm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC04NiwxMiAr
ODYsMTIgQEAgc3RhdGljIHZvaWQgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbgogICAgIHN3
aXRjaCAoZnJhbWV3b3JrTW91c2VFdmVudFR5cGUpIHsKICAgICBjYXNlIE1vdXNlRXZlbnQ6IHsK
ICAgICAgICAgY29uc3QgUU1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxjb25z
dCBRTW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICAgICAgbW91c2VCdXR0b25zID0gbW91c2VFdmVu
dFR5cGUgPT0gTW91c2VFdmVudE1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9ucygpIDogbW91c2VF
dmVudC0+YnV0dG9uKCk7CisgICAgICAgIG1vdXNlQnV0dG9ucyA9IG1vdXNlRXZlbnRUeXBlID09
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25zKCkgOiBtb3Vz
ZUV2ZW50LT5idXR0b24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhp
Y3NTY2VuZU1vdXNlRXZlbnQ6IHsKICAgICAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUUdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50Kj4oZXZlbnQpOwotICAgICAgICBtb3VzZUJ1dHRvbnMgPSBtb3VzZUV2ZW50VHlwZSA9PSBN
b3VzZUV2ZW50TW92ZWQgPyBtb3VzZUV2ZW50LT5idXR0b25zKCkgOiBtb3VzZUV2ZW50LT5idXR0
b24oKTsKKyAgICAgICAgbW91c2VCdXR0b25zID0gbW91c2VFdmVudFR5cGUgPT0gUGxhdGZvcm1F
dmVudDo6TW91c2VNb3ZlZCA/IG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSA6IG1vdXNlRXZlbnQtPmJ1
dHRvbigpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpAQCAtMTEzLDcgKzExMywxMCBA
QCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChRCiAKICAgICAvLyBGSVhN
RTogV2h5IGRvbid0IHdlIGhhbmRsZSBhIGNvbnRleHQgbWVudSBldmVudCBoZXJlIGFzIHdlIGRv
IGluIFBsYXRmb3JtTW91c2VFdmVudChRSW5wdXRFdmVudCosIGludCk/CiAgICAgLy8gU2VlIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA3Mjg+LgotICAgIG1vdXNl
RXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGV2ZW50LCBtX2V2ZW50VHlwZSwgbV9i
dXR0b24pOworICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZTsKKyAgICBtb3VzZUV2ZW50VHlw
ZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChldmVudCwgdHlwZSwgbV9idXR0b24pOworCisgICAg
bV90eXBlID0gdHlwZTsKICAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoZXZlbnQtPnBvcygpLnRv
UG9pbnQoKSk7CiAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGV2ZW50LT5zY3JlZW5Q
b3MoKSk7CiAKQEAgLTEzMCw3ICsxMzMsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3Jt
TW91c2VFdmVudChRCiAjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCiAgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gUUV2ZW50OjpDb250ZXh0TWVudSkgewogICAgICAgICBpc0NvbnRleHRNZW51RXZl
bnQgPSB0cnVlOwotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOworICAg
ICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CiAgICAgICAgIFFDb250
ZXh0TWVudUV2ZW50KiBjZSA9IHN0YXRpY19jYXN0PFFDb250ZXh0TWVudUV2ZW50Kj4oZXZlbnQp
OwogICAgICAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoY2UtPnBvcygpKTsKICAgICAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGNlLT5nbG9iYWxQb3MoKSk7CkBAIC0xMzgsOCArMTQx
LDExIEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFEKICAgICB9CiAj
ZW5kaWYKICAgICBpZiAoIWlzQ29udGV4dE1lbnVFdmVudCkgewotICAgICAgICBtb3VzZUV2ZW50
VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChldmVudCwgbV9ldmVudFR5cGUsIG1fYnV0dG9u
KTsKKyAgICAgICAgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlOworICAgICAgICBtb3VzZUV2ZW50
VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChldmVudCwgdHlwZSwgbV9idXR0b24pOwogICAg
ICAgICBRTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50Kj4o
ZXZlbnQpOworCisgICAgICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgICAgIG1fcG9zaXRpb24gPSBJ
bnRQb2ludChtb3VzZUV2ZW50LT5wb3MoKSk7CiAgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJ
bnRQb2ludChtb3VzZUV2ZW50LT5nbG9iYWxQb3MoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OSwxMyArNTksMTAgQEAgdm9pZCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OmFwcGx5RGVs
dGEoaW50IAogCiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChRR3JhcGhp
Y3NTY2VuZVdoZWVsRXZlbnQqIGUpCiAjaWZuZGVmIFFUX05PX1dIRUVMRVZFTlQKLSAgICA6IG1f
cG9zaXRpb24oZS0+cG9zKCkudG9Qb2ludCgpKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9y
bUV2ZW50OjpXaGVlbCwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllciwgZS0+bW9k
aWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpBbHRN
b2RpZmllciwgZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0YU1vZGlmaWVyKQorICAgICwgbV9wb3Np
dGlvbihlLT5wb3MoKS50b1BvaW50KCkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGUtPnNjcmVl
blBvcygpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkKLSAg
ICAsIG1fc2hpZnRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcikKLSAgICAs
IG1fY3RybEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIpCi0gICAgLCBt
X2FsdEtleShlLT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllcikKLSAgICAsIG1fbWV0YUtl
eShlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCiAgICAgLCBtX2RpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZShmYWxzZSkKICNlbmRpZgogewpAQCAtNzgsMTMgKzc1LDEwIEBAIFBs
YXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KFEKIAogUGxhdGZvcm1XaGVlbEV2
ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGUpCiAjaWZuZGVmIFFUX05PX1dI
RUVMRVZFTlQKLSAgICA6IG1fcG9zaXRpb24oZS0+cG9zKCkpCisgICAgOiBQbGF0Zm9ybUV2ZW50
KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlmaWVy
LCBlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIsIGUtPm1vZGlmaWVycygpICYg
UXQ6OkFsdE1vZGlmaWVyLCBlLT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpCisgICAg
LCBtX3Bvc2l0aW9uKGUtPnBvcygpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihlLT5nbG9iYWxQ
b3MoKSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAg
LCBtX3NoaWZ0S2V5KGUtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0TW9kaWZpZXIpCi0gICAgLCBt
X2N0cmxLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQotICAgICwgbV9h
bHRLZXkoZS0+bW9kaWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIpCi0gICAgLCBtX21ldGFLZXko
ZS0+bW9kaWZpZXJzKCkgJiBRdDo6TWV0YU1vZGlmaWVyKQogICAgICwgbV9kaXJlY3Rpb25JbnZl
cnRlZEZyb21EZXZpY2UoZmFsc2UpCiAjZW5kaWYKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyLDkgKzE0Miw5IEBAIHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXkK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQoV1BBUkFNIGNvZGUsIExQQVJB
TSBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdHlwZSkKK3N0YXRpYyBib29s
IGlzS2V5cGFkRXZlbnQoV1BBUkFNIGNvZGUsIExQQVJBTSBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50
OjpUeXBlIHR5cGUpCiB7Ci0gICAgaWYgKHR5cGUgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpS
YXdLZXlEb3duICYmIHR5cGUgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCkKKyAgICBp
ZiAodHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duICYmIHR5cGUgIT0gUGxhdGZvcm1F
dmVudDo6S2V5VXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoY29kZSkg
ewpAQCAtMTg3LDE4ICsxODcsMTQgQEAgc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChXUEFSQU0g
Y29kZSwgTAogc3RhdGljIGlubGluZSBTdHJpbmcgc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFVDaGFy
IGMpIHsgcmV0dXJuIFN0cmluZygmYywgMSk7IH0KIAogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoSFdORCwgV1BBUkFNIGNvZGUsIExQQVJBTSBrZXlEYXRhLCBU
eXBlIHR5cGUsIGJvb2wgc3lzdGVtS2V5KQotICAgIDogbV90eXBlKHR5cGUpCi0gICAgLCBtX3Rl
eHQoKHR5cGUgPT0gQ2hhcikgPyBzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoY29kZSkgOiBTdHJpbmco
KSkKLSAgICAsIG1fdW5tb2RpZmllZFRleHQoKHR5cGUgPT0gQ2hhcikgPyBzaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoY29kZSkgOiBTdHJpbmcoKSkKLSAgICAsIG1fa2V5SWRlbnRpZmllcigodHlwZSA9
PSBDaGFyKSA/IFN0cmluZygpIDoga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKGNvZGUp
KQorICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBHZXRLZXlTdGF0ZShWS19TSElGVCkgJiBISUdI
X0JJVF9NQVNLX1NIT1JULCBHZXRLZXlTdGF0ZShWS19DT05UUk9MKSAmIEhJR0hfQklUX01BU0tf
U0hPUlQsIEdldEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCwgZmFsc2Up
CisgICAgLCBtX3RleHQoKHR5cGUgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgPyBzaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoY29kZSkgOiBTdHJpbmcoKSkKKyAgICAsIG1fdW5tb2RpZmllZFRleHQoKHR5
cGUgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgPyBzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoY29kZSkg
OiBTdHJpbmcoKSkKKyAgICAsIG1fa2V5SWRlbnRpZmllcigodHlwZSA9PSBQbGF0Zm9ybUV2ZW50
OjpDaGFyKSA/IFN0cmluZygpIDoga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKGNvZGUp
KQogICAgICwgbV9hdXRvUmVwZWF0KEhJV09SRChrZXlEYXRhKSAmIEtGX1JFUEVBVCkKICAgICAs
IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKCh0eXBlID09IFJhd0tleURvd24gfHwgdHlwZSA9PSBL
ZXlVcCkgPyBjb2RlIDogMCkKICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUobV93aW5kb3dz
VmlydHVhbEtleUNvZGUpCiAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoY29kZSwga2V5
RGF0YSwgdHlwZSkpCi0gICAgLCBtX3NoaWZ0S2V5KEdldEtleVN0YXRlKFZLX1NISUZUKSAmIEhJ
R0hfQklUX01BU0tfU0hPUlQpCi0gICAgLCBtX2N0cmxLZXkoR2V0S2V5U3RhdGUoVktfQ09OVFJP
TCkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9hbHRLZXkoR2V0S2V5U3RhdGUoVktf
TUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JUKQotICAgICwgbV9tZXRhS2V5KGZhbHNlKQogICAg
ICwgbV9pc1N5c3RlbUtleShzeXN0ZW1LZXkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAkocmV2aXNp
b24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VF
dmVudFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIEludFBv
aW50IGdsb2JhbFBvc2l0aW9uRm9yRXZlbnQoSAogICAgIHJldHVybiBwb2ludDsKIH0KIAotc3Rh
dGljIE1vdXNlRXZlbnRUeXBlIG1lc3NhZ2VUb0V2ZW50VHlwZShVSU5UIG1lc3NhZ2UpCitzdGF0
aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtZXNzYWdlVG9FdmVudFR5cGUoVUlOVCBtZXNzYWdlKQog
ewogICAgIHN3aXRjaCAobWVzc2FnZSkgewogICAgICAgICBjYXNlIFdNX0xCVVRUT05EQkxDTEs6
CkBAIC01OCwzNSArNTgsMzIgQEAgc3RhdGljIE1vdXNlRXZlbnRUeXBlIG1lc3NhZ2VUb0V2ZW50
VHlwZQogICAgICAgICBjYXNlIFdNX0xCVVRUT05ET1dOOgogICAgICAgICBjYXNlIFdNX1JCVVRU
T05ET1dOOgogICAgICAgICBjYXNlIFdNX01CVVRUT05ET1dOOgotICAgICAgICAgICAgcmV0dXJu
IE1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUHJlc3NlZDsKIAogICAgICAgICBjYXNlIFdNX0xCVVRUT05VUDoKICAgICAgICAgY2FzZSBX
TV9SQlVUVE9OVVA6CiAgICAgICAgIGNhc2UgV01fTUJVVFRPTlVQOgotICAgICAgICAgICAgcmV0
dXJuIE1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVJlbGVhc2VkOwogCiAjaWYgIU9TKFdJTkNFKQogICAgICAgICBjYXNlIFdNX01PVVNF
TEVBVkU6CiAjZW5kaWYKICAgICAgICAgY2FzZSBXTV9NT1VTRU1PVkU6Ci0gICAgICAgICAgICBy
ZXR1cm4gTW91c2VFdmVudE1vdmVkOworICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQ7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgLy9Nb3ZlIGlzIHJlbGF0aXZlbHkgaGFybWxlc3MKLSAg
ICAgICAgICAgIHJldHVybiBNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKICAgICB9CiB9CisKIFBsYXRmb3JtTW91c2VFdmVudDo6
UGxhdGZvcm1Nb3VzZUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFt
LCBMUEFSQU0gbFBhcmFtLCBib29sIGRpZEFjdGl2YXRlV2ViVmlldykKLSAgICA6IG1fcG9zaXRp
b24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQorICAgIDogUGxhdGZvcm1FdmVudCht
ZXNzYWdlVG9FdmVudFR5cGUobWVzc2FnZSksIHdQYXJhbSAmIE1LX1NISUZULCB3UGFyYW0gJiBN
S19DT05UUk9MLCBHZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQsIEdl
dEtleVN0YXRlKFZLX01FTlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKKyAgICAsIG1fcG9zaXRp
b24ocG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQogICAgICwgbV9nbG9iYWxQb3NpdGlv
bihnbG9iYWxQb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCiAgICAgLCBtX2NsaWNrQ291
bnQoMCkKLSAgICAsIG1fc2hpZnRLZXkod1BhcmFtICYgTUtfU0hJRlQpCi0gICAgLCBtX2N0cmxL
ZXkod1BhcmFtICYgTUtfQ09OVFJPTCkKLSAgICAsIG1fYWx0S2V5KEdldEtleVN0YXRlKFZLX01F
TlUpICYgSElHSF9CSVRfTUFTS19TSE9SVCkKLSAgICAsIG1fbWV0YUtleShtX2FsdEtleSkgLy8g
RklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVzdCBvdGhlciBicm93c2VycwogICAgICwgbV9kaWRBY3Rp
dmF0ZVdlYlZpZXcoZGlkQWN0aXZhdGVXZWJWaWV3KQotICAgICwgbV9ldmVudFR5cGUobWVzc2Fn
ZVRvRXZlbnRUeXBlKG1lc3NhZ2UpKQogICAgICwgbV9tb2RpZmllckZsYWdzKHdQYXJhbSkKIHsK
ICAgICBtX3RpbWVzdGFtcCA9IDo6R2V0VGlja0NvdW50KCkqMC4wMDE7IC8vIEdldFRpY2tDb3Vu
dCByZXR1cm5zIG1pbGxpc2Vjb25kcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1doZWVsRXZlbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9XaGVlbEV2ZW50V2luLmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niwx
MCArNjYsNyBAQCBzdGF0aWMgaW50IHZlcnRpY2FsU2Nyb2xsTGluZXMoKQogfQogCiBQbGF0Zm9y
bVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChIV05EIGhXbmQsIGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uKQotICAgIDogbV9zaGlmdEtleShm
YWxzZSkKLSAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAg
ICwgbV9tZXRhS2V5KGZhbHNlKQorICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpX
aGVlbCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RpcmVjdGlvbkludmVy
dGVkRnJvbURldmljZShmYWxzZSkKIHsKICAgICBtX2RlbHRhWCA9IGRlbHRhLndpZHRoKCk7CkBA
IC04OCwxMiArODUsOSBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChI
CiB9CiAKIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQgaFduZCwg
V1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCBpc01vdXNlSFdoZWVsKQotICAgIDog
bV9wb3NpdGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCisgICAgOiBQbGF0Zm9y
bUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCB3UGFyYW0gJiBNS19TSElGVCwgd1BhcmFtICYg
TUtfQ09OVFJPTCwgR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NIT1JULCBH
ZXRLZXlTdGF0ZShWS19NRU5VKSAmIEhJR0hfQklUX01BU0tfU0hPUlQpCisgICAgLCBtX3Bvc2l0
aW9uKHBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBhcmFtKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZ2xvYmFsUG9zaXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQotICAgICwgbV9zaGlmdEtl
eSh3UGFyYW0gJiBNS19TSElGVCkKLSAgICAsIG1fY3RybEtleSh3UGFyYW0gJiBNS19DT05UUk9M
KQotICAgICwgbV9hbHRLZXkoR2V0S2V5U3RhdGUoVktfTUVOVSkgJiBISUdIX0JJVF9NQVNLX1NI
T1JUKQotICAgICwgbV9tZXRhS2V5KG1fYWx0S2V5KSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0
ZXN0IG90aGVyIGJyb3dzZXJzCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShm
YWxzZSkKIHsKICAgICAvLyBIb3cgbWFueSBwaXhlbHMgc2hvdWxkIHdlIHNjcm9sbCBwZXIgbGlu
ZT8gIEdlY2tvIHVzZXMgdGhlIGhlaWdodCBvZiB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L0tleWJvYXJkRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvS2V5Ym9hcmRFdmVudFd4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM3LDE0ICszMzcsMTQgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KHVucwogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
d3hLZXlFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09IHd4
RVZUX0tFWV9VUCkKLSAgICAgICAgbV90eXBlID0gS2V5VXA7CisgICAgICAgIG1fdHlwZSA9IFBs
YXRmb3JtRXZlbnQ6OktleVVwOwogICAgIGVsc2UgaWYgKGV2ZW50LkdldEV2ZW50VHlwZSgpID09
IHd4RVZUX0tFWV9ET1dOKQotICAgICAgICBtX3R5cGUgPSBLZXlEb3duOworICAgICAgICBtX3R5
cGUgPSBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogICAgIGVsc2UgaWYgKGV2ZW50LkdldEV2ZW50
VHlwZSgpID09IHd4RVZUX0NIQVIpCi0gICAgICAgIG1fdHlwZSA9IENoYXI7CisgICAgICAgIG1f
dHlwZSA9IFBsYXRmb3JtRXZlbnQ6OkNoYXI7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICBpZiAobV90eXBlICE9IENoYXIpCisgICAgaWYgKG1fdHlwZSAhPSBQ
bGF0Zm9ybUV2ZW50OjpDaGFyKQogICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlm
aWVyRm9yV3hLZXlDb2RlKGV2ZW50LkdldEtleUNvZGUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IC8vRU5URVIgaXMgYW4gZWRpdGluZyBjb21tYW5kIHByb2Nlc3NlZCBhcyBhIGNoYXIgKG9ubHkg
RW50ZXIgYW5kIFRhYiBhcmUpCkBAIC0zNzEsOSArMzcxLDkgQEAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpQbGF0Zm9ybUtleWJvYXJkRQogdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2Ft
YmlndWF0ZUtleURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wpCiB7CiAgICAgLy8gQ2FuIG9ubHkg
Y2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFj
ayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lvbnMuCi0gICAgQVNTRVJUKG1fdHlwZSA9
PSBLZXlEb3duKTsKKyAgICBBU1NFUlQobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24p
OwogICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAg
IGlmICh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgbV90ZXh0
ID0gU3RyaW5nKCk7CiAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsKICAgICB9
IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VFdmVudFd4LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3VzZUV2ZW50V3gu
Y3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3Vz
ZUV2ZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNiArMzMsMjUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChj
b25zdCB3eE1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCB3eFBvaW50JiBnbG9iYWxQb2ludCwgaW50
IGNsaWNrQ291bnQpCi0gICAgOiBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCi0gICAg
LCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50KQotICAgICwgbV9zaGlmdEtleShldmVudC5T
aGlmdERvd24oKSkKLSAgICAsIG1fY3RybEtleShldmVudC5DbWREb3duKCkgfHwgZXZlbnQuQ29u
dHJvbERvd24oKSkKLSAgICAsIG1fYWx0S2V5KGV2ZW50LkFsdERvd24oKSkKLSAgICAsIG1fbWV0
YUtleShldmVudC5NZXRhRG93bigpKSAvLyBGSVhNRTogV2UnbGwgaGF2ZSB0byB0ZXN0IG90aGVy
IGJyb3dzZXJzCitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlRnJvbU1vdXNlRXZlbnQo
Y29uc3Qgd3hNb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICB3eEV2ZW50VHlwZSB0eXBlID0gZXZl
bnQuR2V0RXZlbnRUeXBlKCk7Ci0gICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92ZWQ7Ci0g
ICAgCisKICAgICBpZiAodHlwZSA9PSB3eEVWVF9MRUZUX0RPV04gfHwgdHlwZSA9PSB3eEVWVF9N
SURETEVfRE9XTiB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RPV04pCi0gICAgICAgIG1fZXZlbnRU
eXBlID0gTW91c2VFdmVudFByZXNzZWQ7Ci0gICAgCi0gICAgZWxzZSBpZiAodHlwZSA9PSB3eEVW
VF9MRUZUX1VQIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX1VQIHx8IHR5cGUgPT0gd3hFVlRfUklH
SFRfVVAgfHwgCi0gICAgICAgICAgICAgICAgdHlwZSA9PSB3eEVWVF9MRUZUX0RDTElDSyB8fCB0
eXBlID09IHd4RVZUX01JRERMRV9EQ0xJQ0sgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9EQ0xJQ0sp
Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOworICAgIGlmICh0eXBlID09IHd4RVZUX0xF
RlRfVVAgfHwgdHlwZSA9PSB3eEVWVF9NSURETEVfVVAgfHwgdHlwZSA9PSB3eEVWVF9SSUdIVF9V
UCB8fCB0eXBlID09IHd4RVZUX0xFRlRfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfTUlERExFX0RD
TElDSyB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RDTElDSykKKyAgICAgICAgcmV0dXJuIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CisgICAgaWYgKHR5cGUgPT0gd3hFVlRfTU9USU9OKQor
ICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKIAotICAgIGVsc2UgaWYg
KHR5cGUgPT0gd3hFVlRfTU9USU9OKQotICAgICAgICBtX2V2ZW50VHlwZSA9IE1vdXNlRXZlbnRN
b3ZlZDsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKK30KKworUGxhdGZv
cm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50JiBldmVu
dCwgY29uc3Qgd3hQb2ludCYgZ2xvYmFsUG9pbnQsIGludCBjbGlja0NvdW50KQorICAgIDogUGxh
dGZvcm1FdmVudCh0eXBlRnJvbU1vdXNlRXZlbnQoZXZlbnQpLCBldmVudC5TaGlmdERvd24oKSwg
ZXZlbnQuQ21kRG93bigpIHx8IGV2ZW50LkNvbnRyb2xEb3duKCksIGV2ZW50LkFsdERvd24oKSwg
ZXZlbnQuTWV0YURvd24oKSkKKyAgICA6IG1fcG9zaXRpb24oZXZlbnQuR2V0UG9zaXRpb24oKSkK
KyAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnQpCit7CiAKICAgICBpZiAoZXZlbnQu
TGVmdElzRG93bigpIHx8IGV2ZW50LkJ1dHRvbih3eE1PVVNFX0JUTl9MRUZUKSkKICAgICAgICAg
bV9idXR0b24gPSBMZWZ0QnV0dG9uOwpAQCAtNjAsMTEgKzU5LDggQEAgUGxhdGZvcm1Nb3VzZUV2
ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoYwogICAgICAgICBtX2J1dHRvbiA9IFJpZ2h0QnV0dG9u
OwogICAgIGVsc2UgaWYgKGV2ZW50Lk1pZGRsZUlzRG93bigpIHx8IGV2ZW50LkJ1dHRvbih3eE1P
VVNFX0JUTl9NSURETEUpKQogICAgICAgICBtX2J1dHRvbiA9IE1pZGRsZUJ1dHRvbjsKLSAgICBl
bHNlIGlmICghbV9ldmVudFR5cGUgPT0gTW91c2VFdmVudE1vdmVkKQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLQogCi0gICAgaWYgKG1fZXZlbnRUeXBlID09IE1vdXNlRXZlbnRNb3Zl
ZCkKKyAgICBpZiAobV90eXBlID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpCiAgICAgICAg
IG1fY2xpY2tDb3VudCA9IDA7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWNrQ291bnQgPSBjbGlj
a0NvdW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VXaGVlbEV2ZW50
V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlV2hl
ZWxFdmVudFd4LmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd3gvTW91c2VXaGVlbEV2ZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMs
MTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoY29uc3Qgd3hNb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgd3hQb2ludCYgZ2xv
YmFsUG9pbnQpCi0gICAgOiBtX3Bvc2l0aW9uKGV2ZW50LkdldFBvc2l0aW9uKCkpCisgICAgOiBQ
bGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6OldoZWVsLCBldmVudC5TaGlmdERvd24oKSwgZXZl
bnQuQ29udHJvbERvd24oKSwgZXZlbnQuQWx0RG93bigpLCBldmVudC5NZXRhRG93bigpKQorICAg
ICwgbV9wb3NpdGlvbihldmVudC5HZXRQb3NpdGlvbigpKQogICAgICwgbV9nbG9iYWxQb3NpdGlv
bihnbG9iYWxQb2ludCkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQaXhlbFdoZWVsRXZl
bnQpCi0gICAgLCBtX3NoaWZ0S2V5KGV2ZW50LlNoaWZ0RG93bigpKQotICAgICwgbV9jdHJsS2V5
KGV2ZW50LkNvbnRyb2xEb3duKCkpCi0gICAgLCBtX2FsdEtleShldmVudC5BbHREb3duKCkpCi0g
ICAgLCBtX21ldGFLZXkoZXZlbnQuTWV0YURvd24oKSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8g
dGVzdCBvdGhlciBicm93c2VycwogICAgICwgbV9kZWx0YVgoMCkgLy8gd3ggZG9lc24ndCBzdXBw
b3J0IGhvcml6b250YWwgbW91c2Ugd2hlZWwgc2Nyb2xsaW5nCiAgICAgLCBtX2RlbHRhWShldmVu
dC5HZXRXaGVlbFJvdGF0aW9uKCkgLyBldmVudC5HZXRXaGVlbERlbHRhKCkpCiAgICAgLCBtX3do
ZWVsVGlja3NYKG1fZGVsdGFYKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1
Z2luVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9Q
bHVnaW5WaWV3TWFjLm1tCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MjUsMTkgKzYyNSwx
OSBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5CiAgICAgRXZlbnRS
ZWNvcmQgcmVjb3JkOwogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eWRvd25FdmVudCkgewotICAgICAgICAvLyBUaGlzIGV2ZW50IGlzIHRoZSByZXN1bHQgb2YgYSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24gd2hpY2gKKyAgICAgICAgLy8gVGhpcyBldmVu
dCBpcyB0aGUgcmVzdWx0IG9mIGEgUGxhdGZvcm1FdmVudDo6S2V5RG93biB3aGljaAogICAgICAg
ICAvLyB3YXMgZGlzYW1iaWd1YXRlZCBpbnRvIGEgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdL
ZXlEb3duLiBTaW5jZQogICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgdGV4
dCBoZXJlLCB3ZSByZXR1cm4sIGFuZCB3YWl0IGZvciB0aGUKICAgICAgICAgLy8gY29ycmVzcG9u
ZGluZyBldmVudCBiYXNlZCBvbiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIuCiAgICAgICAg
IHJldHVybjsKICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eXByZXNzRXZlbnQpIHsKICAgICAgICAgLy8gV2hpY2ggd291bGQgYmUgdGhpcyBvbmUuIFRoaXMg
ZXZlbnQgd2FzIGRpc2FtYmlndWF0ZWQgZnJvbSB0aGUgc2FtZQotICAgICAgICAvLyBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OktleURvd24sIGJ1dCB0byBhIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Q2hhciwKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudDo6S2V5RG93biwgYnV0IHRvIGEgUGxhdGZv
cm1FdmVudDo6Q2hhciwKICAgICAgICAgLy8gd2hpY2ggcmV0YWlucyB0aGUgdGV4dCBmcm9tIHRo
ZSBvcmlnaW5hbCBldmVudC4gU28sIHdlIGNhbiBzYWZlbHkgcGFzcwogICAgICAgICAvLyBvbiB0
aGUgZXZlbnQgYXMgYSBrZXktZG93biBldmVudCB0byB0aGUgcGx1Z2luLgogICAgICAgICByZWNv
cmQud2hhdCA9IGtleURvd247CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXl1cEV2ZW50KSB7Ci0gICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
S2V5VXAgZXZlbnRzIGFsd2F5cyBoYXZlIHRoZSB0ZXh0LCBzbyBub3RoaW5nCisgICAgICAgIC8v
IFBsYXRmb3JtRXZlbnQ6OktleVVwIGV2ZW50cyBhbHdheXMgaGF2ZSB0aGUgdGV4dCwgc28gbm90
aGluZwogICAgICAgICAvLyBmYW5jeSBoZXJlLgogICAgICAgICByZWNvcmQud2hhdCA9IGtleVVw
OwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShy
ZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Wm9v
bUFuaW1hdG9yVHJhbnNmb3JtCiAgICAgfQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQot
ICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHBnZShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91Ymxl
VGFwVHlwZSwgSW50UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHgsIHR5KSwgMCwgc2NhbGUsIDAu
ZiwgMCwgMCwgMCwgMCk7CisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQgcGdlKFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVEb3VibGVUYXAsIEludFBvaW50KHR4LCB0eSksIEludFBvaW50KHR4LCB0eSks
IDAsIHNjYWxlLCAwLmYsIDAsIDAsIDAsIDApOwogICAgIGRvY3VtZW50LT52aWV3KCktPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQocGdlKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA5NCkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDExLTEyLTE2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2
ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYmFzZSBjbGFzcyBmb3IgUGxhdGZvcm1Nb3VzZUV2
ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQsIFBsYXRmb3JtV2hlZWxFdmVudAorICAgICAgICBh
bmQgUGxhdGZvcm1HZXN0dXJlRXZlbnQgYW5kIG1vdmUgVHlwZSBlbnVtZXJhdGlvbiBhbmQgbW9k
aWZpZXJzIGRvd24gdG8gaXQuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0
MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpXZWJLaXQy
UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJF
ZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZHJhZ0VuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRF
dmVudCk6CisKIDIwMTEtMTItMTYgIFJhZmFlbCBCcmFuZGFvICA8cmFmYWVsLmxvYm9Ab3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gTW92ZSB3ZWJWaWV3LnBhZ2UgaW50byBleHBl
cmltZW50YWwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNp
b24uY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZl
bnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjAgKzM0LDI3IEBAIGNsYXNz
IFdlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQgOiBwdWJsaWMKIHB1YmxpYzoKICAgICBXZWJLaXQy
UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIHdlYkV2ZW50KQogICAgIHsK
KyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUo
KSkgewogICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZURvd246Ci0gICAgICAgICAgICBtX2V2
ZW50VHlwZSA9IFdlYkNvcmU6Ok1vdXNlRXZlbnRQcmVzc2VkOworICAgICAgICAgICAgbV90eXBl
ID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgICAgICBtX2V2ZW50
VHlwZSA9IFdlYkNvcmU6Ok1vdXNlRXZlbnRSZWxlYXNlZDsKKyAgICAgICAgICAgIG1fdHlwZSA9
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VNb3ZlOgotICAgICAgICAgICAgbV9ldmVu
dFR5cGUgPSBXZWJDb3JlOjpNb3VzZUV2ZW50TW92ZWQ7CisgICAgICAgICAgICBtX3R5cGUgPSBX
ZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogCisgICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAg
ICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0g
d2ViRXZlbnQuYWx0S2V5KCk7CisgICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXko
KTsKKworICAgICAgICAvLyBQbGF0Zm9ybU1vdXNlRXZlbnQKICAgICAgICAgc3dpdGNoICh3ZWJF
dmVudC5idXR0b24oKSkgewogICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgog
ICAgICAgICAgICAgbV9idXR0b24gPSBXZWJDb3JlOjpOb0J1dHRvbjsKQEAgLTY5LDEwICs3Niw2
IEBAIHB1YmxpYzoKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCk7CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsK
ICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKLSAgICAgICAgbV9z
aGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdlYkV2
ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsK
LSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOwogCiAgICAgICAgIG1fbW9k
aWZpZXJGbGFncyA9IDA7CiAgICAgICAgIGlmIChtX3NoaWZ0S2V5KQpAQCAtOTksNiArMTAyLDE0
IEBAIGNsYXNzIFdlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQgOiBwdWJsaWMKIHB1YmxpYzoKICAg
ICBXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdlYkV2ZW50
KQogICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUV2ZW50OjpXaGVlbDsKKyAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5
KCk7CisgICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKKyAgICAgICAg
bV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZl
bnQubWV0YUtleSgpOworCisgICAgICAgIC8vIFBsYXRmb3JtV2hlZWxFdmVudAogICAgICAgICBt
X3Bvc2l0aW9uID0gd2ViRXZlbnQucG9zaXRpb24oKTsKICAgICAgICAgbV9nbG9iYWxQb3NpdGlv
biA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fZGVsdGFYID0gd2ViRXZl
bnQuZGVsdGEoKS53aWR0aCgpOwpAQCAtMTA2LDEwICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fd2hlZWxUaWNrc1ggPSB3ZWJFdmVudC53aGVlbFRpY2tzKCkud2lkdGgoKTsKICAgICAgICAg
bV93aGVlbFRpY2tzWSA9IHdlYkV2ZW50LndoZWVsVGlja3MoKS5oZWlnaHQoKTsKICAgICAgICAg
bV9ncmFudWxhcml0eSA9ICh3ZWJFdmVudC5ncmFudWxhcml0eSgpID09IFdlYldoZWVsRXZlbnQ6
OlNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQpID8gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlV2hlZWxFdmVu
dCA6IFdlYkNvcmU6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OwotICAgICAgICBtX3NoaWZ0S2V5
ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29u
dHJvbEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAg
ICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CiAgICAgICAgIG1fZGlyZWN0aW9uSW52
ZXJ0ZWRGcm9tRGV2aWNlID0gd2ViRXZlbnQuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCk7
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHdlYkV2ZW50LnBoYXNlKCkpOwpAQCAtMTI5LDIy
ICsxMzYsMzAgQEAgY2xhc3MgV2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCA6IHB1YgogcHVi
bGljOgogICAgIFdlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYgd2ViRXZlbnQpCiAgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAg
IHN3aXRjaCAod2ViRXZlbnQudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OktleURv
d246Ci0gICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247
CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OktleVVwOgotICAgICAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICAgICAgICAg
IG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OktleVVwOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OlJhd0tleURvd246Ci0gICAgICAgICAgICBtX3R5
cGUgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd247CisgICAgICAgICAgICBtX3R5
cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OkNoYXI6Ci0gICAgICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpDaGFyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAg
ICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOworICAgICAgICBtX2N0cmxLZXkg
PSB3ZWJFdmVudC5jb250cm9sS2V5KCk7CisgICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0
S2V5KCk7CisgICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAg
ICAvLyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQKICAgICAgICAgbV90ZXh0ID0gd2ViRXZlbnQudGV4
dCgpOwogICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gd2ViRXZlbnQudW5tb2RpZmllZFRleHQo
KTsKICAgICAgICAgbV9rZXlJZGVudGlmaWVyID0gd2ViRXZlbnQua2V5SWRlbnRpZmllcigpOwpA
QCAtMTUyLDEwICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmF0aXZlVmlydHVhbEtleUNv
ZGUgPSB3ZWJFdmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpOwogICAgICAgICBtX2F1dG9SZXBl
YXQgPSB3ZWJFdmVudC5pc0F1dG9SZXBlYXQoKTsKICAgICAgICAgbV9pc0tleXBhZCA9IHdlYkV2
ZW50LmlzS2V5cGFkKCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgp
OwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1f
YWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50
Lm1ldGFLZXkoKTsKICAgICAgICAgCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG1ha2UgbV9pc1N5c3RlbUtleSBhdmFpbGFibGUgKGFuZCBmYWxzZSkgb24g
YWxsIHBsYXRmb3JtcwpAQCAtMTc1LDIwICsxODYsMjcgQEAgY2xhc3MgV2ViS2l0MlBsYXRmb3Jt
R2VzdHVyZUV2ZW50IDogcHVibAogcHVibGljOgogICAgIFdlYktpdDJQbGF0Zm9ybUdlc3R1cmVF
dmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIHdlYkV2ZW50KQogICAgIHsKKyAgICAgICAgLy8g
UGxhdGZvcm1FdmVudAogICAgICAgICBzd2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgewogICAgICAg
ICBjYXNlIFdlYkV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46Ci0gICAgICAgICAgICBtX3R5cGUg
PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICAgICAgbV90
eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Ci0g
ICAgICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZTsK
KyAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3Jv
bGxFbmQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVy
ZVNpbmdsZVRhcDoKLSAgICAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpU
YXBUeXBlOworICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVRhcDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAorICAgICAgICBtX3NoaWZ0S2V5
ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKKyAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29u
dHJvbEtleSgpOworICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAg
ICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgLy8gUGxhdGZvcm1H
ZXN0dXJlRXZlbnQKICAgICAgICAgbV9wb3NpdGlvbiA9IHdlYkV2ZW50LnBvc2l0aW9uKCk7CiAg
ICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gPSB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpOwogICAg
ICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTAzMDk0KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNyArNzA2LDcgQEAKIAkJQkNBMEVGOUYxMjMzMjY0
MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjlEMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJF
ZGl0Q29tbWFuZFByb3h5LmggKi87IH07CiAJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBX
ZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQTBFRjlFMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFBy
b3h5LmNwcCAqLzsgfTsKIAkJQkNBMjg0RDYxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI4
NEQ0MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24ubW0gKi87IH07Ci0JCUJDQTI4NEQ3
MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI4NEQ1MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nv
bm5lY3Rpb24uaCAqLzsgfTsKKwkJQkNBMjg0RDcxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNB
Mjg0RDUxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkNBNTZBMUMxMkY5MDI4RTAwQzU2NkM3
IC8qIFdlYkdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNBNTZBMUExMkY5MDI4RTAwQzU2NkM3IC8qIFdlYkdyYXBoaWNzQ29u
dGV4dC5oICovOyB9OwogCQlCQ0E1NkExRDEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3JhcGhpY3ND
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQTU2QTFCMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQuY3BwICovOyB9
OwogCQlCQ0E1NkE2NTEyRjlDOEY5MDBDNTY2QzcgLyogV0tHcmFwaGljc0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTU2QTYzMTJGOUM4
RjkwMEM1NjZDNyAvKiBXS0dyYXBoaWNzQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNs
aWVudEd0ay5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJk
RXZlbgogICAgICAgICAvLyBEdXJpbmcgUmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNv
bW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwgZGVmZXIKICAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1
bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQuIFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAKICAg
ICAgICAgLy8gdGhyb3VnaCB0aGUgRE9NIGZpcnN0LgotICAgICAgICBpZiAocGxhdGZvcm1FdmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgICAg
ICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24p
IHsKICAgICAgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBw
ZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGZhbHNlKSkKICAgICAgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgzLDkg
KzExODMsOCBAQCBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vCiAKICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm1Nb3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VF
dmVudCk7CiAKLSAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC5ldmVudFR5cGUoKSkgewot
ICAgICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRQcmVzc2VkOgotICAgICAgICB7CisgICAg
c3dpdGNoIChwbGF0Zm9ybU1vdXNlRXZlbnQudHlwZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6TW91c2VQcmVzc2VkOiB7CiAgICAgICAgICAgICBpZiAoaXNDb250ZXh0Q2xpY2so
cGxhdGZvcm1Nb3VzZUV2ZW50KSkKICAgICAgICAgICAgICAgICBwYWdlLT5jb250ZXh0TWVudUNv
bnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwogICAgICAgICAgICAgCkBAIC0xMTk1LDEx
ICsxMTk0LDEwIEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW8KIAog
ICAgICAgICAgICAgcmV0dXJuIGhhbmRsZWQ7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpNb3VzZUV2ZW50UmVsZWFzZWQ6CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91
c2VSZWxlYXNlZDoKICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCk7Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6TW91c2VFdmVudE1vdmVkOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQ6CiAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3Vz
ZU1vdmVkKHBsYXRmb3JtTW91c2VFdmVudCwgb25seVVwZGF0ZVNjcm9sbGJhcnMpOwotCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MzIsNyArMTUzMCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2EKIAogICAgIGlmIChpc0tleWJvYXJkRXZlbnRWYWxpZCAm
JiBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pIHsKICAgICAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQpKTsKLSAgICAgICAgcGxh
dGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpSYXdLZXlEb3duKTsKKyAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3du
RXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3
YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwgS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRm
b3JtRXZlbnQsIGZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xOTAzLDcgKzE5MDEsNyBAQCBib29sIFdlYlBhZ2U6Omhh
bmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50CiAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAotICAg
IGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93
bikgeworICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24g
YWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBp
ZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3
ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5
IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJl
IGdlbmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJh
Y3Rlciwgb3IgRW50ZXIpLgpAQCAtMjA1MSw3ICsyMDQ5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmFn
RW5kZWQoV2ViQ29yZTo6SW50UG9pbgogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwog
ICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5
IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4KLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZl
bnQoYWRqdXN0ZWRDbGllbnRQb3NpdGlvbiwgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3Vy
cmVudFRpbWUoKSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50
UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGlt
ZSgpKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJj
ZUVuZGVkQXQoZXZlbnQsIChEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbik7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0JKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIGJv
b2wgV2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnQKICAgICAgICAgICAgICAgICBi
b29sIGNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yID0gY29tbWFuZC5leGVjdXRlKGV2ZW50KTsKICAg
ICAgICAgICAgICAgICBldmVudFdhc0hhbmRsZWQgfD0gY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3I7
CiAgICAgICAgICAgICAgICAgaWYgKCFjb21tYW5kRXhlY3V0ZWRCeUVkaXRvcikgewotICAgICAg
ICAgICAgICAgICAgICBib29sIHBlcmZvcm1lZE5vbkVkaXRpbmdCZWhhdmlvciA9IGV2ZW50LT5r
ZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duICYm
IHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5k
TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgcGVyZm9ybWVkTm9uRWRpdGluZ0JlaGF2
aW9yID0gZXZlbnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duICYmIHBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb21tYW5kc1tpXS5j
b21tYW5kTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBwZXJm
b3JtZWROb25FZGl0aW5nQmVoYXZpb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdL
ZXlib2FyZEV2ZW50CiAgICAgICAgIH0KICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQg
aW5zZXJ0aW9uIGNvbW1hbmRzLCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQg
dGltZSB0byBleGVjdXRlIHRoZSBjb21tYW5kcy4KICAgICAgICAgLy8gS2V5cHJlc3MgKENoYXIg
ZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxhdGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgotICAg
ICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlw
ZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikgeworICAgICAgICBpZiAoIWhhdmVU
ZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6OkNoYXIpIHsKICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCA9IGV4ZWN1dGVLZXlw
cmVzc0NvbW1hbmRzSW50ZXJuYWwoZXZlbnQtPmtleXByZXNzQ29tbWFuZHMoKSwgZXZlbnQpOwog
ICAgICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29tbWFuZHMoKS5jbGVhcigpOwogICAgICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDk0KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
MCBAQAorMjAxMS0xMi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGJhc2UgY2xhc3MgZm9yIFBsYXRmb3JtTW91
c2VFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50LCBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAg
ICAgYW5kIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGFuZCBtb3ZlIFR5cGUgZW51bWVyYXRpb24gYW5k
IG1vZGlmaWVycyBkb3duIHRvIGl0LgorCisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjppbnRlcnByZXRLZXlFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmtleWJvYXJkU2hvcnRjdXQp
OgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXI6OlBsYXRmb3JtTW91c2VFdmVudEJ1aWxk
ZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9y
bVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlRXZl
bnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0
Ojp0b1BsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnU291cmNlRW5kZWRBdCk6
CisgICAgICAgICogdGVzdHMvSW5uZXJHZXN0dXJlUmVjb2duaXplclRlc3QuY3BwOgorICAgICAg
ICAoU2ltdWxhdGVBbmRUZXN0Rmlyc3RDbGljayk6CisgICAgICAgIChURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL0tleWJvYXJkVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVz
dDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6Omlu
dGVycHJldE9TTW9kaWZpZXJLZXlQcmVzcyk6CisgICAgICAgIChXZWJLaXQ6OktleWJvYXJkVGVz
dDo6aW50ZXJwcmV0Q3RybEtleVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6S2V5Ym9hcmRUZXN0
OjppbnRlcnByZXRUYWIpOgorICAgICAgICAoV2ViS2l0OjpLZXlib2FyZFRlc3Q6OmludGVycHJl
dE5ld0xpbmUpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL1Bv
cHVwTWVudVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0Ojpz
aW11bGF0ZUxlZnRNb3VzZURvd25FdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVw
TWVudVRlc3Q6OnNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlRF
U1RfRik6CisKIDIwMTEtMTItMTYgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbY2hyb21pdW1dIERpc2FibGUgY29tcG9zaXRvciBDQ0xheWVyVHJlZUhvc3RU
ZXN0c2V0TmVlZHNDb21taXQxIHRlc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQ0LDcgKzU0NCw3IEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudEltcGw6OmludGVycHJl
dEsKICAgICBpZiAoa2V5RXZlbnQtPm1ldGFLZXkoKSkKICAgICAgICAgbW9kaWZpZXJzIHw9IE1l
dGFLZXk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYg
fCBldnQtPmtleUNvZGUoKTsKICAgICAgICAgcmV0dXJuIG1hcEtleSA/IGtleURvd25Db21tYW5k
c01hcC0+Z2V0KG1hcEtleSkgOiAwOwogICAgIH0KQEAgLTU2Nyw3ICs1NjcsNyBAQCBib29sIEVk
aXRvckNsaWVudEltcGw6OmhhbmRsZUVkaXRpbmdLZXliCiAgICAgU3RyaW5nIGNvbW1hbmROYW1l
ID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KTsKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSk7CiAKLSAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBp
ZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAg
ICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUg
dG8gZGVjaWRlIGhvdwogICAgICAgICAvLyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQg
aWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAgICAgLy8gc28g
d2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVs
eQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjYsMTMgKzU2NiwxMyBAQCBXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6a2V5Ym9h
CiAgICAgICAgIC8vIEZvbGxvdyB0aGUgc2FtZSBvcmRlciBhcyBNb3ppbGxhIE1TQUEgaW1wbGVt
ZW50YXRpb246CiAgICAgICAgIC8vIEN0cmwrQWx0K1NoaWZ0K01ldGEra2V5LiBNU0ROIHN0YXRl
cyB0aGF0IGtleWJvYXJkIHNob3J0Y3V0IHN0cmluZ3MKICAgICAgICAgLy8gc2hvdWxkIG5vdCBi
ZSBsb2NhbGl6ZWQgYW5kIGRlZmluZXMgdGhlIHNlcGFyYXRvciBhcyAiKyIuCi0gICAgICAgIGlm
IChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkN0cmxLZXkpCisgICAgICAgIGlm
IChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5KQogICAgICAgICAgICAgbW9kaWZp
ZXJTdHJpbmcgKz0gIkN0cmwrIjsKLSAgICAgICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6QWx0S2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1FdmVu
dDo6QWx0S2V5KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIkFsdCsiOwotICAgICAg
ICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpTaGlmdEtleSkKKyAgICAg
ICAgaWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KQogICAgICAgICAgICAg
bW9kaWZpZXJTdHJpbmcgKz0gIlNoaWZ0KyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6Ok1ldGFLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0
Zm9ybUV2ZW50OjpNZXRhS2V5KQogICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIldpbisi
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVu
dENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NSwxNSArNzUsMTUgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxh
dGZvcm1Nb3VzZQogICAgIHN3aXRjaCAoZS50eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpNb3VzZU1vdmU6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZUxlYXZlOiAgLy8gc3lu
dGhlc2l6ZSBhIG1vdmUgZXZlbnQKLSAgICAgICAgbV9ldmVudFR5cGUgPSBNb3VzZUV2ZW50TW92
ZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZURvd246Ci0gICAgICAgIG1f
ZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgIG1fZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2Vk
OworICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwogICAgICAg
ICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBAIC0xMDMsNiArMTAzLDggQEAgUGxhdGZvcm1XaGVl
bEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbAogICAgIG1fd2hlZWxUaWNrc1kgPSBlLndoZWVs
VGlja3NZOwogICAgIG1fZ3JhbnVsYXJpdHkgPSBlLnNjcm9sbEJ5UGFnZSA/CiAgICAgICAgIFNj
cm9sbEJ5UGFnZVdoZWVsRXZlbnQgOiBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsKKyAgICAKKyAg
ICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKICAgICBtX3NoaWZ0S2V5ID0gKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpOwogICAgIG1fY3RybEtleSA9IChlLm1v
ZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwogICAgIG1fYWx0S2V5ID0gKGUu
bW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKQEAgLTEyMiwxNiArMTI0LDE2IEBA
IFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXMKIHsKICAgICBzd2l0Y2gg
KGUudHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgot
ICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOwor
ICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKLSAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKLSAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU7CisgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKLSAgICAgICAgbV90
eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU7CisgICAgICAgIG1fdHlwZSA9IFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXA7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTUwLDIxICsxNTIsMjEgQEAgUGxhdGZv
cm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlcwogCiAvLyBNYWtlUGxhdGZvcm1LZXli
b2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHRvUGxhdGZv
cm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCitzdGF0aWMgaW5s
aW5lIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdlYklu
cHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6OktleVVwOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlVcDsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OktleVVwOwogICAgIGNhc2Ug
V2ViSW5wdXRFdmVudDo6S2V5RG93bjoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6S2V5RG93bjsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6OktleURvd247CiAg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOgotICAgICAgICByZXR1cm4gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bjsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNoYXI6Ci0gICAgICAgIHJl
dHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpDaGFyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KLSAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOwogfQogCiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnRCdWlsZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMDUsNyArMjIwNSw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KAogewogICAgIFBsYXRmb3JtTW91c2VFdmVudCBw
bWUoY2xpZW50UG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5Qb2ludCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRC
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgMCk7CiAgICAgbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KHBtZSwKICAgICAgICAg
c3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6
ZXJUZXN0LmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
MywxNCArMTczLDE0IEBAIHZvaWQgU2ltdWxhdGVBbmRUZXN0Rmlyc3RDbGljayhJbnNwZWN0YWIK
ICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NFdmVudChXZWJDb3JlOjpUb3Vj
aFN0YXJ0LCBwcmVzcywgMTAwMC4pOwogICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2Vz
dHVyZXMocHJlc3NFdmVudCwgZmFsc2UpKTsKICAgICBBU1NFUlRfRVEoKHVuc2lnbmVkIGludCkx
LCBnZXN0dXJlU3RhcnQtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJU
X0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duLCAoKmdlc3R1cmVTdGFydClbMF0udHlw
ZSgpKTsKICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6UGVuZGluZ1N5
bnRoZXRpY0NsaWNrLCBnbS5zdGF0ZSgpKTsKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQ
b2ludCByZWxlYXNlKDEwLCAxNiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsK
ICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlRv
dWNoRW5kLCByZWxlYXNlLCAxMDAwLiArIDAuNyk7CiAgICAgT3duUHRyPFZlY3RvcjxXZWJDb3Jl
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgodW5zaWdu
ZWQgaW50KTEsIGdlc3R1cmVFbmQtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpUYXBUeXBlLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJU
X0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsK
IH0KIAogdHlwZWRlZiBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50
PiA+IEdlc3R1cmVzOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXpl
clRlc3QsIERJU0FCTEVEX2QKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NF
dmVudChXZWJDb3JlOjpUb3VjaFN0YXJ0LCBwcmVzcywgMTAwMCArIC41KTsKICAgICBHZXN0dXJl
cyBnZXN0dXJlU3RhcnQoZ20ucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhwcmVzc0V2ZW50
LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgxdSwgZ2VzdHVyZVN0YXJ0LT5zaXplKCkpOwotICAg
IEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGUsICgqZ2VzdHVyZVN0
YXJ0KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFw
RG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUoKSk7CiAK
ICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgxMCwgMTYsIFBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hNb3ZlZCk7CkBAIC0zMzksOCArMzM5LDggQEAgVEVTVF9GKEdlc3R1cmVS
ZWNvZ25pemVyVGVzdCwgRElTQUJMRURfZAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVu
dCByZWxlYXNlRXZlbnQoV2ViQ29yZTo6VG91Y2hFbmQsIHJlbGVhc2UsIDEwMDAgKyAuNSArIC4w
Mik7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1
cmVzKHJlbGVhc2VFdmVudCwgZmFsc2UpKTsKICAgICBBU1NFUlRfRVEoMnUsIGdlc3R1cmVFbmQt
PnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlLCAo
Kmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpEb3VibGVUYXBUeXBlLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJU
X0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsK
KyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcCwgKCpnZXN0dXJl
RW5kKVswXS50eXBlKCkpOwogICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVt
OjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwogfQogCkBAIC0zNTQsMjIgKzM1NCwyMiBAQCBURVNU
X0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCBkb3VibGVUYXBHCiAgICAgQnVpbGRhYmxlUGxhdGZv
cm1Ub3VjaEV2ZW50IHByZXNzRXZlbnQoV2ViQ29yZTo6VG91Y2hTdGFydCwgcHJlc3MsIDEwMDAu
ICsgMC43ICsgMC4wMSk7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3Vj
aEV2ZW50Rm9yR2VzdHVyZXMocHJlc3NFdmVudCwgZmFsc2UpKTsKICAgICBBU1NFUlRfRVEoMXUs
IGdlc3R1cmVTdGFydC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlRhcERvd25UeXBlLCAoKmdlc3R1cmVTdGFydClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRf
RVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBl
KCkpOwogICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3lu
dGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOwogCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBv
aW50IG1vdmUoMTAsIDUwLCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQpOwogICAgIEJ1
aWxkYWJsZVBsYXRmb3JtVG91Y2hFdmVudCBtb3ZlRXZlbnQoV2ViQ29yZTo6VG91Y2hNb3ZlLCBt
b3ZlLCAxMDAwLiArIDAuNyArIDAuMDIpOwogICAgIEdlc3R1cmVzIGdlc3R1cmVNb3ZlKGdtLnBy
b2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMobW92ZUV2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VS
VF9FUSgydSwgZ2VzdHVyZU1vdmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUsICgqZ2VzdHVyZU1vdmUpWzBdLnR5cGUoKSk7Ci0g
ICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlLCAoKmdl
c3R1cmVNb3ZlKVsxXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW4sICgqZ2VzdHVyZU1vdmUpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJUX0VR
KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGUsICgqZ2VzdHVyZU1vdmUpWzFdLnR5
cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlNjcm9sbCwg
Z20uc3RhdGUoKSk7CiAKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgcmVsZWFzZSgx
MCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7CiAgICAgQnVpbGRhYmxl
UGxhdGZvcm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFz
ZSwgMTAwMC4gKyAwLjcgKyAwLjAzKTsKICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nl
c3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VS
VF9FUSgxdSwgZ2VzdHVyZUVuZC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKKyAgICBB
U1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZCwgKCpnZXN0dXJlRW5kKVsw
XS50eXBlKCkpOwogICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dl
c3R1cmUsIGdtLnN0YXRlKCkpOwogfQogCkBAIC0zODUsMTQgKzM4NSwxNCBAQCBURVNUX0YoR2Vz
dHVyZVJlY29nbml6ZXJUZXN0LCBkb3VibGVUYXBHCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3Vj
aEV2ZW50IHByZXNzRXZlbnQoV2ViQ29yZTo6VG91Y2hTdGFydCwgcHJlc3MsIDEwMDAuICsgMC43
ICsgMC4wMSk7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZXMocHJlc3NFdmVudCwgZmFsc2UpKTsKICAgICBBU1NFUlRfRVEoMXUsIGdlc3R1
cmVTdGFydC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRh
cERvd25UeXBlLCAoKmdlc3R1cmVTdGFydClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxh
dGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOwog
ICAgIEFTU0VSVF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3ludGhldGlj
Q2xpY2ssIGdtLnN0YXRlKCkpOwogCiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IHJl
bGVhc2UoYXdheUZyb21GaXJzdENsaWNrLngoKSwgYXdheUZyb21GaXJzdENsaWNrLnkoKSwgUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkKTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRv
dWNoRXZlbnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlLCAxMDAwLiAr
IDAuNyArIDAuMDI1KTsKICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2
ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgxdSwg
Z2VzdHVyZUVuZC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcFR5cGUsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZv
cm1FdmVudDo6R2VzdHVyZVRhcCwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOwogICAgIEFTU0VS
VF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwog
fQogCkBAIC00MDUsMjEgKzQwNSwyMSBAQCBURVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCB0
YXBEb3duV2l0CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHByZXNzRXZlbnQoV2Vi
Q29yZTo6VG91Y2hTdGFydCwgcHJlc3MpOwogICAgIEdlc3R1cmVzIGdlc3R1cmVTdGFydChnbS5w
cm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHByZXNzRXZlbnQsIGZhbHNlKSk7CiAgICAgQVNT
RVJUX0VRKDF1LCBnZXN0dXJlU3RhcnQtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZSwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7Cisg
ICAgQVNTRVJUX0VRKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duLCAoKmdlc3R1cmVTdGFy
dClbMF0udHlwZSgpKTsKICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6
UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBnbS5zdGF0ZSgpKTsKIAogICAgIEJ1aWxkYWJsZVBsYXRm
b3JtVG91Y2hQb2ludCBtb3ZlKDEwLCA1MCwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVk
KTsKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgbW92ZUV2ZW50KFdlYkNvcmU6OlRv
dWNoTW92ZSwgbW92ZSk7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZU1vdmUoZ20ucHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlcyhtb3ZlRXZlbnQsIGZhbHNlKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBnZXN0dXJlTW92ZS0+c2l6ZSgpOyBpKyspCi0gICAgICAgIEFTU0VSVF9O
RShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZSwgKCpnZXN0dXJlTW92ZSlbaV0udHlwZSgp
KTsKKyAgICAgICAgQVNTRVJUX05FKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsICgqZ2VzdHVy
ZU1vdmUpW2ldLnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW06OlNjcm9sbCwgZ20uc3RhdGUoKSk7CiAKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9p
bnQgcmVsZWFzZSgxMCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCk7CiAg
ICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpUb3Vj
aEVuZCwgcmVsZWFzZSk7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hF
dmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVudCwgZmFsc2UpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGdlc3R1cmVFbmQtPnNpemUoKTsgaSsrKQotICAgICAgICBBU1NFUlRf
TkUoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGUsICgqZ2VzdHVyZUVuZClbaV0udHlwZSgp
KTsKKyAgICAgICAgQVNTRVJUX05FKFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXAsICgqZ2VzdHVy
ZUVuZClbaV0udHlwZSgpKTsKICAgICBBU1NFUlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1
bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsKIH0KIApAQCAtNDMyLDcgKzQzMiw3IEBAIFRFU1Rf
RihHZXN0dXJlUmVjb2duaXplclRlc3QsIHRhcERvd25XaXQKICAgICBCdWlsZGFibGVQbGF0Zm9y
bVRvdWNoRXZlbnQgcHJlc3NFdmVudChXZWJDb3JlOjpUb3VjaFN0YXJ0LCBwcmVzcywgMTAwMC4p
OwogICAgIEdlc3R1cmVzIGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1
cmVzKHByZXNzRXZlbnQsIGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKDF1LCBnZXN0dXJlU3RhcnQt
PnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlw
ZSwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJUX0VRKFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVUYXBEb3duLCAoKmdlc3R1cmVTdGFydClbMF0udHlwZSgpKTsKICAgICBBU1NF
UlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrLCBn
bS5zdGF0ZSgpKTsKIAogICAgIEJ1aWxkYWJsZVBsYXRmb3JtVG91Y2hQb2ludCBtb3ZlKDEwLCAx
NiwgUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCBU
RVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCB0YXBEb3duV2l0CiAgICAgQnVpbGRhYmxlUGxh
dGZvcm1Ub3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFzZSwg
MTAwMC4gKyAwLjAxMSk7CiAgICAgR2VzdHVyZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hF
dmVudEZvckdlc3R1cmVzKHJlbGVhc2VFdmVudCwgZmFsc2UpKTsKICAgICBBU1NFUlRfRVEoMXUs
IGdlc3R1cmVFbmQtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpUYXBUeXBlLCAoKmdlc3R1cmVFbmQpWzBdLnR5cGUoKSk7CisgICAgQVNTRVJUX0VRKFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVUYXAsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKICAgICBBU1NF
UlRfRVEoR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6Tm9HZXN0dXJlLCBnbS5zdGF0ZSgpKTsK
IH0KIApAQCAtNDYxLDcgKzQ2MSw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIG5v
RG91YmxlVGEKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZlbnQgcHJlc3NFdmVudChXZWJD
b3JlOjpUb3VjaFN0YXJ0LCBwcmVzcywgMTAwMCArIC44ICsgMTAgKyAuMSk7CiAgICAgR2VzdHVy
ZXMgZ2VzdHVyZVN0YXJ0KGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMocHJlc3NFdmVu
dCwgZmFsc2UpKTsKICAgICBBU1NFUlRfRVEoMXUsIGdlc3R1cmVTdGFydC0+c2l6ZSgpKTsKLSAg
ICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBlLCAoKmdlc3R1cmVT
dGFydClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRh
cERvd24sICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOwogICAgIEFTU0VSVF9FUShHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpQZW5kaW5nU3ludGhldGljQ2xpY2ssIGdtLnN0YXRlKCkpOwog
CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1Ub3VjaFBvaW50IG1vdmUoMTAsIDE2LCBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoTW92ZWQpOwpAQCAtNDc0LDcgKzQ3NCw3IEBAIFRFU1RfRihHZXN0dXJl
UmVjb2duaXplclRlc3QsIG5vRG91YmxlVGEKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZl
bnQgcmVsZWFzZUV2ZW50KFdlYkNvcmU6OlRvdWNoRW5kLCByZWxlYXNlLCAxMDAwICsgLjggKyAx
MCArIC4xICsgLjAyKTsKICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2
ZW50Rm9yR2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgxdSwg
Z2VzdHVyZUVuZC0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcFR5cGUsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoUGxhdGZv
cm1FdmVudDo6R2VzdHVyZVRhcCwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOwogICAgIEFTU0VS
VF9FUShHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpOb0dlc3R1cmUsIGdtLnN0YXRlKCkpOwog
fQogCkBAIC00OTgsMTAgKzQ5OCwxMCBAQCBURVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCBn
ZXN0dXJlU2NyCiAgICAgYm9vbCBzY3JvbGxTdGFydGVkID0gZmFsc2UsIHNjcm9sbFVwZGF0ZWQg
PSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdlc3R1cmVTdGFydC0+
c2l6ZSgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoICgoKmdlc3R1cmVTdGFydClbaV0udHlwZSgp
KSB7Ci0gICAgICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToK
KyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CiAgICAgICAg
ICAgICBzY3JvbGxTdGFydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOgorICAgICAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6CiAgICAgICAgICAgICBzY3JvbGxV
cGRhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAt
NTE5LDcgKzUxOSw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIGdlc3R1cmVTY3IK
ICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMo
cmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
Z2VzdHVyZUVuZC0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoICgoKmdlc3R1cmVFbmQp
W2ldLnR5cGUoKSkgewotICAgICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxF
bmRUeXBlOgorICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CiAg
ICAgICAgICAgICBzY3JvbGxFbmQgPSB0cnVlOwogICAgICAgICAgICAgQVNTRVJUX0VRKCgqZ2Vz
dHVyZUVuZClbaV0uZGVsdGFYKCksIDApOwogICAgICAgICAgICAgQVNTRVJUX0VRKCgqZ2VzdHVy
ZUVuZClbaV0uZGVsdGFZKCksIDApOwpAQCAtNTQxLDcgKzU0MSw3IEBAIFRFU1RfRihHZXN0dXJl
UmVjb2duaXplclRlc3QsIGZsaWNrR2VzdHUKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoRXZl
bnQgcHJlc3NFdmVudChXZWJDb3JlOjpUb3VjaFN0YXJ0LCBwcmVzcywgMTAwMC4pOwogICAgIEdl
c3R1cmVzIGdlc3R1cmVTdGFydChnbS5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHByZXNz
RXZlbnQsIGZhbHNlKSk7CiAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpMSwgZ2VzdHVyZVN0
YXJ0LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93
blR5cGUsICgqZ2VzdHVyZVN0YXJ0KVswXS50eXBlKCkpOworICAgIEFTU0VSVF9FUShQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlVGFwRG93biwgKCpnZXN0dXJlU3RhcnQpWzBdLnR5cGUoKSk7CiAgICAg
QVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBlbmRpbmdTeW50aGV0aWNDbGlj
aywgZ20uc3RhdGUoKSk7CiAKICAgICBCdWlsZGFibGVQbGF0Zm9ybVRvdWNoUG9pbnQgbW92ZSgx
MCwgNTAsIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZCk7CkBAIC01NTAsMTAgKzU1MCwx
MCBAQCBURVNUX0YoR2VzdHVyZVJlY29nbml6ZXJUZXN0LCBmbGlja0dlc3R1CiAgICAgYm9vbCBz
Y3JvbGxTdGFydGVkID0gZmFsc2UsIHNjcm9sbFVwZGF0ZWQgPSBmYWxzZTsKICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGdlc3R1cmVNb3ZlLT5zaXplKCk7IGkrKykgewogICAgICAg
ICBzd2l0Y2ggKCgqZ2VzdHVyZU1vdmUpW2ldLnR5cGUoKSkgewotICAgICAgICBjYXNlIFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgICAgICAgICAgc2Nyb2xsU3RhcnRlZCA9IHRy
dWU7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6U2Nyb2xsVXBkYXRlVHlwZToKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJl
U2Nyb2xsVXBkYXRlOgogICAgICAgICAgICAgc2Nyb2xsVXBkYXRlZCA9IHRydWU7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTU2OSw3ICs1NjksNyBAQCBURVNUX0Yo
R2VzdHVyZVJlY29nbml6ZXJUZXN0LCBmbGlja0dlc3R1CiAgICAgQnVpbGRhYmxlUGxhdGZvcm1U
b3VjaEV2ZW50IHJlbGVhc2VFdmVudChXZWJDb3JlOjpUb3VjaEVuZCwgcmVsZWFzZSwgMTAwMC4g
KyAwLjA2KTsKICAgICBHZXN0dXJlcyBnZXN0dXJlRW5kKGdtLnByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZXMocmVsZWFzZUV2ZW50LCBmYWxzZSkpOwogICAgIEFTU0VSVF9FUSgodW5zaWduZWQg
aW50KSAxLCBnZXN0dXJlRW5kLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUShQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSwgKCpnZXN0dXJlRW5kKVswXS50eXBlKCkpOworICAgIEFT
U0VSVF9FUShQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kLCAoKmdlc3R1cmVFbmQpWzBd
LnR5cGUoKSk7CiAgICAgQVNTRVJUX0VRKCgqZ2VzdHVyZUVuZClbMF0uZGVsdGFYKCksIDApOwog
ICAgIEFTU0VSVF9FUSgoKmdlc3R1cmVFbmQpWzBdLmRlbHRhWSgpLCAxNzUwLik7CiAgICAgQVNT
RVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06Ok5vR2VzdHVyZSwgZ20uc3RhdGUoKSk7
CkBAIC03MzksNyArNzM5LDcgQEAgVEVTVF9GKEdlc3R1cmVSZWNvZ25pemVyVGVzdCwgc2FtcGxl
RmxpYwogICAgICAgICAvLyBGaXJzdCBldmVudCAoVG91Y2hTdGFydCkgc2hvdWxkIHByb2R1Y2Ug
YSBUb3VjaERvd24gZ2VzdHVyZQogICAgICAgICBHZXN0dXJlcyBnZXN0dXJlU3RhcnQoZ20ucHJv
Y2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhzYW1wbGVGbGlja1NlcXVlbmNlW2ldLm1fZGF0YVsw
XS0+bV9ldmVudCwgZmFsc2UpKTsKICAgICAgICAgQVNTRVJUX0VRKCh1bnNpZ25lZCBpbnQpMSwg
Z2VzdHVyZVN0YXJ0LT5zaXplKCkpIDw8IGZhaWx1cmVNZXNzYWdlOwotICAgICAgICBBU1NFUlRf
RVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBlLCAoKmdlc3R1cmVTdGFydClbMF0u
dHlwZSgpKSA8PCBmYWlsdXJlTWVzc2FnZTsKKyAgICAgICAgQVNTRVJUX0VRKFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVUYXBEb3duLCAoKmdlc3R1cmVTdGFydClbMF0udHlwZSgpKSA8PCBmYWlsdXJl
TWVzc2FnZTsKICAgICAgICAgQVNTRVJUX0VRKEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OlBl
bmRpbmdTeW50aGV0aWNDbGljaywgZ20uc3RhdGUoKSkgPDwgZmFpbHVyZU1lc3NhZ2U7CiAKICAg
ICAgICAgLy8gVGhlbiB3ZSBoYXZlIGEgYnVuY2ggb2YgVG91Y2hNb3ZlIGV2ZW50cwpAQCAtNzQ5
LDcgKzc0OSw3IEBAIFRFU1RfRihHZXN0dXJlUmVjb2duaXplclRlc3QsIHNhbXBsZUZsaWMKICAg
ICAgICAgLy8gTGFzdCBldmVudCAoVG91Y2hFbmQpIHNob3VsZCBnZW5lcmF0ZSBhIEZsaWNrIGdl
c3R1cmUKICAgICAgICAgR2VzdHVyZXMgZ2VzdHVyZUVuZChnbS5wcm9jZXNzVG91Y2hFdmVudEZv
ckdlc3R1cmVzKHNhbXBsZUZsaWNrU2VxdWVuY2VbaV0ubV9kYXRhW3NhbXBsZUZsaWNrU2VxdWVu
Y2VbaV0ubV9uIC0gMV0tPm1fZXZlbnQsIGZhbHNlKSk7CiAgICAgICAgIEFTU0VSVF9FUSgodW5z
aWduZWQgaW50KSAxLCBnZXN0dXJlRW5kLT5zaXplKCkpIDw8IGZhaWx1cmVNZXNzYWdlOwotICAg
ICAgICBBU1NFUlRfRVEoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUsICgqZ2Vz
dHVyZUVuZClbMF0udHlwZSgpKSA8PCBmYWlsdXJlTWVzc2FnZTsKKyAgICAgICAgQVNTRVJUX0VR
KFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQsICgqZ2VzdHVyZUVuZClbMF0udHlwZSgp
KSA8PCBmYWlsdXJlTWVzc2FnZTsKICAgICAgICAgZG91YmxlIHhWZWxvY2l0eSA9ICgqZ2VzdHVy
ZUVuZClbMF0uZGVsdGFYKCk7CiAgICAgICAgIGRvdWJsZSB5VmVsb2NpdHkgPSAoKmdlc3R1cmVF
bmQpWzBdLmRlbHRhWSgpOwogICAgICAgICBkb3VibGUgdmVsb2NpdHkgPSBzcXJ0KHhWZWxvY2l0
eSAqIHhWZWxvY2l0eSArIHlWZWxvY2l0eSAqIHlWZWxvY2l0eSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LZXlib2FyZFRlc3QuY3BwCShyZXZpc2lvbiAxMDMwOTQp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIC8vIEUuZy4sIHNlbmRpbmcg
aW4gdGhlIGVudGVyIGtleSBnaXZlcyBiYWNrICJJbnNlcnROZXdsaW5lIi4KICAgICBjb25zdCBj
aGFyKiBpbnRlcnByZXRLZXlFdmVudCgKICAgICAgICAgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
d2ViS2V5Ym9hcmRFdmVudCwKLSAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIGtl
eVR5cGUpCisgICAgICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUga2V5VHlwZSkKICAgICB7CiAgICAg
ICAgIEVkaXRvckNsaWVudEltcGwgZWRpdG9ySW1wbCgwKTsKICAgICAgICAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50QnVpbGRlciBldnQod2ViS2V5Ym9hcmRFdmVudCk7CkBAIC04NSw3ICs4NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgV2ViSW5wdXRFdmVudDo6TW9kaWZpZXJzIG9zTW9kaWZpZXIgPSBX
ZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5OwogI2VuZGlmCiAgICAgICAgIHNldHVwS2V5RG93bkV2
ZW50KCZrZXlib2FyZEV2ZW50LCBrZXlDb2RlLCBvc01vZGlmaWVyKTsKLSAgICAgICAgcmV0dXJu
IGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
UmF3S2V5RG93bik7CisgICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2
ZW50LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICB9CiAKICAgICAvLyBMaWtlIGlu
dGVycHJldEtleUV2ZW50LCBidXQgd2l0aCBwcmVzc2luZyBkb3duIGN0cmwrfGtleUNvZGV8LgpA
QCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXZWJLZXlib2FyZEV2ZW50
IGtleWJvYXJkRXZlbnQ7CiAgICAgICAgIHNldHVwS2V5RG93bkV2ZW50KCZrZXlib2FyZEV2ZW50
LCBrZXlDb2RlLCBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKLSAgICAgICAgcmV0dXJuIGlu
dGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3
S2V5RG93bik7CisgICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2FyZEV2ZW50
LCBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICB9CiAKICAgICAvLyBMaWtlIGludGVy
cHJldEtleUV2ZW50LCBidXQgd2l0aCB0eXBpbmcgYSB0YWIuCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgV2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50Owog
ICAgICAgICBzZXR1cEtleURvd25FdmVudCgma2V5Ym9hcmRFdmVudCwgJ1x0JywgbW9kaWZpZXJz
KTsKLSAgICAgICAgcmV0dXJuIGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZlbnQsIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7CisgICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVu
dChrZXlib2FyZEV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpDaGFyKTsKICAgICB9CiAKICAgICAvLyBM
aWtlIGludGVycHJldEtleUV2ZW50LCBidXQgd2l0aCB0eXBpbmcgYSBuZXdsaW5lLgpAQCAtMTA5
LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYktleWJvYXJkRXZlbnQga2V5
Ym9hcmRFdmVudDsKICAgICAgICAgc2V0dXBLZXlEb3duRXZlbnQoJmtleWJvYXJkRXZlbnQsICdc
cicsIG1vZGlmaWVycyk7Ci0gICAgICAgIHJldHVybiBpbnRlcnByZXRLZXlFdmVudChrZXlib2Fy
ZEV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpOworICAgICAgICByZXR1cm4gaW50
ZXJwcmV0S2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1FdmVudDo6Q2hhcik7CiAgICAg
fQogCiAgICAgLy8gQSBuYW1lIGZvciAibm8gbW9kaWZpZXJzIHNldCIuCkBAIC0xNjksNyArMTY5
LDcgQEAgVEVTVF9GKEtleWJvYXJkVGVzdCwgVGVzdEVzY2FwZSkKICAgICBzZXR1cEtleURvd25F
dmVudCgma2V5Ym9hcmRFdmVudCwgV2ViQ29yZTo6VktFWV9FU0NBUEUsIG5vTW9kaWZpZXJzKTsK
IAogICAgIGNvbnN0IGNoYXIqIHJlc3VsdCA9IGludGVycHJldEtleUV2ZW50KGtleWJvYXJkRXZl
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICBFWFBFQ1RfU1RS
RVEoIkNhbmNlbCIsIHJlc3VsdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM1LDEzICsyMzUsMTMgQEAgcHJvdGVjdGVkOgogICAgIC8vIFNpbXVsYXRlcyBhIG1vdXNl
IGV2ZW50IG9uIHRoZSBzZWxlY3QgcG9wdXAuCiAgICAgdm9pZCBzaW11bGF0ZUxlZnRNb3VzZURv
d25FdmVudChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgewotICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQ
cmVzc2VkLAorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9p
bnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IDApOwogICAgICAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlRG93bkV2
ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KICAgICB2b2lkIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVu
dChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNl
ZCwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9pbnQsIHBvaW50LCBM
ZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7
CiAgICAgICAgIG1fd2ViVmlldy0+c2VsZWN0UG9wdXAoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQobW91c2VFdmVudCk7CiAgICAgfQpAQCAtMzczLDcgKzM3Myw3IEBAIFRFU1RfRihTZWxlY3RQ
b3B1cE1lbnVUZXN0LCBNb3VzZU92ZXJJdGUKICAgICAvLyBZIG9mIDE4IHRvIGJlIG9uIHRoZSBp
dGVtIGF0IGluZGV4IDEgKDEyIGZvbnQgcGx1cyBib3JkZXIgYW5kIG1vcmUgdG8gYmUgc2FmZSku
CiAgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIDE4KTsKICAgICAvLyBTaW11bGF0ZSB0aGUgbW91
c2UgbW92aW5nIG92ZXIgdGhlIGZpcnN0IGl0ZW0uCi0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1v
dXNlRXZlbnQocm93MVBvaW50LCByb3cxUG9pbnQsIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQs
CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocm93MVBvaW50LCByb3cxUG9pbnQs
IE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsKICAgICBt
X3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnQp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0x
Mi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZv
cm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIGJhc2UgY2xhc3MgZm9yIFBsYXRmb3JtTW91c2VFdmVudCwgUGxh
dGZvcm1LZXlib2FyZEV2ZW50LCBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgYW5kIFBsYXRm
b3JtR2VzdHVyZUV2ZW50IGFuZCBtb3ZlIFR5cGUgZW51bWVyYXRpb24gYW5kIG1vZGlmaWVycyBk
b3duIHRvIGl0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQpOgorCiAyMDExLTEyLTE1ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHBy
b2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIENsZWFuIHVwIGFuZCByZWZhY3RvciB0aGUg
bWVtb3J5IGNhY2hlIGZ1bmN0aW9ucyBpbiBld2tfc2V0dGluZ3MuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJl
dmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBib29sIEVk
aXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvCiAKICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVu
dCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBp
bmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGlu
c2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAg
ICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0g
aW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJl
c3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMg
YSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDMwOTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGJhc2UgY2xhc3MgZm9y
IFBsYXRmb3JtTW91c2VFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50LCBQbGF0Zm9ybVdoZWVs
RXZlbnQKKyAgICAgICAgYW5kIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGFuZCBtb3ZlIFR5cGUgZW51
bWVyYXRpb24gYW5kIG1vZGlmaWVycyBkb3duIHRvIGl0LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKToKKwogMjAx
MS0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gVXBkYXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3IgMS43LjMgcmVsZWFz
ZQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIs
NyArNTAyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoSwogICAg
ICAgICAvLyBEdXJpbmcgUmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2ls
bCBpbnNlcnQgdGV4dCwgZGVmZXIKICAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0aGUg
a2V5cHJlc3MgZXZlbnQuIFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAKICAgICAgICAgLy8g
dGhyb3VnaCB0aGUgRE9NIGZpcnN0LgotICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgp
ID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgICAgICBpZiAocGxh
dGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBmYWxzZSkpCiAg
ICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDEwMzA5NCkK
KysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
cG9wdXBfbWUKICAgICBsb2NhdGlvbi5zaHJ1bmtUbyhJbnRQb2ludCh2aWV3LT53aWR0aCgpIC0g
Z0NvbnRleHRNZW51TWFyZ2luLCB2aWV3LT5oZWlnaHQoKSAtIGdDb250ZXh0TWVudU1hcmdpbikp
OwogCiAgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Q
b2ludCh3aWRnZXQsIGxvY2F0aW9uKSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxv
Y2F0aW9uLCBnbG9iYWxQb2ludCwgUmlnaHRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7
CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9iYWxQb2ludCwgUmln
aHRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwogICAgIHJldHVybiB3
ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVX
KHdpZGdldCksIGV2ZW50KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTAz
MDk0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTEtMTItMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBiYXNlIGNsYXNzIGZvciBQbGF0
Zm9ybU1vdXNlRXZlbnQsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCwgUGxhdGZvcm1XaGVlbEV2ZW50
CisgICAgICAgIGFuZCBQbGF0Zm9ybUdlc3R1cmVFdmVudCBhbmQgbW92ZSBUeXBlIGVudW1lcmF0
aW9uIGFuZCBtb2RpZmllcnMgZG93biB0byBpdC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmFnU291cmNlRW5kZWRBdDpvcGVyYXRpb246
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGN1cnJlbnRL
ZXlib2FyZEV2ZW50KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ludGVycHJldEtleUV2ZW50
OnNhdmluZ0NvbW1hbmRzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2lsbENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisK
IDIwMTEtMTItMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNTg5NDI3PiBBdm9pZCBjYWxsaW5nIC1zZXRHZW9tZXRy
eUZsaXBwZWQgb3Vyc2VsdmVzIG9uIHRoZSBsYXllciBob3N0aW5nIHZpZXcncyBsYXllcgpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxMDMwOTQpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04MTEsNyArODExLDcgQEAgLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2lu
ZAogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVy
IGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgogICAgIFBs
YXRmb3JtTW91c2VFdmVudCBldmVudChJbnRQb2ludCh3aW5kb3dMb2MpLCBnbG9iYWxQb2ludCh3
aW5kb3dMb2MsIFt2aWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10pLAotICAgICAgICBMZWZ0
QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBj
dXJyZW50VGltZSgpKTsKKyAgICAgICAgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwogICAg
IF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChl
dmVudCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzM5
LDcgKzM3MzksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50CiAg
ICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICBjYXNlIE5TS2V5RG93bjogewogICAgICAg
ICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChldmVudCk7Ci0gICAgICAgIHBs
YXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UmF3S2V5RG93bik7CisgICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93
bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICByZXR1cm4gS2V5Ym9h
cmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVm
YXVsdFZpZXcoKSk7CiAgICAgfQogICAgIGNhc2UgTlNLZXlVcDoKQEAgLTUzODEsNyArNTM4MSw3
IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihLZXlib2FyZEV2ZW4KICAgICAgICAgfQog
ICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGV4dCBpbnNlcnRpb24gY29tbWFuZHMsIGRlZmF1
bHQga2V5ZG93biBoYW5kbGVyIGlzIHRoZSByaWdodCB0aW1lIHRvIGV4ZWN1dGUgdGhlIGNvbW1h
bmRzLgogICAgICAgICAvLyBLZXlwcmVzcyAoQ2hhciBldmVudCkgaGFuZGxlciBpcyB0aGUgbGF0
ZXN0IG9wcG9ydHVuaXR5IHRvIGV4ZWN1dGUuCi0gICAgICAgIGlmICghaGF2ZVRleHRJbnNlcnRp
b25Db21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpDaGFyKQorICAgICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxh
dGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpCiAgICAgICAgICAgICBb
c2VsZiBfZXhlY3V0ZVNhdmVkS2V5cHJlc3NDb21tYW5kc107CiAgICAgfQogICAgIF9wcml2YXRl
LT5pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlBERlZpZXcubW0JKHJldmlzaW9uIDEwMzA5NCkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYwLDcgKzk2
MCw3IEBAIC0gKHZvaWQpUERGVmlld1dpbGxDbGlja09uTGluazooUERGVmlldyAKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5TS2V5RG93bjogewogICAgICAgICAgICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50IHBlKG5zRXZlbnQpOwotICAgICAgICAgICAgcGUuZGlzYW1iaWd1YXRl
S2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bik7CisgICAgICAg
ICAgICBwZS5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93
bik7CiAgICAgICAgICAgICBldmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkua2V5ZG93bkV2ZW50LCB0cnVlLCB0cnVlLCAwLAogICAgICAgICAgICAgICAgIHBlLmtleUlk
ZW50aWZpZXIoKSwgcGUud2luZG93c1ZpcnR1YWxLZXlDb2RlKCksCiAgICAgICAgICAgICAgICAg
cGUuY3RybEtleSgpLCBwZS5hbHRLZXkoKSwgcGUuc2hpZnRLZXkoKSwgcGUubWV0YUtleSgpLCBm
YWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0x
Mi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZv
cm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIGJhc2UgY2xhc3MgZm9yIFBsYXRmb3JtTW91c2VFdmVudCwgUGxh
dGZvcm1LZXlib2FyZEV2ZW50LCBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgYW5kIFBsYXRm
b3JtR2VzdHVyZUV2ZW50IGFuZCBtb3ZlIFR5cGUgZW51bWVyYXRpb24gYW5kIG1vZGlmaWVycyBk
b3duIHRvIGl0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTEtMTItMTQgIFRvciBBcm5l
IFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gR2V0
IHJpZCBvZiBsYXllcmluZyB2aW9sYXRpb24gaW4gUGx1Z2luVmlld1F0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lv
biAxMDMwOTQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIERyYWdDbGllbnRR
dDo6c3RhcnREcmFnKERyYWdJbWFnZVJlCiAgICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjdHVhbERy
b3BBY3Rpb24gPSBkcmFnLT5leGVjKGRyYWdPcGVyYXRpb25zVG9Ecm9wQWN0aW9ucyhkcmFnT3Bl
cmF0aW9uTWFzaykpOwogCiAgICAgICAgIC8vIFNlbmQgZHJhZ0VuZCBldmVudAotICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgbWUobV93ZWJQYWdlLT52aWV3KCktPm1hcEZyb21HbG9iYWwoUUN1
cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVk
LCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CisgICAgICAgIFBsYXRmb3JtTW91
c2VFdmVudCBtZShtX3dlYlBhZ2UtPnZpZXcoKS0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3Mo
KSksIFFDdXJzb3I6OnBvcygpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVk
LCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CiAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQobWUsIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRp
b24oYWN0dWFsRHJvcEFjdGlvbikpOwogICAgIH0KICAgICBmcmFtZS0+cGFnZSgpLT5kcmFnQ29u
dHJvbGxlcigpLT5kcmFnRW5kZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtl
eWJvYXJkRXZlbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KiBrZXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKTsKLSAgICBpZiAoIWtldmVudCB8fCBr
ZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwKQorICAgIGlmICgh
a2V2ZW50IHx8IGtldmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleVVwKQogICAgICAg
ICByZXR1cm47CiAKICAgICBOb2RlKiBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQo
KS5jb250YWluZXJOb2RlKCk7CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRR
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogICAgICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBv
biBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhh
dCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAg
ICAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBF
bnRlcikuCiAgICAgICAgICAgICBpZiAoY21kICYmIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
bWQpLmlzVGV4dEluc2VydGlvbigpCi0gICAgICAgICAgICAgICAgJiYga2V2ZW50LT50eXBlKCkg
PT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKQorICAgICAgICAgICAgICAgICYm
IGtldmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9u
KTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50CiAKICAgICAgICAgICAgIC8vIFRleHQgaW5zZXJ0aW9uLgogICAgICAgICAgICAgYm9v
bCBzaG91bGRJbnNlcnRUZXh0ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBl
KCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYmICFrZXZlbnQtPnRleHQoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKIAogICAgICAgICAg
ICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
a2V2ZW50LT5hbHRLZXkoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA5NCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIzIEBACisyMDExLTEyLTE2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYmFzZSBjbGFzcyBmb3IgUGxhdGZvcm1N
b3VzZUV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQsIFBsYXRmb3JtV2hlZWxFdmVudAorICAg
ICAgICBhbmQgUGxhdGZvcm1HZXN0dXJlRXZlbnQgYW5kIG1vdmUgVHlwZSBlbnVtZXJhdGlvbiBh
bmQgbW9kaWZpZXJzIGRvd24gdG8gaXQuCisKKyAgICAgICAgKiBBY2Nlc3NpYmxlQmFzZS5jcHA6
CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0tleWJvYXJkU2hvcnRjdXQpOgorICAg
ICAgICAqIFdlYkRyb3BTb3VyY2UuY3BwOgorICAgICAgICAoZ2VuZXJhdGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmtleVVwKToKKyAgICAg
ICAgKFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYlZp
ZXc6OmtleURvd24pOgorICAgICAgICAoV2ViVmlldzo6a2V5UHJlc3MpOgorCiAyMDExLTEyLTE0
ICBKaW5nIFpoYW8gIDxqaW5nemhhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlbmluZyB0
d28gcG9wdXAgbWVudXMgYnkgZGlzcGF0Y2hFdmVudCgpIG1ha2VzIHByb2JsZW1zLgpJbmRleDog
U291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291
cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVFbGVtZW50QmFzZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJG
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJWaWV3Lmg+CkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIEFjY2Vzc2libGVCYXNlCiAgICAgICAgIC8vIEZvbGxvdyB0aGUgc2FtZSBvcmRl
ciBhcyBNb3ppbGxhIE1TQUEgaW1wbGVtZW50YXRpb246CiAgICAgICAgIC8vIEN0cmwrQWx0K1No
aWZ0K01ldGEra2V5LiBNU0ROIHN0YXRlcyB0aGF0IGtleWJvYXJkIHNob3J0Y3V0IHN0cmluZ3MK
ICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSBsb2NhbGl6ZWQgYW5kIGRlZmluZXMgdGhlIHNlcGFy
YXRvciBhcyAiKyIuCi0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OkN0cmxLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpDdHJs
S2V5KQogICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJDdHJsKyI7Ci0gICAgICAg
IGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleSkKKyAgICAgICAg
aWYgKG1vZGlmaWVycyAmIFBsYXRmb3JtRXZlbnQ6OkFsdEtleSkKICAgICAgICAgICAgIGFjY2Vz
c0tleU1vZGlmaWVycyArPSAiQWx0KyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlNoaWZ0S2V5KQorICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZv
cm1FdmVudDo6U2hpZnRLZXkpCiAgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgKz0gIlNo
aWZ0KyI7Ci0gICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Ok1l
dGFLZXkpCisgICAgICAgIGlmIChtb2RpZmllcnMgJiBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5KQog
ICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzICs9ICJXaW4rIjsKICAgICB9CiAgICAgKnNo
b3J0Y3V0ID0gQlN0cmluZyhTdHJpbmcoYWNjZXNzS2V5TW9kaWZpZXJzICsgYWNjZXNzS2V5KSku
cmVsZWFzZSgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHJldmlzaW9u
IDEwMzA5NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw3ICs5Myw4IEBAIFNURE1FVEhPRElNUF8oVUxPTkcpIFdlYkRyb3BTb3Vy
Y2U6OlJlbGUKICAgICByZXR1cm4gYzsKIH0KIAotUGxhdGZvcm1Nb3VzZUV2ZW50IGdlbmVyYXRl
TW91c2VFdmVudChXZWJWaWV3KiB3ZWJWaWV3LCBib29sIGlzRHJhZykgeworUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGdlbmVyYXRlTW91c2VFdmVudChXZWJWaWV3KiB3ZWJWaWV3LCBib29sIGlzRHJhZykK
K3sKICAgICBQT0lOVEwgcHQ7CiAgICAgOjpHZXRDdXJzb3JQb3MoKExQUE9JTlQpJnB0KTsKICAg
ICBQT0lOVEwgbG9jYWxwdCA9IHB0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIFBsYXRmb3JtTW91c2VF
dmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2UKICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnZp
ZXdXaW5kb3coKE9MRV9IQU5ETEUqKSZ2aWV3V2luZG93KSkpCiAgICAgICAgIDo6U2NyZWVuVG9D
bGllbnQodmlld1dpbmRvdywgKExQUE9JTlQpJmxvY2FscHQpOwogICAgIHJldHVybiBQbGF0Zm9y
bU1vdXNlRXZlbnQoSW50UG9pbnQobG9jYWxwdC54LCBsb2NhbHB0LnkpLCBJbnRQb2ludChwdC54
LCBwdC55KSwKLSAgICAgICAgaXNEcmFnID8gTGVmdEJ1dHRvbiA6IE5vQnV0dG9uLCBNb3VzZUV2
ZW50TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKTsK
KyAgICAgICAgaXNEcmFnID8gTGVmdEJ1dHRvbiA6IE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSk7
CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUNvbnRpbnVlRHJhZyhCT09M
IGZFc2NhcGVQcmVzc2VkLCBEV09SRCBncmZLZXlTdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgxMyw3ICsxODEzLDcgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29t
bWFuZChXUEFSQU0gd1BhcmFtLAogCiBib29sIFdlYlZpZXc6OmtleVVwKFdQQVJBTSB2aXJ0dWFs
S2V5Q29kZSwgTFBBUkFNIGtleURhdGEsIGJvb2wgc3lzdGVtS2V5RG93bikKIHsKLSAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV92aWV3V2luZG93LCB2aXJ0dWFsS2V5Q29kZSwg
a2V5RGF0YSwgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7Cisg
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtl
eUNvZGUsIGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6OktleVVwLCBzeXN0ZW1LZXlEb3duKTsKIAog
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIG1fY3VycmVudENoYXJhY3RlckNvZGUgPSAwOwpAQCAtMTk1NSw3ICsx
OTU1LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudAogCiAgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJw
cmV0S2V5RXZlbnQoZXZ0KSk7CiAKLSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0
IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5k
cyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUg
dHJlYXRlZCwKICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhl
ciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBv
ciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gKGUuZy4gVGFi
IHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KQEAgLTE5ODMsNyArMTk4
Myw3IEBAIGJvb2wgV2ViVmlldzo6a2V5RG93bihXUEFSQU0gdmlydHVhbEtleUMKICNlbmRpZgog
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogCi0gICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fdmlld1dp
bmRvdywgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3
S2V5RG93biwgc3lzdGVtS2V5RG93bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2
ZW50KG1fdmlld1dpbmRvdywgdmlydHVhbEtleUNvZGUsIGtleURhdGEsIFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24sIHN5c3RlbUtleURvd24pOwogICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5RXZlbnQpOwogCiAgICAgLy8gVGhlc2UgZXZlbnRz
IGNhbm5vdCBiZSBjYW5jZWxlZCwgYW5kIHdlIGhhdmUgbm8gZGVmYXVsdCBoYW5kbGluZyBmb3Ig
dGhlbS4KQEAgLTIwNTUsNyArMjA1NSw3IEBAIGJvb2wgV2ViVmlldzo6a2V5UHJlc3MoV1BBUkFN
IGNoYXJDb2RlLCAKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBr
ZXlFdmVudChtX3ZpZXdXaW5kb3csIGNoYXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OkNoYXIsIHN5c3RlbUtleURvd24pOworICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBr
ZXlFdmVudChtX3ZpZXdXaW5kb3csIGNoYXJDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50OjpD
aGFyLCBzeXN0ZW1LZXlEb3duKTsKICAgICAvLyBJRSBkb2VzIG5vdCBkaXNwYXRjaCBrZXlwcmVz
cyBldmVudCBmb3IgV01fU1lTQ0hBUi4KICAgICBpZiAoc3lzdGVtS2V5RG93bikKICAgICAgICAg
cmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlQWNjZXNzS2V5KGtleUV2ZW50KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwOTQpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEx
LTEyLTE2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgR2l2ZSBQbGF0
Zm9ybUV2ZW50cyBhIGJhc2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgYmFzZSBjbGFzcyBmb3IgUGxhdGZvcm1Nb3VzZUV2ZW50LCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQsIFBsYXRmb3JtV2hlZWxFdmVudAorICAgICAgICBhbmQgUGxh
dGZvcm1HZXN0dXJlRXZlbnQgYW5kIG1vdmUgVHlwZSBlbnVtZXJhdGlvbiBhbmQgbW9kaWZpZXJz
IGRvd24gdG8gaXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5D
RS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5n
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
OjpoYW5kbGVLZXlEb3duKToKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUtleVByZXNzKToKKyAg
ICAgICAgKFdlYlZpZXc6OmhhbmRsZUtleVVwKToKKwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8
amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVz
IGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJW
aWV3LmNwcAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgV2ViVmlldzo6aGFu
ZGxlS2V5RG93bihXUEFSQU0gdmlydHUKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgdmlydHVhbEtleUNvZGUsIGtleURh
dGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93biwgc3lzdGVtS2V5RG93bik7Cisg
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCB2aXJ0dWFs
S2V5Q29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgc3lzdGVtS2V5RG93
bik7CiAgICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChr
ZXlFdmVudCk7CiAKICAgICAvLyBUaGVzZSBldmVudHMgY2Fubm90IGJlIGNhbmNlbGVkLCBhbmQg
d2UgaGF2ZSBubyBkZWZhdWx0IGhhbmRsaW5nIGZvciB0aGVtLgpAQCAtMzcwLDcgKzM3MCw3IEBA
IGJvb2wgV2ViVmlldzo6aGFuZGxlS2V5UHJlc3MoV1BBUkFNIGNoYXIKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
IAotICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlFdmVudChtX3dpbmRvd0hhbmRsZSwgY2hh
ckNvZGUsIGtleURhdGEsIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93
bik7CisgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleUV2ZW50KG1fd2luZG93SGFuZGxlLCBj
aGFyQ29kZSwga2V5RGF0YSwgUGxhdGZvcm1FdmVudDo6Q2hhciwgc3lzdGVtS2V5RG93bik7CiAg
ICAgLy8gSUUgZG9lcyBub3QgZGlzcGF0Y2gga2V5cHJlc3MgZXZlbnQgZm9yIFdNX1NZU0NIQVIu
CiAgICAgaWYgKHN5c3RlbUtleURvd24pCiAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhhbmRsZUFjY2Vzc0tleShrZXlFdmVudCk7CkBAIC0zODIsNyArMzgyLDcgQEAgYm9v
bCBXZWJWaWV3OjpoYW5kbGVLZXlQcmVzcyhXUEFSQU0gY2hhcgogCiBib29sIFdlYlZpZXc6Omhh
bmRsZUtleVVwKFdQQVJBTSB2aXJ0dWFsS2V5Q29kZSwgTFBBUkFNIGtleURhdGEsIGJvb2wgc3lz
dGVtS2V5RG93bikKIHsKLSAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZlbnQobV93aW5k
b3dIYW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OktleVVwLCBzeXN0ZW1LZXlEb3duKTsKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5RXZl
bnQobV93aW5kb3dIYW5kbGUsIHZpcnR1YWxLZXlDb2RlLCBrZXlEYXRhLCBQbGF0Zm9ybUV2ZW50
OjpLZXlVcCwgc3lzdGVtS2V5RG93bik7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICByZXR1cm4gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChrZXlFdmVudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNw
cAkocmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw3ICszODQsNyBA
QCBib29sIEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5CiAKICAgICBFZGl0b3I6
OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlF
dmVudChldmVudCkpOwogCi0gICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhh
dCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0
ZWQsCiAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFu
ZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0
IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0
IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwko
cmV2aXNpb24gMTAzMDk0KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIEdpdmUgUGxhdGZvcm1FdmVudHMgYSBiYXNlIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGJhc2UgY2xh
c3MgZm9yIFBsYXRmb3JtTW91c2VFdmVudCwgUGxhdGZvcm1LZXlib2FyZEV2ZW50LCBQbGF0Zm9y
bVdoZWVsRXZlbnQKKyAgICAgICAgYW5kIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGFuZCBtb3ZlIFR5
cGUgZW51bWVyYXRpb24gYW5kIG1vZGlmaWVycyBkb3duIHRvIGl0LgorCisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRXeDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50V3g6OmludGVycHJldEtleUV2ZW50KToKKwogMjAxMS0xMi0xMSAgUm9iaW4g
RHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgogCiAgICAgICAgIEFkZCBhIFVSTCBhcmd1bWVudCB0
byB0aGUgd3hXZWJWaWV3IGNvbnN0cnVjdG9yLApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMDMwOTQpCisr
KyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBFZGl0b3JDbGllbnRXeDo6aGFuZGxl
RWRpdGluZ0tleWJvYQogCiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKIAotICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAg
IGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAg
ICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9k
ZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRl
ZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBp
dCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRh
YiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGlmIG5vdCB0byBsZXQgYSBDSEFSIGV2ZW50IGJlIGdl
bmVyYXRlZAogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rl
ciwgb3IgRW50ZXIpLgpAQCAtNDA5LDcgKzQwOSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V3g6Omhh
bmRsZUVkaXRpbmdLZXlib2EKIAogY29uc3QgY2hhciogRWRpdG9yQ2xpZW50V3g6OmludGVycHJl
dEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2dCkKIHsKLSAgICBBU1NFUlQoZXZ0LT5r
ZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duIHx8
IGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcik7
CisgICAgQVNTRVJUKGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJh
d0tleURvd24gfHwgZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hh
cik7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5RG93bkNvbW1h
bmRzTWFwID0gMDsKICAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5UHJl
c3NDb21tYW5kc01hcCA9IDA7CkBAIC00MzMsNyArNDMzLDcgQEAgY29uc3QgY2hhciogRWRpdG9y
Q2xpZW50V3g6OmludGVycHJldEtleQogICAgIGlmIChldnQtPmN0cmxLZXkoKSkKICAgICAgICAg
bW9kaWZpZXJzIHw9IEN0cmxLZXk7CiAKLSAgICBpZiAoZXZ0LT5rZXlFdmVudCgpLT50eXBlKCkg
PT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgaWYgKGV2dC0+a2V5
RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAg
aW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+a2V5Q29kZSgpOwogICAgICAgICBy
ZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CiAgICAg
fQo=
</data>
<flag name="review"
          id="119742"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>