<?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>120333</bug_id>
          
          <creation_ts>2013-08-26 17:01:46 -0700</creation_ts>
          <short_desc>Implement ES6 Map object</short_desc>
          <delta_ts>2016-02-21 12:11:11 -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>
          
          <blocked>120503</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>18runt88</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>921233</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-26 17:01:46 -0700</bug_when>
    <thetext>Implement ES6 Map object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921236</commentid>
    <comment_count>1</comment_count>
      <attachid>209694</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-26 17:02:37 -0700</bug_when>
    <thetext>Created attachment 209694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921237</commentid>
    <comment_count>2</comment_count>
      <attachid>209694</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-26 17:03:28 -0700</bug_when>
    <thetext>Comment on attachment 209694
Patch

Not intended for review (O(N) behavior in a &quot;map&quot; is probably unexpected)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921602</commentid>
    <comment_count>3</comment_count>
      <attachid>209787</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-27 11:30:55 -0700</bug_when>
    <thetext>Created attachment 209787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921706</commentid>
    <comment_count>4</comment_count>
      <attachid>209811</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-27 15:33:05 -0700</bug_when>
    <thetext>Created attachment 209811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921707</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-27 15:33:58 -0700</bug_when>
    <thetext>Attachment 209811 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/CopyToken.h&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/MapPrototype.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:28:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:37:  Missing space after ,  [whitespace/comma] [3]
Source/JavaScriptCore/runtime/MapData.h:76:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922146</commentid>
    <comment_count>6</comment_count>
      <attachid>209916</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-28 12:18:16 -0700</bug_when>
    <thetext>Created attachment 209916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922147</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-28 12:20:09 -0700</bug_when>
    <thetext>Attachment 209916 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/CopyToken.h&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/MapPrototype.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:39:  Missing space after ,  [whitespace/comma] [3]
Source/JavaScriptCore/runtime/MapConstructor.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:83:  Missing space inside { }.  [whitespace/braces] [5]
Source/JavaScriptCore/runtime/MapData.h:115:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:115:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:116:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:117:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:136:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 14 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922152</commentid>
    <comment_count>8</comment_count>
      <attachid>209916</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 12:36:04 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1625327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922153</commentid>
    <comment_count>9</comment_count>
      <attachid>209916</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-28 12:36:56 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1605345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922154</commentid>
    <comment_count>10</comment_count>
      <attachid>209916</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-28 12:38:48 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1625330</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922158</commentid>
    <comment_count>11</comment_count>
      <attachid>209916</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 12:50:11 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1625328</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922162</commentid>
    <comment_count>12</comment_count>
      <attachid>209916</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 13:02:51 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1624340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922182</commentid>
    <comment_count>13</comment_count>
      <attachid>209916</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-28 13:50:34 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1626332</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922192</commentid>
    <comment_count>14</comment_count>
      <attachid>209916</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-28 14:06:51 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1627345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922217</commentid>
    <comment_count>15</comment_count>
      <attachid>209916</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-08-28 15:29:06 -0700</bug_when>
    <thetext>Comment on attachment 209916
Patch

Attachment 209916 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1591701</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922289</commentid>
    <comment_count>16</comment_count>
      <attachid>209940</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-28 18:24:02 -0700</bug_when>
    <thetext>Created attachment 209940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922290</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-28 18:26:34 -0700</bug_when>
    <thetext>Attachment 209940 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/fast/js/basic-map.html&apos;, u&apos;LayoutTests/fast/js/script-tests/basic-map.js&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/CopyToken.h&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/MapPrototype.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapPrototype.cpp:111:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/JavaScriptCore/runtime/MapData.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:40:  Missing space after ,  [whitespace/comma] [3]
Source/JavaScriptCore/runtime/MapConstructor.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:114:  Missing space inside { }.  [whitespace/braces] [5]
Source/JavaScriptCore/runtime/MapData.h:119:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/runtime/MapData.h:158:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:158:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:159:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:160:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:205:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 16 in 17 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>922294</commentid>
    <comment_count>18</comment_count>
      <attachid>209940</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-28 18:35:58 -0700</bug_when>
    <thetext>Comment on attachment 209940
Patch

Attachment 209940 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1605440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922295</commentid>
    <comment_count>19</comment_count>
      <attachid>209940</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-28 18:37:36 -0700</bug_when>
    <thetext>Comment on attachment 209940
Patch

Attachment 209940 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1618459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922296</commentid>
    <comment_count>20</comment_count>
      <attachid>209940</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-28 18:39:14 -0700</bug_when>
    <thetext>Comment on attachment 209940
Patch

Attachment 209940 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1618460</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922297</commentid>
    <comment_count>21</comment_count>
      <attachid>209940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 18:47:03 -0700</bug_when>
    <thetext>Comment on attachment 209940
Patch

Attachment 209940 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1631028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922300</commentid>
    <comment_count>22</comment_count>
      <attachid>209940</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-28 18:49:15 -0700</bug_when>
    <thetext>Comment on attachment 209940
Patch

Attachment 209940 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1627406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922304</commentid>
    <comment_count>23</comment_count>
      <attachid>209940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 19:03:11 -0700</bug_when>
    <thetext>Comment on attachment 209940
Patch

Attachment 209940 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1625426</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922305</commentid>
    <comment_count>24</comment_count>
      <attachid>209940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 19:08:04 -0700</bug_when>
    <thetext>Comment on attachment 209940
Patch

Attachment 209940 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1605439</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922310</commentid>
    <comment_count>25</comment_count>
      <attachid>209944</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-28 19:23:57 -0700</bug_when>
    <thetext>Created attachment 209944
Has full API spec and correctness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922311</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-28 19:26:32 -0700</bug_when>
    <thetext>Attachment 209944 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/fast/js/basic-map.html&apos;, u&apos;LayoutTests/fast/js/script-tests/basic-map.js&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/CopyToken.h&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/MapPrototype.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:40:  Missing space after ,  [whitespace/comma] [3]
Source/JavaScriptCore/runtime/MapConstructor.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:114:  Missing space inside { }.  [whitespace/braces] [5]
Source/JavaScriptCore/runtime/MapData.h:119:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/runtime/MapData.h:158:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:158:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:159:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:160:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:205:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 15 in 17 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>922315</commentid>
    <comment_count>27</comment_count>
      <attachid>209944</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-28 19:32:12 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

Attachment 209944 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1626437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922318</commentid>
    <comment_count>28</comment_count>
      <attachid>209944</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-28 19:32:50 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

Attachment 209944 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1638040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922319</commentid>
    <comment_count>29</comment_count>
      <attachid>209944</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-28 19:34:23 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

Attachment 209944 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1625441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922320</commentid>
    <comment_count>30</comment_count>
      <attachid>209944</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-08-28 19:44:46 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

Attachment 209944 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1625444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922323</commentid>
    <comment_count>31</comment_count>
      <attachid>209944</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-28 19:51:29 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

Attachment 209944 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1624453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922324</commentid>
    <comment_count>32</comment_count>
      <attachid>209944</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 19:52:06 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

Attachment 209944 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1635038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922330</commentid>
    <comment_count>33</comment_count>
      <attachid>209944</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 20:09:50 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

Attachment 209944 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1639044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922331</commentid>
    <comment_count>34</comment_count>
      <attachid>209944</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-28 20:17:41 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

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

&gt; Source/JavaScriptCore/runtime/MapConstructor.cpp:56
&gt; +        return JSValue::encode(throwTypeError(exec, ASCIILiteral(&quot;Map constructor does not accept arguments&quot;)));
&gt; +    if (!exec-&gt;argument(1).isUndefined())
&gt; +        return JSValue::encode(throwError(exec, createRangeError(exec, WTF::ASCIILiteral(&quot;Invalid comparator function&quot;))));
&gt; +

On one line you use ASCIILiteral, the other WTF::ASCIILiteral! Make up your mind!

&gt; Source/JavaScriptCore/runtime/MapConstructor.h:39
&gt; +    static MapConstructor* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, MapPrototype* functionPrototype)

This could probably take a VM&amp; rather than an ExecState*.

&gt; Source/JavaScriptCore/runtime/MapPrototype.cpp:65
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;clear, mapProtoFuncClear, DontEnum, 0);
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;deleteKeyword, mapProtoFuncDelete, DontEnum, 1);
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;forEach, mapProtoFuncForEach, DontEnum, 1);
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;get, mapProtoFuncGet, DontEnum, 1);
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;has, mapProtoFuncHas, DontEnum, 1);
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;set, mapProtoFuncSet, DontEnum, 2);

Why set them directly rather than use a lut?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922332</commentid>
    <comment_count>35</comment_count>
      <attachid>209944</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-28 20:28:26 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

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

Looks good. I have a few comments below, and it looks like this patch isn&apos;t quite building yet.

&gt; Source/JavaScriptCore/ChangeLog:45
&gt; +        * JavaScriptCore.xcodeproj/project.pbxproj:
&gt; +        * runtime/CommonIdentifiers.h:
&gt; +        * runtime/JSGlobalObject.cpp:
&gt; +        (JSC::JSGlobalObject::reset):
&gt; +        * runtime/JSGlobalObject.h:
&gt; +        (JSC::JSGlobalObject::mapStructure):
&gt; +        * runtime/MapConstructor.cpp: Added.
&gt; +        (JSC::MapConstructor::finishCreation):
&gt; +        (JSC::constructMap):
&gt; +        (JSC::MapConstructor::getConstructData):
&gt; +        (JSC::MapConstructor::getCallData):
&gt; +        * runtime/MapConstructor.h: Added.
&gt; +        (JSC::MapConstructor::create):
&gt; +        (JSC::MapConstructor::createStructure):
&gt; +        (JSC::MapConstructor::MapConstructor):
&gt; +        * runtime/MapData.cpp: Added.
&gt; +        (JSC::MapData::ensureSpaceForAppend):
&gt; +        (JSC::MapData::find):
&gt; +        (JSC::MapData::set):
&gt; +        (JSC::MapData::get):
&gt; +        (JSC::MapData::remove):
&gt; +        (JSC::MapData::visitChildren):
&gt; +        * runtime/MapData.h: Added.
&gt; +        (JSC::MapData::create):
&gt; +        (JSC::MapData::createStructure):
&gt; +        (JSC::MapData::contains):
&gt; +        (JSC::MapData::size):
&gt; +        (JSC::MapData::clear):
&gt; +        (JSC::MapData::MapData):
&gt; +        * runtime/MapInstance.cpp: Added.
&gt; +        (JSC::MapInstance::visitChildren):
&gt; +        * runtime/MapInstance.h: Added.
&gt; +        (JSC::MapInstance::createStructure):
&gt; +        (JSC::MapInstance::create):
&gt; +        (JSC::MapInstance::mapData):
&gt; +        (JSC::MapInstance::MapInstance):

If you&apos;re not going to explain what you did, I don&apos;t think this listing is useful. So, please remove this listing, or explain what you did.

&gt; Source/JavaScriptCore/runtime/MapConstructor.cpp:28
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#include &quot;MapConstructor.h&quot;

These lines should go together.

&gt; Source/JavaScriptCore/runtime/MapConstructor.cpp:51
&gt; +    // any arguments that could result in us throw.

&quot;that could result in us throw&quot;?

&gt;&gt; Source/JavaScriptCore/runtime/MapData.cpp:28
&gt;&gt; +#include &quot;config.h&quot;
&gt;&gt; +
&gt;&gt; +#include &quot;JSCJSValueInlines.h&quot;
&gt; 
&gt; Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]

These lines should go together.

&gt;&gt; Source/JavaScriptCore/runtime/MapData.cpp:30
&gt;&gt; +#include &quot;MapData.h&quot;
&gt; 
&gt; Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]

Ditto.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:139
&gt; +template &lt;MapData::CopyMode mode&gt; void MapData::copyAndPackIfPossible(Entry* destination, size_t newSize)

I think this would be clearer as two different functions rather than one function with two templatized modes. Very little code here is in common.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:148
&gt; +            memcpy(destination + newEnd, &amp;entry, sizeof(Entry));

Let&apos;s use a copy constructor here instead.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:184
&gt; +void MapData::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)

I don&apos;t think your test will trigger this function. Can you make it more aggressive, to cover this?

&gt; Source/JavaScriptCore/runtime/MapData.h:106
&gt; +        void next()
&gt; +        {
&gt; +            ASSERT(!atEnd());
&gt; +            Entry* entries = m_mapData-&gt;m_entries;
&gt; +            size_t index = m_index + 1;
&gt; +            size_t end = m_mapData-&gt;m_size;
&gt; +            while (index &lt; end &amp;&amp; !entries[index].key())
&gt; +                index++;
&gt; +            m_index = index;
&gt; +        }

Can you add a test for iterating while inserting and removing?

&gt; Source/JavaScriptCore/runtime/MapData.h:116
&gt; +        ALWAYS_INLINE KeyType(JSValue v)
&gt; +        {

It looks like this function tries to do some sort of double vs int conversion, but it&apos;s not clear what the goal is. I think you should factor out the conversion into a function, and name the function to indicate what we&apos;re trying to do.

&gt; Source/JavaScriptCore/runtime/MapData.h:215
&gt; +    HashMap&lt;KeyType, size_t, KeyHash, KeyTraits, IndexTraits&gt; m_valueKeyedTable;
&gt; +    HashMap&lt;StringImpl*, size_t&gt; m_stringKeyedTable;

JavaScript never runs out of humor value.

&gt; Source/JavaScriptCore/runtime/MapInstance.h:35
&gt; +class MapInstance : public JSNonFinalObject {

Let&apos;s call this &quot;JSMap&quot; to match our other terminology..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922529</commentid>
    <comment_count>36</comment_count>
      <attachid>209944</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-29 10:23:12 -0700</bug_when>
    <thetext>Comment on attachment 209944
Has full API spec and correctness

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:45
&gt;&gt; +        (JSC::MapInstance::MapInstance):
&gt; 
&gt; If you&apos;re not going to explain what you did, I don&apos;t think this listing is useful. So, please remove this listing, or explain what you did.

I normally don’t include the list of newly added functions when I add a file even though the script generates the list. I haven’t heard a good argument against my practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922531</commentid>
    <comment_count>37</comment_count>
      <attachid>209998</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 10:27:11 -0700</bug_when>
    <thetext>Created attachment 209998
Has full API spec and correctness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922534</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 10:28:36 -0700</bug_when>
    <thetext>Attachment 209998 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/fast/js/basic-map.html&apos;, u&apos;LayoutTests/fast/js/script-tests/basic-map.js&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/CopyToken.h&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapInstance.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/MapPrototype.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapInstance.cpp:40:  Missing space after ,  [whitespace/comma] [3]
Source/JavaScriptCore/runtime/MapConstructor.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/MapData.h:114:  Missing space inside { }.  [whitespace/braces] [5]
Source/JavaScriptCore/runtime/MapData.h:119:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/runtime/MapData.h:158:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:158:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:159:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:160:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/MapData.h:205:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 15 in 17 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>922544</commentid>
    <comment_count>39</comment_count>
      <attachid>209998</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-29 10:40:36 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1643028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922545</commentid>
    <comment_count>40</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 10:40:50 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 209944 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209944&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:45
&gt; &gt;&gt; +        (JSC::MapInstance::MapInstance):
&gt; &gt; 
&gt; &gt; If you&apos;re not going to explain what you did, I don&apos;t think this listing is useful. So, please remove this listing, or explain what you did.
&gt; 
&gt; I normally don’t include the list of newly added functions when I add a file even though the script generates the list. I haven’t heard a good argument against my practice.

The changelog is just there so webkit-patch works automatically :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922548</commentid>
    <comment_count>41</comment_count>
      <attachid>209998</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-29 10:42:31 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1635262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922549</commentid>
    <comment_count>42</comment_count>
      <attachid>209998</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-29 10:44:19 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

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

&gt;&gt; Source/JavaScriptCore/runtime/MapData.cpp:30
&gt;&gt; +#include &quot;MapData.h&quot;
&gt; 
&gt; Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]

I agree with the style checker. This should not have to be included after the Inlines header.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:44
&gt; +enum { MinimumMapSize = 16 };

Where does that constant come from? Why an enum instead of a const? This is C++, not C.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:58
&gt; +    size_t location = 0;

This &quot;= 0&quot; is pointless and should be omitted.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:60
&gt; +        String string = asString(key.value)-&gt;value(callFrame);

Not sure we need the local variable for this. Could do it all on one line.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:75
&gt; +    return !find(callFrame, key).isEmpty();

isEmpty? Really? Not typically how iterators work. It would normally be == end(). This also seems like a function that would be inlined.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:87
&gt; +    ASSERT(map.contains(key));

Seems a little strange to assert this. Do we really not trust map.add?

&gt; Source/JavaScriptCore/runtime/MapData.cpp:97
&gt; +    if (!location)
&gt; +        return;

Usually we use == end, in contains we use isEmpty, and here we use ! -- would be better to be consistent.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:106
&gt; +    String string = asString(key.value)-&gt;value(callFrame);

Not sure we need the local for this. Might be readable all on one line.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:119
&gt; +    size_t location = 0;

Don&apos;t need the &quot;=0&quot; here.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:121
&gt; +        String string = asString(key.value)-&gt;value(callFrame);

Not sure we need the local variable for this. Could do it all on one line.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:200
&gt; +        visitor.appendValues(&amp;entries[0].keyForGC(), size * (sizeof(Entry) / sizeof(WriteBarrier&lt;Unknown&gt;)));

Ugly to rely on the layout of the Entry in this subtle way here. If we are going to use it like this, I think it should be a struct and the restriction on its layout should be mentioned in the header. We should also have a compile-time assertion that there is no padding. The getters aren’t adding value if they just return references to same named data members.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:209
&gt; +    if (token == MapBackingStoreCopyToken
&gt; +        &amp;&amp; visitor.checkIfShouldCopy(thisObject-&gt;m_entries)) {

Would read better on a single line.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:213
&gt; +        void* newVector = visitor.allocateNewSpace(thisObject-&gt;m_capacity * sizeof(Entry));
&gt; +        Entry* newEntries = static_cast&lt;Entry*&gt;(newVector);

newVector local is not doing us any good here

&gt; Source/JavaScriptCore/runtime/MapData.h:37
&gt; +namespace JSC {
&gt; +class MapData : public JSDestructibleObject {

Missing blank line.

&gt; Source/JavaScriptCore/runtime/MapData.h:38
&gt; +private:

Should put public stuff first. Don’t have to define things before they are used.

&gt; Source/JavaScriptCore/runtime/MapData.h:174
&gt; +    void clear()
&gt; +    {
&gt; +        m_valueKeyedTable.clear();
&gt; +        m_stringKeyedTable.clear();
&gt; +        m_capacity = 0;
&gt; +        m_size = 0;
&gt; +        m_deletedCount = 0;
&gt; +        m_entries = 0;
&gt; +    }

All these functions inlined within the class make the class too hard to read. I suggest putting more of the non-trivial inline functions separate after the class so the class itself is more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922555</commentid>
    <comment_count>43</comment_count>
      <attachid>209998</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-29 10:53:32 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1640222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922557</commentid>
    <comment_count>44</comment_count>
      <attachid>209998</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-29 10:58:28 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1626640</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922563</commentid>
    <comment_count>45</comment_count>
      <attachid>209998</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-29 11:18:43 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1591953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922570</commentid>
    <comment_count>46</comment_count>
      <attachid>209998</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-29 11:32:05 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1626647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922585</commentid>
    <comment_count>47</comment_count>
      <attachid>209998</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-08-29 11:58:38 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1643030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922645</commentid>
    <comment_count>48</comment_count>
      <attachid>209998</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-29 13:35:33 -0700</bug_when>
    <thetext>Comment on attachment 209998
Has full API spec and correctness

Attachment 209998 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1639299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922721</commentid>
    <comment_count>49</comment_count>
      <attachid>210043</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 16:18:26 -0700</bug_when>
    <thetext>Created attachment 210043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922727</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 16:22:18 -0700</bug_when>
    <thetext>Attachment 210043 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/basic-map-expected.txt&apos;, u&apos;LayoutTests/fast/js/basic-map.html&apos;, u&apos;LayoutTests/fast/js/script-tests/basic-map.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/heap/CopyToken.h&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSMap.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSMap.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/MapPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/MapData.h:173:  MapData::const_iterator::const_iterator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 24 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>922739</commentid>
    <comment_count>51</comment_count>
      <attachid>210043</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-29 16:45:00 -0700</bug_when>
    <thetext>Comment on attachment 210043
Patch

Attachment 210043 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1623737</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922740</commentid>
    <comment_count>52</comment_count>
      <attachid>210043</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-29 16:47:16 -0700</bug_when>
    <thetext>Comment on attachment 210043
Patch

Attachment 210043 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1639343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922742</commentid>
    <comment_count>53</comment_count>
      <attachid>210047</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 16:49:55 -0700</bug_when>
    <thetext>Created attachment 210047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922764</commentid>
    <comment_count>54</comment_count>
      <attachid>210047</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-29 17:36:34 -0700</bug_when>
    <thetext>Comment on attachment 210047
Patch

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

r=me, with some more suggestions below.

&gt; Source/JavaScriptCore/runtime/JSMap.cpp:28
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#include &quot;JSMap.h&quot;

No newline between these, please.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:28
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#include &quot;MapData.h&quot;

Ditto.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:43
&gt; +static const int32_t MinimumMapSize = 8;

Should be lower case.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:68
&gt; +bool MapData::contains(CallFrame* callFrame, KeyType key)

Newline here please.

&gt; Source/JavaScriptCore/runtime/MapData.cpp:144
&gt; +        entry.value.setWithoutWriteBarrier(jsNumber(newEnd));

I think it&apos;s worth a comment here to explain that you&apos;re being sneaky here. How about this:

&quot;We store overwrite the old entry with a forwarding index for the new entry, so we can fix up our hash tables below without doing additional hash lookups.&quot;

&gt; Source/JavaScriptCore/runtime/MapData.h:99
&gt; +    // Our marking functions expect Entry to maintain this layout

You can be a little more specific and say &quot;depend on all of our data members being WriteBarrier&lt;Unknown&gt;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922765</commentid>
    <comment_count>55</comment_count>
      <attachid>210047</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-29 17:37:56 -0700</bug_when>
    <thetext>Comment on attachment 210047
Patch

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

&gt; Source/JavaScriptCore/runtime/MapData.h:59
&gt; +        // This is a bit gnarly. We use an index of -1 to indicate the
&gt; +        // &quot;end()&quot; iterator. By casting to unsigned we can immediately
&gt; +        // test if both iterators are at the end of their iteration.
&gt; +        // We need this in order to keep the common case (eg. iter != end())
&gt; +        // fast.
&gt; +        bool atEnd() const { return static_cast&lt;size_t&gt;(m_index) &gt;= static_cast&lt;size_t&gt;(m_mapData-&gt;m_size); }

I also think this is a bit gnarly. The typical solution, which WTF hash tables use, is to use m_mapData-&gt;m_size + 1 as the end index. That works naturally for ++, and avoids special-case checking for atEnd(). Would that work here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922769</commentid>
    <comment_count>56</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 17:54:49 -0700</bug_when>
    <thetext>Committed r154861: &lt;http://trac.webkit.org/changeset/154861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923022</commentid>
    <comment_count>57</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 09:53:52 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; (From update of attachment 210047 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210047&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/MapData.h:59
&gt; &gt; +        // This is a bit gnarly. We use an index of -1 to indicate the
&gt; &gt; +        // &quot;end()&quot; iterator. By casting to unsigned we can immediately
&gt; &gt; +        // test if both iterators are at the end of their iteration.
&gt; &gt; +        // We need this in order to keep the common case (eg. iter != end())
&gt; &gt; +        // fast.
&gt; &gt; +        bool atEnd() const { return static_cast&lt;size_t&gt;(m_index) &gt;= static_cast&lt;size_t&gt;(m_mapData-&gt;m_size); }
&gt; 
&gt; I also think this is a bit gnarly. The typical solution, which WTF hash tables use, is to use m_mapData-&gt;m_size + 1 as the end index. That works naturally for ++, and avoids special-case checking for atEnd(). Would that work here?

I considered that, but decided against it as it introduces a hazard if you use the idiom

foo = map-&gt;end();
for (ptr = begin(); ptr != end; ++ptr)

As Map iteration is specified as being safe under mutation, and has to visit newly added entries - any value that end() stores has to always be larger than size.  I guess we could just limit the map size to ~2gig - 1 entry and change the end marker to be &lt;int&gt;::max()</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209694</attachid>
            <date>2013-08-26 17:02:37 -0700</date>
            <delta_ts>2013-08-27 11:30:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120333-20130826170613.patch</filename>
            <type>text/plain</type>
            <size>88248</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NWM4ZmExOGUxODM0NjUwNTc5MjNjNTdjZjExMGRkZWM2OTVhOTg0Li5jODdhZGQxMWM4YTg2Y2Q2
YmE5ZmRlMzcxODRiZThjOTEzMDAzZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOC0yNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBFUzYg
TWFwIHR5cGUgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmZp
bmQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRh
OjpnZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcERh
dGE6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6TWFwRGF0YTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6TWFwRGF0YTo6TWFwRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9NYXBJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9NYXBJbnN0YW5jZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok1hcEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6bWFwRGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcEluc3RhbmNlOjpNYXBJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6Ok1hcEluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0ZvckVhY2gpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6TWFwUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvbW96aWxsYS9hY3R1YWwuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSBzaG91bGQgbm90IGNhbGwgW1twdXRdXQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmOTlhNWQ4YjIzZDBjZmNkMzNmY2Q0NDVh
MzU1ZTU5MDQxZTk5NzUyLi43NjIyNDIyNzJkNDIzY2UzOThlZDhlMDlhZmU5ZDI0N2QyMGRiNmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzkwLDYgKzc5MCwxMiBAQAogCQlB
MTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1
IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8q
IFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1
MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcwMDg3Mzkx
N0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBN
YXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBN
YXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07
CisJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAw
QzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3MDA4NzNFMTdDQkU4RDMwMEMz
RTY0MyAvKiBNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDA4NzNDMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCAq
LzsgfTsKKwkJQTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNGMTdDQkU4
RUIwMEMzRTY0MyAvKiBNYXBJbnN0YW5jZS5jcHAgKi87IH07CisJCUE3MDA4NzQyMTdDQkU4RUIw
MEMzRTY0MyAvKiBNYXBJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmgg
Ki87IH07CiAJCUE3MDQ0N0VBMTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ0N0U5MTdB
MEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzA0NDdFRDE3QTBCRDcwMDBGNTg5OEUgLyog
RHVtcENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLzsgfTsK
IAkJQTcwNDQ3RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NDdFQzE3QTBCRDcwMDBGNTg5
OEUgLyogRHVtcENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODQ5LDYgKzg1NSw4IEBACiAJCUE3N0YxODI1MTY0MTkyQzcwMDY0MEE0
NyAvKiBQYXJzZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc3RjE4MjQxNjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4NEEyNjExMUQx
NjYyMjAwNTc3NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTdFRTc0MTFCOThCOEQwMDY1QTE0RiAvKiBBU1RCdWlsZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4
NEEyNjQxMUQxNjYyMjAwNTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTdFRTc3MTFCOThCOEQwMDY1QTE0RiAv
KiBTeW50YXhDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4NTA3RDQxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovOyB9OworCQlBNzg1MDdENzE3Q0JDNkZEMDAxMUY2
RTcgLyogTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc4NTA3RDUxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCAqLzsgfTsKIAkJQTc4
ODUzRjkxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4ODUzRjcxNzk3MjYy
OTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQlBNzg4NTNG
QTE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4ODUzRjgxNzk3MjYyOTAwMTQ0
MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZH
RmFpbGVkRmluYWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3OEE5NzZDMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIu
Y3BwICovOyB9OwpAQCAtMTk0Niw2ICsxOTU0LDEyIEBACiAJCUExNzEyQjNBMTFDN0IyMTIwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyogTWFw
Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0IxN0NCRThEMzAw
QzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNYXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hcFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzAwODczRjE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwSW5zdGFuY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5z
dGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwSW5zdGFuY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3RTkxN0EwQkQ0NjAwRjU4OThFIC8q
IE9wZXJhbmRzSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGVy
YW5kc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3RUIxN0Ew
QkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IER1bXBDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTcwNDQ3RUMxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bXBDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDAyLDYgKzIwMTYsOCBAQAogCQlBNzdGMTgxRjE2NDA4OEIyMDA2NDBBNDcg
LyogQ29kZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
ZGVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3N0YxODIwMTY0MDg4
QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3N0YxODI0MTY0
MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJNb2Rl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzg1MDdENDE3Q0JDNkZEMDAxMUY2
RTcgLyogTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXBEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDUxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzg4NTNGNzE3OTcyNjI5
MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVk
U3RydWN0dXJlQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZW5k
ZWRTdHJ1Y3R1cmVDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhBOTc2
QzE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHBhdGggPSBk
ZmcvREZHRmFpbGVkRmluYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIzNTEsOSArMjM2Nyw5IEBACiAJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTMyRjVC
RDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5
MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTBGRjkyMkNGMTRGNDZCMTMw
MDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCi0JCQkJOTMyRjVCRDkwODIy
QTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQkxNDEyMTEy
MDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBC
QUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVz
dFJlZ0V4cCAqLywKQEAgLTMxMzksNiArMzE1NSw4IEBACiAJCQkJQTdFMkVBNjkwRkI0NjBDRjAw
NjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCAqLywKIAkJCQlGNjkyQTg2ODAyNTU1OTdEMDFGRjYw
RjcgLyogTG9va3VwLmNwcCAqLywKIAkJCQlGNjkyQTg2OTAyNTU1OTdEMDFGRjYwRjcgLyogTG9v
a3VwLmggKi8sCisJCQkJQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICov
LAorCQkJCUE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8sCiAJCQkJODYx
MkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8sCiAJCQkJRjY5MkE4NkEw
MjU1NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovLAogCQkJCUY2OTJBODZCMDI1NTU5
N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmggKi8sCkBAIC0zMjU1LDYgKzMyNzMsMTIgQEAKIAkJ
CQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi8sCiAJCQkJMTQyMEJF
N0ExMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNE
OTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCisJCQkJQTcwMDg3MzcxN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBNzAwODczODE3Q0JFODUzMDBD
M0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2
NDMgLyogTWFwUHJvdG90eXBlLmNwcCAqLywKKwkJCQlBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMg
LyogTWFwUHJvdG90eXBlLmggKi8sCisJCQkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIE1h
cEluc3RhbmNlLmNwcCAqLywKKwkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5z
dGFuY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zODA1LDEwICszODI5LDEyIEBACiAJCQkJQTczRTEzMzExNzk2MjRDRDAw
RTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyQzBGN0NFMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0
Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDA4NzNFMTdDQkU4RDMwMEMzRTY0MyAv
KiBNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEz
QkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
OTgxRkREMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0Rv
bWluYXRvcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAv
KiBNYXBJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5
NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQzQzgy
ODE0MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2
RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTM4
LDYgKzM5NjQsNyBAQAogCQkJCUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8q
IEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVB
QTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwMDg3M0Ex
N0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Rjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNv
dW50ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAvKiBH
Q0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDEyNyw2ICs0
MTU0LDcgQEAKIAkJCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODYuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNy
b0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTYwRjNBODNDMTAw
Rjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
Nzg1MDdENzE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQyRDZGMDkxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDE0NDhDQjEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQu
aCBpbiBIZWFkZXJzICovLApAQCAtNDI1NCwxMiArNDI4MiwxMiBAQAogCQkJCUJDQ0YwRDA4MEVG
MEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM5MDQxNDgwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJERjQ0MzAxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9u
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRp
dmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAw
NTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTcyRDRGMTY4
NzlGREQwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcz
ODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQxNDQ4Q0QxM0ExNzgzNzAwRjVCQTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJh
Y2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDYxN0I2QjVBQjAwQTdBRTNGIC8qIFR5
cGVkQXJyYXlBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDgxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5MzEs
NiArNDk1OSw3IEBACiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAv
KiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QTRBRTA4MTc5
NzNCMjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBNzg1MDdENjE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRC
bG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyog
TWFya2VkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00OTU2LDYgKzQ5ODUsNyBAQAogCQkJ
CTE0MjgwODUwMTA3RUMwRDcwMDEzRTdCMiAvKiBPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJB
cmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyog
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjk4MjA2MDE2
QkZFMzgxMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNDk4NCw2ICs1MDE0LDcgQEAKIAkJCQkxNDI4MDg0MTEwN0VDMDkzMDAxM0U3QjIgLyogUmVn
RXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBS
ZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0
RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MDA4NzNE
MTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyODA4NDIxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAvKiBSZWdFeHBNYXRjaGVzQXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDMxMDdFQzA5MzAwMTNFN0IyIC8qIFJl
Z0V4cE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUwMDAsNiArNTAzMSw3IEBACiAJCQkJ
MEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0MxRUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tJdGVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzAwODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyog
TWFwSW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQy
NUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5
REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggZWYwZGUzZTRlODY3Y2NkMGE4NWE5MGQ4NDI4ZjVkNTE0NzJlZDk0
Zi4uYzE2MTA0YmEzMDhmNjZkNjQ5OGFhNzIyOTBiZWI5NmFmMTE5MTJmYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xMzMs
NyArMTMzLDEyIEBACiAgICAgbWFjcm8odmFsdWUpIFwKICAgICBtYWNybyh2YWx1ZU9mKSBcCiAg
ICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFjcm8od3JpdGFi
bGUpIFwKKyAgICBtYWNybyhoYXMpIFwKKyAgICBtYWNybyhmb3JFYWNoKSBcCisgICAgbWFjcm8o
Y2xlYXIpIFwKKyAgICBtYWNybyhzaXplKSBcCisgICAgbWFjcm8oTWFwKQogCiAjZGVmaW5lIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8obnVs
bCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGVmZmRkZmQ4OTc2MGYyNTY2Y2NkM2NlZWM3NGRlN2YwZmZhMWI3YzUuLjkwMzUy
OWZjNTNjODhhZjJiODc0MDEwNDUwMGUxODg3YzhlNWRlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTcyLDYgKzcyLDkgQEAK
ICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVyLmgiCiAj
aW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJNYXBJbnN0YW5jZS5oIgorI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1h
dGhPYmplY3QuaCIKICNpbmNsdWRlICJOYW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYW1l
SW5zdGFuY2UuaCIKQEAgLTI5Nyw2ICszMDAsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNl
dChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBtX2Vycm9yUHJvdG90eXBlLnNldChleGVjLT52bSgp
LCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKSk7CiAgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgRXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5
cGUuZ2V0KCkpKTsKIAorICAgIG1fbWFwUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBN
YXBQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT52bSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBt
X21hcFN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgTWFwSW5zdGFuY2U6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX21hcFByb3RvdHlwZS5nZXQoKSkpOworCiAgICAg
Ly8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMDYsNiArMzEyLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgSlNDZWxsKiBib29sZWFuQ29u
c3RydWN0b3IgPSBCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBCb29sZWFu
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV9ib29sZWFuUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwq
IG51bWJlckNvbnN0cnVjdG9yID0gTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlz
LCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX251bWJlclByb3RvdHlwZS5nZXQoKSk7CiAgICAg
SlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0
aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9kYXRlUHJvdG90eXBlLmdldCgpKTsKKyAgICBK
U0NlbGwqIG1hcENvbnN0cnVjdG9yID0gTWFwQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlz
LCBNYXBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX21hcFByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBtX3Jl
Z0V4cENvbnN0cnVjdG9yLnNldChleGVjLT52bSgpLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKGV4ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhwUHJvdG90
eXBlLmdldCgpKSk7CiAKQEAgLTMyOSw2ICszMzYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBtX2RhdGVQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwog
ICAgIG1fZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZt
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9y
LmdldCgpLCBEb250RW51bSk7CisgICAgbV9tYXBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
bWFwQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5PYmplY3QsIG9iamVjdENvbnN0
cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9y
LCBEb250RW51bSk7CkBAIC0zNDUsNiArMzUzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlN5bnRheEVycm9yLCBtX3N5bnRheEVycm9y
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuVHlwZUVycm9yLCBtX3R5cGVF
cnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlVSSUVycm9yLCBtX1VS
SUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuTWFwLCBtYXBDb25z
dHJ1Y3RvciwgRG9udEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9l
dmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGZlZThmZTQ0YzE4NjE5NGJjOTkwNDAyYWY1
YWU5YTM4ZjY0MWNjZjQuLmQyYjk4MjYyZjI5YzkzOTgwYzFiNTkyYzJmYzgwZmU2MmQxNWE4NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtNjAsNiArNjAsNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxv
Y2s7CiBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3Mg
TWFwUHJvdG90eXBlOwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dy
YW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKQEAgLTEzNCw2ICsxMzUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPERhdGVQcm90b3R5cGU+IG1fZGF0ZVByb3Rv
dHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlw
ZTsKICAgICBXcml0ZUJhcnJpZXI8RXJyb3JQcm90b3R5cGU+IG1fZXJyb3JQcm90b3R5cGU7Cisg
ICAgV3JpdGVCYXJyaWVyPE1hcFByb3RvdHlwZT4gbV9tYXBQcm90b3R5cGU7CiAKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwpAQCAtMTY3LDYg
KzE2OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBTdHJ1Y3R1cmU7CiAg
ICAgCiAgICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXJQcm90b3R5cGU+IG1fYXJyYXlCdWZm
ZXJQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJheUJ1ZmZlclN0
cnVjdHVyZTsKQEAgLTM1Niw2ICszNTksNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBudW1i
ZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBp
bnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBz
dHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVj
dHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiYTEzYjM1Y2FkYTUzMjE5NjE2YzM4ZTgyN2VkZTNl
Y2NmZjdiYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIk1hcENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJNYXBJbnN0YW5jZS5oIgorI2luY2x1
ZGUgIk1hcFByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IE1hcENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFwQ29uc3RydWN0b3IpIH07CisKK3ZvaWQgTWFwQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTWFwUHJvdG90eXBlKiBt
YXBQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgbWFw
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBt
YXBQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gYXNJbnRlcm5h
bEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCktPm1hcFN0cnVjdHVyZSgp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTWFwSW5zdGFuY2U6OmNyZWF0ZShleGVjLCBt
YXBTdHJ1Y3R1cmUpKTsKK30KKworQ29uc3RydWN0VHlwZSBNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAg
IGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0TWFwOworICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgTWFwQ29uc3RydWN0b3I6OmdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RNYXA7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzg1ZWNiM2U0NDUwYjJmMGIzOTA4ZDY1YWY1MDM2MzEwYzk0N2NjNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVj
dG9yLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWFwQ29uc3RydWN0b3JfaAorI2RlZmluZSBNYXBDb25zdHJ1
Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBNYXBQcm90b3R5cGU7CisKK2NsYXNzIE1hcENvbnN0cnVjdG9yIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOworCisgICAgc3RhdGljIE1hcENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
TWFwUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIE1hcENvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcENvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTWFwQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZnVuY3Rp
b25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIE1hcENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSosIE1hcFByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfQorCisjZW5kaWYg
Ly8gIWRlZmluZWQoTWFwQ29uc3RydWN0b3JfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYyNmIyNWMxYjc0NGMzMzg1MmNhNzcxMmZjM2Jm
ZmMxNmMyOTY5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcERhdGEuY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWFwRGF0YS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBNYXBEYXRhOjpzX2luZm8gPSB7ICJNYXBEYXRhIiwg
MCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBEYXRhKSB9OworCitlbnVtIHsgTWluaW11
bUVudHJ5Q291bnQgPSAxNiB9OworCitib29sIE1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5k
KENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChtX25leHRJbnNlcnRpb25Qb2ludCA8
IG1fY2FwYWNpdHkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIERlZmVyR0MgZGVmZXJHQygq
Y2FsbEZyYW1lLT5oZWFwKCkpOworICAgIHNpemVfdCBuZXdNaW5pbXVtU2l6ZSA9IHN0ZDo6bWlu
PHNpemVfdD4oKG1fbmV4dEluc2VydGlvblBvaW50IC0gbV9kZWxldGVkQ291bnQpICogMiwgTWlu
aW11bUVudHJ5Q291bnQpOworICAgIHZvaWQqIHJlc3VsdCA9IDA7CisgICAgaWYgKCFjYWxsRnJh
bWUtPmhlYXAoKS0+dHJ5QWxsb2NhdGVTdG9yYWdlKHRoaXMsIG5ld01pbmltdW1TaXplICogc2l6
ZW9mKEVudHJ5KSwgJnJlc3VsdCkpIHsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNh
bGxGcmFtZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRW50cnkqIG5ld0Vu
dHJpZXMgPSBzdGF0aWNfY2FzdDxFbnRyeSo+KHJlc3VsdCk7CisgICAgc2l6ZV90IGluZGV4ID0g
MDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbmV4dEluc2VydGlvblBvaW50OyBpKysp
IHsKKyAgICAgICAgaWYgKCFtX2VudHJpZXNbaV0ua2V5KQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIG5ld0VudHJpZXNbaW5kZXhdLmtleS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKG1f
ZW50cmllc1tpXS5rZXkuZ2V0KCkpOworICAgICAgICBuZXdFbnRyaWVzW2luZGV4XS52YWx1ZS5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKG1fZW50cmllc1tpXS52YWx1ZS5nZXQoKSk7CisgICAgICAg
IGluZGV4Kys7CisgICAgfQorICAgIG1fZW50cmllcyA9IG5ld0VudHJpZXM7CisgICAgbV9jYXBh
Y2l0eSA9IG5ld01pbmltdW1TaXplOworICAgIG1fbmV4dEluc2VydGlvblBvaW50ID0gaW5kZXg7
CisgICAgbV9kZWxldGVkQ291bnQgPSAwOworICAgIHJldHVybiB0cnVlOworfQorCitNYXBEYXRh
OjpFbnRyeSogTWFwRGF0YTo6ZmluZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBrZXkp
Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25leHRJbnNlcnRpb25Qb2ludDsgaSsr
KSB7CisgICAgICAgIGlmIChKU1ZhbHVlOjpzdHJpY3RFcXVhbChjYWxsRnJhbWUsIG1fZW50cmll
c1tpXS5rZXkuZ2V0KCksIGtleSkpCisgICAgICAgICAgICByZXR1cm4gbV9lbnRyaWVzICsgaTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWFwRGF0YTo6c2V0KENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBFbnRyeSogZW50
cnkgPSBmaW5kKGNhbGxGcmFtZSwga2V5KTsKKyAgICBpZiAoZW50cnkpIHsKKyAgICAgICAgZW50
cnktPnZhbHVlLnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoIWVuc3VyZVNwYWNlRm9yQXBwZW5kKGNhbGxGcmFtZSkpCisg
ICAgICAgIHJldHVybjsKKyAgICBFbnRyeSogbmV3RW50cnkgPSBtX2VudHJpZXMgKyBtX25leHRJ
bnNlcnRpb25Qb2ludDsKKyAgICBtX25leHRJbnNlcnRpb25Qb2ludCsrOworICAgIG5ld0VudHJ5
LT5rZXkuc2V0KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywga2V5KTsKKyAgICBuZXdFbnRyeS0+dmFs
dWUuc2V0KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywgdmFsdWUpOworfQorCitKU1ZhbHVlIE1hcERh
dGE6OmdldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBrZXkpCit7CisgICAgaWYgKEVu
dHJ5KiBlbnRyeSA9IGZpbmQoY2FsbEZyYW1lLCBrZXkpKQorICAgICAgICByZXR1cm4gZW50cnkt
PnZhbHVlLmdldCgpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK2Jvb2wgTWFwRGF0YTo6
cmVtb3ZlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBFbnRyeSog
ZW50cnkgPSBmaW5kKGNhbGxGcmFtZSwga2V5KTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgZW50cnktPmtleS5jbGVhcigpOworICAgIGVudHJ5LT52YWx1ZS5j
bGVhcigpOworICAgIG1fZGVsZXRlZENvdW50Kys7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgTWFwRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgTWFw
RGF0YSogbWFwRGF0YSA9IGpzQ2FzdDxNYXBEYXRhKj4oY2VsbCk7CisgICAgRW50cnkqIGVudHJp
ZXMgPSBtYXBEYXRhLT5tX2VudHJpZXM7CisgICAgc2l6ZV90IGNvdW50ID0gbWFwRGF0YS0+bV9u
ZXh0SW5zZXJ0aW9uUG9pbnQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZlbnRyaWVzW2ldLmtleSk7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZlbnRyaWVzW2ldLnZhbHVlKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTAzOGI4YjQzZDliODI5
MTY4OGMxMzQzMjMwNGE2NjVmYTk2ZTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1hcERhdGFfaAorI2RlZmluZSBNYXBEYXRhX2gKKworI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIE1hcERhdGEgOiBwdWJsaWMgSlNDZWxsIHsKK3ByaXZhdGU6
CisgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGtleTsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IHZhbHVlOworICAgIH07CisKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCisgICAgc3RhdGljIE1hcERhdGEqIGNyZWF0ZShW
TSYgdm0pCisgICAgeworICAgICAgICBNYXBEYXRhKiBtYXBEYXRhID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8TWFwRGF0YT4odm0uaGVhcCkpIE1hcERhdGEodm0pOworICAgICAgICBtYXBE
YXRhLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBtYXBEYXRhOworICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsdWUpOworICAg
IEpTVmFsdWUgZ2V0KENhbGxGcmFtZSosIEpTVmFsdWUga2V5KTsKKyAgICBib29sIHJlbW92ZShD
YWxsRnJhbWUqLCBKU1ZhbHVlIGtleSk7CisgICAgYm9vbCBjb250YWlucyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSBrZXkpIHsgcmV0dXJuIGZpbmQoY2FsbEZyYW1lLCBrZXkpOyB9Cisg
ICAgc2l6ZV90IHNpemUoQ2FsbEZyYW1lKikgY29uc3QgeyByZXR1cm4gbV9uZXh0SW5zZXJ0aW9u
UG9pbnQgLSBtX2RlbGV0ZWRDb3VudDsgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAg
ICAgICBtX2NhcGFjaXR5ID0gMDsKKyAgICAgICAgbV9uZXh0SW5zZXJ0aW9uUG9pbnQgPSAwOwor
ICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisgICAgICAgIG1fZW50cmllcyA9IDA7CisgICAg
fQorCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIE1hcERhdGEoVk0mIHZtKQor
ICAgICAgICA6IEJhc2Uodm0sIHZtLm1hcERhdGFTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICwg
bV9jYXBhY2l0eSgwKQorICAgICAgICAsIG1fbmV4dEluc2VydGlvblBvaW50KDApCisgICAgICAg
ICwgbV9kZWxldGVkQ291bnQoMCkKKyAgICAgICAgLCBtX2VudHJpZXMoMCkKKyAgICB7CisgICAg
fQorCisgICAgRW50cnkqIGZpbmQoQ2FsbEZyYW1lKiwgSlNWYWx1ZSBrZXkpOworICAgIGJvb2wg
ZW5zdXJlU3BhY2VGb3JBcHBlbmQoQ2FsbEZyYW1lKik7CisKKyAgICBzaXplX3QgbV9jYXBhY2l0
eTsKKyAgICBzaXplX3QgbV9uZXh0SW5zZXJ0aW9uUG9pbnQ7CisgICAgc2l6ZV90IG1fZGVsZXRl
ZENvdW50OworICAgIEVudHJ5KiBtX2VudHJpZXM7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Cit9OworCit9CisKKyNlbmRpZiAvKiAhZGVmaW5lZChNYXBEYXRhX2gpICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTAyY2FlZjgzMjYwN2FjZTE2YjhlYjM1ZDU0YTY0MmQ4ODVjMDQ1YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmNwcApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWFwSW5zdGFuY2UuaCIKKyNpbmNs
dWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjb25z
dCBDbGFzc0luZm8gTWFwSW5zdGFuY2U6OnNfaW5mbyA9IHsgIk1hcCIsICZCYXNlOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFwSW5zdGFuY2UpIH07CisKK3ZvaWQgTWFwSW5z
dGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsdmlzaXRvcik7CisgICAgTWFwSW5zdGFu
Y2UqIGluc3RhbmNlID0ganNDYXN0PE1hcEluc3RhbmNlKj4oY2VsbCk7CisgICAgdmlzaXRvci5h
cHBlbmQoJmluc3RhbmNlLT5tX21hcERhdGEpOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5z
dGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTc4ZmYwY2NhZjQyYWEyOTI5ZmE5YzRkNzRlNGRhOWM2YmUxNDU0YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgTWFwSW5zdGFuY2VfaAorI2RlZmluZSBNYXBJbnN0YW5jZV9oCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIE1hcEluc3RhbmNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgc3RhdGljIE1hcEluc3RhbmNlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgICAgIE1hcEluc3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE1hcEluc3RhbmNlPih2bS5oZWFwKSkgTWFwSW5zdGFuY2Uodm0sIHN0
cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAgICBzdGF0aWMgTWFwSW5zdGFuY2UqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIE1hcERh
dGEqIG1hcERhdGEoKSB7IHJldHVybiBtX21hcERhdGEuZ2V0KCk7IH0KKworcHJpdmF0ZToKKwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIE1hcEluc3RhbmNlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgbV9tYXBEYXRhLnNldCh2
bSwgdGhpcywgTWFwRGF0YTo6Y3JlYXRlKHZtKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVy
PE1hcERhdGE+IG1fbWFwRGF0YTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcElu
c3RhbmNlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNzlmMmQzMmQwMzc2YzdhNDQ2ZDA2MTAyOGRkYWRiZjc5ZDBkODkz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1hcFBy
b3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBJbnN0YW5jZS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAi
TWFwIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBQcm90b3R5
cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y0NsZWFyKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1Nl
dChFeGVjU3RhdGUqKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJvdG9GdW5jU2l6ZShFeGVjU3RhdGUqKTsKKyAgICAKK3ZvaWQgTWFwUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFw
LmFkZFByb3RvdHlwZSh0aGlzKTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+Y2xlYXIsIG1hcFByb3RvRnVuY0NsZWFyLCBEb250RW51bSwgMCk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5kZWxldGVLZXl3b3JkLCBtYXBQcm90
b0Z1bmNEZWxldGUsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmZvckVhY2gsIG1hcFByb3RvRnVuY0ZvckVhY2gsIERvbnRFbnVtLCAxKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9G
dW5jR2V0LCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5oYXMsIG1hcFByb3RvRnVuY0hhcywgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+c2V0LCBtYXBQcm90b0Z1bmNTZXQsIERvbnRF
bnVtLCAyKTsKKworICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZShleGVjKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZShleGVjLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCks
IG1hcFByb3RvRnVuY1NpemUpOworICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwg
ZnVuY3Rpb24pOworICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMt
PnNpemUsIGFjY2Vzc29yLCBEb250RW51bSB8IEFjY2Vzc29yKTsKK30KKworc3RhdGljIE1hcERh
dGEqIGdldE1hcERhdGEoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQor
eworICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihj
YWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIE1hcEluc3RhbmNlKiBtYXAgPSBqc0R5bmFt
aWNDYXN0PE1hcEluc3RhbmNlKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoIW1hcCkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBj
YWxsZWQgb24gbm9uLU1hcCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gbWFwLT5tYXBEYXRhKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFwUHJvdG9GdW5jQ2xlYXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0
YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgZGF0YS0+Y2xlYXIoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY0RlbGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0g
Z2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
ZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkYXRhLT5yZW1vdmUoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY0ZvckVhY2goQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAg
TWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBkYXRhLT5nZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jSGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRh
dGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRhdGEtPmNvbnRhaW5zKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7Cisg
ICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgZGF0YS0+c2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1h
cERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZGF0YS0+c2l6
ZShjYWxsRnJhbWUpKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZmMGFiNmE1NjM5YTcxY2NhMjYwZTg0ZThjYThi
ZmExZDRjMmM5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcFByb3RvdHlwZV9oCisjZGVmaW5l
IE1hcFByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgTWFwUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIE1h
cFByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBNYXBQcm90b3R5
cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcFByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIE1hcFByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICBw
cm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1h
cFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAg
ICA6IEJhc2UoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfQorCisj
ZW5kaWYgLy8gIWRlZmluZWQoTWFwUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggOWJlZWIwNTdlMDZjZDMzMmZmZTYxMTgzNjg5YTA3MjllNDU5YTEzNS4u
N2I2OWEwMzNkNWYyMWQ4NTg3MjllYWE1YTg1NmQ2ZmE2MmFlNDhlYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkpTV2l0aFNj
b3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRl
ICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5o
IgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCkBAIC0yMjUsNiArMjI2LDcgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHVubGlua2VkRXZhbENvZGVCbG9j
a1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvcGVydHlUYWJsZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKKyAgICBtYXBEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgTWFwRGF0YTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNtYWxsU3RyaW5ncy5pbml0aWFsaXpl
Q29tbW9uU3RyaW5ncygqdGhpcyk7CiAKICAgICB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElk
ZW50aWZpZXJUYWJsZShleGlzdGluZ0VudHJ5SWRlbnRpZmllclRhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCmluZGV4IGZiZjhhY2MyYWE2NGU2ZTVmY2YzZWYyZGZlZGFlNzFkNzU2
MjU1YWMuLjRlYzI0NjE5ZGRiNzIwNzA2ZWQxMjZlZDgwNzFjNzM3YmZkNzExY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMjYxLDYgKzI2MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1
cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tT
dHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb3BlcnR5VGFibGVTdHJ1Y3R1
cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1hcERhdGFTdHJ1Y3R1cmU7CiAKICAgICAg
ICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENvbW1vbklkZW50
aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vemlsbGEvYWN0dWFsLmh0bWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW96aWxsYS9hY3R1YWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODc5M2JiZGI0OTY1NjlmODJkNmYxYTQ4
ZmM4ZGNlMTQ5ZmQ2N2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vemlsbGEvYWN0dWFsLmh0bWwKQEAgLTAsMCArMSw1MjUgQEAKKzxodG1sPjxoZWFk
PgorPHRpdGxlPlRlc3QgcmVzdWx0cywgc3F1aXJyZWxmaXNoPC90aXRsZT4KKzwvaGVhZD4KKzxi
b2R5IGJnY29sb3I9J3doaXRlJz4KKzxhIG5hbWU9J3RpcHB5X3RvcCc+PC9hPgorPGgyPlRlc3Qg
cmVzdWx0cywgc3F1aXJyZWxmaXNoPC9oMj48YnI+Cis8cCBjbGFzcz0ncmVzdWx0c19zdW1tYXJ5
Jz4KK1Rlc3QgTGlzdDogQWxsIHRlc3RzPGJyPgorU2tpcCBMaXN0OiBlY21hL0RhdGUvMTUuOS4y
LjEuanMsIGVjbWEvRGF0ZS8xNS45LjIuMi0xLmpzLCBlY21hL0RhdGUvMTUuOS4yLjItMi5qcywg
ZWNtYS9EYXRlLzE1LjkuMi4yLTMuanMsIGVjbWEvRGF0ZS8xNS45LjIuMi00LmpzLCBlY21hL0Rh
dGUvMTUuOS4yLjItNS5qcywgZWNtYS9EYXRlLzE1LjkuMi4yLTYuanMsIGVjbWFfMy9EYXRlLzE1
LjkuNS42LmpzLCBlY21hXzMvRGF0ZS8xNS45LjUuNy5qcywgZWNtYS9EYXRlLzE1LjkuNS4xNC5q
cywgZWNtYS9EYXRlLzE1LjkuNS4zMS0xLmpzLCBlY21hL0RhdGUvMTUuOS41LjM0LTEuanM8YnI+
CisxMTIzIHRlc3Qocykgc2VsZWN0ZWQsIDExMTUgdGVzdChzKSBjb21wbGV0ZWQsIDQ1IGZhaWx1
cmVzIHJlcG9ydGVkICg0LjAzJSBmYWlsZWQpPGJyPgorRW5naW5lIGNvbW1hbmQgbGluZTogIi9V
c2Vycy9vbGl2ZXIvV2ViS2l0L09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQvL0RlYnVnL2pzYyIgPGJy
PgorT1MgdHlwZTogRGFyd2luIEVnZ3BsYW50LmxvY2FsIDEzLjAuMCBEYXJ3aW4gS2VybmVsIFZl
cnNpb24gMTMuMC4wOiBUdWUgSnVsIDMwIDIwOjUyOjIyIFBEVCAyMDEzOyByb290OnhudS0yNDIy
LjEuNTN+My9SRUxFQVNFX1g4Nl82NCB4ODZfNjQ8YnI+CitUZXN0Y2FzZSBleGVjdXRpb24gdGlt
ZTogMiBtaW51dGVzLCA2IHNlY29uZHMuPGJyPgorVGVzdHMgY29tcGxldGVkIG9uIE1vbiBBdWcg
MjYgMTA6MTk6MDQgMjAxMy48YnI+PGJyPgorWyA8YSBocmVmPScjZmFpbF9kZXRhaWwnPkZhaWx1
cmUgRGV0YWlsczwvYT4gfCA8YSBocmVmPScjcmV0ZXN0X2xpc3QnPlJldGVzdCBMaXN0PC9hPiB8
IDxhIGhyZWY9J21lbnUuaHRtbCc+VGVzdCBTZWxlY3Rpb24gUGFnZTwvYT4gXTxicj4KKzxocj4K
KzxhIG5hbWU9J2ZhaWxfZGV0YWlsJz48L2E+Cis8aDI+RmFpbHVyZSBEZXRhaWxzPC9oMj48YnI+
Cis8ZGw+PGEgbmFtZT0nZmFpbHVyZTEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8yL0V4Y2VwdGlvbnMvZnVuY3Rpb24tMDAxLmpzJz5l
Y21hXzIvRXhjZXB0aW9ucy9mdW5jdGlvbi0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0n
aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3OCcgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTAyNzg8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2Zh
aWx1cmUyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+Cis8dHQ+PGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KK2V2YWwo
ImZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gZygpe30iKSAodGhyZXcgbm8gZXhjZXB0aW9uIHRocm93
biA9IGZhaWwgRkFJTEVEISBleHBlY3RlZDogcGFzczxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0n
ZmFpbHVyZTInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vZWNtYV8yL1JlZ0V4cC9yZWdyZXNzLTAwMS5qcyc+ZWNtYV8yL1JlZ0V4cC9yZWdyZXNz
LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPWh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1NycgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgaHR0cDovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3PC9hPjxicj4KKyBbIDxhIGhyZWY9
JyNmYWlsdXJlMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMnPk5l
eHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxi
cj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5h
dGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4K
K1JlZ0V4cC9oZXgtMDAxLmpzIEpTIHJlZ2V4cCBhbmNob3Jpbmcgb24gZW1wdHkgbWF0Y2ggYnVn
PGJyPgorQlVHTlVNQkVSOiBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTc8YnI+CitFeGNlcHRpb246IFR5cGVFcnJvcjogUmVnRXhwIGlzIG5vdCBhIGZ1bmN0
aW9uIChldmFsdWF0aW5nICcvYXx8Yi8oJycpJyk8YnI+CitnbG9iYWwgY29kZUAuL2VjbWFfMi9S
ZWdFeHAvcmVncmVzcy0wMDEuanM6MTg6MjI8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1
cmUzJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2VjbWFfMy9GdW5FeHByL2ZlLTAwMS5qcyc+ZWNtYV8zL0Z1bkV4cHIvZmUtMDAxLmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMic+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5TVEFUVVM6IEZ1bmN0aW9uIEV4cHJl
c3Npb24gU3RhdGVtZW50cyBiYXNpYyB0ZXN0Ljxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8
YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEJvdGggZnVuY3Rpb25zIHdlcmUg
ZGVmaW5lZC48YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZh
bHVlICcxJywgQWN0dWFsIHZhbHVlICcwJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvU3RhdGVtZW50cy9y
ZWdyZXNzLTE5NDM2NC5qcyc+ZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanM8L2E+
IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzJz5QcmV2aW91cyBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAw
LCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBs
ZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnKCc8YnI+CitldmFsQFtuYXRpdmUgY29kZV08YnI+CitnbG9iYWwgY29k
ZUAuL2VjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzOjU2OjE0PGJyPgorPC90dD48
YnI+Cis8YSBuYW1lPSdmYWlsdXJlNSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvVW5pY29kZS91Yy0wMDEuanMnPmVjbWFfMy9Vbmlj
b2RlL3VjLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVn
IE51bWJlciAyMzYxMDwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTQnPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBVbmljb2Rl
IGZvcm1hdC1jb250cm9sIGNoYXJhY3RlciAoQ2F0ZWdvcnkgQ2YpIHRlc3QuPGJyPgorRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gVW5p
Y29kZSBmb3JtYXQtY29udHJvbCBjaGFyYWN0ZXIgdGVzdCAoQ2F0ZWdvcnkgQ2YuKTxicj4KK0ZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ25vIGVycm9yJywg
QWN0dWFsIHZhbHVlICdub+KAjiBlcnJvcic8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0
ZXN0KCldIDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTYnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvQXJyYXkvc3BsaWNl
MS5qcyc+anMxXzIvQXJyYXkvc3BsaWNlMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU3
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAxMTxicj4KK1Rlc3RjYXNlIHRl
cm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6
PGJyPgorRXhlY3V0aW5nIHNjcmlwdDogc3BsaWNlMS5qczxicj4KK0FzIGRlc2NyaWJlZCBpbiBO
ZXRzY2FwZSBkb2MgIldoYXRzIG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIgU3RyaW5nOnNwbGljZSAx
PGJyPgorQVNTRVJUSU9OIEZBSUxFRDogbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgaXNDZWxsKGVkZ2UudXNlS2luZCgpKTxicj4KKy9Wb2x1bWVzL0RhdGEvZ2l0L1dlYktpdC9P
cGVuU291cmNlL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCgy
NzY1KSA6IEpTQzo6REZHOjpTcGVjdWxhdGVDZWxsT3BlcmFuZDo6U3BlY3VsYXRlQ2VsbE9wZXJh
bmQoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUICosIEpTQzo6REZHOjpFZGdlLCBKU0M6OkRGRzo6
T3BlcmFuZFNwZWN1bGF0aW9uTW9kZSk8YnI+CisxICAgMHg2OWVkNmQgV1RGQ3Jhc2g8YnI+Cisy
ICAgMHgzMTRlZTAgSlNDOjpERkc6OlNwZWN1bGF0ZUNlbGxPcGVyYW5kOjpTcGVjdWxhdGVDZWxs
T3BlcmFuZChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQqLCBKU0M6OkRGRzo6RWRnZSwgSlNDOjpE
Rkc6Ok9wZXJhbmRTcGVjdWxhdGlvbk1vZGUpPGJyPgorMyAgIDB4MmVmODkyIEpTQzo6REZHOjpT
cGVjdWxhdGVDZWxsT3BlcmFuZDo6U3BlY3VsYXRlQ2VsbE9wZXJhbmQoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUKiwgSlNDOjpERkc6OkVkZ2UsIEpTQzo6REZHOjpPcGVyYW5kU3BlY3VsYXRpb25N
b2RlKTxicj4KKzQgICAweDMzNjRkZiBKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
SlNDOjpERkc6Ok5vZGUqKTxicj4KKzUgICAweDJkNDI0OSBKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDdXJyZW50QmxvY2soKTxicj4KKzYgICAweDJkNGM0MiBKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoKTxicj4KKzcgICAweDI0NmIwMCBKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmNvbXBpbGVCb2R5KCk8YnI+Cis4ICAgMHgyNDhmNTQgSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKTxicj4KKzkgICAweDJiMzQwMSBKU0M6OkRGRzo6UGxhbjo6
Y29tcGlsZUluVGhyZWFkSW1wbChKU0M6OkRGRzo6TG9uZ0xpdmVkU3RhdGUmKTxicj4KKzEwICAw
eDJiMmM3OCBKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkKEpTQzo6REZHOjpMb25nTGl2
ZWRTdGF0ZSYpPGJyPgorMTEgIDB4MjFkZTQ1IEpTQzo6REZHOjpjb21waWxlKEpTQzo6REZHOjpD
b21waWxlTW9kZSwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkNvZGVCbG9jayosIFdURjo6UmVmUHRy
PEpTQzo6SklUQ29kZT4mLCBKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0ciosIHVuc2lnbmVkIGlu
dCk8YnI+CisxMiAgMHgyMWRlZWUgSlNDOjpERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6Q29kZUJsb2NrKiwgV1RGOjpSZWZQdHI8SlNDOjpKSVRDb2RlPiYsIEpT
Qzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiwgdW5zaWduZWQgaW50KTxicj4KKzEzICAweDM5NTg2
YiBKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGVJbXBsKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpGdW5jdGlvbkNvZGVCbG9jayosIFdURjo6UmVmUHRyPEpTQzo6SklUQ29kZT4mLCBK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIEpTQzo6SklUQ29kZTo6SklUVHlwZSwgdW5zaWdu
ZWQgaW50LCBKU0M6OkpJVENvbXBpbGF0aW9uRWZmb3J0KTxicj4KKzE0ICAweDM5NTc2MiBKU0M6
OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbkltcGwoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkZ1
bmN0aW9uQ29kZUJsb2NrKiwgV1RGOjpSZWZQdHI8SlNDOjpKSVRDb2RlPiYsIEpTQzo6TWFjcm9B
c3NlbWJsZXJDb2RlUHRyJiwgSlNDOjpKSVRDb2RlOjpKSVRUeXBlLCB1bnNpZ25lZCBpbnQsIEpT
Qzo6Q29kZVNwZWNpYWxpemF0aW9uS2luZCk8YnI+CisxNSAgMHgzOTBhZmMgSlNDOjpwcmVwYXJl
RnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNDOjpFeGVjU3RhdGUqLCBXVEY6OlJlZlB0cjxKU0M6OkZ1
bmN0aW9uQ29kZUJsb2NrPiYsIEpTQzo6RnVuY3Rpb25Db2RlQmxvY2sqLCBXVEY6OlJlZlB0cjxK
U0M6OkpJVENvZGU+JiwgSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBpbnQmLCBKU0M6OkpJ
VENvZGU6OkpJVFR5cGUsIHVuc2lnbmVkIGludCwgSlNDOjpDb2RlU3BlY2lhbGl6YXRpb25LaW5k
KTxicj4KKzE2ICAweDM4ZDRkMCBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNTY29wZSosIEpTQzo6SklUQ29kZTo6
SklUVHlwZSwgSlNDOjpDb21waWxhdGlvblJlc3VsdCosIHVuc2lnbmVkIGludCk8YnI+CisxNyAg
MHgzOGQyNjMgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6ZWRGb3JDYWxs
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Njb3BlKiwgSlNDOjpDb21waWxhdGlvblJlc3VsdCYs
IHVuc2lnbmVkIGludCk8YnI+CisxOCAgMHgxMDM0YzMgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvbXBpbGVPcHRpbWl6ZWRGb3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTU2NvcGUqLCBKU0M6
OkNvbXBpbGF0aW9uUmVzdWx0JiwgdW5zaWduZWQgaW50LCBKU0M6OkNvZGVTcGVjaWFsaXphdGlv
bktpbmQpPGJyPgorMTkgIDB4Zjg1MDAgSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6Y29tcGlsZU9w
dGltaXplZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNTY29wZSosIEpTQzo6Q29tcGlsYXRpb25S
ZXN1bHQmLCB1bnNpZ25lZCBpbnQpPGJyPgorMjAgIDB4NDExZTU1IGN0aV9vcHRpbWl6ZTxicj4K
KzIxICAweDQxOTkxMCBqc2NHZW5lcmF0ZWROYXRpdmVDb2RlPGJyPgorMjIgIDB4M2VhNjY1IEpT
Qzo6SklUQ29kZTo6ZXhlY3V0ZShKU0M6OkpTU3RhY2sqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
Vk0qKTxicj4KKzIzICAweDNjNTdlMSBKU0M6OkludGVycHJldGVyOjpleGVjdXRlKEpTQzo6UHJv
Z3JhbUV4ZWN1dGFibGUqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTxicj4KKzI0
ICAweDE0NDg0MSBKU0M6OmV2YWx1YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VDb2Rl
IGNvbnN0JiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUqKTxicj4KKzI1ICAweDI4YjA2IHJ1
bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCosIFdURjo6VmVjdG9yPFNjcmlwdCwgMHVsLCBXVEY6
OkNyYXNoT25PdmVyZmxvdz4gY29uc3QmLCBib29sKTxicj4KKzI2ICAweDI4MDFjIGpzY21haW4o
aW50LCBjaGFyKiopPGJyPgorMjcgIDB4MjdlMjcgbWFpbjxicj4KKzI4ICAweDkxMzZmNzBkIHN0
YXJ0PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNyc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9PYmplY3RzL3RvU3RyaW5n
LTAwMS5qcyc+anMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJy
PgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlOCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rl
c3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91
dHB1dCB3YXM6PGJyPgorSlMxXzIgT2JqZWN0LnRvU3RyaW5nKCk8YnI+CitFeGNlcHRpb246IFR5
cGVFcnJvcjogUmVnRXhwIGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICcvXlx7KC4qKVx9
JC8ocyknKTxicj4KK2NoZWNrT2JqZWN0VG9TdHJpbmdALi9qczFfMi9PYmplY3RzL3RvU3RyaW5n
LTAwMS5qczoxMDM6MTQ8YnI+CitnbG9iYWwgY29kZUAuL2pzMV8yL09iamVjdHMvdG9TdHJpbmct
MDAxLmpzOjYzOjI4PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlOCc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlv
bi9GdW5jdGlvbl9vYmplY3QuanMnPmpzMV8yL2Z1bmN0aW9uL0Z1bmN0aW9uX29iamVjdC5qczwv
YT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTcnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+PGJyPgorRmFpbHVyZSBtZXNz
YWdlcyB3ZXJlOjxicj4KK2YuYXJpdHkgPSB1bmRlZmluZWQgRkFJTEVEISBleHBlY3RlZDogMzxi
cj4KK30gRkFJTEVEISBleHBlY3RlZDogPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJl
OSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9q
czFfMi9mdW5jdGlvbi9mdW5jdGlvbi0wMDEtbi5qcyc+anMxXzIvZnVuY3Rpb24vZnVuY3Rpb24t
MDAxLW4uanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU4Jz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTAnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3Rl
ZCBleGl0IGNvZGUgMywgZ290IDA8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFs
IDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK2Z1bmN0aW9uLTAwMS5q
cyBmdW5jdGlvbnMgbm90IHNlcGFyYXRlZCBieSBzZW1pY29sb25zIGFyZSBlcnJvcnMgaW4gdmVy
c2lvbiAxMjAgYW5kIGhpZ2hlcjxicj4KK2V2YWwoImZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gZygp
e30iKSA9IHVuZGVmaW5lZCBQQVNTRUQhPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJl
MTAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
anMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanMnPmpzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0x
LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlOSc+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTExJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhp
dCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJy
PgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitKU18xLjIgVGhlIHZhcmlhYmxl
IHN0YXRtZW50PGJyPgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6IFJlZ0V4cCBpcyBub3QgYSBmdW5j
dGlvbiAoZXZhbHVhdGluZyAneCgiaGkiKScpPGJyPgorZ2xvYmFsIGNvZGVALi9qczFfMi9mdW5j
dGlvbi9yZWdleHBhcmctMS5qczo4MDoxMTxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVy
ZTExJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV8yL29wZXJhdG9yL2VxdWFsaXR5LmpzJz5qczFfMi9vcGVyYXRvci9lcXVhbGl0eS5qczwv
YT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEwJz5QcmV2aW91cyBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD48YnI+CitGYWlsdXJlIG1l
c3NhZ2VzIHdlcmU6PGJyPgorKG5ldyBTdHJpbmcoJ3gnKSA9PSAneCcpICAgICAgICAgICAgICAg
ICAgPSB0cnVlIEZBSUxFRCEgZXhwZWN0ZWQ6IGZhbHNlPGJyPgorKCd4JyA9PSBuZXcgU3RyaW5n
KCd4JykpICAgICAgICAgICAgICAgICAgPSB0cnVlIEZBSUxFRCEgZXhwZWN0ZWQ6IGZhbHNlPGJy
PgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL1JlZ0V4cF9sYXN0SW5k
ZXguanMnPmpzMV8yL3JlZ2V4cC9SZWdFeHBfbGFzdEluZGV4LmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUxMyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0Pjxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CityZT0veC4vZzsgcmUubGFzdEluZGV4PTQ7IHJlLmV4ZWMoJ3h5YWJjZHhhJykgPSB4YSBGQUlM
RUQhIGV4cGVjdGVkOiBbInhhIl08YnI+CityZS5leGVjKCd4eWFiY2RlZicpID0geHkgRkFJTEVE
ISBleHBlY3RlZDogWyJ4eSJdPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTMnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIv
cmVnZXhwL3JlZ3Jlc3MtNjM1OS5qcyc+anMxXzIvcmVnZXhwL3JlZ3Jlc3MtNjM1OS5qczwvYT4g
ZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPWh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM1OScg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTIn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNCc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4
cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBz
aWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorQlVHTlVNQkVS
OiBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTk8YnI+CitF
eGNlcHRpb246IFR5cGVFcnJvcjogUmVnRXhwIGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5n
ICcvKGEqKWJcMSsvKCJiYWFhYyIpJyk8YnI+CitnbG9iYWwgY29kZUAuL2pzMV8yL3JlZ2V4cC9y
ZWdyZXNzLTYzNTkuanM6NTY6MTg8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNCc+
PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFf
Mi9yZWdleHAvcmVncmVzcy05MTQxLmpzJz5qczFfMi9yZWdleHAvcmVncmVzcy05MTQxLmpzPC9h
PiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQx
JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciBodHRwOi8vYnVnemlsbGEubW96aWxs
YS5vcmcvc2hvd19idWcuY2dpP2lkPTkxNDE8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUx
Myc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTE1Jz5OZXh0IEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+
RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRo
IHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitCVUdOVU1C
RVI6IGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0MTxicj4K
K0V4Y2VwdGlvbjogVHlwZUVycm9yOiBSZWdFeHAgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRp
bmcgJy8oPzp4eHx4KSovKHMpJyk8YnI+CitnbG9iYWwgY29kZUAuL2pzMV8yL3JlZ2V4cC9yZWdy
ZXNzLTkxNDEuanM6NzM6MTM8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNSc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9y
ZWdleHAvc2ltcGxlX2Zvcm0uanMnPmpzMV8yL3JlZ2V4cC9zaW1wbGVfZm9ybS5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTE0Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMTYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwg
Z290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0
ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4ZWN1dGluZyBzY3JpcHQ6IHNpbXBsZV9mb3Jt
LmpzPGJyPgorQXMgZGVzY3JpYmVkIGluIE5ldHNjYXBlIGRvYyAiV2hhdHMgbmV3IGluIEphdmFT
Y3JpcHQgMS4yIiBSZWdFeHA6IHNpbXBsZSBmb3JtPGJyPgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6
IFJlZ0V4cCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnL1swLTldezN9LygnMjMgMiAz
NCA2NzggOSAwOScpJyk8YnI+CitnbG9iYWwgY29kZUAuL2pzMV8yL3JlZ2V4cC9zaW1wbGVfZm9y
bS5qczo0Mzo2Mzxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTE2Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9z
dHJpbmdfc3BsaXQuanMnPmpzMV8yL3JlZ2V4cC9zdHJpbmdfc3BsaXQuanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTE3Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+PGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJl
Ojxicj4KKydhYmMnLnNwbGl0KC9bYS16XS8pID0gLCwsIEZBSUxFRCEgZXhwZWN0ZWQ6ICwsPGJy
PgorJ2FiYycuc3BsaXQoL1thLXpdLykgPSAsLCwgRkFJTEVEISBleHBlY3RlZDogLCw8YnI+Cisn
YWJjJy5zcGxpdChuZXcgUmVnRXhwKCdbYS16XScpKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAs
LDxicj4KKydhYmMnLnNwbGl0KG5ldyBSZWdFeHAoJ1thLXpdJykpID0gLCwsIEZBSUxFRCEgZXhw
ZWN0ZWQ6ICwsPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTcnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvdmVyc2lvbjEy
MC9ib29sZWFuLTAwMS5qcyc+anMxXzIvdmVyc2lvbjEyMC9ib29sZWFuLTAwMS5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTE2Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMTgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD48YnI+CitGYWlsdXJlIG1lc3NhZ2Vz
IHdlcmU6PGJyPgorbmV3IEJvb2xlYW4oZmFsc2UpID0gdHJ1ZSBGQUlMRUQhIGV4cGVjdGVkOiBm
YWxzZTxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTE4Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3ZlcnNpb24xMjAvcmVn
cmVzcy05OTY2My5qcyc+anMxXzIvdmVyc2lvbjEyMC9yZWdyZXNzLTk5NjYzLmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTcnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmUxOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PlNUQVRVUzogUmVncmVzc2lvbiB0ZXN0
IGZvciBCdWd6aWxsYSBidWcgOTk2NjM8YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgor
U2VjdGlvbiAxIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0IEZB
SUxFRCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8YnI+CitTZWN0aW9uIDIgb2YgdGVz
dCAtIGdvdCBFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaXQgRkFJTEVEISBleHBlY3RlZDog
YSAicmVhZC1vbmx5IiBlcnJvcjxicj4KK1NlY3Rpb24gMyBvZiB0ZXN0IC0gZ290IEVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBpdCBGQUlMRUQhIGV4cGVjdGVkOiBhICJyZWFkLW9ubHkiIGVy
cm9yPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTknPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzMvU2NyaXB0L2Z1bmN0aW9u
LTAwMS1uLmpzJz5qczFfMy9TY3JpcHQvZnVuY3Rpb24tMDAxLW4uanM8L2E+IGZhaWxlZDwvYj4g
PGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3
OCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTAyNzg8L2E+PGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUxOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTIwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDMsIGdvdCAwPGJyPgorVGVzdGNhc2Ug
dGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdh
czo8YnI+CitCVUdOVU1CRVI6IDEwMjc4PGJyPgorZnVuY3Rpb24tMDAxLmpzIGZ1bmN0aW9ucyBu
b3Qgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMgYXJlIGVycm9ycyBpbiB2ZXJzaW9uIDEyMCBhbmQg
aGlnaGVyPGJyPgorZXZhbCgiZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKCl7fSIpID0gdW5kZWZp
bmVkIFBBU1NFRCE8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyMCc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMy9TY3JpcHQv
c2NyaXB0LTAwMS5qcyc+anMxXzMvU2NyaXB0L3NjcmlwdC0wMDEuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTIxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJy
PgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNh
c2Ugb3V0cHV0IHdhczo8YnI+CitzY3JpcHQtMDAxIE5hdGl2ZVNjcmlwdDxicj4KK0V4Y2VwdGlv
bjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNjcmlwdDxicj4KK2dsb2Jh
bCBjb2RlQC4vanMxXzMvU2NyaXB0L3NjcmlwdC0wMDEuanM6MTMzOjIzPGJyPgorPC90dD48YnI+
Cis8YSBuYW1lPSdmYWlsdXJlMjEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzMvcmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qcyc+anMxXzMv
cmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290aGVy
X3dpbmRvdyc+QnVnIE51bWJlciAxMDI3ODwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTIw
Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjInPk5leHQgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5F
eHBlY3RlZCBleGl0IGNvZGUgMywgZ290IDA8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGgg
c2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0JVR05VTUJF
UjogMTAyNzg8YnI+CitmdW5jdGlvbi0wMDEuanMgZnVuY3Rpb25zIG5vdCBzZXBhcmF0ZWQgYnkg
c2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIwIGFuZCBoaWdoZXI8YnI+CitldmFs
KCJmdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoKXt9IikgPSB1bmRlZmluZWQgUEFTU0VEITxicj4K
KzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTIyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0w
MDEuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDEuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTIzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJy
PgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNh
c2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFN5bnRheEVycm9yOiBFeHBlY3RlZCB0b2tl
biAnKSc8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyMyc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2Nh
dGNoZ3VhcmQtMDAyLmpzJz5qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAyLmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjInPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAw
LCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBs
ZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjogRXhw
ZWN0ZWQgdG9rZW4gJyknPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjQnPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhj
ZXB0aW9ucy9jYXRjaGd1YXJkLTAwMy5qcyc+anMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAw
My5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTIzJz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjUnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBl
eGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8
YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4
RXJyb3I6IEV4cGVjdGVkIHRva2VuICcpJzxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVy
ZTI1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzJz5qczFfNS9FeGNlcHRpb25zL2VycnN0
YWNrLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTI0Jz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjYnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBl
Y3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2ln
bmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjog
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnc3RhY2tG
cmFtZXNbNF0uc3Vic3RyaW5nJyk8YnI+CitnbG9iYWwgY29kZUAuL2pzMV81L0V4Y2VwdGlvbnMv
ZXJyc3RhY2stMDAxLmpzOjEyMjoyNjxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTI2
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qcyc+anMxXzUvRXhjZXB0aW9ucy9yZWdyZXNz
LTUwNDQ3LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0NDcnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVt
YmVyIDUwNDQ3PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjUnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0Nv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorQlVHTlVNQkVSOiA1MDQ0Nzxicj4KK1NU
QVRVUzogVGVzdCAobm9uLUVDTUEpIEVycm9yIG9iamVjdCBwcm9wZXJ0aWVzIGZpbGVOYW1lLCBs
aW5lTnVtYmVyPGJyPgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdlLmZpbGVOYW1lLnNlYXJjaCcpPGJyPgordGVzdFJlYWxFcnJv
ckAuL2pzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qczo2NToyMzxicj4KK3Rlc3RALi9q
czFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanM6NDQ6MTY8YnI+CitnbG9iYWwgY29kZUAu
L2pzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qczozNDo1PGJyPgorPC90dD48YnI+Cis8
YSBuYW1lPSdmYWlsdXJlMjcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dldHNldC0wMDEuanMnPmpzMV81L0dldFNldC9n
ZXRzZXQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjYn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyOCc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4
cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBz
aWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9u
OiBTeW50YXhFcnJvcjogRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBidXQgZm91bmQgJ2dldHRlcicg
aW5zdGVhZDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTI4Jz48L2E+PGRkPjxiPlRl
c3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0dldFNldC9nZXRz
ZXQtMDAyLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+
CisgWyA8YSBocmVmPScjZmFpbHVyZTI3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlMjknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitU
ZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBv
dXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IEV4cGVjdGVkIGFuIGlkZW50
aWZpZXIgYnV0IGZvdW5kICdnZXR0ZXInIGluc3RlYWQ8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9
J2ZhaWx1cmUyOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMy5qcyc+anMxXzUvR2V0U2V0L2dldHNldC0w
MDMuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyOCc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMwJz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQg
ZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAw
PGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFN5bnRh
eEVycm9yOiBFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGJ1dCBmb3VuZCAnc2V0dGVyJyBpbnN0ZWFk
PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzAnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1
OTYtMDAxLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTMxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAz
PGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVz
dGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdvYmoudG9Tb3VyY2UoKScpPGJyPgorZ2xvYmFs
IGNvZGVALi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanM6NDg6MjI8YnI+Cis8L3R0
Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzMSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDIuanMn
PmpzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTMwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMzInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0
Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRw
dXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IHVuZXZhbDxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYt
MDAyLmpzOjQ4OjE2PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzInPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0
L3JlZ3Jlc3MtOTYyODQtMDAxLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDEuanM8
L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBj
b2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgor
Q29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFR5cGVFcnJvcjog
dW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdvYmoxLnRvU291cmNlKCkn
KTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzOjQ5
OjI2PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzMnPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3Mt
OTYyODQtMDAyLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIuanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMic+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTM0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiB1bmV2YWw8YnI+CitnbG9iYWwgY29kZUAuL2pzMV81L09iamVjdC9y
ZWdyZXNzLTk2Mjg0LTAwMi5qczo0OToxOTxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVy
ZTM0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0
MDA5LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQwMDknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVy
IDQ0MDA5PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzMnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAw
LCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBs
ZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorQlVHTlVNQkVSOiA0NDAwOTxicj4KK1NUQVRV
UzogVGVzdGluZyB0aGF0IHdlIGRvbid0IGNyYXNoIG9uIG9iai50b1NvdXJjZSgpPGJyPgorRXhj
ZXB0aW9uOiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGlu
ZyAnb2JqLnRvU291cmNlKCknKTxicj4KK3Rlc3RUaGlzQC4vanMxXzUvUmVncmVzcy9yZWdyZXNz
LTQ0MDA5LmpzOjYwOjI3PGJyPgordGVzdEAuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5q
czo0ODoxMTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5Lmpz
OjM1OjU8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzNSc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtMTAzNjAyLmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTAzNjAyLmpzPC9hPiBmYWlsZWQ8
L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzNjAyJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxMDM2MDI8L2E+PGJyPgor
IFsgPGEgaHJlZj0nI2ZhaWx1cmUzNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTM2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBSZWFzc2lnbm1lbnQgdG8gYSBjb25zdCBpcyBO
T1QgYW4gZXJyb3IgcGVyIEVDTUE8YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDEgb2YgdGVzdCAtPGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnJywgQWN0dWFsIHZh
bHVlICdSZWRlY2xhcmF0aW9uIG9mIGEgY29uc3QgRkFJTEVEIHRvIGNhdXNlIGFuIGVycm9yJzxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDMgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMScsIEFjdHVhbCB2YWx1ZSAnMic8YnI+
CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKzwvdHQ+PGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTM2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcuanMnPmpzMV81L1JlZ3Jlc3Mv
cmVncmVzcy0xMDQwNzcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1
cmUzNSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM3Jz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8
dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3
aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNl
cHRpb246IFN5bnRheEVycm9yOiBFeHBlY3RlZCB0b2tlbiAnKSc8YnI+Cis8L3R0Pjxicj4KKzxh
IG5hbWU9J2ZhaWx1cmUzNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzJz5qczFfNS9SZWdy
ZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlMzYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzOCc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0
ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgor
RXhjZXB0aW9uOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogY2xvbmU8YnI+
CitnbG9iYWwgY29kZUAuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMjc1NTcuanM6NzU6MTQ8YnI+
Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5
LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlMzcnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUzOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rl
c3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91
dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBVUklFcnJvcjogVVJJIGVycm9yPGJyPgorZGVjb2Rl
VVJJQFtuYXRpdmUgY29kZV08YnI+CitnbG9iYWwgY29kZUAuL2pzMV81L1JlZ3Jlc3MvcmVncmVz
cy0xNzI2OTkuanM6NjE6MTk8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzOSc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9S
ZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0Lmpz
PC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc5NTI0JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxNzk1
MjQ8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTQwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBEb24ndCBjcmFzaCBvbiBl
eHRyYW5lb3VzIGFyZ3VtZW50cyB0byBzdHIubWF0Y2goKSwgZXRjLjxicj4KK0ZhaWx1cmUgbWVz
c2FnZXMgd2VyZTo8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24g
MTQgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3Rl
ZCB2YWx1ZSAnQScsIEFjdHVhbCB2YWx1ZSAnYSc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAx
NSBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVk
IHZhbHVlICdBLGEnLCBBY3R1YWwgdmFsdWUgJ2EnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24g
MTcgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3Rl
ZCB2YWx1ZSAnQScsIEFjdHVhbCB2YWx1ZSAnYSc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAx
OCBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVk
IHZhbHVlICdBLGEnLCBBY3R1YWwgdmFsdWUgJ2EnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24g
MjAgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3Rl
ZCB2YWx1ZSAnU0hPVUxEIEhBVkUgRkFMTEVOIElOVE8gQ0FUQ0gtQkxPQ0shJywgQWN0dWFsIHZh
bHVlICdhJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVE
ITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDIyIG9mIHRlc3QgLTxicj4KK0ZBSUxF
RCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzAnLCBBY3R1YWwgdmFs
dWUgJzQnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQh
OiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMjMgb2YgdGVzdCAtPGJyPgorRkFJTEVE
ITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMCcsIEFjdHVhbCB2YWx1
ZSAnNCc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAyNSBvZiB0ZXN0IC08YnI+CitGQUlMRUQh
OiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcwJywgQWN0dWFsIHZhbHVl
ICc0Jzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDI2IG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzAnLCBBY3R1YWwgdmFsdWUg
JzQnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMjggb2YgdGVzdCAtPGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSBUeXBlIG1pc21hdGNoLCBleHBlY3RlZCB0eXBlIHN0cmlu
ZywgYWN0dWFsIHR5cGUgbnVtYmVyPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBFeHBlY3RlZCB2YWx1ZSAnU0hPVUxEIEhBVkUgRkFMTEVOIElOVE8gQ0FUQ0gtQkxPQ0shJywg
QWN0dWFsIHZhbHVlICc0Jzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJy
PgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDMwIG9mIHRlc3QgLTxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ1pCQyBh
YmMnLCBBY3R1YWwgdmFsdWUgJ0FCQyBaYmMnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20g
dGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMzEg
b2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2
YWx1ZSAnWkJDIFpiYycsIEFjdHVhbCB2YWx1ZSAnQUJDIFpiYyc8YnI+CitGQUlMRUQhOiBbcmVw
b3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0g
U2VjdGlvbiAzMyBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCld
IEV4cGVjdGVkIHZhbHVlICdaQkMgYWJjJywgQWN0dWFsIHZhbHVlICdBQkMgWmJjJzxicj4KK0ZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSBTZWN0aW9uIDM0IG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBm
cm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ1pCQyBaYmMnLCBBY3R1YWwgdmFsdWUgJ0FCQyBa
YmMnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMzYgb2YgdGVzdCAtPGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnU0hPVUxEIEhBVkUgRkFMTEVO
IElOVE8gQ0FUQ0gtQkxPQ0shJywgQWN0dWFsIHZhbHVlICdBQkMgWmJjJzxicj4KK0ZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJl
NDAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
anMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMnPmpzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0
LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzknPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0MSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4
aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxi
cj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgorZ2xvYmFsIGNvZGVALi9q
czFfNS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qczo1NjoxMTxicj4KKzwvdHQ+PGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTQxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV81L1Njb3BlL3Njb3BlLTAwMS5qcyc+anMxXzUvU2NvcGUvc2NvcGUtMDAx
LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTMyNjgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDUz
MjY4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNDAnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmU0Mic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PlNUQVRVUzogVGVzdGluZyBzY29wZSBh
ZnRlciBjaGFuZ2luZyBvYmouX19wcm90b19fPGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU3RlcCAxOiAgc2V0dGluZyBvYmou
X19wcm90b19fID0gZ2xvYmFsIG9iamVjdDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzUnLCBBY3R1YWwgdmFsdWUgJzEnPGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIFN0ZXAgMjogIHNldHRpbmcgb2JqLl9fcHJvdG9fXyA9IG51bGw8YnI+CitGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFR5cGUgbWlzbWF0Y2gsIGV4cGVjdGVkIHR5cGUgdW5kZWZp
bmVkLCBhY3R1YWwgdHlwZSBudW1iZXI8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIEV4cGVjdGVkIHZhbHVlICd1bmRlZmluZWQnLCBBY3R1YWwgdmFsdWUgJzEnPGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2Zh
aWx1cmU0Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzAxNTc0LmpzJz5qczFfNi9SZWdyZXNzL3JlZ3Jl
c3MtMzAxNTc0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxNTc0JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVn
IE51bWJlciAzMDE1NzQ8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU0MSc+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBFNFgg
c2hvdWxkIGJlIGVuYWJsZWQgZXZlbiB3aGVuIGU0eD0xIG5vdCBzcGVjaWZpZWQ8YnI+CitGYWls
dXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorRkFJTEVEITogRTRYIHNob3VsZCBiZSBlbmFibGVkIGV2
ZW4gd2hlbiBlNHg9MSBub3Qgc3BlY2lmaWVkOiBYTUwoKTxicj4KK0ZBSUxFRCE6IEV4cGVjdGVk
IHZhbHVlICdObyBlcnJvcicsIEFjdHVhbCB2YWx1ZSAnZXJyb3I6IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBYTUwnPGJyPgorRkFJTEVEITogPGJyPgorRkFJTEVEITogRTRY
IHNob3VsZCBiZSBlbmFibGVkIGV2ZW4gd2hlbiBlNHg9MSBub3Qgc3BlY2lmaWVkOiBYTUxMaXN0
KCk8YnI+CitGQUlMRUQhOiBFeHBlY3RlZCB2YWx1ZSAnTm8gZXJyb3InLCBBY3R1YWwgdmFsdWUg
J2Vycm9yOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogWE1MJzxicj4KK0ZB
SUxFRCE6IDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQzJz48L2E+PGRkPjxiPlRl
c3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVn
cmVzcy0zMDkyNDIuanMnPmpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDkyNDIuanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU0Mic+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTQ0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIHRva2VuICc8Jzxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQ0Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82L1JlZ3Jl
c3MvcmVncmVzcy0zMTQ4ODcuanMnPmpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMTQ4ODcuanM8L2E+
IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU0Myc+UHJldmlvdXMgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQ1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2Rl
IDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29t
cGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuICc8Jzxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQ1Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82
L1N0cmluZy9yZWdyZXNzLTMwNjU5MS5qcyc+anMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2NTkxLmpz
PC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzA2NTkxJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAzMDY1
OTE8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU0NCc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTQ2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitCVUdOVU1CRVI6IDMwNjU5MTxicj4KK1NUQVRVUzog
U3RyaW5nIHN0YXRpYyBtZXRob2RzPGJyPgorU1RBVFVTOiBTZWUgaHR0cHM6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA0ODI4PGJyPgorRXhjZXB0aW9uOiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnU3RyaW5nLnNwbGl0
KG5ldyBTdHJpbmcoJ2FiYycpLCAnJyknKTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzYvU3RyaW5n
L3JlZ3Jlc3MtMzA2NTkxLmpzOjQ4OjIyPGJyPgorPC90dD48YnI+Cis8L2RsPgorWyA8YSBocmVm
PScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gfCA8YSBocmVmPScjZmFpbF9kZXRhaWwnPlRv
cCBvZiBGYWlsdXJlczwvYT4gXTxicj4KKzxocj4KKzxwcmU+Cis8YSBuYW1lPSdyZXRlc3RfbGlz
dCc+PC9hPgorPGgyPlJldGVzdCBMaXN0PC9oMj48YnI+CisjIFJldGVzdCBMaXN0LCBzcXVpcnJl
bGZpc2gsIGdlbmVyYXRlZCBNb24gQXVnIDI2IDEwOjE5OjA0IDIwMTMuCisjIE9yaWdpbmFsIHRl
c3QgYmFzZSB3YXM6IEFsbCB0ZXN0cy4KKyMgMTExNSBvZiAxMTIzIHRlc3Qocykgd2VyZSBjb21w
bGV0ZWQsIDQ1IGZhaWx1cmVzIHJlcG9ydGVkLgorZWNtYV8yL0V4Y2VwdGlvbnMvZnVuY3Rpb24t
MDAxLmpzCitlY21hXzIvUmVnRXhwL3JlZ3Jlc3MtMDAxLmpzCitlY21hXzMvRnVuRXhwci9mZS0w
MDEuanMKK2VjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzCitlY21hXzMvVW5pY29k
ZS91Yy0wMDEuanMKK2pzMV8yL0FycmF5L3NwbGljZTEuanMKK2pzMV8yL09iamVjdHMvdG9TdHJp
bmctMDAxLmpzCitqczFfMi9mdW5jdGlvbi9GdW5jdGlvbl9vYmplY3QuanMKK2pzMV8yL2Z1bmN0
aW9uL2Z1bmN0aW9uLTAwMS1uLmpzCitqczFfMi9mdW5jdGlvbi9yZWdleHBhcmctMS5qcworanMx
XzIvb3BlcmF0b3IvZXF1YWxpdHkuanMKK2pzMV8yL3JlZ2V4cC9SZWdFeHBfbGFzdEluZGV4Lmpz
CitqczFfMi9yZWdleHAvcmVncmVzcy02MzU5LmpzCitqczFfMi9yZWdleHAvcmVncmVzcy05MTQx
LmpzCitqczFfMi9yZWdleHAvc2ltcGxlX2Zvcm0uanMKK2pzMV8yL3JlZ2V4cC9zdHJpbmdfc3Bs
aXQuanMKK2pzMV8yL3ZlcnNpb24xMjAvYm9vbGVhbi0wMDEuanMKK2pzMV8yL3ZlcnNpb24xMjAv
cmVncmVzcy05OTY2My5qcworanMxXzMvU2NyaXB0L2Z1bmN0aW9uLTAwMS1uLmpzCitqczFfMy9T
Y3JpcHQvc2NyaXB0LTAwMS5qcworanMxXzMvcmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qcworanMx
XzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMS5qcworanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1
YXJkLTAwMi5qcworanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMy5qcworanMxXzUvRXhj
ZXB0aW9ucy9lcnJzdGFjay0wMDEuanMKK2pzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5q
cworanMxXzUvR2V0U2V0L2dldHNldC0wMDEuanMKK2pzMV81L0dldFNldC9nZXRzZXQtMDAyLmpz
CitqczFfNS9HZXRTZXQvZ2V0c2V0LTAwMy5qcworanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYt
MDAxLmpzCitqczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDIuanMKK2pzMV81L09iamVjdC9y
ZWdyZXNzLTk2Mjg0LTAwMS5qcworanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAyLmpzCitq
czFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanMKK2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDM2
MDIuanMKK2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcuanMKK2pzMV81L1JlZ3Jlc3MvcmVn
cmVzcy0xMjc1NTcuanMKK2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzI2OTkuanMKK2pzMV81L1Jl
Z3Jlc3MvcmVncmVzcy0xNzk1MjQuanMKK2pzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzCitq
czFfNS9TY29wZS9zY29wZS0wMDEuanMKK2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDE1NzQuanMK
K2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDkyNDIuanMKK2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0z
MTQ4ODcuanMKK2pzMV82L1N0cmluZy9yZWdyZXNzLTMwNjU5MS5qcwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209787</attachid>
            <date>2013-08-27 11:30:55 -0700</date>
            <delta_ts>2013-08-27 15:33:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120333-20130827113055.patch</filename>
            <type>text/plain</type>
            <size>87772</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjBhOWU1YmMxYWNiNmFkZTgwNGM4NjkyZmVhNGUyM2Y0ZWI3MWYxLi5lNjQ4ZWQyYjM3ZTNmZWY1
OTY3YTA3NzdkY2U0ZmNkOGRiM2YxYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOC0yNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBFUzYg
TWFwIHR5cGUgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmZp
bmQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRh
OjpnZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcERh
dGE6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6TWFwRGF0YTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6TWFwRGF0YTo6TWFwRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9NYXBJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9NYXBJbnN0YW5jZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok1hcEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6bWFwRGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcEluc3RhbmNlOjpNYXBJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6Ok1hcEluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0ZvckVhY2gpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6TWFwUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvbW96aWxsYS9hY3R1YWwuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBpc3N1ZXMgZm91bmQgYnkgdGhlIENsYW5nIFN0YXRpYyBBbmFseXplcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyYjZlYTNlODdhM2M5MWM5ZWI1OTYwZTAyNDM2MGNkMTU3
ODhmYWQ1Li5mYWNlZWQ5N2NlMTAxNWY3MTEzNWRiOTZlOTExODM3NzVlZmUxODdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODA0LDYgKzgwNCwxMiBAQAogCQlBMTcxMkIzQjEx
QzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4
cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcx
MkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUg
LyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcwMDg3MzkxN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CisJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
MDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CisJCUE3MDA4
NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8q
IE1hcFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3MDA4NzNFMTdDQkU4RDMwMEMzRTY0MyAvKiBN
YXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MDA4NzNDMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCAqLzsgfTsKKwkJ
QTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNGMTdDQkU4RUIwMEMzRTY0
MyAvKiBNYXBJbnN0YW5jZS5jcHAgKi87IH07CisJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAv
KiBNYXBJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmggKi87IH07CiAJ
CUE3MDQ0N0VBMTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ0N0U5MTdBMEJENDYwMEY1
ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzA0NDdFRDE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
NDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLzsgfTsKIAkJQTcwNDQ3
RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVt
cENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtODYzLDYgKzg2OSw4IEBACiAJCUE3N0YxODI1MTY0MTkyQzcwMDY0MEE0NyAvKiBQYXJz
ZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc3RjE4MjQxNjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4NEEyNjExMUQxNjYyMjAwNTc3
NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3QTdFRTc0MTFCOThCOEQwMDY1QTE0RiAvKiBBU1RCdWlsZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4NEEyNjQxMUQx
NjYyMjAwNTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTdFRTc3MTFCOThCOEQwMDY1QTE0RiAvKiBTeW50YXhD
aGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3
IC8qIE1hcERhdGEuY3BwICovOyB9OworCQlBNzg1MDdENzE3Q0JDNkZEMDAxMUY2RTcgLyogTWFw
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4
NTA3RDUxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCAqLzsgfTsKIAkJQTc4ODUzRjkxNzk3
MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4ODUzRjcxNzk3MjYyOTAwMTQ0MEU0
IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQlBNzg4NTNGQTE3OTcyNjI5
MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0IC8qIElu
dGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3OEE5NzZDMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwICovOyB9
OwpAQCAtMTk3NSw2ICsxOTgzLDEyIEBACiAJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBS
ZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdF
eHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0
MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAw
ODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8q
IE1hcFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODczQzE3
Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NzAwODczRjE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwSW5zdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwSW5zdGFuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3RTkxN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRz
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGVyYW5kc0lubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IER1bXBDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3
RUMxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IER1bXBDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMDMxLDYgKzIwNDUsOCBAQAogCQlBNzdGMTgxRjE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3N0YxODIwMTY0MDg4QjIwMDY0MEE0
NyAvKiBDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUNh
Y2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3N0YxODI0MTY0MTkyNTQwMDY0
MEE0NyAvKiBQYXJzZXJNb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJNb2Rlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzg1MDdENDE3Q0JDNkZEMDAxMUY2RTcgLyogTWFw
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDUxN0NCQzZGRDAwMTFGNkU3
IC8qIE1hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzg4NTNGNzE3OTcyNjI5MDAxNDQwRTQg
LyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJl
Q2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1
cmVDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhBOTc2QzE3OTczOEI4
MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHBhdGggPSBkZmcvREZHRmFp
bGVkRmluYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzcsOSAr
MjM5Myw5IEBACiAJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTMyRjVCRDkwODIyQTFD
NzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5MzJGNUJFMTA4
MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCi0JCQkJOTMyRjVCRDkwODIyQTFDNzAwNzM2
OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQkxNDEyMTEyMDBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyog
dGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAq
LywKQEAgLTMxNzksNiArMzE5NSw4IEBACiAJCQkJQTdFMkVBNjkwRkI0NjBDRjAwNjAxRjA2IC8q
IExpdGVyYWxQYXJzZXIuaCAqLywKIAkJCQlGNjkyQTg2ODAyNTU1OTdEMDFGRjYwRjcgLyogTG9v
a3VwLmNwcCAqLywKIAkJCQlGNjkyQTg2OTAyNTU1OTdEMDFGRjYwRjcgLyogTG9va3VwLmggKi8s
CisJCQkJQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovLAorCQkJCUE3
ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8sCiAJCQkJODYxMkU0Q0IxNTIy
OTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8sCiAJCQkJRjY5MkE4NkEwMjU1NTk3RDAx
RkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovLAogCQkJCUY2OTJBODZCMDI1NTU5N0QwMUZGNjBG
NyAvKiBNYXRoT2JqZWN0LmggKi8sCkBAIC0zMjk1LDYgKzMzMTMsMTIgQEAKIAkJCQkxNEJGQ0U2
ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkRE
QjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCisJCQkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8q
IE1hcENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyog
TWFwQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFw
UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJv
dG90eXBlLmggKi8sCisJCQkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNl
LmNwcCAqLywKKwkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0zODQ2LDEwICszODcwLDEyIEBACiAJCQkJQTczRTEzMzExNzk2MjRDRDAwRTRERUE4IC8q
IERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NF
MTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDA4NzNFMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBE
RkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyOTgxRkREMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0
YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERG
R0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQzQzgyODE0MTE1RDRG
MDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QzE0REYz
RjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTgxLDYgKzQwMDcs
NyBAQAogCQkJCUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FE
IC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwMDg3M0ExN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1
QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5n
UmVmQ291bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDE3MSw2ICs0MTk4LDcgQEAK
IAkJCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxl
clg4Nl82NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzg1MDdENzE3
Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCOTE2QzIx
NERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQyRDZGMDkxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDE0NDhDQjEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDMwMCwxMiArNDMyOCwxMiBAQAogCQkJCUJDQ0YwRDA4MEVGMEFBQjkwMDQx
M0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MDQxNDgw
RUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJERjQ0MzAxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTeW1i
b2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3NkFDIC8q
IFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTcyRDRGMTY4NzlGREQwMEU1
N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTYxMTg2
OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQx
NDQ4Q0QxM0ExNzgzNzAwRjVCQTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDYxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlB
ZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDgxN0I2QjVBQjAwQTdBRTNGIC8q
IFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5ODMsNiArNTAxMSw3
IEBACiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QTRBRTA4MTc5NzNCMjYwMDU2
MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
Nzg1MDdENjE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MDA4LDYgKzUwMzcsNyBAQAogCQkJCTE0MjgwODUw
MTA3RUMwRDcwMDEzRTdCMiAvKiBPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyogUG9seW1vcnBo
aWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjk4MjA2MDE2QkZFMzgxMDAy
NDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAzNyw2
ICs1MDY3LDcgQEAKIAkJCQkxNDI4MDg0MTEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVn
RXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MDA4NzNEMTdDQkU4RDMw
MEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDIx
MDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDMxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cE9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUwNTMsNiArNTA4NCw3IEBACiAJCQkJMEY1NTQxQjEx
NjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0MxRUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tJdGVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNzAwODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFu
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REVCMTA3RUM3
RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggNmZmOTg3N2EzOTc5YWE0MGQ5M2UyYzUxYjQwMzRiYzlmOTZjOTFmMi4uOTQ3ZjY4
MjY0NzY5MmExNzZkODY5MzU0MDQ3N2JiZGUyNDU2ZjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xMzYsNyArMTM2LDEy
IEBACiAgICAgbWFjcm8odmFsdWUpIFwKICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8o
d2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFjcm8od3JpdGFibGUpIFwKKyAg
ICBtYWNybyhoYXMpIFwKKyAgICBtYWNybyhmb3JFYWNoKSBcCisgICAgbWFjcm8oY2xlYXIpIFwK
KyAgICBtYWNybyhzaXplKSBcCisgICAgbWFjcm8oTWFwKQogCiAjZGVmaW5lIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8obnVsbCkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGUyYmRmZGNjNWE4NmJjN2E3MjZhYjJlZDNkOTY3NTU4MjI3Yjg2NDIuLjc0MjdkYWJmNzgwMWIw
YTI3ZWMyNmVjYTFhYTc1M2FkYjM1M2JhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTc5LDYgKzc5LDkgQEAKICNpbmNsdWRl
ICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
TG9va3VwLmgiCisjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJNYXBJbnN0
YW5jZS5oIgorI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hdGhPYmplY3Qu
aCIKICNpbmNsdWRlICJOYW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2Uu
aCIKQEAgLTMxMiw2ICszMTUsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0o
KSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9wcm9taXNlV3JhcHBlckNh
bGxiYWNrU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSk7CiAgICAgCisgICAgbV9tYXBQcm90b3R5cGUuc2V0KGV4ZWMtPnZtKCksIHRo
aXMsIE1hcFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE1hcFByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwor
ICAgIG1fbWFwU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBJbnN0YW5jZTo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fbWFwUHJvdG90eXBlLmdldCgpKSk7CisK
ICAgICAvLyBDb25zdHJ1Y3RvcnMKIAogICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBP
YmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKQEAgLTMyMyw2ICszMjksNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBKU0NlbGwqIGRhdGVD
b25zdHJ1Y3RvciA9IERhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIERhdGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2RhdGVQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogcHJvbWlz
ZUNvbnN0cnVjdG9yID0gSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBK
U1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpOwogICAg
IEpTQ2VsbCogcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IgPSBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBt
YXBDb25zdHJ1Y3RvciA9IE1hcENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgTWFwQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9tYXBQcm90b3R5cGUuZ2V0KCkpOwogCiAgICAgbV9yZWdFeHBDb25z
dHJ1Y3Rvci5zZXQoZXhlYy0+dm0oKSwgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZShl
eGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCks
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSkpOwogCkBAIC0zNDgsNiArMzU1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgbV9lcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBt
X2Vycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBtX3Byb21pc2VQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgcHJvbWlzZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAg
bV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgcHJvbWlzZVJlc29s
dmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX21hcFByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogCiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLk9iamVjdCwgb2Jq
ZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuRnVuY3Rpb24sIGZ1bmN0aW9uQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTM2Niw2ICszNzQsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNl
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuUHJvbWlzZVJlc29sdmVyLCBwcm9taXNl
UmVzb2x2ZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5NYXAsIG1hcENvbnN0cnVj
dG9yLCBEb250RW51bSk7CiAKICAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ldmFsLnN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBtX2V2YWxG
dW5jdGlvbi5nZXQoKSwgRG9udEVudW0pOwpAQCAtNjIxLDYgKzYzMCw4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZXJTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VDYWxsYmFj
a1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVdy
YXBwZXJDYWxsYmFja1N0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fbWFwUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXBT
dHJ1Y3R1cmUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlCdWZm
ZXJQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVm
ZmVyU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGYyZDY3Mzg4MzM1MWE2Yjg4ZDIzYWE0ZDZkZjhhNjQ1ZTQ4OTVmNTUu
Ljk1ZWZlZGI4YWU3YjNkOWUyNmMwYTcwZjI0NWFjZGYzNDY2MmMwNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMsNiArNjMsNyBA
QCBjbGFzcyBKU1Byb21pc2VQcm90b3R5cGU7CiBjbGFzcyBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZTsKIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFz
cyBNYXBQcm90b3R5cGU7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgUHJv
Z3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwpAQCAtMTUwLDYgKzE1MSw3
IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8RXJyb3JQcm90b3R5cGU+IG1fZXJyb3JQ
cm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVByb3RvdHlwZT4gbV9wcm9taXNl
UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZT4g
bV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPE1hcFByb3RvdHlw
ZT4gbV9tYXBQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhT
Y29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxB
Y3RpdmF0aW9uU3RydWN0dXJlOwpAQCAtMTg4LDYgKzE5MCw4IEBAIHByb3RlY3RlZDoKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmU7
CiAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21hcFN0cnVjdHVyZTsKKyAgICAKICAg
ICBXcml0ZUJhcnJpZXI8SlNBcnJheUJ1ZmZlclByb3RvdHlwZT4gbV9hcnJheUJ1ZmZlclByb3Rv
dHlwZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FycmF5QnVmZmVyU3RydWN0dXJl
OwogICAgIApAQCAtMzc4LDYgKzM4Miw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIG51bWJl
ck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBwcml2YXRlTmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGlu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0
cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0
dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhMTNiMzVjYWRhNTMyMTk2MTZjMzhlODI3ZWRlM2Vj
Y2ZmN2JiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiTWFwQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk1hcEluc3RhbmNlLmgiCisjaW5jbHVk
ZSAiTWFwUHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
TWFwQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBDb25zdHJ1Y3RvcikgfTsKKwordm9pZCBNYXBDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBNYXBQcm90b3R5cGUqIG1h
cFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBtYXBQ
cm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG1h
cFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9
CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUgPSBhc0ludGVybmFs
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKS0+bWFwU3RydWN0dXJlKCk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShNYXBJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIG1h
cFN0cnVjdHVyZSkpOworfQorCitDb25zdHJ1Y3RUeXBlIE1hcENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RNYXA7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdE1hcDsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ODVlY2IzZTQ0NTBiMmYwYjM5MDhkNjVhZjUwMzYzMTBjOTQ3Y2M2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0
b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNYXBDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIE1hcENvbnN0cnVj
dG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIE1hcFByb3RvdHlwZTsKKworY2xhc3MgTWFwQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CisKKyAgICBzdGF0aWMgTWFwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBN
YXBQcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgTWFwQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBNYXBDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBmdW5jdGlv
blByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZShnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgTWFwUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9CisKKyNlbmRpZiAv
LyAhZGVmaW5lZChNYXBDb25zdHJ1Y3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDgyOTVhNmVkOWZjMmFkZDE4ODlkMGIyZDRiZTYy
Y2Q4YjA2YTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwRGF0YS5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIk1hcERhdGEuaCIKKworI2luY2x1ZGUgIkJ1dHRlcmZseUlu
bGluZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKworCituYW1lc3BhY2UgSlNDIHsKKworICAgIGNvbnN0IENsYXNzSW5m
byBNYXBEYXRhOjpzX2luZm8gPSB7ICJNYXBEYXRhIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShNYXBEYXRhKSB9OworCitlbnVtIHsgTWluaW11bUVudHJ5Q291bnQg
PSAxNiB9OworCitNYXBEYXRhOjpFbnRyeSBNYXBEYXRhOjpmaW5kKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBDb250aWd1b3VzSlNWYWx1ZXMgZW50cmllcyA9IGJ1
dHRlcmZseSgpLT5jb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IGJ1dHRlcmZseSgp
LT5wdWJsaWNMZW5ndGgoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSAr
PSAyKSB7CisgICAgICAgIGlmIChKU1ZhbHVlOjpzdHJpY3RFcXVhbChjYWxsRnJhbWUsIGVudHJp
ZXNbaV0uZ2V0KCksIGtleSkpCisgICAgICAgICAgICByZXR1cm4gRW50cnkoJmVudHJpZXNbaV0p
OworICAgIH0KKyAgICByZXR1cm4gRW50cnkoKTsKK30KKwordm9pZCBNYXBEYXRhOjpzZXQoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEVu
dHJ5IGVudHJ5ID0gZmluZChjYWxsRnJhbWUsIGtleSk7CisgICAgaWYgKGVudHJ5KSB7CisgICAg
ICAgIGVudHJ5LnZhbHVlKCkuc2V0KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywgdmFsdWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNpemVfdCBsZW4gPSBidXR0ZXJmbHkoKS0+
cHVibGljTGVuZ3RoKCk7CisgICAgcHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBsZW4sIGtleSk7
CisgICAgcHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBsZW4gKyAxLCB2YWx1ZSk7Cit9CisKK0pT
VmFsdWUgTWFwRGF0YTo6Z2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSkKK3sK
KyAgICBpZiAoRW50cnkgZW50cnkgPSBmaW5kKGNhbGxGcmFtZSwga2V5KSkKKyAgICAgICAgcmV0
dXJuIGVudHJ5LnZhbHVlKCkuZ2V0KCk7CisgICAgcmV0dXJuIEpTVmFsdWUoKTsKK30KKworYm9v
bCBNYXBEYXRhOjpyZW1vdmUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUga2V5KQorewor
ICAgIEVudHJ5IGVudHJ5ID0gZmluZChjYWxsRnJhbWUsIGtleSk7CisgICAgaWYgKCFlbnRyeSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGVudHJ5LmtleSgpLmNsZWFyKCk7CisgICAgZW50
cnkudmFsdWUoKS5jbGVhcigpOworICAgIG1fZGVsZXRlZENvdW50Kys7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZTg1ZTM3MjEzMDE1NDMzMmVmZWFjNWZkNjIwN2QxOTU2YTk1MTk2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCkBAIC0wLDAg
KzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXBEYXRhX2gKKyNkZWZpbmUgTWFwRGF0
YV9oCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIE1hcERhdGEgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0
YXRpYyBNYXBEYXRhKiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgTWFwRGF0YSogbWFw
RGF0YSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcERhdGE+KHZtLmhlYXApKSBNYXBE
YXRhKHZtKTsKKyAgICAgICAgbWFwRGF0YS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gbWFwRGF0YTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIHZvaWQgc2V0KENhbGxGcmFtZSosIEpTVmFsdWUga2V5
LCBKU1ZhbHVlIHZhbHVlKTsKKyAgICBKU1ZhbHVlIGdldChDYWxsRnJhbWUqLCBKU1ZhbHVlIGtl
eSk7CisgICAgYm9vbCByZW1vdmUoQ2FsbEZyYW1lKiwgSlNWYWx1ZSBrZXkpOworICAgIGJvb2wg
Y29udGFpbnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUga2V5KSB7IHJldHVybiAhZmlu
ZChjYWxsRnJhbWUsIGtleSkuaXNFbXB0eSgpOyB9CisgICAgc2l6ZV90IHNpemUoQ2FsbEZyYW1l
KikgY29uc3QgeyByZXR1cm4gbV9uZXh0SW5zZXJ0aW9uUG9pbnQgLSBtX2RlbGV0ZWRDb3VudDsg
fQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX2NhcGFjaXR5ID0gMDsKKyAg
ICAgICAgbV9uZXh0SW5zZXJ0aW9uUG9pbnQgPSAwOworICAgICAgICBtX2RlbGV0ZWRDb3VudCA9
IDA7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIE1hcERhdGEo
Vk0mIHZtKQorICAgICAgICA6IEJhc2Uodm0sIHZtLm1hcERhdGFTdHJ1Y3R1cmUuZ2V0KCkpCisg
ICAgICAgICwgbV9jYXBhY2l0eSgwKQorICAgICAgICAsIG1fbmV4dEluc2VydGlvblBvaW50KDAp
CisgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKKyAgICB7CisgICAgfQorICAgIHN0cnVjdCBF
bnRyeSB7CisgICAgICAgIGV4cGxpY2l0IEVudHJ5KFdyaXRlQmFycmllcjxVbmtub3duPiogbG9j
YXRpb24pCisgICAgICAgICAgICA6IG1fbG9jYXRpb24obG9jYXRpb24pCisgICAgICAgIHsKKyAg
ICAgICAgfQorICAgICAgICBFbnRyeSgpCisgICAgICAgICAgICA6IG1fbG9jYXRpb24oMCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYga2V5KCkg
eyByZXR1cm4gbV9sb2NhdGlvblswXTsgfQorICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4m
IHZhbHVlKCkgeyByZXR1cm4gbV9sb2NhdGlvblsxXTsgfQorICAgICAgICAKKyAgICAgICAgYm9v
bCBvcGVyYXRvciAhKCkgY29uc3QgeyByZXR1cm4gaXNFbXB0eSgpOyB9CisgICAgICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNFbXB0eSgpOyB9CisgICAgICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2xvY2F0aW9uOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIG1fbG9jYXRpb247CisgICAgfTsK
KyAgICBFbnRyeSBmaW5kKENhbGxGcmFtZSosIEpTVmFsdWUga2V5KTsKKyAgICBib29sIGVuc3Vy
ZVNwYWNlRm9yQXBwZW5kKENhbGxGcmFtZSopOworCisgICAgc2l6ZV90IG1fY2FwYWNpdHk7Cisg
ICAgc2l6ZV90IG1fbmV4dEluc2VydGlvblBvaW50OworICAgIHNpemVfdCBtX2RlbGV0ZWRDb3Vu
dDsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOworfTsKKworfQorCisjZW5kaWYgLyogIWRlZmluZWQoTWFwRGF0YV9oKSAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNhN2FiNDkzZmRmMTNmNWY5OWVkMTg3M2ZkZjBkZGM3MWEyNTZlNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1hcEluc3RhbmNlLmgiCisj
aW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAor
Y29uc3QgQ2xhc3NJbmZvIE1hcEluc3RhbmNlOjpzX2luZm8gPSB7ICJNYXAiLCAmQmFzZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hcEluc3RhbmNlKSB9OworCit2b2lkIE1h
cEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLHZpc2l0b3IpOworICAgIE1hcElu
c3RhbmNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1hcEluc3RhbmNlKj4oY2VsbCk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFwRGF0YSk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3OGZmMGNjYWY0
MmFhMjkyOWZhOWM0ZDc0ZTRkYTljNmJlMTQ1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcElu
c3RhbmNlX2gKKyNkZWZpbmUgTWFwSW5zdGFuY2VfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJNYXBEYXRhLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBJbnN0
YW5jZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpT
Tm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBNYXBJbnN0
YW5jZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICBNYXBJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBJ
bnN0YW5jZT4odm0uaGVhcCkpIE1hcEluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBp
bnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7Cisg
ICAgfQorCisgICAgc3RhdGljIE1hcEluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+
dm0oKSwgc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBNYXBEYXRhKiBtYXBEYXRhKCkgeyByZXR1
cm4gbV9tYXBEYXRhLmdldCgpOyB9CisKK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CisKKyAgICBNYXBJbnN0YW5jZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIG1fbWFwRGF0YS5zZXQodm0sIHRoaXMsIE1hcERhdGE6OmNy
ZWF0ZSh2bSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxNYXBEYXRhPiBtX21hcERhdGE7
Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNYXBJbnN0YW5jZV9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc5
ZjJkMzJkMDM3NmM3YTQ0NmQwNjEwMjhkZGFkYmY3OWQwZDg5MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTAsMCAr
MSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBQcm90b3R5cGUuaCIKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYXBEYXRh
LmgiCisjaW5jbHVkZSAiTWFwSW5zdGFuY2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1hcCIsICZCYXNlOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFwUHJvdG90eXBlKSB9OworCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY0ZvckVhY2goRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKik7CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUoRXhlY1N0
YXRlKik7CisgICAgCit2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKGluZm8oKSkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7
CisKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmNsZWFyLCBtYXBQ
cm90b0Z1bmNDbGVhciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+ZGVsZXRlS2V5d29yZCwgbWFwUHJvdG9GdW5jRGVsZXRlLCBEb250RW51
bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5mb3JFYWNo
LCBtYXBQcm90b0Z1bmNGb3JFYWNoLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzLCBtYXBQcm90
b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPnNldCwgbWFwUHJvdG9GdW5jU2V0LCBEb250RW51bSwgMik7CisKKyAgICBHZXR0
ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7CisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0
LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLnN0cmluZygpLCBtYXBQcm90b0Z1bmNTaXplKTsK
KyAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPnZtKCksIGZ1bmN0aW9uKTsKKyAgICBwdXRE
aXJlY3RBY2Nlc3NvcihleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBhY2Nlc3NvciwgRG9u
dEVudW0gfCBBY2Nlc3Nvcik7Cit9CisKK3N0YXRpYyBNYXBEYXRhKiBnZXRNYXBEYXRhKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXJyb3IoY2FsbEZyYW1lLCBjcmVhdGVOb3RB
bk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKSk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBNYXBJbnN0YW5jZSogbWFwID0ganNEeW5hbWljQ2FzdDxNYXBJbnN0YW5jZSo+
KHRoaXNWYWx1ZSk7CisgICAgaWYgKCFtYXApIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBBU0NJSUxpdGVyYWwoIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2Jq
ZWN0IikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIG1hcC0+bWFwRGF0
YSgpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFy
KENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRh
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGRhdGEtPmNs
ZWFyKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNEZWxldGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oZGF0YS0+cmVtb3ZlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNG
b3JFYWNoKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRN
YXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZGF0YS0+Z2V0KGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
c3VsdCA9IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihkYXRhLT5jb250YWlucyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBn
ZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFk
YXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IGRhdGEtPnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
U2l6ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFw
RGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGRhdGEtPnNpemUoY2FsbEZyYW1lKSkpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2ZjBhYjZhNTYzOWE3MWNjYTI2MGU4NGU4Y2E4YmZhMWQ0YzJjOWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNYXBQcm90b3R5cGVfaAorI2RlZmluZSBNYXBQcm90b3R5cGVfaAorCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1hcFByb3Rv
dHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpT
Tm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBNYXBQcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgTWFwUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBNYXBQ
cm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVh
dGlvbihleGVjLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXBQcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGV4ZWMtPnZtKCks
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1h
cFByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDliYjBk
NGNiYjI5MjU1YWZhOTBhYzc2OWNiMGYxYWYzMWI1YTM3N2IuLjA2MDVhNmE4ZWMyMzAzOWE0ZTU1
YTMyNWI3MDE4MDFkNjg0ZTFkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxl
eGVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKICNpbmNsdWRlICJSZWdFeHBD
YWNoZS5oIgpAQCAtMjMxLDYgKzIzMiw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHByb3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9wZXJ0eVRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgbWFwRGF0YVN0
cnVjdHVyZS5zZXQoKnRoaXMsIE1hcERhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRoaXMp
OwogCiAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZXhpc3Rp
bmdFbnRyeUlkZW50aWZpZXJUYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRl
eCA4NDNkYjNhNjAzMWE2NzA0N2FmYTJjNjZmNmE4NTMyYTViODI2NGI2Li45Njk3NGIwMGUzNDEw
MjBhMzE5YjJhMmU3NmM1OGEyOThkMTc1N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTI2NCw2ICsyNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8
U3RydWN0dXJlPiB1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlOwogICAgICAgICBT
dHJvbmc8U3RydWN0dXJlPiBwcm9wZXJ0eVRhYmxlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8
U3RydWN0dXJlPiBtYXBEYXRhU3RydWN0dXJlOwogCiAgICAgICAgIElkZW50aWZpZXJUYWJsZSog
aWRlbnRpZmllclRhYmxlOwogICAgICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlOYW1l
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL2FjdHVh
bC5odG1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvYWN0dWFsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODg3OTNiYmRiNDk2NTY5ZjgyZDZmMWE0OGZjOGRjZTE0OWZkNjdlMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL2FjdHVh
bC5odG1sCkBAIC0wLDAgKzEsNTI1IEBACis8aHRtbD48aGVhZD4KKzx0aXRsZT5UZXN0IHJlc3Vs
dHMsIHNxdWlycmVsZmlzaDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSd3aGl0ZSc+
Cis8YSBuYW1lPSd0aXBweV90b3AnPjwvYT4KKzxoMj5UZXN0IHJlc3VsdHMsIHNxdWlycmVsZmlz
aDwvaDI+PGJyPgorPHAgY2xhc3M9J3Jlc3VsdHNfc3VtbWFyeSc+CitUZXN0IExpc3Q6IEFsbCB0
ZXN0czxicj4KK1NraXAgTGlzdDogZWNtYS9EYXRlLzE1LjkuMi4xLmpzLCBlY21hL0RhdGUvMTUu
OS4yLjItMS5qcywgZWNtYS9EYXRlLzE1LjkuMi4yLTIuanMsIGVjbWEvRGF0ZS8xNS45LjIuMi0z
LmpzLCBlY21hL0RhdGUvMTUuOS4yLjItNC5qcywgZWNtYS9EYXRlLzE1LjkuMi4yLTUuanMsIGVj
bWEvRGF0ZS8xNS45LjIuMi02LmpzLCBlY21hXzMvRGF0ZS8xNS45LjUuNi5qcywgZWNtYV8zL0Rh
dGUvMTUuOS41LjcuanMsIGVjbWEvRGF0ZS8xNS45LjUuMTQuanMsIGVjbWEvRGF0ZS8xNS45LjUu
MzEtMS5qcywgZWNtYS9EYXRlLzE1LjkuNS4zNC0xLmpzPGJyPgorMTEyMyB0ZXN0KHMpIHNlbGVj
dGVkLCAxMTE1IHRlc3QocykgY29tcGxldGVkLCA0NSBmYWlsdXJlcyByZXBvcnRlZCAoNC4wMyUg
ZmFpbGVkKTxicj4KK0VuZ2luZSBjb21tYW5kIGxpbmU6ICIvVXNlcnMvb2xpdmVyL1dlYktpdC9P
cGVuU291cmNlL1dlYktpdEJ1aWxkLy9EZWJ1Zy9qc2MiIDxicj4KK09TIHR5cGU6IERhcndpbiBF
Z2dwbGFudC5sb2NhbCAxMy4wLjAgRGFyd2luIEtlcm5lbCBWZXJzaW9uIDEzLjAuMDogVHVlIEp1
bCAzMCAyMDo1MjoyMiBQRFQgMjAxMzsgcm9vdDp4bnUtMjQyMi4xLjUzfjMvUkVMRUFTRV9YODZf
NjQgeDg2XzY0PGJyPgorVGVzdGNhc2UgZXhlY3V0aW9uIHRpbWU6IDIgbWludXRlcywgNiBzZWNv
bmRzLjxicj4KK1Rlc3RzIGNvbXBsZXRlZCBvbiBNb24gQXVnIDI2IDEwOjE5OjA0IDIwMTMuPGJy
Pjxicj4KK1sgPGEgaHJlZj0nI2ZhaWxfZGV0YWlsJz5GYWlsdXJlIERldGFpbHM8L2E+IHwgPGEg
aHJlZj0nI3JldGVzdF9saXN0Jz5SZXRlc3QgTGlzdDwvYT4gfCA8YSBocmVmPSdtZW51Lmh0bWwn
PlRlc3QgU2VsZWN0aW9uIFBhZ2U8L2E+IF08YnI+Cis8aHI+Cis8YSBuYW1lPSdmYWlsX2RldGFp
bCc+PC9hPgorPGgyPkZhaWx1cmUgRGV0YWlsczwvaDI+PGJyPgorPGRsPjxhIG5hbWU9J2ZhaWx1
cmUxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2VjbWFfMi9FeGNlcHRpb25zL2Z1bmN0aW9uLTAwMS5qcyc+ZWNtYV8yL0V4Y2VwdGlvbnMvZnVu
Y3Rpb24tMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcg
TnVtYmVyIDEwMjc4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMic+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0Pjxi
cj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CitldmFsKCJmdW5jdGlvbiBmKCl7fWZ1bmN0
aW9uIGcoKXt9IikgKHRocmV3IG5vIGV4Y2VwdGlvbiB0aHJvd24gPSBmYWlsIEZBSUxFRCEgZXhw
ZWN0ZWQ6IHBhc3M8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyJz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMi9SZWdFeHAv
cmVncmVzcy0wMDEuanMnPmVjbWFfMi9SZWdFeHAvcmVncmVzcy0wMDEuanM8L2E+IGZhaWxlZDwv
Yj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1o
dHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTcnIHRhcmdldD0n
b3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE1NzwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEnPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhp
dCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJy
PgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitSZWdFeHAvaGV4LTAwMS5qcyBK
UyByZWdleHAgYW5jaG9yaW5nIG9uIGVtcHR5IG1hdGNoIGJ1Zzxicj4KK0JVR05VTUJFUjogaHR0
cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3PGJyPgorRXhjZXB0
aW9uOiBUeXBlRXJyb3I6IFJlZ0V4cCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnL2F8
fGIvKCcnKScpPGJyPgorZ2xvYmFsIGNvZGVALi9lY21hXzIvUmVnRXhwL3JlZ3Jlc3MtMDAxLmpz
OjE4OjIyPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMyc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvRnVuRXhwci9mZS0w
MDEuanMnPmVjbWFfMy9GdW5FeHByL2ZlLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8
YSBocmVmPScjZmFpbHVyZTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmU0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBGdW5jdGlvbiBFeHByZXNzaW9uIFN0YXRlbWVudHMgYmFz
aWMgdGVzdC48YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSBCb3RoIGZ1bmN0aW9ucyB3ZXJlIGRlZmluZWQuPGJyPgorRkFJTEVE
ITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMScsIEFjdHVhbCB2YWx1
ZSAnMCc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKzwvdHQ+PGJy
PgorPGEgbmFtZT0nZmFpbHVyZTQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanMnPmVj
bWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBb
IDxhIGhyZWY9JyNmYWlsdXJlMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJygnPGJy
PgorZXZhbEBbbmF0aXZlIGNvZGVdPGJyPgorZ2xvYmFsIGNvZGVALi9lY21hXzMvU3RhdGVtZW50
cy9yZWdyZXNzLTE5NDM2NC5qczo1NjoxNDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVy
ZTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
ZWNtYV8zL1VuaWNvZGUvdWMtMDAxLmpzJz5lY21hXzMvVW5pY29kZS91Yy0wMDEuanM8L2E+IGZh
aWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzYxMCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMjM2MTA8L2E+PGJy
PgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlNic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPHR0PlNUQVRVUzogVW5pY29kZSBmb3JtYXQtY29udHJvbCBjaGFy
YWN0ZXIgKENhdGVnb3J5IENmKSB0ZXN0Ljxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFVuaWNvZGUgZm9ybWF0LWNvbnRyb2wg
Y2hhcmFjdGVyIHRlc3QgKENhdGVnb3J5IENmLik8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdubyBlcnJvcicsIEFjdHVhbCB2YWx1ZSAnbm/igI4g
ZXJyb3InPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+Cis8L3R0Pjxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmU2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3Ro
ZXJfd2luZG93JyBocmVmPScuL2pzMV8yL0FycmF5L3NwbGljZTEuanMnPmpzMV8yL0FycmF5L3Nw
bGljZTEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU1Jz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNyc+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVk
IGV4aXQgY29kZSAwLCBnb3QgMTE8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFs
IDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4ZWN1dGluZyBzY3Jp
cHQ6IHNwbGljZTEuanM8YnI+CitBcyBkZXNjcmliZWQgaW4gTmV0c2NhcGUgZG9jICJXaGF0cyBu
ZXcgaW4gSmF2YVNjcmlwdCAxLjIiIFN0cmluZzpzcGxpY2UgMTxicj4KK0FTU0VSVElPTiBGQUlM
RUQ6IG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzQ2VsbChlZGdlLnVzZUtp
bmQoKSk8YnI+CisvVm9sdW1lcy9EYXRhL2dpdC9XZWJLaXQvT3BlblNvdXJjZS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgoMjc2NSkgOiBKU0M6OkRGRzo6U3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQ6OlNwZWN1bGF0ZUNlbGxPcGVyYW5kKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVCAqLCBKU0M6OkRGRzo6RWRnZSwgSlNDOjpERkc6Ok9wZXJhbmRTcGVjdWxhdGlvbk1v
ZGUpPGJyPgorMSAgIDB4NjllZDZkIFdURkNyYXNoPGJyPgorMiAgIDB4MzE0ZWUwIEpTQzo6REZH
OjpTcGVjdWxhdGVDZWxsT3BlcmFuZDo6U3BlY3VsYXRlQ2VsbE9wZXJhbmQoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUKiwgSlNDOjpERkc6OkVkZ2UsIEpTQzo6REZHOjpPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlKTxicj4KKzMgICAweDJlZjg5MiBKU0M6OkRGRzo6U3BlY3VsYXRlQ2VsbE9wZXJhbmQ6
OlNwZWN1bGF0ZUNlbGxPcGVyYW5kKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVCosIEpTQzo6REZH
OjpFZGdlLCBKU0M6OkRGRzo6T3BlcmFuZFNwZWN1bGF0aW9uTW9kZSk8YnI+Cis0ICAgMHgzMzY0
ZGYgSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKEpTQzo6REZHOjpOb2RlKik8YnI+
Cis1ICAgMHgyZDQyNDkgSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJs
b2NrKCk8YnI+Cis2ICAgMHgyZDRjNDIgSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KCk8YnI+Cis3ICAgMHgyNDZiMDAgSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlQm9keSgp
PGJyPgorOCAgIDB4MjQ4ZjU0IEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9u
KCk8YnI+Cis5ICAgMHgyYjM0MDEgSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwo
SlNDOjpERkc6OkxvbmdMaXZlZFN0YXRlJik8YnI+CisxMCAgMHgyYjJjNzggSlNDOjpERkc6OlBs
YW46OmNvbXBpbGVJblRocmVhZChKU0M6OkRGRzo6TG9uZ0xpdmVkU3RhdGUmKTxicj4KKzExICAw
eDIxZGU0NSBKU0M6OkRGRzo6Y29tcGlsZShKU0M6OkRGRzo6Q29tcGlsZU1vZGUsIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpDb2RlQmxvY2sqLCBXVEY6OlJlZlB0cjxKU0M6OkpJVENvZGU+JiwgSlND
OjpNYWNyb0Fzc2VtYmxlckNvZGVQdHIqLCB1bnNpZ25lZCBpbnQpPGJyPgorMTIgIDB4MjFkZWVl
IEpTQzo6REZHOjp0cnlDb21waWxlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkNvZGVC
bG9jayosIFdURjo6UmVmUHRyPEpTQzo6SklUQ29kZT4mLCBKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciYsIHVuc2lnbmVkIGludCk8YnI+CisxMyAgMHgzOTU4NmIgSlNDOjpqaXRDb21waWxlRnVu
Y3Rpb25JZkFwcHJvcHJpYXRlSW1wbChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RnVuY3Rpb25Db2Rl
QmxvY2sqLCBXVEY6OlJlZlB0cjxKU0M6OkpJVENvZGU+JiwgSlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImLCBKU0M6OkpJVENvZGU6OkpJVFR5cGUsIHVuc2lnbmVkIGludCwgSlNDOjpKSVRDb21w
aWxhdGlvbkVmZm9ydCk8YnI+CisxNCAgMHgzOTU3NjIgSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JF
eGVjdXRpb25JbXBsKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpGdW5jdGlvbkNvZGVCbG9jayosIFdU
Rjo6UmVmUHRyPEpTQzo6SklUQ29kZT4mLCBKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIEpT
Qzo6SklUQ29kZTo6SklUVHlwZSwgdW5zaWduZWQgaW50LCBKU0M6OkNvZGVTcGVjaWFsaXphdGlv
bktpbmQpPGJyPgorMTUgIDB4MzkwYWZjIEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgV1RGOjpSZWZQdHI8SlNDOjpGdW5jdGlvbkNvZGVCbG9jaz4mLCBK
U0M6OkZ1bmN0aW9uQ29kZUJsb2NrKiwgV1RGOjpSZWZQdHI8SlNDOjpKSVRDb2RlPiYsIEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiwgaW50JiwgSlNDOjpKSVRDb2RlOjpKSVRUeXBlLCB1bnNp
Z25lZCBpbnQsIEpTQzo6Q29kZVNwZWNpYWxpemF0aW9uS2luZCk8YnI+CisxNiAgMHgzOGQ0ZDAg
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTU2NvcGUqLCBKU0M6OkpJVENvZGU6OkpJVFR5cGUsIEpTQzo6Q29tcGls
YXRpb25SZXN1bHQqLCB1bnNpZ25lZCBpbnQpPGJyPgorMTcgIDB4MzhkMjYzIEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkRm9yQ2FsbChKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNTY29wZSosIEpTQzo6Q29tcGlsYXRpb25SZXN1bHQmLCB1bnNpZ25lZCBpbnQpPGJyPgor
MTggIDB4MTAzNGMzIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkRm9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Njb3BlKiwgSlNDOjpDb21waWxhdGlvblJlc3VsdCYs
IHVuc2lnbmVkIGludCwgSlNDOjpDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTxicj4KKzE5ICAweGY4
NTAwIEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmNvbXBpbGVPcHRpbWl6ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTU2NvcGUqLCBKU0M6OkNvbXBpbGF0aW9uUmVzdWx0JiwgdW5zaWduZWQgaW50
KTxicj4KKzIwICAweDQxMWU1NSBjdGlfb3B0aW1pemU8YnI+CisyMSAgMHg0MTk5MTAganNjR2Vu
ZXJhdGVkTmF0aXZlQ29kZTxicj4KKzIyICAweDNlYTY2NSBKU0M6OkpJVENvZGU6OmV4ZWN1dGUo
SlNDOjpKU1N0YWNrKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlZNKik8YnI+CisyMyAgMHgzYzU3
ZTEgSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZShKU0M6OlByb2dyYW1FeGVjdXRhYmxlKiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kik8YnI+CisyNCAgMHgxNDQ4NDEgSlNDOjpldmFs
dWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlQ29kZSBjb25zdCYsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKik8YnI+CisyNSAgMHgyOGIwNiBydW5XaXRoU2NyaXB0cyhHbG9iYWxP
YmplY3QqLCBXVEY6OlZlY3RvcjxTY3JpcHQsIDB1bCwgV1RGOjpDcmFzaE9uT3ZlcmZsb3c+IGNv
bnN0JiwgYm9vbCk8YnI+CisyNiAgMHgyODAxYyBqc2NtYWluKGludCwgY2hhcioqKTxicj4KKzI3
ICAweDI3ZTI3IG1haW48YnI+CisyOCAgMHg5MTM2ZjcwZCBzdGFydDxicj4KKzwvdHQ+PGJyPgor
PGEgbmFtZT0nZmFpbHVyZTcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEuanMnPmpzMV8yL09iamVj
dHMvdG9TdHJpbmctMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWls
dXJlNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTgnPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0
dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdp
dGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0pTMV8y
IE9iamVjdC50b1N0cmluZygpPGJyPgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6IFJlZ0V4cCBpcyBu
b3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnL15ceyguKilcfSQvKHMpJyk8YnI+CitjaGVja09i
amVjdFRvU3RyaW5nQC4vanMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEuanM6MTAzOjE0PGJyPgor
Z2xvYmFsIGNvZGVALi9qczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qczo2MzoyODxicj4KKzwv
dHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vRnVuY3Rpb25fb2JqZWN0Lmpz
Jz5qczFfMi9mdW5jdGlvbi9GdW5jdGlvbl9vYmplY3QuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgor
IFsgPGEgaHJlZj0nI2ZhaWx1cmU3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgorPHR0Pjxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CitmLmFy
aXR5ID0gdW5kZWZpbmVkIEZBSUxFRCEgZXhwZWN0ZWQ6IDM8YnI+Cit9IEZBSUxFRCEgZXhwZWN0
ZWQ6IDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTknPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vZnVuY3Rp
b24tMDAxLW4uanMnPmpzMV8yL2Z1bmN0aW9uL2Z1bmN0aW9uLTAwMS1uLmpzPC9hPiBmYWlsZWQ8
L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTEwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDMsIGdvdCAw
PGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVz
dGNhc2Ugb3V0cHV0IHdhczo8YnI+CitmdW5jdGlvbi0wMDEuanMgZnVuY3Rpb25zIG5vdCBzZXBh
cmF0ZWQgYnkgc2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIwIGFuZCBoaWdoZXI8
YnI+CitldmFsKCJmdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoKXt9IikgPSB1bmRlZmluZWQgUEFT
U0VEITxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTEwJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL3JlZ2V4
cGFyZy0xLmpzJz5qczFfMi9mdW5jdGlvbi9yZWdleHBhcmctMS5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUxMSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4K
K1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNl
IG91dHB1dCB3YXM6PGJyPgorSlNfMS4yIFRoZSB2YXJpYWJsZSBzdGF0bWVudDxicj4KK0V4Y2Vw
dGlvbjogVHlwZUVycm9yOiBSZWdFeHAgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ3go
ImhpIiknKTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanM6
ODA6MTE8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxMSc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9vcGVyYXRvci9lcXVh
bGl0eS5qcyc+anMxXzIvb3BlcmF0b3IvZXF1YWxpdHkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgor
IFsgPGEgaHJlZj0nI2ZhaWx1cmUxMCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTEyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+Cis8dHQ+PGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KKyhu
ZXcgU3RyaW5nKCd4JykgPT0gJ3gnKSAgICAgICAgICAgICAgICAgID0gdHJ1ZSBGQUlMRUQhIGV4
cGVjdGVkOiBmYWxzZTxicj4KKygneCcgPT0gbmV3IFN0cmluZygneCcpKSAgICAgICAgICAgICAg
ICAgID0gdHJ1ZSBGQUlMRUQhIGV4cGVjdGVkOiBmYWxzZTxicj4KKzwvdHQ+PGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTEyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9SZWdFeHBfbGFzdEluZGV4LmpzJz5qczFfMi9yZWdleHAv
UmVnRXhwX2xhc3RJbmRleC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFp
bHVyZTExJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTMnPk5leHQg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4K
Kzx0dD48YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorcmU9L3guL2c7IHJlLmxhc3RJ
bmRleD00OyByZS5leGVjKCd4eWFiY2R4YScpID0geGEgRkFJTEVEISBleHBlY3RlZDogWyJ4YSJd
PGJyPgorcmUuZXhlYygneHlhYmNkZWYnKSA9IHh5IEZBSUxFRCEgZXhwZWN0ZWQ6IFsieHkiXTxi
cj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTEzJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTku
anMnPmpzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0n
aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1odHRwOi8vYnVnemls
bGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTknIHRhcmdldD0nb3RoZXJfd2luZG93
Jz5CdWcgTnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjM1OTwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEyJz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMTQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwg
Z290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0
ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0JVR05VTUJFUjogaHR0cDovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5PGJyPgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6
IFJlZ0V4cCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnLyhhKiliXDErLygiYmFhYWMi
KScpPGJyPgorZ2xvYmFsIGNvZGVALi9qczFfMi9yZWdleHAvcmVncmVzcy02MzU5LmpzOjU2OjE4
PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTQnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0
MS5qcyc+anMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVm
PSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPWh0dHA6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0MScgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnPkJ1ZyBOdW1iZXIgaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTQxPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTMnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAw
LCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBs
ZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorQlVHTlVNQkVSOiBodHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxNDE8YnI+CitFeGNlcHRpb246IFR5cGVFcnJv
cjogUmVnRXhwIGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICcvKD86eHh8eCkqLyhzKScp
PGJyPgorZ2xvYmFsIGNvZGVALi9qczFfMi9yZWdleHAvcmVncmVzcy05MTQxLmpzOjczOjEzPGJy
PgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpz
Jz5qczFfMi9yZWdleHAvc2ltcGxlX2Zvcm0uanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUxNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTE2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2Ug
dGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdh
czo8YnI+CitFeGVjdXRpbmcgc2NyaXB0OiBzaW1wbGVfZm9ybS5qczxicj4KK0FzIGRlc2NyaWJl
ZCBpbiBOZXRzY2FwZSBkb2MgIldoYXRzIG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIgUmVnRXhwOiBz
aW1wbGUgZm9ybTxicj4KK0V4Y2VwdGlvbjogVHlwZUVycm9yOiBSZWdFeHAgaXMgbm90IGEgZnVu
Y3Rpb24gKGV2YWx1YXRpbmcgJy9bMC05XXszfS8oJzIzIDIgMzQgNjc4IDkgMDknKScpPGJyPgor
Z2xvYmFsIGNvZGVALi9qczFfMi9yZWdleHAvc2ltcGxlX2Zvcm0uanM6NDM6NjM8YnI+Cis8L3R0
Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvc3RyaW5nX3NwbGl0LmpzJz5qczFf
Mi9yZWdleHAvc3RyaW5nX3NwbGl0LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9
JyNmYWlsdXJlMTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNyc+
TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBd
PGJyPgorPHR0Pjxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CisnYWJjJy5zcGxpdCgv
W2Etel0vKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KKydhYmMnLnNwbGl0KC9bYS16
XS8pID0gLCwsIEZBSUxFRCEgZXhwZWN0ZWQ6ICwsPGJyPgorJ2FiYycuc3BsaXQobmV3IFJlZ0V4
cCgnW2Etel0nKSkgPSAsLCwgRkFJTEVEISBleHBlY3RlZDogLCw8YnI+CisnYWJjJy5zcGxpdChu
ZXcgUmVnRXhwKCdbYS16XScpKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KKzwvdHQ+
PGJyPgorPGEgbmFtZT0nZmFpbHVyZTE3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0n
b3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3ZlcnNpb24xMjAvYm9vbGVhbi0wMDEuanMnPmpz
MV8yL3ZlcnNpb24xMjAvYm9vbGVhbi0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUxNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTE4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8dHQ+PGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KK25ldyBCb29s
ZWFuKGZhbHNlKSA9IHRydWUgRkFJTEVEISBleHBlY3RlZDogZmFsc2U8YnI+Cis8L3R0Pjxicj4K
KzxhIG5hbWU9J2ZhaWx1cmUxOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIwL3JlZ3Jlc3MtOTk2NjMuanMnPmpzMV8y
L3ZlcnNpb24xMjAvcmVncmVzcy05OTY2My5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTE3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
MTknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KKzx0dD5TVEFUVVM6IFJlZ3Jlc3Npb24gdGVzdCBmb3IgQnVnemlsbGEgYnVnIDk5
NjYzPGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KK1NlY3Rpb24gMSBvZiB0ZXN0IC0g
Z290IEVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBpdCBGQUlMRUQhIGV4cGVjdGVkOiBhICJy
ZWFkLW9ubHkiIGVycm9yPGJyPgorU2VjdGlvbiAyIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxFRCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8
YnI+CitTZWN0aW9uIDMgb2YgdGVzdCAtIGdvdCBFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
aXQgRkFJTEVEISBleHBlY3RlZDogYSAicmVhZC1vbmx5IiBlcnJvcjxicj4KKzwvdHQ+PGJyPgor
PGEgbmFtZT0nZmFpbHVyZTE5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEtbi5qcyc+anMxXzMvU2Ny
aXB0L2Z1bmN0aW9uLTAwMS1uLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzgnIHRhcmdldD0nb3RoZXJfd2lu
ZG93Jz5CdWcgTnVtYmVyIDEwMjc4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTgnPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMCc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVj
dGVkIGV4aXQgY29kZSAzLCBnb3QgMDxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWdu
YWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorQlVHTlVNQkVSOiAx
MDI3ODxicj4KK2Z1bmN0aW9uLTAwMS5qcyBmdW5jdGlvbnMgbm90IHNlcGFyYXRlZCBieSBzZW1p
Y29sb25zIGFyZSBlcnJvcnMgaW4gdmVyc2lvbiAxMjAgYW5kIGhpZ2hlcjxicj4KK2V2YWwoImZ1
bmN0aW9uIGYoKXt9ZnVuY3Rpb24gZygpe30iKSA9IHVuZGVmaW5lZCBQQVNTRUQhPGJyPgorPC90
dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzMvU2NyaXB0L3NjcmlwdC0wMDEuanMnPmpzMV8z
L1NjcmlwdC9zY3JpcHQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlMTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMSc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0
ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgor
c2NyaXB0LTAwMSBOYXRpdmVTY3JpcHQ8YnI+CitFeGNlcHRpb246IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBTY3JpcHQ8YnI+CitnbG9iYWwgY29kZUAuL2pzMV8zL1Njcmlw
dC9zY3JpcHQtMDAxLmpzOjEzMzoyMzxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTIx
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV8zL3JlZ3Jlc3MvZnVuY3Rpb24tMDAxLW4uanMnPmpzMV8zL3JlZ3Jlc3MvZnVuY3Rpb24tMDAx
LW4uanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI3OCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIg
MTAyNzg8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMCc+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTIyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDMs
IGdvdCAwPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxl
dGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitCVUdOVU1CRVI6IDEwMjc4PGJyPgorZnVuY3Rp
b24tMDAxLmpzIGZ1bmN0aW9ucyBub3Qgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMgYXJlIGVycm9y
cyBpbiB2ZXJzaW9uIDEyMCBhbmQgaGlnaGVyPGJyPgorZXZhbCgiZnVuY3Rpb24gZigpe31mdW5j
dGlvbiBnKCl7fSIpID0gdW5kZWZpbmVkIFBBU1NFRCE8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9
J2ZhaWx1cmUyMic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpzJz5qczFfNS9FeGNlcHRp
b25zL2NhdGNoZ3VhcmQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlMjEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMyc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0
ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgor
RXhjZXB0aW9uOiBTeW50YXhFcnJvcjogRXhwZWN0ZWQgdG9rZW4gJyknPGJyPgorPC90dD48YnI+
Cis8YSBuYW1lPSdmYWlsdXJlMjMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMi5qcyc+anMx
XzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8
YSBocmVmPScjZmFpbHVyZTIyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMjQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IEV4cGVjdGVkIHRva2VuICcpJzxicj4K
KzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTI0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0w
MDMuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDMuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTI1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJy
PgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNh
c2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFN5bnRheEVycm9yOiBFeHBlY3RlZCB0b2tl
biAnKSc8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyNSc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2Vy
cnN0YWNrLTAwMS5qcyc+anMxXzUvRXhjZXB0aW9ucy9lcnJzdGFjay0wMDEuanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTI2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3N0YWNrRnJhbWVzWzRdLnN1YnN0cmluZycp
PGJyPgorZ2xvYmFsIGNvZGVALi9qczFfNS9FeGNlcHRpb25zL2VycnN0YWNrLTAwMS5qczoxMjI6
MjY8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyNic+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL3JlZ3Jl
c3MtNTA0NDcuanMnPmpzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qczwvYT4gZmFpbGVk
PC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTUwNDQ3JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA1MDQ0NzwvYT48YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTI1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMjcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0
Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRw
dXQgd2FzOjxicj4KK0JVR05VTUJFUjogNTA0NDc8YnI+CitTVEFUVVM6IFRlc3QgKG5vbi1FQ01B
KSBFcnJvciBvYmplY3QgcHJvcGVydGllcyBmaWxlTmFtZSwgbGluZU51bWJlcjxicj4KK0V4Y2Vw
dGlvbjogVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
ZS5maWxlTmFtZS5zZWFyY2gnKTxicj4KK3Rlc3RSZWFsRXJyb3JALi9qczFfNS9FeGNlcHRpb25z
L3JlZ3Jlc3MtNTA0NDcuanM6NjU6MjM8YnI+Cit0ZXN0QC4vanMxXzUvRXhjZXB0aW9ucy9yZWdy
ZXNzLTUwNDQ3LmpzOjQ0OjE2PGJyPgorZ2xvYmFsIGNvZGVALi9qczFfNS9FeGNlcHRpb25zL3Jl
Z3Jlc3MtNTA0NDcuanM6MzQ6NTxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTI3Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81
L0dldFNldC9nZXRzZXQtMDAxLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMS5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTI2Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMjgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwg
Z290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0
ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IEV4cGVj
dGVkIGFuIGlkZW50aWZpZXIgYnV0IGZvdW5kICdnZXR0ZXInIGluc3RlYWQ8YnI+Cis8L3R0Pjxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmUyOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qcyc+anMxXzUvR2V0
U2V0L2dldHNldC0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1
cmUyNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI5Jz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8
dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3
aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNl
cHRpb246IFN5bnRheEVycm9yOiBFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGJ1dCBmb3VuZCAnZ2V0
dGVyJyBpbnN0ZWFkPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjknPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0
L2dldHNldC0wMDMuanMnPmpzMV81L0dldFNldC9nZXRzZXQtMDAzLmpzPC9hPiBmYWlsZWQ8L2I+
IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmUzMCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxi
cj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3Rj
YXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjogRXhwZWN0ZWQgYW4g
aWRlbnRpZmllciBidXQgZm91bmQgJ3NldHRlcicgaW5zdGVhZDxicj4KKzwvdHQ+PGJyPgorPGEg
bmFtZT0nZmFpbHVyZTMwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMS5qcyc+anMxXzUvT2Jq
ZWN0L3JlZ3Jlc3MtOTA1OTYtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9
JyNmYWlsdXJlMjknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+
TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBd
PGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1p
bmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJy
PgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAoZXZh
bHVhdGluZyAnb2JqLnRvU291cmNlKCknKTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvT2JqZWN0
L3JlZ3Jlc3MtOTA1OTYtMDAxLmpzOjQ4OjIyPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWls
dXJlMzEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9
Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAyLmpzJz5qczFfNS9PYmplY3QvcmVncmVz
cy05MDU5Ni0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUz
MCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMyJz5OZXh0IEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+
RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRo
IHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRp
b246IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiB1bmV2YWw8YnI+CitnbG9i
YWwgY29kZUAuL2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5qczo0ODoxNjxicj4KKzwv
dHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTMyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMS5q
cyc+anMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlMzEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUzMyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rl
c3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91
dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBm
dW5jdGlvbiAoZXZhbHVhdGluZyAnb2JqMS50b1NvdXJjZSgpJyk8YnI+CitnbG9iYWwgY29kZUAu
L2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMS5qczo0OToyNjxicj4KKzwvdHQ+PGJyPgor
PGEgbmFtZT0nZmFpbHVyZTMzJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qcyc+anMxXzUv
T2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhy
ZWY9JyNmYWlsdXJlMzInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUz
NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRl
cm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6
PGJyPgorRXhjZXB0aW9uOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogdW5l
dmFsPGJyPgorZ2xvYmFsIGNvZGVALi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIuanM6
NDk6MTk8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzNCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtNDQwMDkuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5qczwvYT4gZmFpbGVkPC9i
PiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQ0
MDA5JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA0NDAwOTwvYT48YnI+CisgWyA8
YSBocmVmPScjZmFpbHVyZTMzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMzUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KK0JVR05VTUJFUjogNDQwMDk8YnI+CitTVEFUVVM6IFRlc3RpbmcgdGhhdCB3ZSBk
b24ndCBjcmFzaCBvbiBvYmoudG9Tb3VyY2UoKTxicj4KK0V4Y2VwdGlvbjogVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ29iai50b1NvdXJjZSgpJyk8
YnI+Cit0ZXN0VGhpc0AuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5qczo2MDoyNzxicj4K
K3Rlc3RALi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanM6NDg6MTE8YnI+CitnbG9iYWwg
Y29kZUAuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5qczozNTo1PGJyPgorPC90dD48YnI+
Cis8YSBuYW1lPSdmYWlsdXJlMzUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qcyc+anMxXzUv
UmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYwMicgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTAzNjAyPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJl
MzQnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNic+TmV4dCBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0
PlNUQVRVUzogUmVhc3NpZ25tZW50IHRvIGEgY29uc3QgaXMgTk9UIGFuIGVycm9yIHBlciBFQ01B
PGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gU2VjdGlvbiAxIG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJycsIEFjdHVhbCB2YWx1ZSAnUmVkZWNsYXJhdGlvbiBv
ZiBhIGNvbnN0IEZBSUxFRCB0byBjYXVzZSBhbiBlcnJvcic8YnI+CitGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2Vj
dGlvbiAzIG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhw
ZWN0ZWQgdmFsdWUgJzEnLCBBY3R1YWwgdmFsdWUgJzInPGJyPgorRkFJTEVEITogW3JlcG9ydGVk
IGZyb20gdGVzdCgpXSA8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzNic+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdy
ZXNzL3JlZ3Jlc3MtMTA0MDc3LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTA0MDc3LmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzUnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0Nv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjog
RXhwZWN0ZWQgdG9rZW4gJyknPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzcnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUv
UmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5q
czwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM2Jz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0
IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+
CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGNsb25lPGJyPgorZ2xvYmFsIGNvZGVALi9qczFf
NS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzOjc1OjE0PGJyPgorPC90dD48YnI+Cis8YSBuYW1l
PSdmYWlsdXJlMzgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTE3MjY5OS5qcyc+anMxXzUvUmVncmVzcy9y
ZWdyZXNzLTE3MjY5OS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVy
ZTM3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzknPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0
dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdp
dGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2Vw
dGlvbjogVVJJRXJyb3I6IFVSSSBlcnJvcjxicj4KK2RlY29kZVVSSUBbbmF0aXZlIGNvZGVdPGJy
PgorZ2xvYmFsIGNvZGVALi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzOjYxOjE5PGJy
PgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTE3OTUy
NC5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTE3OTUyNC5qczwvYT4gZmFpbGVkPC9iPiA8YSBo
cmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTUyNCcg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTc5NTI0PC9hPjxicj4KKyBbIDxhIGhy
ZWY9JyNmYWlsdXJlMzgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0
MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPHR0PlNUQVRVUzogRG9uJ3QgY3Jhc2ggb24gZXh0cmFuZW91cyBhcmd1bWVudHMg
dG8gc3RyLm1hdGNoKCksIGV0Yy48YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDE0IG9mIHRlc3QgLTxicj4KK0ZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ0EnLCBBY3R1YWwg
dmFsdWUgJ2EnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMTUgb2YgdGVzdCAtPGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnQSxhJywgQWN0dWFs
IHZhbHVlICdhJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDE3IG9mIHRlc3QgLTxicj4KK0ZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ0EnLCBBY3R1YWwg
dmFsdWUgJ2EnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMTggb2YgdGVzdCAtPGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnQSxhJywgQWN0dWFs
IHZhbHVlICdhJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDIwIG9mIHRlc3QgLTxicj4KK0ZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ1NIT1VMRCBIQVZF
IEZBTExFTiBJTlRPIENBVENILUJMT0NLIScsIEFjdHVhbCB2YWx1ZSAnYSc8YnI+CitGQUlMRUQh
OiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gU2VjdGlvbiAyMiBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0
ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcwJywgQWN0dWFsIHZhbHVlICc0Jzxicj4KK0ZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVz
dCgpXSBTZWN0aW9uIDIzIG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzAnLCBBY3R1YWwgdmFsdWUgJzQnPGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIFNlY3Rpb24gMjUgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVz
dCgpXSBFeHBlY3RlZCB2YWx1ZSAnMCcsIEFjdHVhbCB2YWx1ZSAnNCc8YnI+CitGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gU2VjdGlvbiAyNiBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIEV4cGVjdGVkIHZhbHVlICcwJywgQWN0dWFsIHZhbHVlICc0Jzxicj4KK0ZBSUxFRCE6IFty
ZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBTZWN0aW9uIDI4IG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gVHlwZSBtaXNtYXRjaCwgZXhwZWN0ZWQgdHlwZSBzdHJpbmcsIGFjdHVhbCB0eXBlIG51bWJl
cjxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ1NI
T1VMRCBIQVZFIEZBTExFTiBJTlRPIENBVENILUJMT0NLIScsIEFjdHVhbCB2YWx1ZSAnNCc8YnI+
CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRl
ZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAzMCBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdaQkMgYWJjJywgQWN0dWFsIHZhbHVlICdB
QkMgWmJjJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVE
ITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDMxIG9mIHRlc3QgLTxicj4KK0ZBSUxF
RCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ1pCQyBaYmMnLCBBY3R1
YWwgdmFsdWUgJ0FCQyBaYmMnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8
YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMzMgb2YgdGVzdCAt
PGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnWkJD
IGFiYycsIEFjdHVhbCB2YWx1ZSAnQUJDIFpiYyc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAz
NCBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVk
IHZhbHVlICdaQkMgWmJjJywgQWN0dWFsIHZhbHVlICdBQkMgWmJjJzxicj4KK0ZBSUxFRCE6IFty
ZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBTZWN0aW9uIDM2IG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gRXhwZWN0ZWQgdmFsdWUgJ1NIT1VMRCBIQVZFIEZBTExFTiBJTlRPIENBVENILUJMT0NLIScs
IEFjdHVhbCB2YWx1ZSAnQUJDIFpiYyc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQwJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1Njb3BlL3JlZ3Jlc3Mt
MjIwNTg0LmpzJz5qczFfNS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlNDEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+
CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2Fz
ZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IFNjcmlwdDxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvU2NvcGUvcmVncmVzcy0y
MjA1ODQuanM6NTY6MTE8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0MSc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9TY29w
ZS9zY29wZS0wMDEuanMnPmpzMV81L1Njb3BlL3Njb3BlLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8
YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjY4
JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA1MzI2ODwvYT48YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTQwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
NDInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KKzx0dD5TVEFUVVM6IFRlc3Rpbmcgc2NvcGUgYWZ0ZXIgY2hhbmdpbmcgb2JqLl9f
cHJvdG9fXzxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CitGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIFN0ZXAgMTogIHNldHRpbmcgb2JqLl9fcHJvdG9fXyA9IGdsb2JhbCBv
YmplY3Q8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVl
ICc1JywgQWN0dWFsIHZhbHVlICcxJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTdGVwIDI6ICBzZXR0aW5n
IG9iai5fX3Byb3RvX18gPSBudWxsPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBUeXBlIG1pc21hdGNoLCBleHBlY3RlZCB0eXBlIHVuZGVmaW5lZCwgYWN0dWFsIHR5cGUgbnVt
YmVyPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAn
dW5kZWZpbmVkJywgQWN0dWFsIHZhbHVlICcxJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDInPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9y
ZWdyZXNzLTMwMTU3NC5qcyc+anMxXzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qczwvYT4gZmFp
bGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTMwMTU3NCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMzAxNTc0PC9hPjxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNDEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmU0Myc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PlNUQVRVUzogRTRYIHNob3VsZCBiZSBlbmFibGVkIGV2
ZW4gd2hlbiBlNHg9MSBub3Qgc3BlY2lmaWVkPGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KK0ZBSUxFRCE6IEU0WCBzaG91bGQgYmUgZW5hYmxlZCBldmVuIHdoZW4gZTR4PTEgbm90IHNw
ZWNpZmllZDogWE1MKCk8YnI+CitGQUlMRUQhOiBFeHBlY3RlZCB2YWx1ZSAnTm8gZXJyb3InLCBB
Y3R1YWwgdmFsdWUgJ2Vycm9yOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
WE1MJzxicj4KK0ZBSUxFRCE6IDxicj4KK0ZBSUxFRCE6IEU0WCBzaG91bGQgYmUgZW5hYmxlZCBl
dmVuIHdoZW4gZTR4PTEgbm90IHNwZWNpZmllZDogWE1MTGlzdCgpPGJyPgorRkFJTEVEITogRXhw
ZWN0ZWQgdmFsdWUgJ05vIGVycm9yJywgQWN0dWFsIHZhbHVlICdlcnJvcjogUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFhNTCc8YnI+CitGQUlMRUQhOiA8YnI+Cis8L3R0Pjxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmU0Myc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzA5MjQyLmpzJz5qczFf
Ni9SZWdyZXNzL3JlZ3Jlc3MtMzA5MjQyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhy
ZWY9JyNmYWlsdXJlNDInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0
NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRl
cm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6
PGJyPgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPCc8YnI+Cis8
L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3Lmpz
Jz5qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBb
IDxhIGhyZWY9JyNmYWlsdXJlNDMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmU0NSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3Rj
YXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1
dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPCc8
YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0NSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1
OTEuanMnPmpzMV82L1N0cmluZy9yZWdyZXNzLTMwNjU5MS5qczwvYT4gZmFpbGVkPC9iPiA8YSBo
cmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjU5MScg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMzA2NTkxPC9hPjxicj4KKyBbIDxhIGhy
ZWY9JyNmYWlsdXJlNDQnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0
Nic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRl
cm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6
PGJyPgorQlVHTlVNQkVSOiAzMDY1OTE8YnI+CitTVEFUVVM6IFN0cmluZyBzdGF0aWMgbWV0aG9k
czxicj4KK1NUQVRVUzogU2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTMwNDgyODxicj4KK0V4Y2VwdGlvbjogVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ1N0cmluZy5zcGxpdChuZXcgU3RyaW5nKCdhYmMnKSwg
JycpJyk8YnI+CitnbG9iYWwgY29kZUAuL2pzMV82L1N0cmluZy9yZWdyZXNzLTMwNjU5MS5qczo0
ODoyMjxicj4KKzwvdHQ+PGJyPgorPC9kbD4KK1sgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IHwgPGEgaHJlZj0nI2ZhaWxfZGV0YWlsJz5Ub3Agb2YgRmFpbHVyZXM8L2E+IF08
YnI+Cis8aHI+Cis8cHJlPgorPGEgbmFtZT0ncmV0ZXN0X2xpc3QnPjwvYT4KKzxoMj5SZXRlc3Qg
TGlzdDwvaDI+PGJyPgorIyBSZXRlc3QgTGlzdCwgc3F1aXJyZWxmaXNoLCBnZW5lcmF0ZWQgTW9u
IEF1ZyAyNiAxMDoxOTowNCAyMDEzLgorIyBPcmlnaW5hbCB0ZXN0IGJhc2Ugd2FzOiBBbGwgdGVz
dHMuCisjIDExMTUgb2YgMTEyMyB0ZXN0KHMpIHdlcmUgY29tcGxldGVkLCA0NSBmYWlsdXJlcyBy
ZXBvcnRlZC4KK2VjbWFfMi9FeGNlcHRpb25zL2Z1bmN0aW9uLTAwMS5qcworZWNtYV8yL1JlZ0V4
cC9yZWdyZXNzLTAwMS5qcworZWNtYV8zL0Z1bkV4cHIvZmUtMDAxLmpzCitlY21hXzMvU3RhdGVt
ZW50cy9yZWdyZXNzLTE5NDM2NC5qcworZWNtYV8zL1VuaWNvZGUvdWMtMDAxLmpzCitqczFfMi9B
cnJheS9zcGxpY2UxLmpzCitqczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qcworanMxXzIvZnVu
Y3Rpb24vRnVuY3Rpb25fb2JqZWN0LmpzCitqczFfMi9mdW5jdGlvbi9mdW5jdGlvbi0wMDEtbi5q
cworanMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanMKK2pzMV8yL29wZXJhdG9yL2VxdWFsaXR5
LmpzCitqczFfMi9yZWdleHAvUmVnRXhwX2xhc3RJbmRleC5qcworanMxXzIvcmVnZXhwL3JlZ3Jl
c3MtNjM1OS5qcworanMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qcworanMxXzIvcmVnZXhwL3Np
bXBsZV9mb3JtLmpzCitqczFfMi9yZWdleHAvc3RyaW5nX3NwbGl0LmpzCitqczFfMi92ZXJzaW9u
MTIwL2Jvb2xlYW4tMDAxLmpzCitqczFfMi92ZXJzaW9uMTIwL3JlZ3Jlc3MtOTk2NjMuanMKK2pz
MV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEtbi5qcworanMxXzMvU2NyaXB0L3NjcmlwdC0wMDEuanMK
K2pzMV8zL3JlZ3Jlc3MvZnVuY3Rpb24tMDAxLW4uanMKK2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hn
dWFyZC0wMDEuanMKK2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIuanMKK2pzMV81L0V4
Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDMuanMKK2pzMV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAx
LmpzCitqczFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanMKK2pzMV81L0dldFNldC9nZXRz
ZXQtMDAxLmpzCitqczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qcworanMxXzUvR2V0U2V0L2dldHNl
dC0wMDMuanMKK2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMS5qcworanMxXzUvT2JqZWN0
L3JlZ3Jlc3MtOTA1OTYtMDAyLmpzCitqczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDEuanMK
K2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qcworanMxXzUvUmVncmVzcy9yZWdyZXNz
LTQ0MDA5LmpzCitqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTAzNjAyLmpzCitqczFfNS9SZWdyZXNz
L3JlZ3Jlc3MtMTA0MDc3LmpzCitqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzCitqczFf
NS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzCitqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0
LmpzCitqczFfNS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qcworanMxXzUvU2NvcGUvc2NvcGUtMDAx
LmpzCitqczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzAxNTc0LmpzCitqczFfNi9SZWdyZXNzL3JlZ3Jl
c3MtMzA5MjQyLmpzCitqczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3LmpzCitqczFfNi9TdHJp
bmcvcmVncmVzcy0zMDY1OTEuanMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209811</attachid>
            <date>2013-08-27 15:33:05 -0700</date>
            <delta_ts>2013-08-28 12:18:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120333-20130827153640.patch</filename>
            <type>text/plain</type>
            <size>54550</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjBhOWU1YmMxYWNiNmFkZTgwNGM4NjkyZmVhNGUyM2Y0ZWI3MWYxLi4zMTQ5ZTZmYzhmZjc2YmI1
ZWMwZTdmOGQ0MGExYjY4Mzc2YTYzY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOC0yNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBFUzYg
TWFwIHR5cGUgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmZp
bmQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRh
OjpnZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcERh
dGE6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6TWFwRGF0YTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6TWFwRGF0YTo6TWFwRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9NYXBJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9NYXBJbnN0YW5jZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok1hcEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6bWFwRGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcEluc3RhbmNlOjpNYXBJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6Ok1hcEluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0ZvckVhY2gpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6TWFwUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvbW96aWxsYS9hY3R1YWwuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBpc3N1ZXMgZm91bmQgYnkgdGhlIENsYW5nIFN0YXRpYyBBbmFseXplcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyYjZlYTNlODdhM2M5MWM5ZWI1OTYwZTAyNDM2MGNkMTU3
ODhmYWQ1Li5mYWNlZWQ5N2NlMTAxNWY3MTEzNWRiOTZlOTExODM3NzVlZmUxODdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODA0LDYgKzgwNCwxMiBAQAogCQlBMTcxMkIzQjEx
QzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4
cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcx
MkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUg
LyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcwMDg3MzkxN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CisJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
MDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CisJCUE3MDA4
NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8q
IE1hcFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3MDA4NzNFMTdDQkU4RDMwMEMzRTY0MyAvKiBN
YXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MDA4NzNDMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCAqLzsgfTsKKwkJ
QTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNGMTdDQkU4RUIwMEMzRTY0
MyAvKiBNYXBJbnN0YW5jZS5jcHAgKi87IH07CisJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAv
KiBNYXBJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmggKi87IH07CiAJ
CUE3MDQ0N0VBMTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ0N0U5MTdBMEJENDYwMEY1
ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzA0NDdFRDE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
NDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLzsgfTsKIAkJQTcwNDQ3
RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVt
cENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtODYzLDYgKzg2OSw4IEBACiAJCUE3N0YxODI1MTY0MTkyQzcwMDY0MEE0NyAvKiBQYXJz
ZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc3RjE4MjQxNjQxOTI1NDAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4NEEyNjExMUQxNjYyMjAwNTc3
NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3QTdFRTc0MTFCOThCOEQwMDY1QTE0RiAvKiBBU1RCdWlsZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4NEEyNjQxMUQx
NjYyMjAwNTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTdFRTc3MTFCOThCOEQwMDY1QTE0RiAvKiBTeW50YXhD
aGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3
IC8qIE1hcERhdGEuY3BwICovOyB9OworCQlBNzg1MDdENzE3Q0JDNkZEMDAxMUY2RTcgLyogTWFw
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4
NTA3RDUxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCAqLzsgfTsKIAkJQTc4ODUzRjkxNzk3
MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4ODUzRjcxNzk3MjYyOTAwMTQ0MEU0
IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQlBNzg4NTNGQTE3OTcyNjI5
MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0IC8qIElu
dGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3OEE5NzZDMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwICovOyB9
OwpAQCAtMTk3NSw2ICsxOTgzLDEyIEBACiAJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBS
ZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdF
eHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0
MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAw
ODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8q
IE1hcFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODczQzE3
Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NzAwODczRjE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwSW5zdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwSW5zdGFuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3RTkxN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRz
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGVyYW5kc0lubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IER1bXBDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNDQ3
RUMxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IER1bXBDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMDMxLDYgKzIwNDUsOCBAQAogCQlBNzdGMTgxRjE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3N0YxODIwMTY0MDg4QjIwMDY0MEE0
NyAvKiBDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUNh
Y2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3N0YxODI0MTY0MTkyNTQwMDY0
MEE0NyAvKiBQYXJzZXJNb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJNb2Rlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzg1MDdENDE3Q0JDNkZEMDAxMUY2RTcgLyogTWFw
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDUxN0NCQzZGRDAwMTFGNkU3
IC8qIE1hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzg4NTNGNzE3OTcyNjI5MDAxNDQwRTQg
LyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJl
Q2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1
cmVDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhBOTc2QzE3OTczOEI4
MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHBhdGggPSBkZmcvREZHRmFp
bGVkRmluYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzcsOSAr
MjM5Myw5IEBACiAJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTMyRjVCRDkwODIyQTFD
NzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQk5MzJGNUJFMTA4
MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCi0JCQkJOTMyRjVCRDkwODIyQTFDNzAwNzM2
OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKIAkJCQkxNDEyMTEyMDBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyog
dGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAq
LywKQEAgLTMxNzksNiArMzE5NSw4IEBACiAJCQkJQTdFMkVBNjkwRkI0NjBDRjAwNjAxRjA2IC8q
IExpdGVyYWxQYXJzZXIuaCAqLywKIAkJCQlGNjkyQTg2ODAyNTU1OTdEMDFGRjYwRjcgLyogTG9v
a3VwLmNwcCAqLywKIAkJCQlGNjkyQTg2OTAyNTU1OTdEMDFGRjYwRjcgLyogTG9va3VwLmggKi8s
CisJCQkJQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovLAorCQkJCUE3
ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8sCiAJCQkJODYxMkU0Q0IxNTIy
OTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8sCiAJCQkJRjY5MkE4NkEwMjU1NTk3RDAx
RkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovLAogCQkJCUY2OTJBODZCMDI1NTU5N0QwMUZGNjBG
NyAvKiBNYXRoT2JqZWN0LmggKi8sCkBAIC0zMjk1LDYgKzMzMTMsMTIgQEAKIAkJCQkxNEJGQ0U2
ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkRE
QjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCisJCQkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8q
IE1hcENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyog
TWFwQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFw
UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJv
dG90eXBlLmggKi8sCisJCQkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNl
LmNwcCAqLywKKwkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0zODQ2LDEwICszODcwLDEyIEBACiAJCQkJQTczRTEzMzExNzk2MjRDRDAwRTRERUE4IC8q
IERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NF
MTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDA4NzNFMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBE
RkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyOTgxRkREMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0
YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERG
R0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQzQzgyODE0MTE1RDRG
MDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QzE0REYz
RjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTgxLDYgKzQwMDcs
NyBAQAogCQkJCUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FE
IC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwMDg3M0ExN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1
QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5n
UmVmQ291bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDE3MSw2ICs0MTk4LDcgQEAK
IAkJCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxl
clg4Nl82NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzg1MDdENzE3
Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCOTE2QzIx
NERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQyRDZGMDkxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDE0NDhDQjEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDMwMCwxMiArNDMyOCwxMiBAQAogCQkJCUJDQ0YwRDA4MEVGMEFBQjkwMDQx
M0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MDQxNDgw
RUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJERjQ0MzAxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTeW1i
b2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3NkFDIC8q
IFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTcyRDRGMTY4NzlGREQwMEU1
N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTYxMTg2
OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQx
NDQ4Q0QxM0ExNzgzNzAwRjVCQTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDYxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlB
ZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDgxN0I2QjVBQjAwQTdBRTNGIC8q
IFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5ODMsNiArNTAxMSw3
IEBACiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QTRBRTA4MTc5NzNCMjYwMDU2
MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
Nzg1MDdENjE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MDA4LDYgKzUwMzcsNyBAQAogCQkJCTE0MjgwODUw
MTA3RUMwRDcwMDEzRTdCMiAvKiBPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyogUG9seW1vcnBo
aWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjk4MjA2MDE2QkZFMzgxMDAy
NDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAzNyw2
ICs1MDY3LDcgQEAKIAkJCQkxNDI4MDg0MTEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVn
RXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MDA4NzNEMTdDQkU4RDMw
MEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDIx
MDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDMxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cE9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUwNTMsNiArNTA4NCw3IEBACiAJCQkJMEY1NTQxQjEx
NjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0MxRUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tJdGVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNzAwODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFu
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REVCMTA3RUM3
RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaAppbmRleCBiYzhhMTJjNWFhNzM5
NTI1ZDk5NjUyOTMyZDFjOWUzM2M0YWE4YWNmLi4zNWUwZTY3ZTZlOTNjZjI0NmJhYTBlNjhlZGI5
Mzc1Y2ZjZDMzOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5
VG9rZW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaApAQCAt
MzAsNyArMzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBDb3B5VG9rZW4gewogICAgIEJ1
dHRlcmZseUNvcHlUb2tlbiwKLSAgICBUeXBlZEFycmF5VmVjdG9yQ29weVRva2VuCisgICAgVHlw
ZWRBcnJheVZlY3RvckNvcHlUb2tlbiwKKyAgICBNYXBCYWNraW5nU3RvcmVDb3B5VG9rZW4KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNmZmOTg3N2EzOTc5YWE0MGQ5M2UyYzUxYjQw
MzRiYzlmOTZjOTFmMi4uOTQ3ZjY4MjY0NzY5MmExNzZkODY5MzU0MDQ3N2JiZGUyNDU2ZjQ2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCkBAIC0xMzYsNyArMTM2LDEyIEBACiAgICAgbWFjcm8odmFsdWUpIFwKICAgICBtYWNybyh2
YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAg
bWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhoYXMpIFwKKyAgICBtYWNybyhmb3JFYWNoKSBc
CisgICAgbWFjcm8oY2xlYXIpIFwKKyAgICBtYWNybyhzaXplKSBcCisgICAgbWFjcm8oTWFwKQog
CiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAg
ICAgbWFjcm8obnVsbCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGUyYmRmZGNjNWE4NmJjN2E3MjZhYjJlZDNkOTY3NTU4MjI3
Yjg2NDIuLjE2ZjFlOWU2ZmJkZmU2NzRmNTA1Y2Q3NjkwNmE2NmQ1NjcwOWYwNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTc5
LDYgKzc5LDkgQEAKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVBy
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJNYXBJbnN0YW5jZS5oIgorI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIk1hdGhPYmplY3QuaCIKICNpbmNsdWRlICJOYW1lQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKQEAgLTMxMSw3ICszMTQsMTEgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgbV9wcm9taXNlUmVzb2x2ZXJT
dHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0
KCkpKTsKICAgICBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNr
U3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSk7Ci0gICAgCisKKyAgICBtX21hcERhdGFTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRo
aXMsIE1hcERhdGE6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBqc051bGwoKSkp
OworICAgIG1fbWFwUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBQcm90b3R5cGU6
OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX21hcFN0cnVjdHVy
ZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgTWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX21hcFByb3RvdHlwZS5nZXQoKSkpOworCiAgICAgLy8gQ29uc3RydWN0
b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSk7CkBAIC0zMjMsNiArMzMwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBEYXRl
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9k
YXRlUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIHByb21pc2VDb25zdHJ1Y3RvciA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9wcm9taXNlUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIHByb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yID0gSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogbWFwQ29uc3RydWN0b3IgPSBN
YXBDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1f
bWFwUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMt
PnZtKCksIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgUmVnRXhw
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMzQ4LDYg
KzM1Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIG1fZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZt
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9y
LmdldCgpLCBEb250RW51bSk7CiAgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fcHJvbWlzZVJlc29sdmVy
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBE
b250RW51bSk7CisgICAgbV9tYXBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbWFwQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
PnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51
bSk7CkBAIC0zNjYsNiArMzc1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLlVSSUVycm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0
KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuUHJvbWlzZSwgcHJvbWlzZUNvbnN0cnVjdG9yLCBEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLlByb21pc2VSZXNvbHZlciwgcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuTWFwLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0pOwog
CiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVuY3Rpb246OmNy
ZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5zdHJpbmcoKSwg
Z2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERv
bnRFbnVtKTsKQEAgLTYyMSw2ICs2MzEsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1
Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFwRGF0YVN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFwU3RydWN0dXJlKTsKIAogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmMmQ2
NzM4ODMzNTFhNmI4OGQyM2FhNGQ2ZGY4YTY0NWU0ODk1ZjU1Li40Yjg3ZTEwNWFlNjc4ODJjM2Vj
ODk4Mjk5ZWI4Y2NhY2MyZTZmYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNQcm9taXNlUHJv
dG90eXBlOwogY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNr
OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTWFwUHJvdG90eXBlOwogY2xh
c3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZTsKQEAgLTE1MCw2ICsxNTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
V3JpdGVCYXJyaWVyPEVycm9yUHJvdG90eXBlPiBtX2Vycm9yUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxKU1Byb21pc2VQcm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsKICAgICBXcml0
ZUJhcnJpZXI8SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU+IG1fcHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlOworICAgIFdyaXRlQmFycmllcjxNYXBQcm90b3R5cGU+IG1fbWFwUHJvdG90eXBlOwog
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsK
QEAgLTE4OCw2ICsxOTAsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlOwogCisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9tYXBEYXRhU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbWFwU3RydWN0dXJlOworICAgIAogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVy
UHJvdG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zNzgsNiArMzgzLDggQEAg
cHVibGljOgogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHBy
aXZhdGVOYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0
cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0
KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1hcERhdGFTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X21hcERhdGFTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYmExM2IzNWNhZGE1MzIxOTYxNmMzOGU4MjdlZGUzZWNjZmY3YmJi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBD
b25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiTWFwSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJNYXBQ
cm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBNYXBDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKE1hcENvbnN0cnVjdG9yKSB9OworCit2b2lkIE1hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE1hcFByb3RvdHlwZSogbWFwUHJvdG90
eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIG1hcFByb3RvdHlw
ZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgbWFwUHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IGFzSW50ZXJuYWxGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hcEluc3RhbmNlOjpjcmVhdGUoZXhlYywgbWFwU3RydWN0
dXJlKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgTWFwQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdE1hcDsKKyAgICByZXR1cm4gQ29uc3Ry
dWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIE1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY29uc3RydWN0TWFwOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc4NWVjYjNlNDQ1MGIyZjBiMzkwOGQ2NWFmNTAzNjMxMGM5NDdjYzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1hcENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgTWFwQ29uc3RydWN0b3JfaAor
CisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgTWFwUHJvdG90eXBlOworCitjbGFzcyBNYXBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsK
KworICAgIHN0YXRpYyBNYXBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE1hcFByb3Rv
dHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBNYXBDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIE1hcENvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90
eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBNYXBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqLCBNYXBQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZp
bmVkKE1hcENvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERh
dGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMyN2QzYWNmNDU4ZDJkMWY4MWQzNzI3ODk4ZTJkZmFhMGNjMmZl
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBE
YXRhLmNwcApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIk1hcERhdGEuaCIKKworI2luY2x1ZGUgIkNvcGllZEFsbG9jYXRvci5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIE1hcERhdGE6OnNfaW5mbyA9IHsgIk1hcERhdGEiLCAwLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hcERhdGEpIH07CisKK2VudW0geyBNaW5pbXVtTWFw
U2l6ZSA9IDQgfTsKKworTWFwRGF0YTo6TWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCisgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPm1hcERhdGFTdHJ1Y3R1
cmUoKSkKKyAgICAsIG1fY2FwYWNpdHkoMCkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9kZWxl
dGVkQ291bnQoMCkKKyAgICAsIG1fZW50cmllcygwKQoreworfQorCitNYXBEYXRhOjppdGVyYXRv
ciBNYXBEYXRhOjpmaW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSkKK3sKKyAg
ICBpZiAoIW1fZW50cmllcykKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7CisgICAgRW50cnkq
IGVudHJpZXMgPSBtX2VudHJpZXM7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1fc2l6ZTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChKU1ZhbHVl
OjpzdHJpY3RFcXVhbChjYWxsRnJhbWUsIGVudHJpZXNbaV0ua2V5LmdldCgpLCBrZXkpKQorICAg
ICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCZlbnRyaWVzW2ldKTsKKyAgICB9CisgICAgcmV0dXJu
IGl0ZXJhdG9yKCk7Cit9CisKK3ZvaWQgTWFwRGF0YTo6c2V0KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpdGVyYXRvciBlbnRyeSA9IGZp
bmQoY2FsbEZyYW1lLCBrZXkpOworICAgIGlmIChlbnRyeSkgeworICAgICAgICBlbnRyeS52YWx1
ZSgpLnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoIWVuc3VyZVNwYWNlRm9yQXBwZW5kKGNhbGxGcmFtZSkpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2VudHJpZXNbbV9zaXplXS5rZXkuc2V0KGNhbGxGcmFtZS0+
dm0oKSwgdGhpcywga2V5KTsKKyAgICBtX2VudHJpZXNbbV9zaXplXS52YWx1ZS5zZXQoY2FsbEZy
YW1lLT52bSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgbV9zaXplKys7Cit9CisKK0pTVmFsdWUgTWFw
RGF0YTo6Z2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSkKK3sKKyAgICBpZiAo
aXRlcmF0b3IgZW50cnkgPSBmaW5kKGNhbGxGcmFtZSwga2V5KSkKKyAgICAgICAgcmV0dXJuIGVu
dHJ5LnZhbHVlKCkuZ2V0KCk7CisgICAgcmV0dXJuIEpTVmFsdWUoKTsKK30KKworYm9vbCBNYXBE
YXRhOjpyZW1vdmUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUga2V5KQoreworICAgIGl0
ZXJhdG9yIGVudHJ5ID0gZmluZChjYWxsRnJhbWUsIGtleSk7CisgICAgaWYgKCFlbnRyeSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGVudHJ5LmtleSgpLmNsZWFyKCk7CisgICAgZW50cnku
dmFsdWUoKS5jbGVhcigpOworICAgIG1fZGVsZXRlZENvdW50Kys7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlIDxNYXBEYXRhOjpDb3B5TW9kZSBtb2RlPiB2b2lkIE1hcERhdGE6OmNv
cHlBbmRQYWNrSWZQb3NzaWJsZShFbnRyeSogZGVzdGluYXRpb24sIHNpemVfdCBuZXdTaXplKQor
eworICAgIHNpemVfdCBuZXdFbmQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9z
aXplOyBpKyspIHsKKyAgICAgICAgRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW2ldOworICAgICAg
ICBpZiAobW9kZSA9PSBDYW5QYWNrICYmICFlbnRyeS5rZXkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgQVNTRVJUKG5ld0VuZCA8IG5ld1NpemUpOworICAgICAgICBtZW1jcHkoZGVz
dGluYXRpb24gKyBuZXdFbmQsICZlbnRyeSwgc2l6ZW9mKEVudHJ5KSk7CisgICAgICAgIG5ld0Vu
ZCsrOworICAgIH0KKyAgICBtX2NhcGFjaXR5ID0gbmV3U2l6ZTsKKyAgICBtX3NpemUgPSBuZXdF
bmQ7CisgICAgbV9kZWxldGVkQ291bnQgPSAwOworICAgIG1fZW50cmllcyA9IGRlc3RpbmF0aW9u
OworCit9CisKK0NoZWNrZWRCb29sZWFuIE1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5kKENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChtX2NhcGFjaXR5ID4gbV9zaXplKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBib29sIGNhblBhY2sgPSB0cnVlOworICAgIHNpemVfdCBy
ZXF1aXJlZFNpemUgPSBtX3NpemUgKyBtX3NpemUgLyA0ICsgMSAtIChjYW5QYWNrID8gbV9kZWxl
dGVkQ291bnQgOiAwKTsKKyAgICB2b2lkKiBuZXdTdG9yYWdlID0gMDsKKyAgICBpZiAoIWNhbGxG
cmFtZS0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3JhZ2UodGhpcywgcmVxdWlyZWRTaXplICogc2l6
ZW9mKEVudHJ5KSwgJm5ld1N0b3JhZ2UpKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIERlZmVyR0Mg
ZGVmZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKKyAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRp
Y19jYXN0PEVudHJ5Kj4obmV3U3RvcmFnZSk7CisgICAgaWYgKGNhblBhY2spCisgICAgICAgIGNv
cHlBbmRQYWNrSWZQb3NzaWJsZTxDYW5QYWNrPihuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOwor
ICAgIGVsc2UKKyAgICAgICAgY29weUFuZFBhY2tJZlBvc3NpYmxlPENhbm5vdFBhY2s+KG5ld0Vu
dHJpZXMsIHJlcXVpcmVkU2l6ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWFwRGF0
YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgTWFwRGF0YSogdGhp
c09iamVjdCA9IGpzQ2FzdDxNYXBEYXRhKj4oY2VsbCk7CisgICAgRW50cnkqIGVudHJpZXMgPSB0
aGlzT2JqZWN0LT5tX2VudHJpZXM7CisgICAgaWYgKCFlbnRyaWVzKQorICAgICAgICByZXR1cm47
CisgICAgc2l6ZV90IHNpemUgPSB0aGlzT2JqZWN0LT5tX3NpemU7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKCFlbnRyaWVzW2ldLmtleSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZW50cmllc1tpXS5r
ZXkpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZW50cmllc1tpXS52YWx1ZSk7CisgICAgfQor
CisgICAgdmlzaXRvci5jb3B5TGF0ZXIodGhpc09iamVjdCwgTWFwQmFja2luZ1N0b3JlQ29weVRv
a2VuLCBlbnRyaWVzLCBzaXplKTsKK30KKwordm9pZCBNYXBEYXRhOjpjb3B5QmFja2luZ1N0b3Jl
KEpTQ2VsbCogY2VsbCwgQ29weVZpc2l0b3ImIHZpc2l0b3IsIENvcHlUb2tlbiB0b2tlbikKK3sK
KyAgICBNYXBEYXRhKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1hcERhdGEqPihjZWxsKTsKKyAgICBp
ZiAodG9rZW4gPT0gTWFwQmFja2luZ1N0b3JlQ29weVRva2VuCisgICAgICAgICYmIHZpc2l0b3Iu
Y2hlY2tJZlNob3VsZENvcHkodGhpc09iamVjdC0+bV9lbnRyaWVzKSkgeworICAgICAgICB2b2lk
KiBvbGRWZWN0b3IgPSB0aGlzT2JqZWN0LT5tX2VudHJpZXM7CisgICAgICAgIHZvaWQqIG5ld1Zl
Y3RvciA9IHZpc2l0b3IuYWxsb2NhdGVOZXdTcGFjZSh0aGlzT2JqZWN0LT5ieXRlU2l6ZSgpKTsK
KyAgICAgICAgbWVtY3B5KG5ld1ZlY3Rvciwgb2xkVmVjdG9yLCB0aGlzT2JqZWN0LT5ieXRlU2l6
ZSgpKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV92ZWN0b3IgPSBuZXdWZWN0b3I7CisgICAgICAg
IHZpc2l0b3IuZGlkQ29weShvbGRWZWN0b3IsIHRoaXNPYmplY3QtPmJ5dGVTaXplKCkpOworICAg
IH0KKyAgICBCYXNlOjpjb3B5QmFja2luZ1N0b3JlKGNlbGwsIHZpc2l0b3IsIHRva2VuKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJh
MmVmNmQzYWY3NjMyNmJlMDBhZmNhMjZhMmM3N2MwZTNjMTY0NDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTAsMCArMSwxMjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcERhdGFfaAorI2RlZmluZSBNYXBEYXRhX2gKKwor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworY2xhc3MgTWFwRGF0YSA6IHB1YmxpYyBKU0NlbGwgeworcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgRW50cnkgeworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4ga2V5OworICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gdmFsdWU7CisgICAgfTsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0cnVjdCBpdGVyYXRvciB7CisgICAgICAgIGV4cGxpY2l0
IGl0ZXJhdG9yKEVudHJ5KiBlbnRyeSkKKyAgICAgICAgICAgIDogbV9lbnRyeShlbnRyeSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaXRlcmF0b3IoKQorICAgICAgICAgICAgOiBt
X2VudHJ5KDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiYga2V5KCkgeyByZXR1cm4gbV9lbnRyeS0+a2V5OyB9CisgICAgICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiYgdmFsdWUoKSB7IHJldHVybiBtX2VudHJ5LT52YWx1ZTsgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKTsgfQorICAgICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzRW1wdHkoKTsgfQor
ICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9lbnRyeTsgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgRW50cnkqIG1fZW50cnk7CisgICAgfTsKKworCisgICAgc3RhdGlj
IE1hcERhdGEqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgeworICAgICAgICBNYXBEYXRhKiBtYXBEYXRhID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8TWFwRGF0YT4odm0uaGVhcCkpIE1hcERhdGEodm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAg
IG1hcERhdGEtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIG1hcERhdGE7Cisg
ICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldChDYWxsRnJhbWUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSk7
CisgICAgSlNWYWx1ZSBnZXQoQ2FsbEZyYW1lKiwgSlNWYWx1ZSBrZXkpOworICAgIGJvb2wgcmVt
b3ZlKENhbGxGcmFtZSosIEpTVmFsdWUga2V5KTsKKyAgICBib29sIGNvbnRhaW5zKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSkgeyByZXR1cm4gIWZpbmQoY2FsbEZyYW1lLCBrZXkp
LmlzRW1wdHkoKTsgfQorICAgIHNpemVfdCBzaXplKENhbGxGcmFtZSopIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZSAtIG1fZGVsZXRlZENvdW50OyB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7Cisg
ICAgICAgIG1fY2FwYWNpdHkgPSAwOworICAgICAgICBtX3NpemUgPSAwOworICAgICAgICBtX2Rl
bGV0ZWRDb3VudCA9IDA7CisgICAgICAgIG1fZW50cmllcyA9IDA7CisgICAgfQorCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIE1hcERhdGEoVk0mLCBKU0dsb2JhbE9iamVjdCop
OworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworICAgIHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3Im
LCBDb3B5VG9rZW4pOworICAgIGl0ZXJhdG9yIGZpbmQoQ2FsbEZyYW1lKiwgSlNWYWx1ZSBrZXkp
OworICAgIENoZWNrZWRCb29sZWFuIGVuc3VyZVNwYWNlRm9yQXBwZW5kKENhbGxGcmFtZSopOwor
ICAgIGVudW0gQ29weU1vZGUge0NhblBhY2ssIENhbm5vdFBhY2t9OworICAgIHRlbXBsYXRlIDxD
b3B5TW9kZT4gdm9pZCBjb3B5QW5kUGFja0lmUG9zc2libGUoRW50cnkqIGRlc3RpbmF0aW9uLCBz
aXplX3QgbmV3U2l6ZSk7CisKKyAgICB0ZW1wbGF0ZSA8Q29weU1vZGUgbW9kZT4gYm9vbCBzaG91
bGRTaHJpbmsoc2l6ZV90IGRlc2lyZWRTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUg
PSBkZXNpcmVkU2l6ZTsKKyAgICAgICAgaWYgKG1vZGUgPT0gQ2FuUGFjaykKKyAgICAgICAgICAg
IHNpemUgLT0gbV9kZWxldGVkQ291bnQ7CisgICAgICAgIHJldHVybiBzaXplIDwgbV9jYXBhY2l0
eSAvIDI7CisgICAgfQorCisgICAgdGVtcGxhdGUgPENvcHlNb2RlIG1vZGU+IGJvb2wgc2hvdWxk
R3JvdyhzaXplX3QgZGVzaXJlZFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gZGVzaXJlZFNp
emUgPj0gbV9jYXBhY2l0eTsKKyAgICB9CisgICAgCisKKyAgICBzaXplX3QgbV9jYXBhY2l0eTsK
KyAgICBzaXplX3QgbV9zaXplOworICAgIHNpemVfdCBtX2RlbGV0ZWRDb3VudDsKKyAgICBFbnRy
eSogbV9lbnRyaWVzOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsKKwor
fQorCisjZW5kaWYgLyogIWRlZmluZWQoTWFwRGF0YV9oKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhN2FiNDkzZmRmMTNm
NWY5OWVkMTg3M2ZkZjBkZGM3MWEyNTZlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIk1hcEluc3RhbmNlLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY29uc3QgQ2xhc3NJbmZvIE1hcElu
c3RhbmNlOjpzX2luZm8gPSB7ICJNYXAiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE1hcEluc3RhbmNlKSB9OworCit2b2lkIE1hcEluc3RhbmNlOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbihjZWxsLHZpc2l0b3IpOworICAgIE1hcEluc3RhbmNlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PE1hcEluc3RhbmNlKj4oY2VsbCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbWFwRGF0YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcEluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBJbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViOTllYWI4ZGNmMjJhYjdjMWIwOGRmMTY0MjZlNzYy
Y2Q2MmJlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBJbnN0YW5jZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcEluc3RhbmNlX2gKKyNkZWZpbmUgTWFw
SW5zdGFuY2VfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJNYXBEYXRhLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBJbnN0YW5jZSA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBNYXBJbnN0YW5jZSogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBNYXBJbnN0YW5jZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBJbnN0YW5jZT4odm0uaGVhcCkpIE1h
cEluc3RhbmNlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0sIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICByZXR1cm4gaW5zdGFu
Y2U7CisgICAgfQorCisgICAgc3RhdGljIE1hcEluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUo
ZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBNYXBEYXRhKiBtYXBEYXRhKCkg
eyByZXR1cm4gbV9tYXBEYXRhLmdldCgpOyB9CisKK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBNYXBJbnN0YW5jZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IG1fbWFwRGF0YS5zZXQodm0sIHRoaXMsIE1hcERhdGE6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
KSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPE1hcERhdGE+IG1fbWFwRGF0YTsKK307CisK
K30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcEluc3RhbmNlX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzlmMmQzMmQw
Mzc2YzdhNDQ2ZDA2MTAyOGRkYWRiZjc5ZDBkODkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDE0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNp
bmNsdWRlICJNYXBJbnN0YW5jZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShNYXBQcm90b3R5cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRm9y
RWFjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByb3RvRnVuY0dldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShFeGVjU3RhdGUqKTsK
KyAgICAKK3ZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKKworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIsIG1hcFByb3RvRnVu
Y0NsZWFyLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5kZWxldGVLZXl3b3JkLCBtYXBQcm90b0Z1bmNEZWxldGUsIERvbnRFbnVtLCAxKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmZvckVhY2gsIG1hcFBy
b3RvRnVuY0ZvckVhY2gsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7CisgICAg
SlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIG1hcFByb3RvRnVuY0hh
cywgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+c2V0LCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKworICAgIEdldHRlclNldHRl
ciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDAsIHZt
LnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOworICAgIGFj
Y2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZnVuY3Rpb24pOworICAgIHB1dERpcmVjdEFj
Y2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIGFjY2Vzc29yLCBEb250RW51bSB8
IEFjY2Vzc29yKTsKK30KKworc3RhdGljIE1hcERhdGEqIGdldE1hcERhdGEoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIGlmICghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0
RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
ICAgIE1hcEluc3RhbmNlKiBtYXAgPSBqc0R5bmFtaWNDYXN0PE1hcEluc3RhbmNlKj4odGhpc1Zh
bHVlKTsKKyAgICBpZiAoIW1hcCkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QiKSk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gbWFwLT5tYXBEYXRhKCk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgZGF0YS0+Y2xlYXIoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihkYXRhLT5yZW1vdmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0ZvckVhY2go
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFw
RGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBkYXRhLT5nZXQoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0g
anNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jSGFzKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGRhdGEtPmNvbnRhaW5zKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNT
ZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERh
dGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgZGF0YS0+
c2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoZGF0YS0+c2l6ZShjYWxsRnJhbWUpKSk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjZmMGFiNmE1NjM5YTcxY2NhMjYwZTg0ZThjYThiZmExZDRjMmM5YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIE1hcFByb3RvdHlwZV9oCisjZGVmaW5lIE1hcFByb3RvdHlwZV9oCisKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFwUHJvdG90eXBlIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIE1hcFByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBNYXBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE1hcFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE1hcFByb3RvdHlw
ZShleGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisg
ICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1hcFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZXhlYy0+dm0oKSwgc3RydWN0
dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCopOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoTWFwUHJvdG90
eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOWJiMGQ0Y2JiMjky
NTVhZmE5MGFjNzY5Y2IwZjFhZjMxYjVhMzc3Yi4uNmFhZjI3MzUwMTQzODRmYTQxYTA4N2E0M2I2
ZmQ4NWMzMDY3MjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNTMs
NiArNTMsNyBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIK
ICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9k
ZXMuaCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgi
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209916</attachid>
            <date>2013-08-28 12:18:16 -0700</date>
            <delta_ts>2013-08-28 18:23:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120333-20130828121817.patch</filename>
            <type>text/plain</type>
            <size>58993</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDg0NWY3OTYxZTgzYmFlMThiZDViYzZkMWM2NjQwNGNiMGU2NGFlLi5iYmE4M2QyOGZiZjE3MmYx
ZmQ3NWRlYjg1NGFlYzVkMjViNDcyNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOC0yNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBFUzYg
TWFwIHR5cGUgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmZp
bmQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRh
OjpnZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcERh
dGE6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6TWFwRGF0YTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6TWFwRGF0YTo6TWFwRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9NYXBJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9NYXBJbnN0YW5jZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok1hcEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6bWFwRGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcEluc3RhbmNlOjpNYXBJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6Ok1hcEluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0ZvckVhY2gpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6TWFwUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvbW96aWxsYS9hY3R1YWwuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBKU0Mgd2l0aCBGVEwgSklUIGVu
YWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmI2ZWEzZTg3YTNjOTFjOWVi
NTk2MGUwMjQzNjBjZDE1Nzg4ZmFkNS4uZmFjZWVkOTdjZTEwMTVmNzExMzVkYjk2ZTkxMTgzNzc1
ZWZlMTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNCw2ICs4MDQsMTIg
QEAKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDEx
MUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtl
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzAwODczQTE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5o
ICovOyB9OworCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovOyB9OworCQlBNzAwODczRTE3Q0JF
OEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90
eXBlLmggKi87IH07CisJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0YW5jZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODcz
RjE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuY3BwICovOyB9OworCQlBNzAwODc0MjE3
Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0
YW5jZS5oICovOyB9OwogCQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0
NDdFOTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwNDQ3RUQxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAg
Ki87IH07CiAJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDQ3RUMxN0EwQkQ3
MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg2Myw2ICs4NjksOCBAQAogCQlBNzdGMTgyNTE2NDE5MkM3
MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRB
MjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNU
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NzExQjk4QjhEMDA2
NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3ODUwN0Q2MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUwN0Q0
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTc4NTA3RDcxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi87IH07
CiAJCUE3ODg1M0Y5MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y3
MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJ
QTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2
MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc2QzE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCAqLzsgfTsKQEAgLTE5NzUsNiArMTk4MywxMiBAQAogCQlBMTcxMkIzQTExQzdC
MjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTcwMDg3M0MxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcEluc3RhbmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcEluc3Rh
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0N0U5MTdBMEJENDYwMEY1
ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3BlcmFuZHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0
N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEdW1wQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAzMSw2ICsyMDQ1LDggQEAKIAkJQTc3RjE4MUYxNjQwODhCMjAw
NjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdGMTgy
MDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdG
MTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFy
c2VyTW9kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDQxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3ODUwN0Q1
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4ODUzRjcx
Nzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwOyBw
YXRoID0gZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzc3LDkgKzIzOTMsOSBAQAogCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8s
CiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQkwRkY5MjJDRjE0
RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAotCQkJCTkzMkY1
QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJ
MTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNF
OEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAgKi8sCkBAIC0zMTc5LDYgKzMxOTUsOCBAQAogCQkJCUE3RTJFQTY5MEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8sCiAJCQkJRjY5MkE4NjgwMjU1NTk3
RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCiAJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3
IC8qIExvb2t1cC5oICovLAorCQkJCUE3ODUwN0Q0MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRh
LmNwcCAqLywKKwkJCQlBNzg1MDdENTE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oICovLAog
CQkJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovLAogCQkJCUY2
OTJBODZBMDI1NTU5N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg2
QjAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5oICovLApAQCAtMzI5NSw2ICszMzEzLDEy
IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3
NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAorCQkJCUE3MDA4NzM3MTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTcwMDg3MzgxN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTcwMDg3M0IxN0NCRThE
MzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTcwMDg3M0MxN0NCRThEMzAw
QzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovLAorCQkJCUE3MDA4NzNGMTdDQkU4RUIwMEMzRTY0
MyAvKiBNYXBJbnN0YW5jZS5jcHAgKi8sCisJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzg0NiwxMCArMzg3MCwxMiBAQAogCQkJCUE3M0UxMzMxMTc5
NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVz
aXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODczRTE3Q0JFOEQzMDBD
M0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlGRiAvKiBERkdEaXNh
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUQzMTU0RkI0RjAwMDk4M0U3MiAv
KiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODc0MjE3Q0JFOEVCMDBD
M0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENC
QjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMzk4MSw2ICs0MDA3LDcgQEAKIAkJCQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEw
OEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FF
MTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21p
bmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FF
M0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQx
NzEsNiArNDE5OCw3IEBACiAJCQkJODYwMTYxRTQwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAg
LyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU2MEYz
QTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTc4NTA3RDcxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MkQ2RjA5MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJs
b2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTQzMDAsMTIgKzQzMjgsMTIgQEAKIAkJCQlCQ0NG
MEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8q
IFRvTmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNE
MDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFE
MTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU3
MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2
ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5
IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA2MTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA4MTdC
NkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC00OTgzLDYgKzUwMTEsNyBAQAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0E0
QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAwOCw2ICs1MDM3LDcg
QEAKIAkJCQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyogT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyog
UGFyc2VyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RkM4QzMxNEUxQjVGRTAwRDUy
QUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTUwMzcsNiArNTA2Nyw3IEBACiAJCQkJMTQyODA4NDExMDdFQzA5MzAwMTNFN0Iy
IC8qIFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY0MkM1MTAxNTFDMDZB
OTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
NzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODQyMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0
Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdC
MiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MDUzLDYgKzUwODQsNyBA
QAogCQkJCTBGNTU0MUIxMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUVBRjExNzk4N0FCNjAwMjk5REIyIC8qIFN0
YWNrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwMDg3NDExN0NCRThFQjAwQzNF
NjQzIC8qIE1hcEluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MzBCNjEzMTI1MDA2
OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQ2OURFQjEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ09iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlUb2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmgKaW5k
ZXggYmM4YTEyYzVhYTczOTUyNWQ5OTY1MjkzMmQxYzllMzNjNGFhOGFjZi4uMzVlMGU2N2U2ZTkz
Y2YyNDZiYWEwZTY4ZWRiOTM3NWNmY2QzMzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29weVRva2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVRva2VuLmgKQEAgLTMwLDcgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQ29w
eVRva2VuIHsKICAgICBCdXR0ZXJmbHlDb3B5VG9rZW4sCi0gICAgVHlwZWRBcnJheVZlY3RvckNv
cHlUb2tlbgorICAgIFR5cGVkQXJyYXlWZWN0b3JDb3B5VG9rZW4sCisgICAgTWFwQmFja2luZ1N0
b3JlQ29weVRva2VuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDZmZjk4NzdhMzk3
OWFhNDBkOTNlMmM1MWI0MDM0YmM5Zjk2YzkxZjIuLjk0N2Y2ODI2NDc2OTJhMTc2ZDg2OTM1NDA0
NzdiYmRlMjQ1NmY0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTM2LDcgKzEzNiwxMiBAQAogICAgIG1hY3JvKHZhbHVl
KSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3Jv
KHdyaXRhYmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaGFzKSBcCisgICAg
bWFjcm8oZm9yRWFjaCkgXAorICAgIG1hY3JvKGNsZWFyKSBcCisgICAgbWFjcm8oc2l6ZSkgXAor
ICAgIG1hY3JvKE1hcCkKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZ
V09SRChtYWNybykgXAogICAgIG1hY3JvKG51bGwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMmJkZmRjYzVhODZiYzdhNzI2
YWIyZWQzZDk2NzU1ODIyN2I4NjQyLi4xNmYxZTllNmZiZGZlNjc0ZjUwNWNkNzY5MDZhNjZkNTY3
MDlmMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC03OSw2ICs3OSw5IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNp
bmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUg
Ik1hcENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiTWFwSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJN
YXBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJNYXRoT2JqZWN0LmgiCiAjaW5jbHVkZSAiTmFtZUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCkBAIC0zMTEsNyArMzE0LDEx
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1f
cHJvbWlzZVJlc29sdmVyU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VS
ZXNvbHZlcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fcHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUuc2V0
KGV4ZWMtPnZtKCksIHRoaXMsIEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcHJvbWlz
ZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNl
V3JhcHBlckNhbGxiYWNrOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSkpOwotICAgIAorCisgICAgbV9tYXBEYXRhU3RydWN0dXJlLnNl
dChleGVjLT52bSgpLCB0aGlzLCBNYXBEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwg
dGhpcywganNOdWxsKCkpKTsKKyAgICBtX21hcFByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgTWFwUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgTWFwUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Cisg
ICAgbV9tYXBTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIE1hcEluc3RhbmNlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9tYXBQcm90b3R5cGUuZ2V0KCkpKTsKKwog
ICAgIC8vIENvbnN0cnVjdG9ycwogCiAgICAgSlNDZWxsKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwpAQCAtMzIzLDYgKzMzMCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIEpTQ2VsbCogZGF0ZUNv
bnN0cnVjdG9yID0gRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgRGF0ZUNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBwcm9taXNl
Q29uc3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpT
UHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSk7CiAgICAg
SlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVyQ29u
c3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0NlbGwqIG1h
cENvbnN0cnVjdG9yID0gTWFwQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX21hcFByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBtX3JlZ0V4cENvbnN0
cnVjdG9yLnNldChleGVjLT52bSgpLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4
ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhwUHJvdG90eXBlLmdldCgp
KSk7CiAKQEAgLTM0OCw2ICszNTYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICBtX2Vycm9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG1f
ZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIG1fcHJvbWlzZVByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBt
X3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBwcm9taXNlUmVzb2x2
ZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fbWFwUHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBvYmpl
Y3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25Db25z
dHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzY2LDYgKzM3NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5VUklFcnJvciwgbV9VUklFcnJv
ckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlByb21pc2UsIHByb21pc2VD
b25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlUmVzb2x2ZXIsIHByb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLk1hcCwgbWFwQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKIAogICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT52bSgpLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmV2YWwuc3RyaW5nKCksIGdsb2JhbEZ1bmNFdmFsKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwsIG1fZXZhbEZ1
bmN0aW9uLmdldCgpLCBEb250RW51bSk7CkBAIC02MjEsNiArNjMxLDkgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlclN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNr
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3Jh
cHBlckNhbGxiYWNrU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9tYXBQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERh
dGFTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFN0cnVj
dHVyZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclBy
b3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlCdWZmZXJT
dHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggZjJkNjczODgzMzUxYTZiODhkMjNhYTRkNmRmOGE2NDVlNDg5NWY1NS4uNGI4
N2UxMDVhZTY3ODgyYzNlYzg5ODI5OWViOGNjYWNjMmU2ZmFhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw3IEBAIGNs
YXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKIGNsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
OwogY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIE1h
cFByb3RvdHlwZTsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFt
Q29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CkBAIC0xNTAsNiArMTUxLDcgQEAg
cHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3Rv
dHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUHJvdG90eXBlPiBtX3Byb21pc2VQcm90
b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlPiBtX3By
b21pc2VSZXNvbHZlclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8TWFwUHJvdG90eXBlPiBt
X21hcFByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3Bl
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2
YXRpb25TdHJ1Y3R1cmU7CkBAIC0xODgsNiArMTkwLDkgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZTsKIAor
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwRGF0YVN0cnVjdHVyZTsKKyAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21hcFN0cnVjdHVyZTsKKyAgICAKICAgICBXcml0ZUJhcnJp
ZXI8SlNBcnJheUJ1ZmZlclByb3RvdHlwZT4gbV9hcnJheUJ1ZmZlclByb3RvdHlwZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FycmF5QnVmZmVyU3RydWN0dXJlOwogICAgIApAQCAt
Mzc4LDYgKzM4Myw4IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiBwcml2YXRlTmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZU5hbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtYXBEYXRhU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXBEYXRhU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY4NTQ4NjQ2MDgyYzkzNDM0ZTExNzlm
MmEwODlmMWZjMTk3MDAzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiTWFwSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJNYXBQcm90b3R5cGUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBNYXBDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKE1hcENvbnN0cnVjdG9yKSB9OworCit2b2lkIE1hcENvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE1hcFByb3RvdHlwZSogbWFwUHJvdG90eXBlKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIG1hcFByb3RvdHlwZS0+Y2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgbWFwUHJvdG90eXBlLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIo
MCksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5j
YWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKE1hcEluc3RhbmNlOjpjcmVhdGUoZXhlYywgbWFwU3RydWN0dXJlKSk7Cit9
CisKK0NvbnN0cnVjdFR5cGUgTWFwQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdE1hcDsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhv
c3Q7Cit9CisKK0NhbGxUeXBlIE1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29u
c3RydWN0TWFwOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NWVj
YjNlNDQ1MGIyZjBiMzkwOGQ2NWFmNTAzNjMxMGM5NDdjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE1hcENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgTWFwQ29uc3RydWN0b3JfaAorCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFwUHJv
dG90eXBlOworCitjbGFzcyBNYXBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0
YXRpYyBNYXBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE1hcFByb3RvdHlwZSogZnVu
Y3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIE1hcENvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
Y29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBNYXBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBNYXBQ
cm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcENv
bnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE3YTQ0YzY1ZmM5YmNlYTI5MmU0NTAyNjBmNTI2ZmFhZTc3Y2FhY2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcApA
QCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJNYXBEYXRhLmgiCisKKyNp
bmNsdWRlICJDb3BpZWRBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gTWFwRGF0YTo6c19pbmZvID0geyAiTWFwRGF0YSIsIDAsIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoTWFwRGF0YSkgfTsKKworZW51bSB7IE1pbmltdW1NYXBTaXplID0g
MTYgfTsKKworTWFwRGF0YTo6TWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPm1hcERhdGFTdHJ1Y3R1cmUoKSkK
KyAgICAsIG1fY2FwYWNpdHkoMCkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9kZWxldGVkQ291
bnQoMCkKKyAgICAsIG1fZW50cmllcygwKQoreworfQorCitNYXBEYXRhOjppdGVyYXRvciBNYXBE
YXRhOjpmaW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBLZXlUeXBlIGtleSkKK3sKKyAgICBzaXpl
X3QgbG9jYXRpb24gPSAwOworICAgIGlmIChrZXkudmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAg
ICBTdHJpbmcgc3RyaW5nOworICAgICAgICBpZiAoIWFzU3RyaW5nKGtleS52YWx1ZSktPmdldFN0
cmluZyhjYWxsRnJhbWUsIHN0cmluZykpCisgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsK
KyAgICAgICAgYXV0byBpdGVyID0gbV9zdHJpbmdLZXllZFRhYmxlLmZpbmQoc3RyaW5nLmltcGwo
KSk7CisgICAgICAgIGlmIChpdGVyID09IG1fc3RyaW5nS2V5ZWRUYWJsZS5lbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBpdGVyYXRvcigpOworICAgICAgICBsb2NhdGlvbiA9IGl0ZXItPnZhbHVl
OworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fdmFsdWVLZXllZFRhYmxlLmZp
bmQoa2V5KTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV92YWx1ZUtleWVkVGFibGUuZW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKKyAgICAgICAgbG9jYXRpb24gPSBpdGVyLT52
YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIGl0ZXJhdG9yKCZtX2VudHJpZXNbbG9jYXRpb25dKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5PiBNYXBEYXRhOjppdGVy
YXRvciBNYXBEYXRhOjphZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE1hcCYgbWFwLCBLZXkga2V5
LCBLZXlUeXBlIGtleVZhbHVlKQoreworICAgIHR5cGVuYW1lIE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1hcC5hZGQoa2V5LCBtX3NpemUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgIHJldHVybiBpdGVyYXRvcigmbV9lbnRyaWVzW3Jlc3VsdC5pdGVyYXRvci0+dmFsdWVd
KTsKKyAgICBpZiAoIWVuc3VyZVNwYWNlRm9yQXBwZW5kKGNhbGxGcmFtZSkpIHsKKyAgICAgICAg
bWFwLnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOworICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsK
KyAgICB9CisgICAgQVNTRVJUKG1hcC5jb250YWlucyhrZXkpKTsKKyAgICBFbnRyeSogZW50cnkg
PSAmbV9lbnRyaWVzW21fc2l6ZSsrXTsKKyAgICBuZXcgKGVudHJ5KSBFbnRyeShjYWxsRnJhbWUt
PnZtKCksIHRoaXMsIGtleVZhbHVlLnZhbHVlKTsKKyAgICByZXR1cm4gaXRlcmF0b3IoZW50cnkp
OworfQorCit2b2lkIE1hcERhdGE6OnNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgS2V5VHlwZSBr
ZXksIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaXRlcmF0b3IgbG9jYXRpb24gPSBhZGQoY2FsbEZy
YW1lLCBrZXkpOworICAgIGlmICghbG9jYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBsb2Nh
dGlvbi52YWx1ZSgpLnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHZhbHVlKTsKK30KKyAgICAK
K01hcERhdGE6Oml0ZXJhdG9yIE1hcERhdGE6OmFkZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgS2V5
VHlwZSBrZXkpCit7CisgICAgaWYgKCFrZXkudmFsdWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0
dXJuIGFkZChjYWxsRnJhbWUsIG1fdmFsdWVLZXllZFRhYmxlLCBrZXksIGtleSk7CisKKyAgICBT
dHJpbmcgc3RyaW5nOworICAgIGlmICghYXNTdHJpbmcoa2V5LnZhbHVlKS0+Z2V0U3RyaW5nKGNh
bGxGcmFtZSwgc3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7CisgICAgcmV0dXJu
IGFkZChjYWxsRnJhbWUsIG1fc3RyaW5nS2V5ZWRUYWJsZSwgc3RyaW5nLmltcGwoKSwga2V5KTsK
K30KKworSlNWYWx1ZSBNYXBEYXRhOjpnZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEtleVR5cGUg
a2V5KQoreworICAgIGlmIChpdGVyYXRvciBlbnRyeSA9IGZpbmQoY2FsbEZyYW1lLCBrZXkpKQor
ICAgICAgICByZXR1cm4gZW50cnkudmFsdWUoKS5nZXQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZSgp
OworfQorCitib29sIE1hcERhdGE6OnJlbW92ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgS2V5VHlw
ZSBrZXkpCit7CisgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsKKyAgICBpZiAoa2V5LnZhbHVlLmlz
U3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgaWYgKCFhc1N0cmlu
ZyhrZXkudmFsdWUpLT5nZXRTdHJpbmcoY2FsbEZyYW1lLCBzdHJpbmcpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0cmluZ0tleWVkVGFibGUuZmlu
ZChzdHJpbmcuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9zdHJpbmdLZXllZFRhYmxl
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBsb2NhdGlvbiA9IGl0
ZXItPnZhbHVlOworICAgICAgICBtX3N0cmluZ0tleWVkVGFibGUucmVtb3ZlKGl0ZXIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fdmFsdWVLZXllZFRhYmxlLmZpbmQoa2V5
KTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV92YWx1ZUtleWVkVGFibGUuZW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGxvY2F0aW9uID0gaXRlci0+dmFsdWU7CisgICAg
ICAgIG1fdmFsdWVLZXllZFRhYmxlLnJlbW92ZShpdGVyKTsKKyAgICB9CisgICAgbV9lbnRyaWVz
W2xvY2F0aW9uXS5jbGVhcigpOworICAgIG1fZGVsZXRlZENvdW50Kys7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlIDxNYXBEYXRhOjpDb3B5TW9kZSBtb2RlPiB2b2lkIE1hcERhdGE6
OmNvcHlBbmRQYWNrSWZQb3NzaWJsZShFbnRyeSogZGVzdGluYXRpb24sIHNpemVfdCBuZXdTaXpl
KQoreworICAgIHNpemVfdCBuZXdFbmQgPSAwOworICAgIGlmIChtb2RlID09IENhblBhY2spIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7IGkrKykgeworICAgICAgICAg
ICAgRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW2ldOworICAgICAgICAgICAgaWYgKCFlbnRyeS5r
ZXkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdF
bmQgPCBuZXdTaXplKTsKKyAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG5ld0VuZCwg
JmVudHJ5LCBzaXplb2YoRW50cnkpKTsKKyAgICAgICAgICAgIG5ld0VuZCsrOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVCgobV9zaXplIC0gbmV3RW5kKSA9PSBtX2RlbGV0ZWRDb3VudCk7Cisg
ICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
bmV3U2l6ZSA+PSBtX2NhcGFjaXR5KTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBtX2Vu
dHJpZXMsIHNpemVvZihFbnRyeSkgKiBtX3NpemUpOworICAgICAgICBuZXdFbmQgPSBtX3NpemU7
CisgICAgfQorICAgIG1fY2FwYWNpdHkgPSBuZXdTaXplOworICAgIG1fc2l6ZSA9IG5ld0VuZDsK
KyAgICBtX2VudHJpZXMgPSBkZXN0aW5hdGlvbjsKKworfQorCitDaGVja2VkQm9vbGVhbiBNYXBE
YXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBp
ZiAobV9jYXBhY2l0eSA+IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBzaXpl
X3QgcmVxdWlyZWRTaXplID0gc3RkOjptYXgobV9jYXBhY2l0eSArIChtX2NhcGFjaXR5IC8gNCkg
KyAxLCBzdGF0aWNfY2FzdDxzaXplX3Q+KE1pbmltdW1NYXBTaXplKSk7CisgICAgdm9pZCogbmV3
U3RvcmFnZSA9IDA7CisgICAgaWYgKCFjYWxsRnJhbWUtPmhlYXAoKS0+dHJ5QWxsb2NhdGVTdG9y
YWdlKHRoaXMsIHJlcXVpcmVkU2l6ZSAqIHNpemVvZihFbnRyeSksICZuZXdTdG9yYWdlKSkgewor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBEZWZlckdDIGRlZmVyKCpjYWxsRnJhbWUtPmhlYXAoKSk7Cisg
ICAgRW50cnkqIG5ld0VudHJpZXMgPSBzdGF0aWNfY2FzdDxFbnRyeSo+KG5ld1N0b3JhZ2UpOwor
ICAgIGlmIChjYW5QYWNrKCkpCisgICAgICAgIGNvcHlBbmRQYWNrSWZQb3NzaWJsZTxDYW5QYWNr
PihuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgIGVsc2UKKyAgICAgICAgY29weUFuZFBh
Y2tJZlBvc3NpYmxlPENhbm5vdFBhY2s+KG5ld0VudHJpZXMsIHJlcXVpcmVkU2l6ZSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWFwRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2Vs
bCwgdmlzaXRvcik7CisgICAgTWFwRGF0YSogdGhpc09iamVjdCA9IGpzQ2FzdDxNYXBEYXRhKj4o
Y2VsbCk7CisgICAgRW50cnkqIGVudHJpZXMgPSB0aGlzT2JqZWN0LT5tX2VudHJpZXM7CisgICAg
aWYgKCFlbnRyaWVzKQorICAgICAgICByZXR1cm47CisgICAgc2l6ZV90IHNpemUgPSB0aGlzT2Jq
ZWN0LT5tX3NpemU7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fZGVsZXRlZENvdW50KSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAo
IWVudHJpZXNbaV0ua2V5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmZW50cmllc1tpXS5rZXlGb3JHQygpKTsKKyAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZlbnRyaWVzW2ldLnZhbHVlKCkpOworICAgICAgICB9CisgICAgfSBlbHNl
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKCZlbnRyaWVzWzBdLmtleUZvckdDKCksIHNp
emUgKiAoc2l6ZW9mKEVudHJ5KSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSk7CisK
KyAgICB2aXNpdG9yLmNvcHlMYXRlcih0aGlzT2JqZWN0LCBNYXBCYWNraW5nU3RvcmVDb3B5VG9r
ZW4sIGVudHJpZXMsIHNpemUpOworfQorCit2b2lkIE1hcERhdGE6OmNvcHlCYWNraW5nU3RvcmUo
SlNDZWxsKiBjZWxsLCBDb3B5VmlzaXRvciYgdmlzaXRvciwgQ29weVRva2VuIHRva2VuKQorewor
ICAgIE1hcERhdGEqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TWFwRGF0YSo+KGNlbGwpOworICAgIGlm
ICh0b2tlbiA9PSBNYXBCYWNraW5nU3RvcmVDb3B5VG9rZW4KKyAgICAgICAgJiYgdmlzaXRvci5j
aGVja0lmU2hvdWxkQ29weSh0aGlzT2JqZWN0LT5tX2VudHJpZXMpKSB7CisgICAgICAgIHNpemVf
dCByZXF1aXJlZFNpemUgPSB0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6ZW9mKEVudHJ5KTsK
KyAgICAgICAgdm9pZCogb2xkVmVjdG9yID0gdGhpc09iamVjdC0+bV9lbnRyaWVzOworICAgICAg
ICB2b2lkKiBuZXdWZWN0b3IgPSB2aXNpdG9yLmFsbG9jYXRlTmV3U3BhY2UodGhpc09iamVjdC0+
bV9jYXBhY2l0eSAqIHNpemVvZihFbnRyeSkpOworICAgICAgICBFbnRyeSogbmV3RW50cmllcyA9
IHN0YXRpY19jYXN0PEVudHJ5Kj4obmV3VmVjdG9yKTsKKyAgICAgICAgaWYgKHRoaXNPYmplY3Qt
PmNhblBhY2soKSkKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvcHlBbmRQYWNrSWZQb3NzaWJs
ZTxDYW5QYWNrPihuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5jb3B5QW5kUGFja0lmUG9zc2libGU8Q2Fubm90UGFjaz4obmV3
RW50cmllcywgcmVxdWlyZWRTaXplKTsKKyAgICAgICAgdmlzaXRvci5kaWRDb3B5KG9sZFZlY3Rv
ciwgdGhpc09iamVjdC0+bV9jYXBhY2l0eSAqIHNpemVvZihFbnRyeSkpOworICAgIH0KKyAgICBC
YXNlOjpjb3B5QmFja2luZ1N0b3JlKGNlbGwsIHZpc2l0b3IsIHRva2VuKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1YzdkMmNiZGI3
ZDZkOGQ1ZWMzMTBlNWYxN2MwNjdlZjk1MDQ0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTAsMCArMSwxODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE1hcERhdGFfaAorI2RlZmluZSBNYXBEYXRhX2gKKworI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIE1hcERhdGEgOiBwdWJsaWMgSlNDZWxs
IHsKK3ByaXZhdGU6CisgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgRW50cnkoVk0mIHZtLCBN
YXBEYXRhKiBvd25lciwgSlNWYWx1ZSBrZXkpCisgICAgICAgICAgICA6IG1fa2V5KHZtLCBvd25l
ciwga2V5KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBjbGVhcigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fa2V5LmNsZWFyKCk7CisgICAgICAgICAgICBtX3ZhbHVlLmNs
ZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiYga2V5Rm9yR0MoKSB7IHJldHVybiBtX2tleTsgfQorICAgICAgICBjb25zdCBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CisgICAgICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgICAgIAor
ICAgIHByaXZhdGU6CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2tleTsKKyAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fdmFsdWU7CisgICAgfTsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0cnVjdCBpdGVyYXRvciB7CisgICAgICAgIGV4cGxp
Y2l0IGl0ZXJhdG9yKEVudHJ5KiBlbnRyeSkKKyAgICAgICAgICAgIDogbV9lbnRyeShlbnRyeSkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaXRlcmF0b3IoKQorICAgICAgICAgICAg
OiBtX2VudHJ5KDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFdyaXRl
QmFycmllcjxVbmtub3duPiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeS0+a2V5KCk7IH0K
KyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fZW50cnkt
PnZhbHVlKCk7IH0KKworICAgICAgICBib29sIG9wZXJhdG9yICEoKSBjb25zdCB7IHJldHVybiBp
c0VtcHR5KCk7IH0KKyAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICFpc0VtcHR5KCk7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fZW50cnk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEVudHJ5KiBtX2VudHJ5OworICAg
IH07CisKKyAgICBzdHJ1Y3QgS2V5VHlwZSB7CisgICAgICAgIEtleVR5cGUoKSB7fQorICAgICAg
ICBLZXlUeXBlKEpTVmFsdWUgdikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHYuaXNOdW1i
ZXIoKSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzRG91YmxlTnVtYmVyKHYuYXNOdW1iZXIo
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFsdWUgPSB2OworICAgICAg
ICB9CisgICAgICAgIHN0YXRpYyBLZXlUeXBlIG5hbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEtleVR5cGUgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0ganNOYU4oKTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRv
cj09KEtleVR5cGUgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShvdGhlci52YWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICB9OworICAgIHN0YXRpYyBNYXBE
YXRhKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsK
KyAgICAgICAgTWFwRGF0YSogbWFwRGF0YSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1h
cERhdGE+KHZtLmhlYXApKSBNYXBEYXRhKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICBtYXBE
YXRhLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBtYXBEYXRhOworICAgIH0K
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwgS2V5VHlwZSBrZXksIEpTVmFsdWUgdmFsdWUpOworICAg
IEpTVmFsdWUgZ2V0KENhbGxGcmFtZSosIEtleVR5cGUga2V5KTsKKyAgICBib29sIHJlbW92ZShD
YWxsRnJhbWUqLCBLZXlUeXBlIGtleSk7CisgICAgYm9vbCBjb250YWlucyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgS2V5VHlwZSBrZXkpIHsgcmV0dXJuICFmaW5kKGNhbGxGcmFtZSwga2V5KS5pc0Vt
cHR5KCk7IH0KKyAgICBzaXplX3Qgc2l6ZShDYWxsRnJhbWUqKSBjb25zdCB7IHJldHVybiBtX3Np
emUgLSBtX2RlbGV0ZWRDb3VudDsgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAg
ICBtX2NhcGFjaXR5ID0gMDsKKyAgICAgICAgbV9zaXplID0gMDsKKyAgICAgICAgbV9kZWxldGVk
Q291bnQgPSAwOworICAgICAgICBtX2VudHJpZXMgPSAwOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJpdmF0ZToKKyAgICBNYXBEYXRhKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAg
ICBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwgQ29w
eVRva2VuKTsKKyAgICBpdGVyYXRvciBmaW5kKENhbGxGcmFtZSosIEtleVR5cGUga2V5KTsKKyAg
ICBDaGVja2VkQm9vbGVhbiBlbnN1cmVTcGFjZUZvckFwcGVuZChDYWxsRnJhbWUqKTsKKyAgICBl
bnVtIENvcHlNb2RlIHtDYW5QYWNrLCBDYW5ub3RQYWNrfTsKKyAgICB0ZW1wbGF0ZSA8Q29weU1v
ZGU+IHZvaWQgY29weUFuZFBhY2tJZlBvc3NpYmxlKEVudHJ5KiBkZXN0aW5hdGlvbiwgc2l6ZV90
IG5ld1NpemUpOworICAgIGJvb2wgY2FuUGFjaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBzdHJ1Y3QgSlNWYWx1ZUhhc2ggeworICAgICAgICBzdGF0aWMgaW50NjRfdCBoYXNoKEtleVR5
cGUga2V5KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIWtleS52YWx1ZS5pc1N0cmlu
ZygpKTsKKyAgICAgICAgICAgIEFTU0VSVCgha2V5LnZhbHVlLmlzSW50MzIoKSk7CisgICAgICAg
ICAgICByZXR1cm4gV1RGOjppbnRIYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90PihKU1ZhbHVlOjpl
bmNvZGUoa2V5LnZhbHVlKSkpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KEtleVR5cGUgYSwgS2V5VHlwZSBiKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoYS52
YWx1ZS5pc0VtcHR5KCkgfHwgIWEudmFsdWUuaXNTdHJpbmcoKSk7CisgICAgICAgICAgICBBU1NF
UlQoYS52YWx1ZS5pc0VtcHR5KCkgfHwgIWEudmFsdWUuaXNJbnQzMigpKTsKKyAgICAgICAgICAg
IEFTU0VSVChiLnZhbHVlLmlzRW1wdHkoKSB8fCAhYi52YWx1ZS5pc1N0cmluZygpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChiLnZhbHVlLmlzRW1wdHkoKSB8fCAhYi52YWx1ZS5pc0ludDMyKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhLnZhbHVlKSA9PSBKU1ZhbHVlOjpl
bmNvZGUoYi52YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgfTsKKyAgICBzdHJ1Y3Qg
SlNWYWx1ZVRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleVR5cGU+IHsKKyAg
ICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEtleVR5cGUmIHNsb3QpIHsg
c2xvdCA9IEtleVR5cGU6Om5hbigpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKEtleVR5cGUga2V5KSB7IHJldHVybiBKU1ZhbHVlSGFzaDo6ZXF1YWwoa2V5LnZhbHVlLCBL
ZXlUeXBlOjpuYW4oKSk7IH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBLZXlUeXBlIGVtcHR5
VmFsdWUoKSB7IHJldHVybiBLZXlUeXBlKCk7IH0KKyAgICB9OworCisgICAgaXRlcmF0b3IgYWRk
KENhbGxGcmFtZSosIEtleVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVu
YW1lIEtleT4gaXRlcmF0b3IgYWRkKENhbGxGcmFtZSosIE1hcCYsIEtleSwgS2V5VHlwZSk7Cisg
ICAgCisgICAgSGFzaE1hcDxLZXlUeXBlLCBzaXplX3QsIEpTVmFsdWVIYXNoLCBKU1ZhbHVlVHJh
aXRzPiBtX3ZhbHVlS2V5ZWRUYWJsZTsKKyAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBzaXplX3Q+
IG1fc3RyaW5nS2V5ZWRUYWJsZTsKKyAgICBzaXplX3QgbV9jYXBhY2l0eTsKKyAgICBzaXplX3Qg
bV9zaXplOworICAgIHNpemVfdCBtX2RlbGV0ZWRDb3VudDsKKyAgICBFbnRyeSogbV9lbnRyaWVz
OworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsKKworfQorCisjZW5kaWYg
LyogIWRlZmluZWQoTWFwRGF0YV9oKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwSW5zdGFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYzA1ZWJlZTgyNTg0MDRjNzMzMWYxZmZl
NTRmMzc0M2ZhYmM1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBJbnN0YW5jZS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJNYXBJbnN0YW5jZS5oIgor
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAK
K2NvbnN0IENsYXNzSW5mbyBNYXBJbnN0YW5jZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBJbnN0YW5jZSkgfTsKKwordm9pZCBN
YXBJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCx2aXNpdG9yKTsKKyAgICBNYXBJ
bnN0YW5jZSogdGhpc09iamVjdCA9IGpzQ2FzdDxNYXBJbnN0YW5jZSo+KGNlbGwpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGEpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjk5ZWFiOGRj
ZjIyYWI3YzFiMDhkZjE2NDI2ZTc2MmNkNjJiZTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXBJ
bnN0YW5jZV9oCisjZGVmaW5lIE1hcEluc3RhbmNlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiTWFwRGF0YS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFwSW5z
dGFuY2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTWFwSW5z
dGFuY2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgTWFwSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFw
SW5zdGFuY2U+KHZtLmhlYXApKSBNYXBJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsK
KyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHN0YXRpYyBNYXBJbnN0YW5j
ZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSk7CisgICAgfQorCisg
ICAgTWFwRGF0YSogbWFwRGF0YSgpIHsgcmV0dXJuIG1fbWFwRGF0YS5nZXQoKTsgfQorCitwcml2
YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgTWFwSW5zdGFu
Y2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgICAgICBtX21hcERhdGEuc2V0KHZtLCB0aGlzLCBNYXBEYXRhOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxNYXBE
YXRhPiBtX21hcERhdGE7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNYXBJbnN0YW5j
ZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjNlMTc5YmIxNjEzMjliNWM4M2VkZjk1ZmNhZDU5MDY2ODQ3ZTg0ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBQcm90b3R5
cGUuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNs
dWRlICJNYXBJbnN0YW5jZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShNYXBQcm90b3R5cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRm9yRWFj
aChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
b3RvRnVuY0dldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKKworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShFeGVjU3RhdGUqKTsKKyAg
ICAKK3ZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKKworICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIsIG1hcFByb3RvRnVuY0Ns
ZWFyLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5kZWxldGVLZXl3b3JkLCBtYXBQcm90b0Z1bmNEZWxldGUsIERvbnRFbnVtLCAxKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmZvckVhY2gsIG1hcFByb3Rv
RnVuY0ZvckVhY2gsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIG1hcFByb3RvRnVuY0hhcywg
RG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
c2V0LCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKworICAgIEdldHRlclNldHRlciog
YWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDAsIHZtLnBy
b3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOworICAgIGFjY2Vz
c29yLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZnVuY3Rpb24pOworICAgIHB1dERpcmVjdEFjY2Vz
c29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIGFjY2Vzc29yLCBEb250RW51bSB8IEFj
Y2Vzc29yKTsKK30KKworc3RhdGljIE1hcERhdGEqIGdldE1hcERhdGEoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJy
b3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IE1hcEluc3RhbmNlKiBtYXAgPSBqc0R5bmFtaWNDYXN0PE1hcEluc3RhbmNlKj4odGhpc1ZhbHVl
KTsKKyAgICBpZiAoIW1hcCkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFT
Q0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QiKSk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gbWFwLT5tYXBEYXRhKCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jQ2xlYXIoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgZGF0YS0+Y2xlYXIoKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihkYXRhLT5yZW1vdmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0ZvckVhY2goQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNHZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0
YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBkYXRhLT5nZXQoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0ganNV
bmRlZmluZWQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jSGFzKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGRhdGEtPmNvbnRhaW5zKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgZGF0YS0+c2V0
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZGF0YS0+c2l6ZShjYWxsRnJhbWUpKSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZm
MGFiNmE1NjM5YTcxY2NhMjYwZTg0ZThjYThiZmExZDRjMmM5YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE1hcFByb3RvdHlwZV9oCisjZGVmaW5lIE1hcFByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFwUHJvdG90eXBlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworCisgICAgc3RhdGljIE1hcFByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBNYXBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPE1hcFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE1hcFByb3RvdHlwZShl
eGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIE1hcFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZXhlYy0+dm0oKSwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoTWFwUHJvdG90eXBl
X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOWJiMGQ0Y2JiMjkyNTVh
ZmE5MGFjNzY5Y2IwZjFhZjMxYjVhMzc3Yi4uNmFhZjI3MzUwMTQzODRmYTQxYTA4N2E0M2I2ZmQ4
NWMzMDY3MjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNTMsNiAr
NTMsNyBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNp
bmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMu
aCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209940</attachid>
            <date>2013-08-28 18:24:02 -0700</date>
            <delta_ts>2013-08-28 19:23:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120333-20130828182734.patch</filename>
            <type>text/plain</type>
            <size>64406</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDg0NWY3OTYxZTgzYmFlMThiZDViYzZkMWM2NjQwNGNiMGU2NGFlLi5mOGM5MGNjMzAxNTc2NGYz
ZmE3Zjc3ZjVlNDliZGUzMzk4N2I5Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOC0yOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBFUzYg
TWFwIHR5cGUgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmZp
bmQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRh
OjpnZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcERh
dGE6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6TWFwRGF0YTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6TWFwRGF0YTo6TWFwRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9NYXBJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9NYXBJbnN0YW5jZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok1hcEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6bWFwRGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcEluc3RhbmNlOjpNYXBJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6Ok1hcEluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0ZvckVhY2gpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6TWFwUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvbW96aWxsYS9hY3R1YWwuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBKU0Mgd2l0aCBGVEwgSklUIGVu
YWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmI2ZWEzZTg3YTNjOTFjOWVi
NTk2MGUwMjQzNjBjZDE1Nzg4ZmFkNS4uZmFjZWVkOTdjZTEwMTVmNzExMzVkYjk2ZTkxMTgzNzc1
ZWZlMTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNCw2ICs4MDQsMTIg
QEAKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDEx
MUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtl
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzAwODczQTE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5o
ICovOyB9OworCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovOyB9OworCQlBNzAwODczRTE3Q0JF
OEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90
eXBlLmggKi87IH07CisJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0YW5jZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODcz
RjE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuY3BwICovOyB9OworCQlBNzAwODc0MjE3
Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0
YW5jZS5oICovOyB9OwogCQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0
NDdFOTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwNDQ3RUQxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAg
Ki87IH07CiAJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDQ3RUMxN0EwQkQ3
MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg2Myw2ICs4NjksOCBAQAogCQlBNzdGMTgyNTE2NDE5MkM3
MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRB
MjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNU
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NzExQjk4QjhEMDA2
NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3ODUwN0Q2MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUwN0Q0
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTc4NTA3RDcxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi87IH07
CiAJCUE3ODg1M0Y5MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y3
MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJ
QTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2
MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc2QzE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCAqLzsgfTsKQEAgLTE5NzUsNiArMTk4MywxMiBAQAogCQlBMTcxMkIzQTExQzdC
MjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTcwMDg3M0MxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcEluc3RhbmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcEluc3Rh
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0N0U5MTdBMEJENDYwMEY1
ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3BlcmFuZHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0
N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEdW1wQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAzMSw2ICsyMDQ1LDggQEAKIAkJQTc3RjE4MUYxNjQwODhCMjAw
NjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdGMTgy
MDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdG
MTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFy
c2VyTW9kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDQxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3ODUwN0Q1
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4ODUzRjcx
Nzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwOyBw
YXRoID0gZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzc3LDkgKzIzOTMsOSBAQAogCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8s
CiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQkwRkY5MjJDRjE0
RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAotCQkJCTkzMkY1
QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJ
MTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNF
OEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAgKi8sCkBAIC0zMTc5LDYgKzMxOTUsOCBAQAogCQkJCUE3RTJFQTY5MEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8sCiAJCQkJRjY5MkE4NjgwMjU1NTk3
RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCiAJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3
IC8qIExvb2t1cC5oICovLAorCQkJCUE3ODUwN0Q0MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRh
LmNwcCAqLywKKwkJCQlBNzg1MDdENTE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oICovLAog
CQkJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovLAogCQkJCUY2
OTJBODZBMDI1NTU5N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg2
QjAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5oICovLApAQCAtMzI5NSw2ICszMzEzLDEy
IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3
NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAorCQkJCUE3MDA4NzM3MTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTcwMDg3MzgxN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTcwMDg3M0IxN0NCRThE
MzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTcwMDg3M0MxN0NCRThEMzAw
QzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovLAorCQkJCUE3MDA4NzNGMTdDQkU4RUIwMEMzRTY0
MyAvKiBNYXBJbnN0YW5jZS5jcHAgKi8sCisJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzg0NiwxMCArMzg3MCwxMiBAQAogCQkJCUE3M0UxMzMxMTc5
NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVz
aXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODczRTE3Q0JFOEQzMDBD
M0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlGRiAvKiBERkdEaXNh
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUQzMTU0RkI0RjAwMDk4M0U3MiAv
KiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODc0MjE3Q0JFOEVCMDBD
M0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENC
QjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMzk4MSw2ICs0MDA3LDcgQEAKIAkJCQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEw
OEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FF
MTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21p
bmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FF
M0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQx
NzEsNiArNDE5OCw3IEBACiAJCQkJODYwMTYxRTQwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAg
LyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU2MEYz
QTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTc4NTA3RDcxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MkQ2RjA5MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJs
b2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTQzMDAsMTIgKzQzMjgsMTIgQEAKIAkJCQlCQ0NG
MEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8q
IFRvTmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNE
MDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFE
MTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU3
MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2
ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5
IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA2MTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA4MTdC
NkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC00OTgzLDYgKzUwMTEsNyBAQAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0E0
QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAwOCw2ICs1MDM3LDcg
QEAKIAkJCQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyogT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyog
UGFyc2VyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RkM4QzMxNEUxQjVGRTAwRDUy
QUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTUwMzcsNiArNTA2Nyw3IEBACiAJCQkJMTQyODA4NDExMDdFQzA5MzAwMTNFN0Iy
IC8qIFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY0MkM1MTAxNTFDMDZB
OTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
NzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODQyMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0
Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdC
MiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MDUzLDYgKzUwODQsNyBA
QAogCQkJCTBGNTU0MUIxMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUVBRjExNzk4N0FCNjAwMjk5REIyIC8qIFN0
YWNrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwMDg3NDExN0NCRThFQjAwQzNF
NjQzIC8qIE1hcEluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MzBCNjEzMTI1MDA2
OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQ2OURFQjEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ09iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlUb2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmgKaW5k
ZXggYmM4YTEyYzVhYTczOTUyNWQ5OTY1MjkzMmQxYzllMzNjNGFhOGFjZi4uMzVlMGU2N2U2ZTkz
Y2YyNDZiYWEwZTY4ZWRiOTM3NWNmY2QzMzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29weVRva2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVRva2VuLmgKQEAgLTMwLDcgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQ29w
eVRva2VuIHsKICAgICBCdXR0ZXJmbHlDb3B5VG9rZW4sCi0gICAgVHlwZWRBcnJheVZlY3RvckNv
cHlUb2tlbgorICAgIFR5cGVkQXJyYXlWZWN0b3JDb3B5VG9rZW4sCisgICAgTWFwQmFja2luZ1N0
b3JlQ29weVRva2VuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDZmZjk4NzdhMzk3
OWFhNDBkOTNlMmM1MWI0MDM0YmM5Zjk2YzkxZjIuLjk0N2Y2ODI2NDc2OTJhMTc2ZDg2OTM1NDA0
NzdiYmRlMjQ1NmY0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTM2LDcgKzEzNiwxMiBAQAogICAgIG1hY3JvKHZhbHVl
KSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3Jv
KHdyaXRhYmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaGFzKSBcCisgICAg
bWFjcm8oZm9yRWFjaCkgXAorICAgIG1hY3JvKGNsZWFyKSBcCisgICAgbWFjcm8oc2l6ZSkgXAor
ICAgIG1hY3JvKE1hcCkKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZ
V09SRChtYWNybykgXAogICAgIG1hY3JvKG51bGwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMmJkZmRjYzVhODZiYzdhNzI2
YWIyZWQzZDk2NzU1ODIyN2I4NjQyLi4xMjdlMjAwMjU5ODA0NjQ2YzJmNmU2MTc0OTExYzdiNzBl
MzZhMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC03OSw2ICs3OSwxMCBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAj
aW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRl
ICJNYXBDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBJ
bnN0YW5jZS5oIgorI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hdGhPYmpl
Y3QuaCIKICNpbmNsdWRlICJOYW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFu
Y2UuaCIKQEAgLTMxMSw3ICszMTUsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMt
PnZtKCksIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX3Byb21p
c2VDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJh
Y2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSk7CiAgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVj
LT52bSgpLCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgCisKKyAg
ICBtX21hcERhdGFTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIE1hcERhdGE6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBqc051bGwoKSkpOworICAgIG1fbWFwUHJvdG90
eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlz
LCBNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX21hcFN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgTWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX21h
cFByb3RvdHlwZS5nZXQoKSkpOworCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwq
IG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlz
LCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CkBAIC0z
MjMsNiArMzMxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBEYXRlQ29uc3RydWN0b3I6OmNyZWF0
ZShleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9kYXRlUHJvdG90eXBlLmdldCgp
KTsKICAgICBKU0NlbGwqIHByb21pc2VDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZUNvbnN0cnVjdG9y
OjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNl
UHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
ID0gSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJv
bWlzZVJlc29sdmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUu
Z2V0KCkpOworICAgIEpTQ2VsbCogbWFwQ29uc3RydWN0b3IgPSBNYXBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIE1hcENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fbWFwUHJvdG90eXBlLmdldCgp
KTsKIAogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4
cENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMzQ4LDYgKzM1Nyw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1fZXJyb3JQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7
CiAgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwogICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9t
YXBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
IAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0zNjYsNiArMzc2
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLlVSSUVycm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuUHJvbWlzZSwgcHJvbWlzZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlBy
b21pc2VSZXNvbHZlciwgcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuTWFwLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rp
b24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAx
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKQEAgLTYyMSw2
ICs2MzIsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbWFwRGF0YVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbWFwU3RydWN0dXJlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmMmQ2NzM4ODMzNTFhNmI4OGQyM2Fh
NGQ2ZGY4YTY0NWU0ODk1ZjU1Li40Yjg3ZTEwNWFlNjc4ODJjM2VjODk4Mjk5ZWI4Y2NhY2MyZTZm
YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3MgSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworY2xhc3MgTWFwUHJvdG90eXBlOwogY2xhc3MgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZTsKQEAgLTE1MCw2ICsxNTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEVycm9y
UHJvdG90eXBlPiBtX2Vycm9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQ
cm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGU+IG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOworICAgIFdyaXRl
QmFycmllcjxNYXBQcm90b3R5cGU+IG1fbWFwUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKQEAgLTE4OCw2ICsxOTAsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlQ2FsbGJh
Y2tTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlV3JhcHBl
ckNhbGxiYWNrU3RydWN0dXJlOwogCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBE
YXRhU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwU3RydWN0dXJl
OworICAgIAogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVyUHJvdG90eXBlPiBtX2FycmF5
QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zNzgsNiArMzgzLDggQEAgcHVibGljOgogICAgIFN0cnVj
dHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByaXZhdGVOYW1lU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbWFwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1
cmUqIG1hcERhdGFTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcERhdGFTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZjM4ZmZmMTNkOWRmNWJkOTdmMWQzNGEwMmNmZTRmOTc5MDI5NmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIk1hcEluc3RhbmNlLmgiCisjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBDb25z
dHJ1Y3RvcikgfTsKKwordm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBNYXBQcm90b3R5cGUqIG1hcFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT52bSgpLCBtYXBQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05h
bWUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG1hcFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZt
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gVW50aWwg
d2UgaGF2ZSBpdGVyYXRvcnMgd2UgdGhyb3cgaWYgd2UndmUgYmVlbiBnaXZlbgorICAgIC8vIGFu
eSBhcmd1bWVudHMgdGhhdCBjb3VsZCByZXN1bHQgaW4gdXMgdGhyb3cuCisgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWFwIGNvbnN0cnVj
dG9yIGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMiKSkpOworICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMSkuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgV1RGOjpBU0NJSUxpdGVyYWwoIklu
dmFsaWQgY29tcGFyYXRvciBmdW5jdGlvbiIpKSkpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpOworICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tYXBT
dHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hcEluc3RhbmNlOjpjcmVh
dGUoZXhlYywgbWFwU3RydWN0dXJlKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgTWFwQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdE1hcDsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIE1hcENvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0TWFwOworICAgIHJldHVybiBDYWxsVHlw
ZUhvc3Q7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NWVjYjNlNDQ1MGIyZjBiMzkwOGQ2NWFmNTAzNjMxMGM5
NDdjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcENvbnN0cnVjdG9yX2gKKyNkZWZpbmUg
TWFwQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgTWFwUHJvdG90eXBlOworCitjbGFzcyBNYXBDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBNYXBDb25zdHJ1Y3RvciogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIE1hcFByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAg
ICBNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxNYXBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE1hcENvbnN0cnVjdG9yKGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIGZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXBDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBC
YXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqLCBNYXBQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30K
KworI2VuZGlmIC8vICFkZWZpbmVkKE1hcENvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YzNmYTBlYTk3NzlhNmQ0YzJk
OWFkZDE2ODUxMjZiNTBmZmI5Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBEYXRhLmNwcApAQCAtMCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisK
KyNpbmNsdWRlICJNYXBEYXRhLmgiCisKKyNpbmNsdWRlICJDb3BpZWRBbGxvY2F0b3IuaCIKKyNp
bmNsdWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwRGF0
YTo6c19pbmZvID0geyAiTWFwRGF0YSIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoTWFwRGF0YSkgfTsKKworZW51bSB7IE1pbmltdW1NYXBTaXplID0gMTYgfTsKKwor
TWFwRGF0YTo6TWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPm1hcERhdGFTdHJ1Y3R1cmUoKSkKKyAgICAsIG1f
Y2FwYWNpdHkoMCkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9kZWxldGVkQ291bnQoMCkKKyAg
ICAsIG1faXRlcmF0b3JDb3VudCgwKQorICAgICwgbV9lbnRyaWVzKDApCit7Cit9CisKK01hcERh
dGE6Oml0ZXJhdG9yIE1hcERhdGE6OmZpbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEtleVR5cGUg
a2V5KQoreworICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CisgICAgaWYgKGtleS52YWx1ZS5pc1N0
cmluZygpKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyhrZXkudmFsdWUpLT52
YWx1ZShjYWxsRnJhbWUpOworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0cmluZ0tleWVkVGFibGUu
ZmluZChzdHJpbmcuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9zdHJpbmdLZXllZFRh
YmxlLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7CisgICAgICAgIGxvY2F0
aW9uID0gaXRlci0+dmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV92
YWx1ZUtleWVkVGFibGUuZmluZChrZXkpOworICAgICAgICBpZiAoaXRlciA9PSBtX3ZhbHVlS2V5
ZWRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOworICAgICAgICBs
b2NhdGlvbiA9IGl0ZXItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gaXRlcmF0b3IoJm1fZW50
cmllc1tsb2NhdGlvbl0pOworfQorYm9vbCBNYXBEYXRhOjpjb250YWlucyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgS2V5VHlwZSBrZXkpCit7CisgICAgcmV0dXJuICFmaW5kKGNhbGxGcmFtZSwga2V5
KS5pc0VtcHR5KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleT4g
TWFwRGF0YTo6aXRlcmF0b3IgTWFwRGF0YTo6YWRkKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNYXAm
IG1hcCwgS2V5IGtleSwgS2V5VHlwZSBrZXlWYWx1ZSkKK3sKKyAgICB0eXBlbmFtZSBNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtYXAuYWRkKGtleSwgbV9zaXplKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXR1cm4gaXRlcmF0b3IoJm1fZW50cmllc1tyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlXSk7CisgICAgaWYgKCFlbnN1cmVTcGFjZUZvckFwcGVuZChjYWxsRnJhbWUp
KSB7CisgICAgICAgIG1hcC5yZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yKCk7CisgICAgfQorICAgIEFTU0VSVChtYXAuY29udGFpbnMoa2V5KSk7CisgICAg
RW50cnkqIGVudHJ5ID0gJm1fZW50cmllc1ttX3NpemUrK107CisgICAgbmV3IChlbnRyeSkgRW50
cnkoY2FsbEZyYW1lLT52bSgpLCB0aGlzLCBrZXlWYWx1ZS52YWx1ZSk7CisgICAgcmV0dXJuIGl0
ZXJhdG9yKGVudHJ5KTsKK30KKwordm9pZCBNYXBEYXRhOjpzZXQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEtleVR5cGUga2V5LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGl0ZXJhdG9yIGxvY2F0aW9u
ID0gYWRkKGNhbGxGcmFtZSwga2V5KTsKKyAgICBpZiAoIWxvY2F0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgbG9jYXRpb24udmFsdWUoKS5zZXQoY2FsbEZyYW1lLT52bSgpLCB0aGlzLCB2YWx1
ZSk7Cit9CisgICAgCitNYXBEYXRhOjppdGVyYXRvciBNYXBEYXRhOjphZGQoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEtleVR5cGUga2V5KQoreworICAgIGlmICgha2V5LnZhbHVlLmlzU3RyaW5nKCkp
CisgICAgICAgIHJldHVybiBhZGQoY2FsbEZyYW1lLCBtX3ZhbHVlS2V5ZWRUYWJsZSwga2V5LCBr
ZXkpOworCisgICAgU3RyaW5nIHN0cmluZyA9IGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNh
bGxGcmFtZSk7CisgICAgcmV0dXJuIGFkZChjYWxsRnJhbWUsIG1fc3RyaW5nS2V5ZWRUYWJsZSwg
c3RyaW5nLmltcGwoKSwga2V5KTsKK30KKworSlNWYWx1ZSBNYXBEYXRhOjpnZXQoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEtleVR5cGUga2V5KQoreworICAgIGlmIChpdGVyYXRvciBlbnRyeSA9IGZp
bmQoY2FsbEZyYW1lLCBrZXkpKQorICAgICAgICByZXR1cm4gZW50cnkudmFsdWUoKS5nZXQoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitib29sIE1hcERhdGE6OnJlbW92ZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgS2V5VHlwZSBrZXkpCit7CisgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsK
KyAgICBpZiAoa2V5LnZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9
IGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNhbGxGcmFtZSk7CisgICAgICAgIGF1dG8gaXRl
ciA9IG1fc3RyaW5nS2V5ZWRUYWJsZS5maW5kKHN0cmluZy5pbXBsKCkpOworICAgICAgICBpZiAo
aXRlciA9PSBtX3N0cmluZ0tleWVkVGFibGUuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGxvY2F0aW9uID0gaXRlci0+dmFsdWU7CisgICAgICAgIG1fc3RyaW5nS2V5
ZWRUYWJsZS5yZW1vdmUoaXRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0g
bV92YWx1ZUtleWVkVGFibGUuZmluZChrZXkpOworICAgICAgICBpZiAoaXRlciA9PSBtX3ZhbHVl
S2V5ZWRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbG9j
YXRpb24gPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgbV92YWx1ZUtleWVkVGFibGUucmVtb3ZlKGl0
ZXIpOworICAgIH0KKyAgICBtX2VudHJpZXNbbG9jYXRpb25dLmNsZWFyKCk7CisgICAgbV9kZWxl
dGVkQ291bnQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPE1hcERhdGE6OkNv
cHlNb2RlIG1vZGU+IHZvaWQgTWFwRGF0YTo6Y29weUFuZFBhY2tJZlBvc3NpYmxlKEVudHJ5KiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG5ld1NpemUpCit7CisgICAgc2l6ZV90IG5ld0VuZCA9IDA7Cisg
ICAgaWYgKG1vZGUgPT0gQ2FuUGFjaykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaV07
CisgICAgICAgICAgICBpZiAoIWVudHJ5LmtleSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgQVNTRVJUKG5ld0VuZCA8IG5ld1NpemUpOworICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uICsgbmV3RW5kLCAmZW50cnksIHNpemVvZihFbnRyeSkpOworICAgICAg
ICAgICAgbmV3RW5kKys7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKChtX3NpemUgLSBuZXdF
bmQpID09IG1fZGVsZXRlZENvdW50KTsKKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSAwOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdTaXplID49IG1fY2FwYWNpdHkpOworICAgICAg
ICBtZW1jcHkoZGVzdGluYXRpb24sIG1fZW50cmllcywgc2l6ZW9mKEVudHJ5KSAqIG1fc2l6ZSk7
CisgICAgICAgIG5ld0VuZCA9IG1fc2l6ZTsKKyAgICB9CisgICAgbV9jYXBhY2l0eSA9IG5ld1Np
emU7CisgICAgbV9zaXplID0gbmV3RW5kOworICAgIG1fZW50cmllcyA9IGRlc3RpbmF0aW9uOwor
Cit9CisKK0NoZWNrZWRCb29sZWFuIE1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5kKENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChtX2NhcGFjaXR5ID4gbV9zaXplKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHNpemVfdCByZXF1aXJlZFNpemUgPSBzdGQ6Om1heChtX2Nh
cGFjaXR5ICsgKG1fY2FwYWNpdHkgLyAyKSArIDEsIHN0YXRpY19jYXN0PHNpemVfdD4oTWluaW11
bU1hcFNpemUpKTsKKyAgICB2b2lkKiBuZXdTdG9yYWdlID0gMDsKKyAgICBpZiAoIWNhbGxGcmFt
ZS0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3JhZ2UodGhpcywgcmVxdWlyZWRTaXplICogc2l6ZW9m
KEVudHJ5KSwgJm5ld1N0b3JhZ2UpKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihj
YWxsRnJhbWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIERlZmVyR0MgZGVm
ZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKKyAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19j
YXN0PEVudHJ5Kj4obmV3U3RvcmFnZSk7CisgICAgaWYgKGNhblBhY2soKSkKKyAgICAgICAgY29w
eUFuZFBhY2tJZlBvc3NpYmxlPENhblBhY2s+KG5ld0VudHJpZXMsIHJlcXVpcmVkU2l6ZSk7Cisg
ICAgZWxzZQorICAgICAgICBjb3B5QW5kUGFja0lmUG9zc2libGU8Q2Fubm90UGFjaz4obmV3RW50
cmllcywgcmVxdWlyZWRTaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNYXBEYXRh
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKyAgICBNYXBEYXRhKiB0aGlz
T2JqZWN0ID0ganNDYXN0PE1hcERhdGEqPihjZWxsKTsKKyAgICBFbnRyeSogZW50cmllcyA9IHRo
aXNPYmplY3QtPm1fZW50cmllczsKKyAgICBpZiAoIWVudHJpZXMpCisgICAgICAgIHJldHVybjsK
KyAgICBzaXplX3Qgc2l6ZSA9IHRoaXNPYmplY3QtPm1fc2l6ZTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9kZWxldGVkQ291bnQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKKyAgICAgICAgICAgIGlmICghZW50cmllc1tpXS5rZXkoKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZlbnRyaWVzW2ldLmtl
eUZvckdDKCkpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmVudHJpZXNbaV0udmFsdWUo
KSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
JmVudHJpZXNbMF0ua2V5Rm9yR0MoKSwgc2l6ZSAqIChzaXplb2YoRW50cnkpIC8gc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpKTsKKworICAgIHZpc2l0b3IuY29weUxhdGVyKHRoaXNPYmpl
Y3QsIE1hcEJhY2tpbmdTdG9yZUNvcHlUb2tlbiwgZW50cmllcywgc2l6ZSk7Cit9CisKK3ZvaWQg
TWFwRGF0YTo6Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqIGNlbGwsIENvcHlWaXNpdG9yJiB2aXNp
dG9yLCBDb3B5VG9rZW4gdG9rZW4pCit7CisgICAgTWFwRGF0YSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxNYXBEYXRhKj4oY2VsbCk7CisgICAgaWYgKHRva2VuID09IE1hcEJhY2tpbmdTdG9yZUNvcHlU
b2tlbgorICAgICAgICAmJiB2aXNpdG9yLmNoZWNrSWZTaG91bGRDb3B5KHRoaXNPYmplY3QtPm1f
ZW50cmllcykpIHsKKyAgICAgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSA9IHRoaXNPYmplY3QtPm1f
Y2FwYWNpdHkgKiBzaXplb2YoRW50cnkpOworICAgICAgICB2b2lkKiBvbGRWZWN0b3IgPSB0aGlz
T2JqZWN0LT5tX2VudHJpZXM7CisgICAgICAgIHZvaWQqIG5ld1ZlY3RvciA9IHZpc2l0b3IuYWxs
b2NhdGVOZXdTcGFjZSh0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6ZW9mKEVudHJ5KSk7Cisg
ICAgICAgIEVudHJ5KiBuZXdFbnRyaWVzID0gc3RhdGljX2Nhc3Q8RW50cnkqPihuZXdWZWN0b3Ip
OworICAgICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGFjaygpKQorICAgICAgICAgICAgdGhpc09i
amVjdC0+Y29weUFuZFBhY2tJZlBvc3NpYmxlPENhblBhY2s+KG5ld0VudHJpZXMsIHJlcXVpcmVk
U2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvcHlBbmRQYWNr
SWZQb3NzaWJsZTxDYW5ub3RQYWNrPihuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgICAg
ICB2aXNpdG9yLmRpZENvcHkob2xkVmVjdG9yLCB0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6
ZW9mKEVudHJ5KSk7CisgICAgfQorICAgIEJhc2U6OmNvcHlCYWNraW5nU3RvcmUoY2VsbCwgdmlz
aXRvciwgdG9rZW4pOworfQorCit2b2lkIE1hcERhdGE6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIHN0YXRpY19jYXN0PE1hcERhdGEqPihjZWxsKS0+fk1hcERhdGEoKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNWQzOWE2
ODBmYzQ0YTk3YjRjZTQwNzRkNTVhM2RlNjM0OTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTAsMCArMSwyMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1hcERhdGFfaAorI2RlZmluZSBNYXBEYXRhX2gKKworI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIE1hcERhdGEgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgeworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRW50cnkgeworICAgICAg
ICBFbnRyeShWTSYgdm0sIE1hcERhdGEqIG93bmVyLCBKU1ZhbHVlIGtleSkKKyAgICAgICAgICAg
IDogbV9rZXkodm0sIG93bmVyLCBrZXkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB2
b2lkIGNsZWFyKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9rZXkuY2xlYXIoKTsKKyAgICAg
ICAgICAgIG1fdmFsdWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+JiBrZXlGb3JHQygpIHsgcmV0dXJuIG1fa2V5OyB9CisgICAgICAg
IGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7
IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFs
dWU7IH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+IG1fa2V5OworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92YWx1ZTsKKyAgICB9
OworCisgICAgc3RydWN0IGl0ZXJhdG9yIHsKKyAgICAgICAgZXhwbGljaXQgaXRlcmF0b3IoRW50
cnkqIGVudHJ5KQorICAgICAgICAgICAgOiBtX2VudHJ5KGVudHJ5KQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICBpdGVyYXRvcigpCisgICAgICAgICAgICA6IG1fZW50cnkoMCkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+
JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5LT5rZXkoKTsgfQorICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4mIHZhbHVlKCkgeyByZXR1cm4gbV9lbnRyeS0+dmFsdWUoKTsgfQorCisg
ICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKTsgfQorICAg
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzRW1wdHkoKTsg
fQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9lbnRyeTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgRW50cnkqIG1fZW50cnk7CisgICAgfTsKKworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0cnVjdCBFeHRl
cm5hbEl0ZXJhdG9yIHsKKyAgICAgICAgRXh0ZXJuYWxJdGVyYXRvcihNYXBEYXRhKiBtYXBEYXRh
KQorICAgICAgICAgICAgOiBtX21hcERhdGEobWFwRGF0YSkKKyAgICAgICAgICAgICwgbV9pbmRl
eCgwKQorICAgICAgICB7CisgICAgICAgICAgICBtX21hcERhdGEtPm1faXRlcmF0b3JDb3VudCsr
OworICAgICAgICB9CisgICAgICAgIH5FeHRlcm5hbEl0ZXJhdG9yKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9tYXBEYXRhLT5tX2l0ZXJhdG9yQ291bnQtLTsKKyAgICAgICAgfQorICAgICAg
ICBKU1ZhbHVlIGtleSgpIHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fbWFwRGF0YS0+bV9l
bnRyaWVzW21faW5kZXhdLmtleSgpLmdldCgpOyB9CisgICAgICAgIEpTVmFsdWUgdmFsdWUoKSB7
IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX21hcERhdGEtPm1fZW50cmllc1ttX2luZGV4XS52
YWx1ZSgpLmdldCgpOyB9CisgICAgICAgIHZvaWQgbmV4dCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgICAgICAgICBFbnRyeSogZW50cmllcyA9IG1fbWFw
RGF0YS0+bV9lbnRyaWVzOworICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9pbmRleCArIDE7
CisgICAgICAgICAgICBzaXplX3QgZW5kID0gbV9tYXBEYXRhLT5tX3NpemU7CisgICAgICAgICAg
ICB3aGlsZSAoaW5kZXggPCBlbmQgJiYgIWVudHJpZXNbaW5kZXhdLmtleSgpKQorICAgICAgICAg
ICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgICAgIH0K
KyAgICAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggPj0gbV9tYXBEYXRh
LT5tX3NpemU7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBNYXBEYXRhKiBtX21hcERhdGE7Cisg
ICAgICAgIHNpemVfdCBtX2luZGV4OworICAgIH07CisKKyAgICBzdHJ1Y3QgS2V5VHlwZSB7Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgS2V5VHlwZSgpIHt9CisgICAgICAgIEFMV0FZU19JTkxJTkUg
S2V5VHlwZShKU1ZhbHVlIHYpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh2LmlzRG91Ymxl
KCkpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgZCA9IHYuYXNEb3VibGUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNuYW4oZCkgfHwgKHNpZ25iaXQoZCkgJiYgZCA9PSAwKSkgeworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHY7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgaSA9IHN0YXRpY19jYXN0PGlu
dD4odi5hc0RvdWJsZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSB2KQorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IHY7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgdmFsdWUgPSB2OworICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEtleVR5cGUgZGVsZXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEtleVR5cGUgcmVz
dWx0OworICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgc2xvdCA9IDA7CisgICAgICAgICAgICBF
bmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90KTsKKyAg
ICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShzbG90KTsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yPT0oS2V5VHlwZSBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKG90aGVyLnZh
bHVlKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgIH07CisgICAgc3Rh
dGljIE1hcERhdGEqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgeworICAgICAgICBNYXBEYXRhKiBtYXBEYXRhID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8TWFwRGF0YT4odm0uaGVhcCkpIE1hcERhdGEodm0sIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIG1hcERhdGEtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIG1hcERhdGE7
CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCisgICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwgS2V5VHlwZSBrZXksIEpTVmFsdWUgdmFsdWUp
OworICAgIEpTVmFsdWUgZ2V0KENhbGxGcmFtZSosIEtleVR5cGUga2V5KTsKKyAgICBib29sIHJl
bW92ZShDYWxsRnJhbWUqLCBLZXlUeXBlIGtleSk7CisgICAgYm9vbCBjb250YWlucyhDYWxsRnJh
bWUqLCBLZXlUeXBlKTsKKyAgICBzaXplX3Qgc2l6ZShDYWxsRnJhbWUqKSBjb25zdCB7IHJldHVy
biBtX3NpemUgLSBtX2RlbGV0ZWRDb3VudDsgfQorCisgICAgRXh0ZXJuYWxJdGVyYXRvciBnZXRJ
dGVyYXRvcigpIHsgcmV0dXJuIEV4dGVybmFsSXRlcmF0b3IodGhpcyk7IH0KKworICAgIHZvaWQg
Y2xlYXIoKQorICAgIHsKKyAgICAgICAgbV92YWx1ZUtleWVkVGFibGUuY2xlYXIoKTsKKyAgICAg
ICAgbV9zdHJpbmdLZXllZFRhYmxlLmNsZWFyKCk7CisgICAgICAgIG1fY2FwYWNpdHkgPSAwOwor
ICAgICAgICBtX3NpemUgPSAwOworICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisgICAgICAg
IG1fZW50cmllcyA9IDA7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgor
ICAgIHN0cnVjdCBLZXlIYXNoIHsKKyAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50NjRf
dCBoYXNoKEtleVR5cGUga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpp
bnRIYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90PihKU1ZhbHVlOjplbmNvZGUoa2V5LnZhbHVlKSkp
OworICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWwoS2V5
VHlwZSBhLCBLZXlUeXBlIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYS52YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGIudmFsdWUpOworICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworICAgIH07CisgICAgc3RydWN0IEtleVRyYWl0cyA6IFdURjo6U2ltcGxlQ2xh
c3NIYXNoVHJhaXRzPEtleVR5cGU+IHsKKyAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoS2V5VHlwZSYgc2xvdCkgeyBzbG90ID0gS2V5VHlwZTo6
ZGVsZXRlZCgpOyB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoS2V5VHlwZSBrZXkpIHsgcmV0dXJuIEtleUhhc2g6OmVxdWFsKGtleS52YWx1ZSwgS2V5
VHlwZTo6ZGVsZXRlZCgpKTsgfQorCisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEtleVR5
cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEtleVR5cGUoKTsgfQorICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICB9OworICAgIHR5cGVkZWYgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+IEluZGV4VHJhaXRzOworCisg
ICAgTWFwRGF0YShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENv
cHlWaXNpdG9yJiwgQ29weVRva2VuKTsKKyAgICBBTFdBWVNfSU5MSU5FIGl0ZXJhdG9yIGZpbmQo
Q2FsbEZyYW1lKiwgS2V5VHlwZSBrZXkpOworICAgIENoZWNrZWRCb29sZWFuIGVuc3VyZVNwYWNl
Rm9yQXBwZW5kKENhbGxGcmFtZSopOworICAgIGVudW0gQ29weU1vZGUge0NhblBhY2ssIENhbm5v
dFBhY2t9OworICAgIHRlbXBsYXRlIDxDb3B5TW9kZT4gQUxXQVlTX0lOTElORSB2b2lkIGNvcHlB
bmRQYWNrSWZQb3NzaWJsZShFbnRyeSogZGVzdGluYXRpb24sIHNpemVfdCBuZXdTaXplKTsKKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuUGFjaygpIGNvbnN0IHsgcmV0dXJuICFtX2l0ZXJhdG9y
Q291bnQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUgaXRlcmF0b3IgYWRkKENhbGxGcmFtZSosIEtl
eVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleT4gQUxXQVlT
X0lOTElORSBpdGVyYXRvciBhZGQoQ2FsbEZyYW1lKiwgTWFwJiwgS2V5LCBLZXlUeXBlKTsKKwor
ICAgIEhhc2hNYXA8S2V5VHlwZSwgc2l6ZV90LCBLZXlIYXNoLCBLZXlUcmFpdHMsIEluZGV4VHJh
aXRzPiBtX3ZhbHVlS2V5ZWRUYWJsZTsKKyAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBzaXplX3Q+
IG1fc3RyaW5nS2V5ZWRUYWJsZTsKKyAgICBzaXplX3QgbV9jYXBhY2l0eTsKKyAgICBzaXplX3Qg
bV9zaXplOworICAgIHNpemVfdCBtX2RlbGV0ZWRDb3VudDsKKyAgICBzaXplX3QgbV9pdGVyYXRv
ckNvdW50OworICAgIEVudHJ5KiBtX2VudHJpZXM7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Cit9OworCit9CisKKyNlbmRpZiAvKiAhZGVmaW5lZChNYXBEYXRhX2gpICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTJiMzgwODdiZDk0YmM4NjBkYjIzN2RjY2I4ZmMxYTAyNGViMGFmMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KworI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBJbnN0YW5jZS5oIgorI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NvbnN0
IENsYXNzSW5mbyBNYXBJbnN0YW5jZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBJbnN0YW5jZSkgfTsKKwordm9pZCBNYXBJbnN0
YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCx2aXNpdG9yKTsKKyAgICBNYXBJbnN0YW5j
ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxNYXBJbnN0YW5jZSo+KGNlbGwpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGEpOworfQorCit2b2lkIE1hcEluc3RhbmNlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1fbWFwRGF0YS5zZXQodm0sIHRoaXMs
IE1hcERhdGE6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7Cit9CisKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZjZjQxOTcx
NDJiYzk1NmU1MjZjZTAwMTQyZjYxNmFiMjExOTkyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFw
SW5zdGFuY2VfaAorI2RlZmluZSBNYXBJbnN0YW5jZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFwRGF0YTsKKworY2xhc3MgTWFwSW5zdGFu
Y2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTWFwSW5zdGFu
Y2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
TWFwSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwSW5z
dGFuY2U+KHZtLmhlYXApKSBNYXBJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHN0YXRpYyBNYXBJbnN0YW5jZSog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSk7CisgICAgfQorCisgICAg
TWFwRGF0YSogbWFwRGF0YSgpIHsgcmV0dXJuIG1fbWFwRGF0YS5nZXQoKTsgfQorCitwcml2YXRl
OgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgTWFwSW5zdGFuY2Uo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPE1hcERhdGE+IG1fbWFwRGF0YTsKK307CisK
K30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcEluc3RhbmNlX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjU2MWFmYTJl
ZDlkMjA0NjY2MDJlNmU1MmM2NThmNjk4ODM0OTkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDE1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiTWFwRGF0YS5oIgorI2luY2x1ZGUgIk1hcEluc3RhbmNlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJNYXAiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hcFBy
b3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jQ2xlYXIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNEZWxldGUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jSGFzKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9G
dW5jU2V0KEV4ZWNTdGF0ZSopOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXBQcm90b0Z1bmNTaXplKEV4ZWNTdGF0ZSopOworICAgIAordm9pZCBNYXBQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICB2bS5wcm90b3R5
cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworCisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5jbGVhciwgbWFwUHJvdG9GdW5jQ2xlYXIsIERvbnRFbnVtLCAwKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmRlbGV0ZUtleXdvcmQsIG1h
cFByb3RvRnVuY0RlbGV0ZSwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+Zm9yRWFjaCwgbWFwUHJvdG9GdW5jRm9yRWFjaCwgRG9udEVudW0s
IDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Z2V0LCBtYXBQ
cm90b0Z1bmNHZXQsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmhhcywgbWFwUHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIG1hcFByb3RvRnVuY1NldCwg
RG9udEVudW0sIDIpOworCisgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRl
cjo6Y3JlYXRlKGV4ZWMpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJp
bmcoKSwgbWFwUHJvdG9GdW5jU2l6ZSk7CisgICAgYWNjZXNzb3ItPnNldEdldHRlcihleGVjLT52
bSgpLCBmdW5jdGlvbik7CisgICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgdm0ucHJvcGVydHlO
YW1lcy0+c2l6ZSwgYWNjZXNzb3IsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworfQorCitBTFdBWVNf
SU5MSU5FIHN0YXRpYyBNYXBEYXRhKiBnZXRNYXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSB7Cisg
ICAgICAgIHRocm93RXJyb3IoY2FsbEZyYW1lLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxG
cmFtZSwgdGhpc1ZhbHVlKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBNYXBJbnN0
YW5jZSogbWFwID0ganNEeW5hbWljQ2FzdDxNYXBJbnN0YW5jZSo+KHRoaXNWYWx1ZSk7CisgICAg
aWYgKCFtYXApIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVy
YWwoIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0IikpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIG1hcC0+bWFwRGF0YSgpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGRhdGEtPmNsZWFyKCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7Cisg
ICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGF0
YS0+cmVtb3ZlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNGb3JFYWNoKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIE1hcERhdGE6OkV4dGVybmFsSXRl
cmF0b3IgaXRlcmF0b3IgPSBkYXRhLT5nZXRJdGVyYXRvcigpOworICAgIHdoaWxlICghaXRlcmF0
b3IuYXRFbmQoKSkgeworICAgICAgICBpdGVyYXRvci5uZXh0KCk7CisgICAgfQorICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZGF0YS0+Z2V0KGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3Vs
dCA9IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihkYXRhLT5jb250YWlucyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9G
dW5jU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRN
YXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGRh
dGEtPnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0
YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGRhdGEtPnNpemUoY2FsbEZyYW1lKSkpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2ZjBhYjZhNTYzOWE3MWNjYTI2MGU4NGU4Y2E4YmZhMWQ0YzJjOWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNYXBQcm90b3R5cGVfaAorI2RlZmluZSBNYXBQcm90b3R5cGVfaAorCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1hcFByb3RvdHlw
ZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBNYXBQcm90b3R5cGUqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgTWFwUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBNYXBQcm90
b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlv
bihleGVjLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0K
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXBQcm90b3R5cGUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGV4ZWMtPnZtKCksIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcFBy
b3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDliYjBkNGNi
YjI5MjU1YWZhOTBhYzc2OWNiMGYxYWYzMWI1YTM3N2IuLjZhYWYyNzM1MDE0Mzg0ZmE0MWEwODdh
NDNiNmZkODVjMzA2NzI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAg
LTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxleGVy
LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNo
ZS5oIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1tYXAuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtbWFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc0N2UxMjc4Mjgw
ZTc1YzcxZWVlNzlkMDdhYzU0MDAwOTcxODZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvanMvYmFzaWMtbWFwLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Jhc2ljLW1hcC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9i
YXNpYy1tYXAuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1tYXAu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmZkMmNlZjQ1MDdhNzIyODRlY2FmMzBkMjI3MDk4ZGMxOGQyNmVmMAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2lj
LW1hcC5qcwpAQCAtMCwwICsxLDY1IEBACitkZXNjcmlwdGlvbigiVGVzdHMgYmFzaWMgY29ycmVj
dG5lc3Mgb2YgRVMgTWFwIG9iamVjdCIpOworCisvLyBDdXJyZW50bHkgd2UgZG9uJ3Qgc3VwcG9y
dCBpdGVyYXRvcnMsIHNvIHdlIHRocm93CisvLyBvbiBhbnkgbm9uLXRocm93aW5nIHBhcmFtZXRl
cnMKK3Nob3VsZEJlRmFsc2UoIk1hcCBpbnN0YW5jZW9mIE1hcCIpOworc2hvdWxkQmVGYWxzZSgi
TWFwLnByb3RvdHlwZSBpbnN0YW5jZW9mIE1hcCIpOworc2hvdWxkQmVUcnVlKCJuZXcgTWFwKCkg
aW5zdGFuY2VvZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcChudWxsKSBpbnN0YW5jZW9m
IE1hcCIpOworc2hvdWxkQmVUcnVlKCJuZXcgTWFwKHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBNYXAi
KTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcCh1bmRlZmluZWQsIHVuZGVmaW5lZCkgaW5zdGFuY2Vv
ZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcChudWxsLCB1bmRlZmluZWQpIGluc3RhbmNl
b2YgTWFwIik7CisKK3Nob3VsZFRocm93KCJuZXcgTWFwKDEpIik7CitzaG91bGRUaHJvdygibmV3
IE1hcCh0cnVlKSIpOworc2hvdWxkVGhyb3coIm5ldyBNYXAoW10pIik7CitzaG91bGRUaHJvdygi
bmV3IE1hcCh7fSkiKTsKK3Nob3VsZFRocm93KCJuZXcgTWFwKHVuZGVmaW5lZCwgbnVsbCkiKTsK
K3Nob3VsZFRocm93KCJuZXcgTWFwKHVuZGVmaW5lZCwge30pIik7CisKK3ZhciBtYXAgPSBuZXcg
TWFwOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0Lmhhc093blByb3BlcnR5KG1hcCwgJ3NpemUnKSIp
CitzaG91bGRCZVRydWUoIk9iamVjdC5oYXNPd25Qcm9wZXJ0eShNYXAucHJvdG90eXBlLCAnc2l6
ZScpIikKK3Nob3VsZFRocm93KCJNYXAucHJvdG90eXBlLnNpemUiKQorc2hvdWxkQmUoIm1hcC5z
aXplIiwgIjAiKQorc2hvdWxkQmVVbmRlZmluZWQoIm1hcC5zZXQoLTAsIDEpIikKK3Nob3VsZEJl
VW5kZWZpbmVkKCJtYXAuc2V0KDAsIDIpIikKK3Nob3VsZEJlVW5kZWZpbmVkKCJtYXAuc2V0KElu
ZmluaXR5LCAzKSIpCitzaG91bGRCZVVuZGVmaW5lZCgibWFwLnNldCgtSW5maW5pdHksIDQpIikK
K3Nob3VsZEJlVW5kZWZpbmVkKCJtYXAuc2V0KE5hTiwgNSkiKQorc2hvdWxkQmVVbmRlZmluZWQo
Im1hcC5zZXQoJzAnLCA2KSIpCitzaG91bGRCZVVuZGVmaW5lZCgibWFwLnNldCgwLjEsIDcpIikK
K3Nob3VsZEJlKCJtYXAuc2l6ZSIsICI3IikKK3Nob3VsZEJlKCJtYXAuZ2V0KC0wKSIsICIxIikK
K3Nob3VsZEJlKCJtYXAuZ2V0KDApIiwgIjIiKQorc2hvdWxkQmUoIm1hcC5nZXQoSW5maW5pdHkp
IiwgIjMiKQorc2hvdWxkQmUoIm1hcC5nZXQoLUluZmluaXR5KSIsICI0IikKK3Nob3VsZEJlKCJt
YXAuZ2V0KE5hTikiLCAiNSIpCitzaG91bGRCZSgibWFwLmdldCgnMCcpIiwgIjYiKQorc2hvdWxk
QmUoIm1hcC5nZXQoMC4xKSIsICI3IikKKworc2hvdWxkQmVUcnVlKCJtYXAuaGFzKC0wKSIpCitz
aG91bGRCZVRydWUoIm1hcC5oYXMoMCkiKQorc2hvdWxkQmVUcnVlKCJtYXAuaGFzKEluZmluaXR5
KSIpCitzaG91bGRCZVRydWUoIm1hcC5oYXMoLUluZmluaXR5KSIpCitzaG91bGRCZVRydWUoIm1h
cC5oYXMoTmFOKSIpCitzaG91bGRCZVRydWUoIm1hcC5oYXMoJzAnKSIpCitzaG91bGRCZVRydWUo
Im1hcC5oYXMoMC4xKSIpCisKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgtMCkiKQorc2hvdWxk
QmVUcnVlKCJtYXAuZGVsZXRlKDApIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZShJbmZpbml0
eSkiKQorc2hvdWxkQmVUcnVlKCJtYXAuZGVsZXRlKC1JbmZpbml0eSkiKQorc2hvdWxkQmVUcnVl
KCJtYXAuZGVsZXRlKE5hTikiKQorc2hvdWxkQmVUcnVlKCJtYXAuZGVsZXRlKCcwJykiKQorc2hv
dWxkQmVUcnVlKCJtYXAuZGVsZXRlKDAuMSkiKQorCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRl
KC0wKSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKDApIikKK3Nob3VsZEJlRmFsc2UoIm1h
cC5kZWxldGUoSW5maW5pdHkpIikKK3Nob3VsZEJlRmFsc2UoIm1hcC5kZWxldGUoLUluZmluaXR5
KSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKE5hTikiKQorc2hvdWxkQmVGYWxzZSgibWFw
LmRlbGV0ZSgnMCcpIikKK3Nob3VsZEJlRmFsc2UoIm1hcC5kZWxldGUoMC4xKSIpCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209944</attachid>
            <date>2013-08-28 19:23:57 -0700</date>
            <delta_ts>2013-08-29 10:27:07 -0700</delta_ts>
            <desc>Has full API spec and correctness</desc>
            <filename>bug-120333-20130828192348.patch</filename>
            <type>text/plain</type>
            <size>65604</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDg0NWY3OTYxZTgzYmFlMThiZDViYzZkMWM2NjQwNGNiMGU2NGFlLi5mOGM5MGNjMzAxNTc2NGYz
ZmE3Zjc3ZjVlNDliZGUzMzk4N2I5Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOC0yOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBFUzYg
TWFwIHR5cGUgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmZp
bmQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRh
OjpnZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcERh
dGE6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6TWFwRGF0YTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6TWFwRGF0YTo6TWFwRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9NYXBJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9NYXBJbnN0YW5jZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok1hcEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6bWFwRGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcEluc3RhbmNlOjpNYXBJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6Ok1hcEluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0ZvckVhY2gpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6TWFwUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvbW96aWxsYS9hY3R1YWwuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBKU0Mgd2l0aCBGVEwgSklUIGVu
YWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmI2ZWEzZTg3YTNjOTFjOWVi
NTk2MGUwMjQzNjBjZDE1Nzg4ZmFkNS4uZmFjZWVkOTdjZTEwMTVmNzExMzVkYjk2ZTkxMTgzNzc1
ZWZlMTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNCw2ICs4MDQsMTIg
QEAKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDEx
MUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtl
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzAwODczQTE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5o
ICovOyB9OworCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovOyB9OworCQlBNzAwODczRTE3Q0JF
OEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90
eXBlLmggKi87IH07CisJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0YW5jZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODcz
RjE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuY3BwICovOyB9OworCQlBNzAwODc0MjE3
Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0
YW5jZS5oICovOyB9OwogCQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0
NDdFOTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwNDQ3RUQxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAg
Ki87IH07CiAJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDQ3RUMxN0EwQkQ3
MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg2Myw2ICs4NjksOCBAQAogCQlBNzdGMTgyNTE2NDE5MkM3
MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRB
MjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNU
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NzExQjk4QjhEMDA2
NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3ODUwN0Q2MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUwN0Q0
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTc4NTA3RDcxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi87IH07
CiAJCUE3ODg1M0Y5MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y3
MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJ
QTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2
MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc2QzE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCAqLzsgfTsKQEAgLTE5NzUsNiArMTk4MywxMiBAQAogCQlBMTcxMkIzQTExQzdC
MjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTcwMDg3M0MxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcEluc3RhbmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcEluc3Rh
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0N0U5MTdBMEJENDYwMEY1
ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3BlcmFuZHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0
N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEdW1wQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAzMSw2ICsyMDQ1LDggQEAKIAkJQTc3RjE4MUYxNjQwODhCMjAw
NjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdGMTgy
MDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdG
MTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFy
c2VyTW9kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDQxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3ODUwN0Q1
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4ODUzRjcx
Nzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwOyBw
YXRoID0gZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzc3LDkgKzIzOTMsOSBAQAogCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8s
CiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQkwRkY5MjJDRjE0
RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAotCQkJCTkzMkY1
QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJ
MTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNF
OEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAgKi8sCkBAIC0zMTc5LDYgKzMxOTUsOCBAQAogCQkJCUE3RTJFQTY5MEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8sCiAJCQkJRjY5MkE4NjgwMjU1NTk3
RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCiAJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3
IC8qIExvb2t1cC5oICovLAorCQkJCUE3ODUwN0Q0MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRh
LmNwcCAqLywKKwkJCQlBNzg1MDdENTE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oICovLAog
CQkJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovLAogCQkJCUY2
OTJBODZBMDI1NTU5N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg2
QjAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5oICovLApAQCAtMzI5NSw2ICszMzEzLDEy
IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3
NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAorCQkJCUE3MDA4NzM3MTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTcwMDg3MzgxN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTcwMDg3M0IxN0NCRThE
MzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTcwMDg3M0MxN0NCRThEMzAw
QzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovLAorCQkJCUE3MDA4NzNGMTdDQkU4RUIwMEMzRTY0
MyAvKiBNYXBJbnN0YW5jZS5jcHAgKi8sCisJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzg0NiwxMCArMzg3MCwxMiBAQAogCQkJCUE3M0UxMzMxMTc5
NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVz
aXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODczRTE3Q0JFOEQzMDBD
M0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlGRiAvKiBERkdEaXNh
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUQzMTU0RkI0RjAwMDk4M0U3MiAv
KiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODc0MjE3Q0JFOEVCMDBD
M0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENC
QjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMzk4MSw2ICs0MDA3LDcgQEAKIAkJCQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEw
OEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FF
MTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21p
bmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FF
M0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQx
NzEsNiArNDE5OCw3IEBACiAJCQkJODYwMTYxRTQwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAg
LyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU2MEYz
QTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTc4NTA3RDcxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MkQ2RjA5MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJs
b2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTQzMDAsMTIgKzQzMjgsMTIgQEAKIAkJCQlCQ0NG
MEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8q
IFRvTmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNE
MDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFE
MTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU3
MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2
ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5
IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA2MTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA4MTdC
NkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC00OTgzLDYgKzUwMTEsNyBAQAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0E0
QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAwOCw2ICs1MDM3LDcg
QEAKIAkJCQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyogT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyog
UGFyc2VyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RkM4QzMxNEUxQjVGRTAwRDUy
QUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTUwMzcsNiArNTA2Nyw3IEBACiAJCQkJMTQyODA4NDExMDdFQzA5MzAwMTNFN0Iy
IC8qIFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY0MkM1MTAxNTFDMDZB
OTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
NzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODQyMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0
Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdC
MiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MDUzLDYgKzUwODQsNyBA
QAogCQkJCTBGNTU0MUIxMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUVBRjExNzk4N0FCNjAwMjk5REIyIC8qIFN0
YWNrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwMDg3NDExN0NCRThFQjAwQzNF
NjQzIC8qIE1hcEluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MzBCNjEzMTI1MDA2
OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQ2OURFQjEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ09iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlUb2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmgKaW5k
ZXggYmM4YTEyYzVhYTczOTUyNWQ5OTY1MjkzMmQxYzllMzNjNGFhOGFjZi4uMzVlMGU2N2U2ZTkz
Y2YyNDZiYWEwZTY4ZWRiOTM3NWNmY2QzMzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29weVRva2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVRva2VuLmgKQEAgLTMwLDcgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQ29w
eVRva2VuIHsKICAgICBCdXR0ZXJmbHlDb3B5VG9rZW4sCi0gICAgVHlwZWRBcnJheVZlY3RvckNv
cHlUb2tlbgorICAgIFR5cGVkQXJyYXlWZWN0b3JDb3B5VG9rZW4sCisgICAgTWFwQmFja2luZ1N0
b3JlQ29weVRva2VuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDZmZjk4NzdhMzk3
OWFhNDBkOTNlMmM1MWI0MDM0YmM5Zjk2YzkxZjIuLjk0N2Y2ODI2NDc2OTJhMTc2ZDg2OTM1NDA0
NzdiYmRlMjQ1NmY0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTM2LDcgKzEzNiwxMiBAQAogICAgIG1hY3JvKHZhbHVl
KSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3Jv
KHdyaXRhYmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaGFzKSBcCisgICAg
bWFjcm8oZm9yRWFjaCkgXAorICAgIG1hY3JvKGNsZWFyKSBcCisgICAgbWFjcm8oc2l6ZSkgXAor
ICAgIG1hY3JvKE1hcCkKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZ
V09SRChtYWNybykgXAogICAgIG1hY3JvKG51bGwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMmJkZmRjYzVhODZiYzdhNzI2
YWIyZWQzZDk2NzU1ODIyN2I4NjQyLi4xMjdlMjAwMjU5ODA0NjQ2YzJmNmU2MTc0OTExYzdiNzBl
MzZhMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC03OSw2ICs3OSwxMCBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAj
aW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRl
ICJNYXBDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBJ
bnN0YW5jZS5oIgorI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hdGhPYmpl
Y3QuaCIKICNpbmNsdWRlICJOYW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFu
Y2UuaCIKQEAgLTMxMSw3ICszMTUsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMt
PnZtKCksIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX3Byb21p
c2VDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJh
Y2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSk7CiAgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVj
LT52bSgpLCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgCisKKyAg
ICBtX21hcERhdGFTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIE1hcERhdGE6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBqc051bGwoKSkpOworICAgIG1fbWFwUHJvdG90
eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlz
LCBNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX21hcFN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgTWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX21h
cFByb3RvdHlwZS5nZXQoKSkpOworCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwq
IG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlz
LCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CkBAIC0z
MjMsNiArMzMxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBEYXRlQ29uc3RydWN0b3I6OmNyZWF0
ZShleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9kYXRlUHJvdG90eXBlLmdldCgp
KTsKICAgICBKU0NlbGwqIHByb21pc2VDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZUNvbnN0cnVjdG9y
OjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNl
UHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
ID0gSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJv
bWlzZVJlc29sdmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUu
Z2V0KCkpOworICAgIEpTQ2VsbCogbWFwQ29uc3RydWN0b3IgPSBNYXBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIE1hcENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fbWFwUHJvdG90eXBlLmdldCgp
KTsKIAogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4
cENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMzQ4LDYgKzM1Nyw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1fZXJyb3JQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7
CiAgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwogICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9t
YXBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
IAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0zNjYsNiArMzc2
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLlVSSUVycm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuUHJvbWlzZSwgcHJvbWlzZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlBy
b21pc2VSZXNvbHZlciwgcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuTWFwLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rp
b24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAx
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKQEAgLTYyMSw2
ICs2MzIsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbWFwRGF0YVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbWFwU3RydWN0dXJlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmMmQ2NzM4ODMzNTFhNmI4OGQyM2Fh
NGQ2ZGY4YTY0NWU0ODk1ZjU1Li40Yjg3ZTEwNWFlNjc4ODJjM2VjODk4Mjk5ZWI4Y2NhY2MyZTZm
YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3MgSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworY2xhc3MgTWFwUHJvdG90eXBlOwogY2xhc3MgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZTsKQEAgLTE1MCw2ICsxNTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEVycm9y
UHJvdG90eXBlPiBtX2Vycm9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQ
cm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGU+IG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOworICAgIFdyaXRl
QmFycmllcjxNYXBQcm90b3R5cGU+IG1fbWFwUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKQEAgLTE4OCw2ICsxOTAsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlQ2FsbGJh
Y2tTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlV3JhcHBl
ckNhbGxiYWNrU3RydWN0dXJlOwogCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBE
YXRhU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwU3RydWN0dXJl
OworICAgIAogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVyUHJvdG90eXBlPiBtX2FycmF5
QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zNzgsNiArMzgzLDggQEAgcHVibGljOgogICAgIFN0cnVj
dHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByaXZhdGVOYW1lU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbWFwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1
cmUqIG1hcERhdGFTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcERhdGFTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZjM4ZmZmMTNkOWRmNWJkOTdmMWQzNGEwMmNmZTRmOTc5MDI5NmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIk1hcEluc3RhbmNlLmgiCisjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBDb25z
dHJ1Y3RvcikgfTsKKwordm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBNYXBQcm90b3R5cGUqIG1hcFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT52bSgpLCBtYXBQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05h
bWUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG1hcFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZt
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gVW50aWwg
d2UgaGF2ZSBpdGVyYXRvcnMgd2UgdGhyb3cgaWYgd2UndmUgYmVlbiBnaXZlbgorICAgIC8vIGFu
eSBhcmd1bWVudHMgdGhhdCBjb3VsZCByZXN1bHQgaW4gdXMgdGhyb3cuCisgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWFwIGNvbnN0cnVj
dG9yIGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMiKSkpOworICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMSkuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgV1RGOjpBU0NJSUxpdGVyYWwoIklu
dmFsaWQgY29tcGFyYXRvciBmdW5jdGlvbiIpKSkpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpOworICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tYXBT
dHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hcEluc3RhbmNlOjpjcmVh
dGUoZXhlYywgbWFwU3RydWN0dXJlKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgTWFwQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdE1hcDsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIE1hcENvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0TWFwOworICAgIHJldHVybiBDYWxsVHlw
ZUhvc3Q7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NWVjYjNlNDQ1MGIyZjBiMzkwOGQ2NWFmNTAzNjMxMGM5
NDdjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcENvbnN0cnVjdG9yX2gKKyNkZWZpbmUg
TWFwQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgTWFwUHJvdG90eXBlOworCitjbGFzcyBNYXBDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBNYXBDb25zdHJ1Y3RvciogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIE1hcFByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAg
ICBNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxNYXBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE1hcENvbnN0cnVjdG9yKGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIGZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXBDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBC
YXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqLCBNYXBQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30K
KworI2VuZGlmIC8vICFkZWZpbmVkKE1hcENvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YzNmYTBlYTk3NzlhNmQ0YzJk
OWFkZDE2ODUxMjZiNTBmZmI5Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBEYXRhLmNwcApAQCAtMCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisK
KyNpbmNsdWRlICJNYXBEYXRhLmgiCisKKyNpbmNsdWRlICJDb3BpZWRBbGxvY2F0b3IuaCIKKyNp
bmNsdWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwRGF0
YTo6c19pbmZvID0geyAiTWFwRGF0YSIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoTWFwRGF0YSkgfTsKKworZW51bSB7IE1pbmltdW1NYXBTaXplID0gMTYgfTsKKwor
TWFwRGF0YTo6TWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPm1hcERhdGFTdHJ1Y3R1cmUoKSkKKyAgICAsIG1f
Y2FwYWNpdHkoMCkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9kZWxldGVkQ291bnQoMCkKKyAg
ICAsIG1faXRlcmF0b3JDb3VudCgwKQorICAgICwgbV9lbnRyaWVzKDApCit7Cit9CisKK01hcERh
dGE6Oml0ZXJhdG9yIE1hcERhdGE6OmZpbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEtleVR5cGUg
a2V5KQoreworICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CisgICAgaWYgKGtleS52YWx1ZS5pc1N0
cmluZygpKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyhrZXkudmFsdWUpLT52
YWx1ZShjYWxsRnJhbWUpOworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0cmluZ0tleWVkVGFibGUu
ZmluZChzdHJpbmcuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9zdHJpbmdLZXllZFRh
YmxlLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7CisgICAgICAgIGxvY2F0
aW9uID0gaXRlci0+dmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV92
YWx1ZUtleWVkVGFibGUuZmluZChrZXkpOworICAgICAgICBpZiAoaXRlciA9PSBtX3ZhbHVlS2V5
ZWRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOworICAgICAgICBs
b2NhdGlvbiA9IGl0ZXItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gaXRlcmF0b3IoJm1fZW50
cmllc1tsb2NhdGlvbl0pOworfQorYm9vbCBNYXBEYXRhOjpjb250YWlucyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgS2V5VHlwZSBrZXkpCit7CisgICAgcmV0dXJuICFmaW5kKGNhbGxGcmFtZSwga2V5
KS5pc0VtcHR5KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleT4g
TWFwRGF0YTo6aXRlcmF0b3IgTWFwRGF0YTo6YWRkKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNYXAm
IG1hcCwgS2V5IGtleSwgS2V5VHlwZSBrZXlWYWx1ZSkKK3sKKyAgICB0eXBlbmFtZSBNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtYXAuYWRkKGtleSwgbV9zaXplKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXR1cm4gaXRlcmF0b3IoJm1fZW50cmllc1tyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlXSk7CisgICAgaWYgKCFlbnN1cmVTcGFjZUZvckFwcGVuZChjYWxsRnJhbWUp
KSB7CisgICAgICAgIG1hcC5yZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yKCk7CisgICAgfQorICAgIEFTU0VSVChtYXAuY29udGFpbnMoa2V5KSk7CisgICAg
RW50cnkqIGVudHJ5ID0gJm1fZW50cmllc1ttX3NpemUrK107CisgICAgbmV3IChlbnRyeSkgRW50
cnkoY2FsbEZyYW1lLT52bSgpLCB0aGlzLCBrZXlWYWx1ZS52YWx1ZSk7CisgICAgcmV0dXJuIGl0
ZXJhdG9yKGVudHJ5KTsKK30KKwordm9pZCBNYXBEYXRhOjpzZXQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEtleVR5cGUga2V5LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGl0ZXJhdG9yIGxvY2F0aW9u
ID0gYWRkKGNhbGxGcmFtZSwga2V5KTsKKyAgICBpZiAoIWxvY2F0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgbG9jYXRpb24udmFsdWUoKS5zZXQoY2FsbEZyYW1lLT52bSgpLCB0aGlzLCB2YWx1
ZSk7Cit9CisgICAgCitNYXBEYXRhOjppdGVyYXRvciBNYXBEYXRhOjphZGQoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEtleVR5cGUga2V5KQoreworICAgIGlmICgha2V5LnZhbHVlLmlzU3RyaW5nKCkp
CisgICAgICAgIHJldHVybiBhZGQoY2FsbEZyYW1lLCBtX3ZhbHVlS2V5ZWRUYWJsZSwga2V5LCBr
ZXkpOworCisgICAgU3RyaW5nIHN0cmluZyA9IGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNh
bGxGcmFtZSk7CisgICAgcmV0dXJuIGFkZChjYWxsRnJhbWUsIG1fc3RyaW5nS2V5ZWRUYWJsZSwg
c3RyaW5nLmltcGwoKSwga2V5KTsKK30KKworSlNWYWx1ZSBNYXBEYXRhOjpnZXQoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEtleVR5cGUga2V5KQoreworICAgIGlmIChpdGVyYXRvciBlbnRyeSA9IGZp
bmQoY2FsbEZyYW1lLCBrZXkpKQorICAgICAgICByZXR1cm4gZW50cnkudmFsdWUoKS5nZXQoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitib29sIE1hcERhdGE6OnJlbW92ZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgS2V5VHlwZSBrZXkpCit7CisgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsK
KyAgICBpZiAoa2V5LnZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9
IGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNhbGxGcmFtZSk7CisgICAgICAgIGF1dG8gaXRl
ciA9IG1fc3RyaW5nS2V5ZWRUYWJsZS5maW5kKHN0cmluZy5pbXBsKCkpOworICAgICAgICBpZiAo
aXRlciA9PSBtX3N0cmluZ0tleWVkVGFibGUuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGxvY2F0aW9uID0gaXRlci0+dmFsdWU7CisgICAgICAgIG1fc3RyaW5nS2V5
ZWRUYWJsZS5yZW1vdmUoaXRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0g
bV92YWx1ZUtleWVkVGFibGUuZmluZChrZXkpOworICAgICAgICBpZiAoaXRlciA9PSBtX3ZhbHVl
S2V5ZWRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbG9j
YXRpb24gPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgbV92YWx1ZUtleWVkVGFibGUucmVtb3ZlKGl0
ZXIpOworICAgIH0KKyAgICBtX2VudHJpZXNbbG9jYXRpb25dLmNsZWFyKCk7CisgICAgbV9kZWxl
dGVkQ291bnQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPE1hcERhdGE6OkNv
cHlNb2RlIG1vZGU+IHZvaWQgTWFwRGF0YTo6Y29weUFuZFBhY2tJZlBvc3NpYmxlKEVudHJ5KiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG5ld1NpemUpCit7CisgICAgc2l6ZV90IG5ld0VuZCA9IDA7Cisg
ICAgaWYgKG1vZGUgPT0gQ2FuUGFjaykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaV07
CisgICAgICAgICAgICBpZiAoIWVudHJ5LmtleSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgQVNTRVJUKG5ld0VuZCA8IG5ld1NpemUpOworICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uICsgbmV3RW5kLCAmZW50cnksIHNpemVvZihFbnRyeSkpOworICAgICAg
ICAgICAgbmV3RW5kKys7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKChtX3NpemUgLSBuZXdF
bmQpID09IG1fZGVsZXRlZENvdW50KTsKKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSAwOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdTaXplID49IG1fY2FwYWNpdHkpOworICAgICAg
ICBtZW1jcHkoZGVzdGluYXRpb24sIG1fZW50cmllcywgc2l6ZW9mKEVudHJ5KSAqIG1fc2l6ZSk7
CisgICAgICAgIG5ld0VuZCA9IG1fc2l6ZTsKKyAgICB9CisgICAgbV9jYXBhY2l0eSA9IG5ld1Np
emU7CisgICAgbV9zaXplID0gbmV3RW5kOworICAgIG1fZW50cmllcyA9IGRlc3RpbmF0aW9uOwor
Cit9CisKK0NoZWNrZWRCb29sZWFuIE1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5kKENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChtX2NhcGFjaXR5ID4gbV9zaXplKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHNpemVfdCByZXF1aXJlZFNpemUgPSBzdGQ6Om1heChtX2Nh
cGFjaXR5ICsgKG1fY2FwYWNpdHkgLyAyKSArIDEsIHN0YXRpY19jYXN0PHNpemVfdD4oTWluaW11
bU1hcFNpemUpKTsKKyAgICB2b2lkKiBuZXdTdG9yYWdlID0gMDsKKyAgICBpZiAoIWNhbGxGcmFt
ZS0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3JhZ2UodGhpcywgcmVxdWlyZWRTaXplICogc2l6ZW9m
KEVudHJ5KSwgJm5ld1N0b3JhZ2UpKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihj
YWxsRnJhbWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIERlZmVyR0MgZGVm
ZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKKyAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19j
YXN0PEVudHJ5Kj4obmV3U3RvcmFnZSk7CisgICAgaWYgKGNhblBhY2soKSkKKyAgICAgICAgY29w
eUFuZFBhY2tJZlBvc3NpYmxlPENhblBhY2s+KG5ld0VudHJpZXMsIHJlcXVpcmVkU2l6ZSk7Cisg
ICAgZWxzZQorICAgICAgICBjb3B5QW5kUGFja0lmUG9zc2libGU8Q2Fubm90UGFjaz4obmV3RW50
cmllcywgcmVxdWlyZWRTaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNYXBEYXRh
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKyAgICBNYXBEYXRhKiB0aGlz
T2JqZWN0ID0ganNDYXN0PE1hcERhdGEqPihjZWxsKTsKKyAgICBFbnRyeSogZW50cmllcyA9IHRo
aXNPYmplY3QtPm1fZW50cmllczsKKyAgICBpZiAoIWVudHJpZXMpCisgICAgICAgIHJldHVybjsK
KyAgICBzaXplX3Qgc2l6ZSA9IHRoaXNPYmplY3QtPm1fc2l6ZTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9kZWxldGVkQ291bnQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKKyAgICAgICAgICAgIGlmICghZW50cmllc1tpXS5rZXkoKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZlbnRyaWVzW2ldLmtl
eUZvckdDKCkpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmVudHJpZXNbaV0udmFsdWUo
KSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
JmVudHJpZXNbMF0ua2V5Rm9yR0MoKSwgc2l6ZSAqIChzaXplb2YoRW50cnkpIC8gc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpKTsKKworICAgIHZpc2l0b3IuY29weUxhdGVyKHRoaXNPYmpl
Y3QsIE1hcEJhY2tpbmdTdG9yZUNvcHlUb2tlbiwgZW50cmllcywgc2l6ZSk7Cit9CisKK3ZvaWQg
TWFwRGF0YTo6Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqIGNlbGwsIENvcHlWaXNpdG9yJiB2aXNp
dG9yLCBDb3B5VG9rZW4gdG9rZW4pCit7CisgICAgTWFwRGF0YSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxNYXBEYXRhKj4oY2VsbCk7CisgICAgaWYgKHRva2VuID09IE1hcEJhY2tpbmdTdG9yZUNvcHlU
b2tlbgorICAgICAgICAmJiB2aXNpdG9yLmNoZWNrSWZTaG91bGRDb3B5KHRoaXNPYmplY3QtPm1f
ZW50cmllcykpIHsKKyAgICAgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSA9IHRoaXNPYmplY3QtPm1f
Y2FwYWNpdHkgKiBzaXplb2YoRW50cnkpOworICAgICAgICB2b2lkKiBvbGRWZWN0b3IgPSB0aGlz
T2JqZWN0LT5tX2VudHJpZXM7CisgICAgICAgIHZvaWQqIG5ld1ZlY3RvciA9IHZpc2l0b3IuYWxs
b2NhdGVOZXdTcGFjZSh0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6ZW9mKEVudHJ5KSk7Cisg
ICAgICAgIEVudHJ5KiBuZXdFbnRyaWVzID0gc3RhdGljX2Nhc3Q8RW50cnkqPihuZXdWZWN0b3Ip
OworICAgICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGFjaygpKQorICAgICAgICAgICAgdGhpc09i
amVjdC0+Y29weUFuZFBhY2tJZlBvc3NpYmxlPENhblBhY2s+KG5ld0VudHJpZXMsIHJlcXVpcmVk
U2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvcHlBbmRQYWNr
SWZQb3NzaWJsZTxDYW5ub3RQYWNrPihuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgICAg
ICB2aXNpdG9yLmRpZENvcHkob2xkVmVjdG9yLCB0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6
ZW9mKEVudHJ5KSk7CisgICAgfQorICAgIEJhc2U6OmNvcHlCYWNraW5nU3RvcmUoY2VsbCwgdmlz
aXRvciwgdG9rZW4pOworfQorCit2b2lkIE1hcERhdGE6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIHN0YXRpY19jYXN0PE1hcERhdGEqPihjZWxsKS0+fk1hcERhdGEoKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNWQzOWE2
ODBmYzQ0YTk3YjRjZTQwNzRkNTVhM2RlNjM0OTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTAsMCArMSwyMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1hcERhdGFfaAorI2RlZmluZSBNYXBEYXRhX2gKKworI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIE1hcERhdGEgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgeworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRW50cnkgeworICAgICAg
ICBFbnRyeShWTSYgdm0sIE1hcERhdGEqIG93bmVyLCBKU1ZhbHVlIGtleSkKKyAgICAgICAgICAg
IDogbV9rZXkodm0sIG93bmVyLCBrZXkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB2
b2lkIGNsZWFyKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9rZXkuY2xlYXIoKTsKKyAgICAg
ICAgICAgIG1fdmFsdWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+JiBrZXlGb3JHQygpIHsgcmV0dXJuIG1fa2V5OyB9CisgICAgICAg
IGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7
IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFs
dWU7IH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+IG1fa2V5OworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92YWx1ZTsKKyAgICB9
OworCisgICAgc3RydWN0IGl0ZXJhdG9yIHsKKyAgICAgICAgZXhwbGljaXQgaXRlcmF0b3IoRW50
cnkqIGVudHJ5KQorICAgICAgICAgICAgOiBtX2VudHJ5KGVudHJ5KQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICBpdGVyYXRvcigpCisgICAgICAgICAgICA6IG1fZW50cnkoMCkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+
JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5LT5rZXkoKTsgfQorICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4mIHZhbHVlKCkgeyByZXR1cm4gbV9lbnRyeS0+dmFsdWUoKTsgfQorCisg
ICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKTsgfQorICAg
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzRW1wdHkoKTsg
fQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9lbnRyeTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgRW50cnkqIG1fZW50cnk7CisgICAgfTsKKworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0cnVjdCBFeHRl
cm5hbEl0ZXJhdG9yIHsKKyAgICAgICAgRXh0ZXJuYWxJdGVyYXRvcihNYXBEYXRhKiBtYXBEYXRh
KQorICAgICAgICAgICAgOiBtX21hcERhdGEobWFwRGF0YSkKKyAgICAgICAgICAgICwgbV9pbmRl
eCgwKQorICAgICAgICB7CisgICAgICAgICAgICBtX21hcERhdGEtPm1faXRlcmF0b3JDb3VudCsr
OworICAgICAgICB9CisgICAgICAgIH5FeHRlcm5hbEl0ZXJhdG9yKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9tYXBEYXRhLT5tX2l0ZXJhdG9yQ291bnQtLTsKKyAgICAgICAgfQorICAgICAg
ICBKU1ZhbHVlIGtleSgpIHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fbWFwRGF0YS0+bV9l
bnRyaWVzW21faW5kZXhdLmtleSgpLmdldCgpOyB9CisgICAgICAgIEpTVmFsdWUgdmFsdWUoKSB7
IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX21hcERhdGEtPm1fZW50cmllc1ttX2luZGV4XS52
YWx1ZSgpLmdldCgpOyB9CisgICAgICAgIHZvaWQgbmV4dCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgICAgICAgICBFbnRyeSogZW50cmllcyA9IG1fbWFw
RGF0YS0+bV9lbnRyaWVzOworICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9pbmRleCArIDE7
CisgICAgICAgICAgICBzaXplX3QgZW5kID0gbV9tYXBEYXRhLT5tX3NpemU7CisgICAgICAgICAg
ICB3aGlsZSAoaW5kZXggPCBlbmQgJiYgIWVudHJpZXNbaW5kZXhdLmtleSgpKQorICAgICAgICAg
ICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgICAgIH0K
KyAgICAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggPj0gbV9tYXBEYXRh
LT5tX3NpemU7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBNYXBEYXRhKiBtX21hcERhdGE7Cisg
ICAgICAgIHNpemVfdCBtX2luZGV4OworICAgIH07CisKKyAgICBzdHJ1Y3QgS2V5VHlwZSB7Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgS2V5VHlwZSgpIHt9CisgICAgICAgIEFMV0FZU19JTkxJTkUg
S2V5VHlwZShKU1ZhbHVlIHYpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh2LmlzRG91Ymxl
KCkpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgZCA9IHYuYXNEb3VibGUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNuYW4oZCkgfHwgKHNpZ25iaXQoZCkgJiYgZCA9PSAwKSkgeworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHY7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgaSA9IHN0YXRpY19jYXN0PGlu
dD4odi5hc0RvdWJsZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSB2KQorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IHY7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgdmFsdWUgPSB2OworICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEtleVR5cGUgZGVsZXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEtleVR5cGUgcmVz
dWx0OworICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgc2xvdCA9IDA7CisgICAgICAgICAgICBF
bmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90KTsKKyAg
ICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShzbG90KTsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yPT0oS2V5VHlwZSBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKG90aGVyLnZh
bHVlKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgIH07CisgICAgc3Rh
dGljIE1hcERhdGEqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgeworICAgICAgICBNYXBEYXRhKiBtYXBEYXRhID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8TWFwRGF0YT4odm0uaGVhcCkpIE1hcERhdGEodm0sIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIG1hcERhdGEtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIG1hcERhdGE7
CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCisgICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwgS2V5VHlwZSBrZXksIEpTVmFsdWUgdmFsdWUp
OworICAgIEpTVmFsdWUgZ2V0KENhbGxGcmFtZSosIEtleVR5cGUga2V5KTsKKyAgICBib29sIHJl
bW92ZShDYWxsRnJhbWUqLCBLZXlUeXBlIGtleSk7CisgICAgYm9vbCBjb250YWlucyhDYWxsRnJh
bWUqLCBLZXlUeXBlKTsKKyAgICBzaXplX3Qgc2l6ZShDYWxsRnJhbWUqKSBjb25zdCB7IHJldHVy
biBtX3NpemUgLSBtX2RlbGV0ZWRDb3VudDsgfQorCisgICAgRXh0ZXJuYWxJdGVyYXRvciBnZXRJ
dGVyYXRvcigpIHsgcmV0dXJuIEV4dGVybmFsSXRlcmF0b3IodGhpcyk7IH0KKworICAgIHZvaWQg
Y2xlYXIoKQorICAgIHsKKyAgICAgICAgbV92YWx1ZUtleWVkVGFibGUuY2xlYXIoKTsKKyAgICAg
ICAgbV9zdHJpbmdLZXllZFRhYmxlLmNsZWFyKCk7CisgICAgICAgIG1fY2FwYWNpdHkgPSAwOwor
ICAgICAgICBtX3NpemUgPSAwOworICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisgICAgICAg
IG1fZW50cmllcyA9IDA7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgor
ICAgIHN0cnVjdCBLZXlIYXNoIHsKKyAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50NjRf
dCBoYXNoKEtleVR5cGUga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpp
bnRIYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90PihKU1ZhbHVlOjplbmNvZGUoa2V5LnZhbHVlKSkp
OworICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWwoS2V5
VHlwZSBhLCBLZXlUeXBlIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYS52YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGIudmFsdWUpOworICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworICAgIH07CisgICAgc3RydWN0IEtleVRyYWl0cyA6IFdURjo6U2ltcGxlQ2xh
c3NIYXNoVHJhaXRzPEtleVR5cGU+IHsKKyAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoS2V5VHlwZSYgc2xvdCkgeyBzbG90ID0gS2V5VHlwZTo6
ZGVsZXRlZCgpOyB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoS2V5VHlwZSBrZXkpIHsgcmV0dXJuIEtleUhhc2g6OmVxdWFsKGtleS52YWx1ZSwgS2V5
VHlwZTo6ZGVsZXRlZCgpKTsgfQorCisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEtleVR5
cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEtleVR5cGUoKTsgfQorICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICB9OworICAgIHR5cGVkZWYgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+IEluZGV4VHJhaXRzOworCisg
ICAgTWFwRGF0YShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENv
cHlWaXNpdG9yJiwgQ29weVRva2VuKTsKKyAgICBBTFdBWVNfSU5MSU5FIGl0ZXJhdG9yIGZpbmQo
Q2FsbEZyYW1lKiwgS2V5VHlwZSBrZXkpOworICAgIENoZWNrZWRCb29sZWFuIGVuc3VyZVNwYWNl
Rm9yQXBwZW5kKENhbGxGcmFtZSopOworICAgIGVudW0gQ29weU1vZGUge0NhblBhY2ssIENhbm5v
dFBhY2t9OworICAgIHRlbXBsYXRlIDxDb3B5TW9kZT4gQUxXQVlTX0lOTElORSB2b2lkIGNvcHlB
bmRQYWNrSWZQb3NzaWJsZShFbnRyeSogZGVzdGluYXRpb24sIHNpemVfdCBuZXdTaXplKTsKKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuUGFjaygpIGNvbnN0IHsgcmV0dXJuICFtX2l0ZXJhdG9y
Q291bnQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUgaXRlcmF0b3IgYWRkKENhbGxGcmFtZSosIEtl
eVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleT4gQUxXQVlT
X0lOTElORSBpdGVyYXRvciBhZGQoQ2FsbEZyYW1lKiwgTWFwJiwgS2V5LCBLZXlUeXBlKTsKKwor
ICAgIEhhc2hNYXA8S2V5VHlwZSwgc2l6ZV90LCBLZXlIYXNoLCBLZXlUcmFpdHMsIEluZGV4VHJh
aXRzPiBtX3ZhbHVlS2V5ZWRUYWJsZTsKKyAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBzaXplX3Q+
IG1fc3RyaW5nS2V5ZWRUYWJsZTsKKyAgICBzaXplX3QgbV9jYXBhY2l0eTsKKyAgICBzaXplX3Qg
bV9zaXplOworICAgIHNpemVfdCBtX2RlbGV0ZWRDb3VudDsKKyAgICBzaXplX3QgbV9pdGVyYXRv
ckNvdW50OworICAgIEVudHJ5KiBtX2VudHJpZXM7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Cit9OworCit9CisKKyNlbmRpZiAvKiAhZGVmaW5lZChNYXBEYXRhX2gpICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTJiMzgwODdiZDk0YmM4NjBkYjIzN2RjY2I4ZmMxYTAyNGViMGFmMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KworI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBJbnN0YW5jZS5oIgorI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NvbnN0
IENsYXNzSW5mbyBNYXBJbnN0YW5jZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBJbnN0YW5jZSkgfTsKKwordm9pZCBNYXBJbnN0
YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCx2aXNpdG9yKTsKKyAgICBNYXBJbnN0YW5j
ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxNYXBJbnN0YW5jZSo+KGNlbGwpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGEpOworfQorCit2b2lkIE1hcEluc3RhbmNlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1fbWFwRGF0YS5zZXQodm0sIHRoaXMs
IE1hcERhdGE6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7Cit9CisKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZjZjQxOTcx
NDJiYzk1NmU1MjZjZTAwMTQyZjYxNmFiMjExOTkyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFw
SW5zdGFuY2VfaAorI2RlZmluZSBNYXBJbnN0YW5jZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFwRGF0YTsKKworY2xhc3MgTWFwSW5zdGFu
Y2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTWFwSW5zdGFu
Y2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
TWFwSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwSW5z
dGFuY2U+KHZtLmhlYXApKSBNYXBJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHN0YXRpYyBNYXBJbnN0YW5jZSog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSk7CisgICAgfQorCisgICAg
TWFwRGF0YSogbWFwRGF0YSgpIHsgcmV0dXJuIG1fbWFwRGF0YS5nZXQoKTsgfQorCitwcml2YXRl
OgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgTWFwSW5zdGFuY2Uo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPE1hcERhdGE+IG1fbWFwRGF0YTsKK307CisK
K30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcEluc3RhbmNlX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTlmYjMxZjk1
NzgyMWM1M2M4OWQ2MGMzMjVhOWI3ZTI4NjE5MWM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDE4MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQ2Fj
aGVkQ2FsbC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNp
bmNsdWRlICJNYXBJbnN0YW5jZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShNYXBQcm90b3R5cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRm9y
RWFjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByb3RvRnVuY0dldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShFeGVjU3RhdGUqKTsK
KyAgICAKK3ZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKKworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIsIG1hcFByb3RvRnVu
Y0NsZWFyLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5kZWxldGVLZXl3b3JkLCBtYXBQcm90b0Z1bmNEZWxldGUsIERvbnRFbnVtLCAxKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmZvckVhY2gsIG1hcFBy
b3RvRnVuY0ZvckVhY2gsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7CisgICAg
SlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIG1hcFByb3RvRnVuY0hh
cywgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+c2V0LCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKworICAgIEdldHRlclNldHRl
ciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDAsIHZt
LnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOworICAgIGFj
Y2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZnVuY3Rpb24pOworICAgIHB1dERpcmVjdEFj
Y2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIGFjY2Vzc29yLCBEb250RW51bSB8
IEFjY2Vzc29yKTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgTWFwRGF0YSogZ2V0TWFwRGF0
YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0Vycm9yKGNhbGxGcmFtZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgTWFwSW5zdGFuY2UqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8TWFwSW5z
dGFuY2UqPih0aGlzVmFsdWUpOworICAgIGlmICghbWFwKSB7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24t
TWFwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBtYXAt
Pm1hcERhdGEoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1
bmNDbGVhcihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0
TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0
YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBk
YXRhLT5jbGVhcigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGRhdGEtPnJlbW92ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jRm9yRWFjaChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRh
ID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBKU1ZhbHVlIGNhbGxCYWNrID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxC
YWNrLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6
QVNDSUlMaXRlcmFsKCJNYXAucHJvdG90eXBlLmZvckVhY2ggY2FsbGVkIHdpdGhvdXQgY2FsbGJh
Y2siKSkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
KyAgICBNYXBEYXRhOjpFeHRlcm5hbEl0ZXJhdG9yIGl0ZXJhdG9yID0gZGF0YS0+Z2V0SXRlcmF0
b3IoKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUykgeworICAgICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbEJhY2spOworICAgICAgICBD
YWNoZWRDYWxsIGNhY2hlZENhbGwoY2FsbEZyYW1lLCBmdW5jdGlvbiwgMik7CisgICAgICAgIAor
ICAgICAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGNhY2hlZENh
bGwuc2V0VGhpcyh0aGlzVmFsdWUpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgwLCBpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1l
bnQoMSwgaXRlcmF0b3Iua2V5KCkpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5jYWxsKCk7Cisg
ICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgICAgICAgICBpdGVyYXRvci5uZXh0KCk7CisgICAgICAg
IH0KKworICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewor
ICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGl0ZXJhdG9yLnZhbHVlKCkpOworICAgICAgICAgICAgYXJncy5hcHBlbmQoaXRlcmF0
b3Iua2V5KCkpOworICAgICAgICAgICAgSlNDOjpjYWxsKGNhbGxGcmFtZSwgY2FsbEJhY2ssIGNh
bGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgICAgIGlmIChjYWxs
RnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsK
KyAgICAgICAgICAgIGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGRhdGEtPmdldChjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1
bHQgPSBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZGF0YS0+Y29udGFpbnMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY1NldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0
TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0
YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBk
YXRhLT5zZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1Np
emUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERh
dGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkYXRhLT5zaXplKGNhbGxGcmFtZSkpKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNmYwYWI2YTU2MzlhNzFjY2EyNjBlODRlOGNhOGJmYTFkNGMyYzlhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWFwUHJvdG90eXBlX2gKKyNkZWZpbmUgTWFwUHJvdG90eXBlX2gKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBQcm90b3R5
cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgTWFwUHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIE1hcFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTWFwUHJv
dG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRp
b24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFwUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZShleGVjLT52bSgpLCBz
dHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNYXBQ
cm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5YmIwZDRj
YmIyOTI1NWFmYTkwYWM3NjljYjBmMWFmMzFiNWEzNzdiLi42YWFmMjczNTAxNDM4NGZhNDFhMDg3
YTQzYjZmZDg1YzMwNjcyNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMZXhl
ci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2Fj
aGUuaCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtbWFwLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLW1hcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NDdlMTI3ODI4
MGU3NWM3MWVlZTc5ZDA3YWM1NDAwMDk3MTg2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL2Jhc2ljLW1hcC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9iYXNpYy1tYXAuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
YmFzaWMtbWFwLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtbWFw
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZmZDJjZWY0NTA3YTcyMjg0ZWNhZjMwZDIyNzA5OGRjMThkMjZlZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNp
Yy1tYXAuanMKQEAgLTAsMCArMSw2NSBAQAorZGVzY3JpcHRpb24oIlRlc3RzIGJhc2ljIGNvcnJl
Y3RuZXNzIG9mIEVTIE1hcCBvYmplY3QiKTsKKworLy8gQ3VycmVudGx5IHdlIGRvbid0IHN1cHBv
cnQgaXRlcmF0b3JzLCBzbyB3ZSB0aHJvdworLy8gb24gYW55IG5vbi10aHJvd2luZyBwYXJhbWV0
ZXJzCitzaG91bGRCZUZhbHNlKCJNYXAgaW5zdGFuY2VvZiBNYXAiKTsKK3Nob3VsZEJlRmFsc2Uo
Ik1hcC5wcm90b3R5cGUgaW5zdGFuY2VvZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcCgp
IGluc3RhbmNlb2YgTWFwIik7CitzaG91bGRCZVRydWUoIm5ldyBNYXAobnVsbCkgaW5zdGFuY2Vv
ZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcCh1bmRlZmluZWQpIGluc3RhbmNlb2YgTWFw
Iik7CitzaG91bGRCZVRydWUoIm5ldyBNYXAodW5kZWZpbmVkLCB1bmRlZmluZWQpIGluc3RhbmNl
b2YgTWFwIik7CitzaG91bGRCZVRydWUoIm5ldyBNYXAobnVsbCwgdW5kZWZpbmVkKSBpbnN0YW5j
ZW9mIE1hcCIpOworCitzaG91bGRUaHJvdygibmV3IE1hcCgxKSIpOworc2hvdWxkVGhyb3coIm5l
dyBNYXAodHJ1ZSkiKTsKK3Nob3VsZFRocm93KCJuZXcgTWFwKFtdKSIpOworc2hvdWxkVGhyb3co
Im5ldyBNYXAoe30pIik7CitzaG91bGRUaHJvdygibmV3IE1hcCh1bmRlZmluZWQsIG51bGwpIik7
CitzaG91bGRUaHJvdygibmV3IE1hcCh1bmRlZmluZWQsIHt9KSIpOworCit2YXIgbWFwID0gbmV3
IE1hcDsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5oYXNPd25Qcm9wZXJ0eShtYXAsICdzaXplJyki
KQorc2hvdWxkQmVUcnVlKCJPYmplY3QuaGFzT3duUHJvcGVydHkoTWFwLnByb3RvdHlwZSwgJ3Np
emUnKSIpCitzaG91bGRUaHJvdygiTWFwLnByb3RvdHlwZS5zaXplIikKK3Nob3VsZEJlKCJtYXAu
c2l6ZSIsICIwIikKK3Nob3VsZEJlVW5kZWZpbmVkKCJtYXAuc2V0KC0wLCAxKSIpCitzaG91bGRC
ZVVuZGVmaW5lZCgibWFwLnNldCgwLCAyKSIpCitzaG91bGRCZVVuZGVmaW5lZCgibWFwLnNldChJ
bmZpbml0eSwgMykiKQorc2hvdWxkQmVVbmRlZmluZWQoIm1hcC5zZXQoLUluZmluaXR5LCA0KSIp
CitzaG91bGRCZVVuZGVmaW5lZCgibWFwLnNldChOYU4sIDUpIikKK3Nob3VsZEJlVW5kZWZpbmVk
KCJtYXAuc2V0KCcwJywgNikiKQorc2hvdWxkQmVVbmRlZmluZWQoIm1hcC5zZXQoMC4xLCA3KSIp
CitzaG91bGRCZSgibWFwLnNpemUiLCAiNyIpCitzaG91bGRCZSgibWFwLmdldCgtMCkiLCAiMSIp
CitzaG91bGRCZSgibWFwLmdldCgwKSIsICIyIikKK3Nob3VsZEJlKCJtYXAuZ2V0KEluZmluaXR5
KSIsICIzIikKK3Nob3VsZEJlKCJtYXAuZ2V0KC1JbmZpbml0eSkiLCAiNCIpCitzaG91bGRCZSgi
bWFwLmdldChOYU4pIiwgIjUiKQorc2hvdWxkQmUoIm1hcC5nZXQoJzAnKSIsICI2IikKK3Nob3Vs
ZEJlKCJtYXAuZ2V0KDAuMSkiLCAiNyIpCisKK3Nob3VsZEJlVHJ1ZSgibWFwLmhhcygtMCkiKQor
c2hvdWxkQmVUcnVlKCJtYXAuaGFzKDApIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmhhcyhJbmZpbml0
eSkiKQorc2hvdWxkQmVUcnVlKCJtYXAuaGFzKC1JbmZpbml0eSkiKQorc2hvdWxkQmVUcnVlKCJt
YXAuaGFzKE5hTikiKQorc2hvdWxkQmVUcnVlKCJtYXAuaGFzKCcwJykiKQorc2hvdWxkQmVUcnVl
KCJtYXAuaGFzKDAuMSkiKQorCitzaG91bGRCZVRydWUoIm1hcC5kZWxldGUoLTApIikKK3Nob3Vs
ZEJlVHJ1ZSgibWFwLmRlbGV0ZSgwKSIpCitzaG91bGRCZVRydWUoIm1hcC5kZWxldGUoSW5maW5p
dHkpIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgtSW5maW5pdHkpIikKK3Nob3VsZEJlVHJ1
ZSgibWFwLmRlbGV0ZShOYU4pIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgnMCcpIikKK3No
b3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgwLjEpIikKKworc2hvdWxkQmVGYWxzZSgibWFwLmRlbGV0
ZSgtMCkiKQorc2hvdWxkQmVGYWxzZSgibWFwLmRlbGV0ZSgwKSIpCitzaG91bGRCZUZhbHNlKCJt
YXAuZGVsZXRlKEluZmluaXR5KSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKC1JbmZpbml0
eSkiKQorc2hvdWxkQmVGYWxzZSgibWFwLmRlbGV0ZShOYU4pIikKK3Nob3VsZEJlRmFsc2UoIm1h
cC5kZWxldGUoJzAnKSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKDAuMSkiKQorCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209998</attachid>
            <date>2013-08-29 10:27:11 -0700</date>
            <delta_ts>2013-08-29 16:18:20 -0700</delta_ts>
            <desc>Has full API spec and correctness</desc>
            <filename>bug-120333-20130829102716.patch</filename>
            <type>text/plain</type>
            <size>65604</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDg0NWY3OTYxZTgzYmFlMThiZDViYzZkMWM2NjQwNGNiMGU2NGFlLi5mOGM5MGNjMzAxNTc2NGYz
ZmE3Zjc3ZjVlNDliZGUzMzk4N2I5Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOC0yOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBFUzYg
TWFwIHR5cGUgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpNYXBDb25zdHJ1Y3Rvcjo6TWFwQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmZp
bmQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRh
OjpnZXQpOgorICAgICAgICAoSlNDOjpNYXBEYXRhOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcERh
dGE6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNvbnRhaW5zKToK
KyAgICAgICAgKEpTQzo6TWFwRGF0YTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcERhdGE6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6TWFwRGF0YTo6TWFwRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9NYXBJbnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9NYXBJbnN0YW5jZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok1hcEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBJbnN0YW5jZTo6bWFwRGF0
YSk6CisgICAgICAgIChKU0M6Ok1hcEluc3RhbmNlOjpNYXBJbnN0YW5jZSk6CisgICAgICAgIChK
U0M6Ok1hcEluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNDbGVhcik6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0RlbGV0ZSk6CisgICAg
ICAgIChKU0M6Om1hcFByb3RvRnVuY0ZvckVhY2gpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1
bmNHZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpt
YXBQcm90b0Z1bmNTZXQpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNTaXplKToKKyAgICAg
ICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6TWFwUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvbW96aWxsYS9hY3R1YWwuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBKU0Mgd2l0aCBGVEwgSklUIGVu
YWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmI2ZWEzZTg3YTNjOTFjOWVi
NTk2MGUwMjQzNjBjZDE1Nzg4ZmFkNS4uZmFjZWVkOTdjZTEwMTVmNzExMzVkYjk2ZTkxMTgzNzc1
ZWZlMTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNCw2ICs4MDQsMTIg
QEAKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDEx
MUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtl
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzAwODczQTE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5o
ICovOyB9OworCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovOyB9OworCQlBNzAwODczRTE3Q0JF
OEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90
eXBlLmggKi87IH07CisJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0YW5jZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODcz
RjE3Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuY3BwICovOyB9OworCQlBNzAwODc0MjE3
Q0JFOEVCMDBDM0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBNYXBJbnN0
YW5jZS5oICovOyB9OwogCQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0
NDdFOTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwNDQ3RUQxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAg
Ki87IH07CiAJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDQ3RUMxN0EwQkQ3
MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg2Myw2ICs4NjksOCBAQAogCQlBNzdGMTgyNTE2NDE5MkM3
MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRB
MjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNU
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NzExQjk4QjhEMDA2
NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3ODUwN0Q2MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUwN0Q0
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTc4NTA3RDcxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi87IH07
CiAJCUE3ODg1M0Y5MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y3
MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJ
QTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2
MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc2QzE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCAqLzsgfTsKQEAgLTE5NzUsNiArMTk4MywxMiBAQAogCQlBMTcxMkIzQTExQzdC
MjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTcwMDg3M0MxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIE1hcEluc3RhbmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcEluc3RhbmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcEluc3Rh
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0N0U5MTdBMEJENDYwMEY1
ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3BlcmFuZHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0
N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEdW1wQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAzMSw2ICsyMDQ1LDggQEAKIAkJQTc3RjE4MUYxNjQwODhCMjAw
NjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdGMTgy
MDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdG
MTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFy
c2VyTW9kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDQxN0NCQzZG
RDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3ODUwN0Q1
MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4ODUzRjcx
Nzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwOyBw
YXRoID0gZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzc3LDkgKzIzOTMsOSBAQAogCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8s
CiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQkwRkY5MjJDRjE0
RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAotCQkJCTkzMkY1
QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJ
MTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNF
OEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAgKi8sCkBAIC0zMTc5LDYgKzMxOTUsOCBAQAogCQkJCUE3RTJFQTY5MEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8sCiAJCQkJRjY5MkE4NjgwMjU1NTk3
RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCiAJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3
IC8qIExvb2t1cC5oICovLAorCQkJCUE3ODUwN0Q0MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRh
LmNwcCAqLywKKwkJCQlBNzg1MDdENTE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oICovLAog
CQkJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovLAogCQkJCUY2
OTJBODZBMDI1NTU5N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg2
QjAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5oICovLApAQCAtMzI5NSw2ICszMzEzLDEy
IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3
NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAorCQkJCUE3MDA4NzM3MTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTcwMDg3MzgxN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTcwMDg3M0IxN0NCRThE
MzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTcwMDg3M0MxN0NCRThEMzAw
QzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovLAorCQkJCUE3MDA4NzNGMTdDQkU4RUIwMEMzRTY0
MyAvKiBNYXBJbnN0YW5jZS5jcHAgKi8sCisJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IE1hcEluc3RhbmNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzg0NiwxMCArMzg3MCwxMiBAQAogCQkJCUE3M0UxMzMxMTc5
NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVz
aXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODczRTE3Q0JFOEQzMDBD
M0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlGRiAvKiBERkdEaXNh
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUQzMTU0RkI0RjAwMDk4M0U3MiAv
KiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODc0MjE3Q0JFOEVCMDBD
M0U2NDMgLyogTWFwSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENC
QjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMzk4MSw2ICs0MDA3LDcgQEAKIAkJCQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEw
OEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FF
MTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21p
bmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FF
M0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQx
NzEsNiArNDE5OCw3IEBACiAJCQkJODYwMTYxRTQwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAg
LyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU2MEYz
QTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTc4NTA3RDcxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MkQ2RjA5MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJs
b2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTQzMDAsMTIgKzQzMjgsMTIgQEAKIAkJCQlCQ0NG
MEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8q
IFRvTmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNE
MDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFE
MTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU3
MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2
ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5
IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA2MTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA4MTdC
NkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC00OTgzLDYgKzUwMTEsNyBAQAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0E0
QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAwOCw2ICs1MDM3LDcg
QEAKIAkJCQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyogT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyog
UGFyc2VyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RkM4QzMxNEUxQjVGRTAwRDUy
QUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTUwMzcsNiArNTA2Nyw3IEBACiAJCQkJMTQyODA4NDExMDdFQzA5MzAwMTNFN0Iy
IC8qIFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY0MkM1MTAxNTFDMDZB
OTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
NzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODQyMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0
Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdC
MiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MDUzLDYgKzUwODQsNyBA
QAogCQkJCTBGNTU0MUIxMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUVBRjExNzk4N0FCNjAwMjk5REIyIC8qIFN0
YWNrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwMDg3NDExN0NCRThFQjAwQzNF
NjQzIC8qIE1hcEluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MzBCNjEzMTI1MDA2
OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQ2OURFQjEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ09iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlUb2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmgKaW5k
ZXggYmM4YTEyYzVhYTczOTUyNWQ5OTY1MjkzMmQxYzllMzNjNGFhOGFjZi4uMzVlMGU2N2U2ZTkz
Y2YyNDZiYWEwZTY4ZWRiOTM3NWNmY2QzMzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29weVRva2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVRva2VuLmgKQEAgLTMwLDcgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQ29w
eVRva2VuIHsKICAgICBCdXR0ZXJmbHlDb3B5VG9rZW4sCi0gICAgVHlwZWRBcnJheVZlY3RvckNv
cHlUb2tlbgorICAgIFR5cGVkQXJyYXlWZWN0b3JDb3B5VG9rZW4sCisgICAgTWFwQmFja2luZ1N0
b3JlQ29weVRva2VuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDZmZjk4NzdhMzk3
OWFhNDBkOTNlMmM1MWI0MDM0YmM5Zjk2YzkxZjIuLjk0N2Y2ODI2NDc2OTJhMTc2ZDg2OTM1NDA0
NzdiYmRlMjQ1NmY0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTM2LDcgKzEzNiwxMiBAQAogICAgIG1hY3JvKHZhbHVl
KSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3Jv
KHdyaXRhYmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaGFzKSBcCisgICAg
bWFjcm8oZm9yRWFjaCkgXAorICAgIG1hY3JvKGNsZWFyKSBcCisgICAgbWFjcm8oc2l6ZSkgXAor
ICAgIG1hY3JvKE1hcCkKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZ
V09SRChtYWNybykgXAogICAgIG1hY3JvKG51bGwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMmJkZmRjYzVhODZiYzdhNzI2
YWIyZWQzZDk2NzU1ODIyN2I4NjQyLi4xMjdlMjAwMjU5ODA0NjQ2YzJmNmU2MTc0OTExYzdiNzBl
MzZhMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC03OSw2ICs3OSwxMCBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAj
aW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRl
ICJNYXBDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBJ
bnN0YW5jZS5oIgorI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1hdGhPYmpl
Y3QuaCIKICNpbmNsdWRlICJOYW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFu
Y2UuaCIKQEAgLTMxMSw3ICszMTUsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMt
PnZtKCksIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX3Byb21p
c2VDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJh
Y2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSk7CiAgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVj
LT52bSgpLCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgCisKKyAg
ICBtX21hcERhdGFTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIE1hcERhdGE6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBqc051bGwoKSkpOworICAgIG1fbWFwUHJvdG90
eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlz
LCBNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBtX21hcFN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgTWFwSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX21h
cFByb3RvdHlwZS5nZXQoKSkpOworCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwq
IG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlz
LCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CkBAIC0z
MjMsNiArMzMxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBEYXRlQ29uc3RydWN0b3I6OmNyZWF0
ZShleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9kYXRlUHJvdG90eXBlLmdldCgp
KTsKICAgICBKU0NlbGwqIHByb21pc2VDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZUNvbnN0cnVjdG9y
OjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNl
UHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
ID0gSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJv
bWlzZVJlc29sdmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUu
Z2V0KCkpOworICAgIEpTQ2VsbCogbWFwQ29uc3RydWN0b3IgPSBNYXBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIE1hcENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fbWFwUHJvdG90eXBlLmdldCgp
KTsKIAogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4
cENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMzQ4LDYgKzM1Nyw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1fZXJyb3JQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7
CiAgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwogICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9t
YXBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
IAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0zNjYsNiArMzc2
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLlVSSUVycm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuUHJvbWlzZSwgcHJvbWlzZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlBy
b21pc2VSZXNvbHZlciwgcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuTWFwLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rp
b24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAx
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKQEAgLTYyMSw2
ICs2MzIsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbWFwRGF0YVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbWFwU3RydWN0dXJlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmMmQ2NzM4ODMzNTFhNmI4OGQyM2Fh
NGQ2ZGY4YTY0NWU0ODk1ZjU1Li40Yjg3ZTEwNWFlNjc4ODJjM2VjODk4Mjk5ZWI4Y2NhY2MyZTZm
YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3MgSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworY2xhc3MgTWFwUHJvdG90eXBlOwogY2xhc3MgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZTsKQEAgLTE1MCw2ICsxNTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEVycm9y
UHJvdG90eXBlPiBtX2Vycm9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQ
cm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGU+IG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOworICAgIFdyaXRl
QmFycmllcjxNYXBQcm90b3R5cGU+IG1fbWFwUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKQEAgLTE4OCw2ICsxOTAsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlQ2FsbGJh
Y2tTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlV3JhcHBl
ckNhbGxiYWNrU3RydWN0dXJlOwogCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBE
YXRhU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwU3RydWN0dXJl
OworICAgIAogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVyUHJvdG90eXBlPiBtX2FycmF5
QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zNzgsNiArMzgzLDggQEAgcHVibGljOgogICAgIFN0cnVj
dHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByaXZhdGVOYW1lU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbWFwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1
cmUqIG1hcERhdGFTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcERhdGFTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZjM4ZmZmMTNkOWRmNWJkOTdmMWQzNGEwMmNmZTRmOTc5MDI5NmM1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIk1hcEluc3RhbmNlLmgiCisjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBDb25z
dHJ1Y3RvcikgfTsKKwordm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBNYXBQcm90b3R5cGUqIG1hcFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT52bSgpLCBtYXBQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05h
bWUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG1hcFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZt
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gVW50aWwg
d2UgaGF2ZSBpdGVyYXRvcnMgd2UgdGhyb3cgaWYgd2UndmUgYmVlbiBnaXZlbgorICAgIC8vIGFu
eSBhcmd1bWVudHMgdGhhdCBjb3VsZCByZXN1bHQgaW4gdXMgdGhyb3cuCisgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWFwIGNvbnN0cnVj
dG9yIGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMiKSkpOworICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMSkuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgV1RGOjpBU0NJSUxpdGVyYWwoIklu
dmFsaWQgY29tcGFyYXRvciBmdW5jdGlvbiIpKSkpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpOworICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tYXBT
dHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hcEluc3RhbmNlOjpjcmVh
dGUoZXhlYywgbWFwU3RydWN0dXJlKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgTWFwQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdE1hcDsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIE1hcENvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0TWFwOworICAgIHJldHVybiBDYWxsVHlw
ZUhvc3Q7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NWVjYjNlNDQ1MGIyZjBiMzkwOGQ2NWFmNTAzNjMxMGM5
NDdjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcENvbnN0cnVjdG9yX2gKKyNkZWZpbmUg
TWFwQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgTWFwUHJvdG90eXBlOworCitjbGFzcyBNYXBDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBNYXBDb25zdHJ1Y3RvciogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIE1hcFByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAg
ICBNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxNYXBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE1hcENvbnN0cnVjdG9yKGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIGZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXBDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBC
YXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqLCBNYXBQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30K
KworI2VuZGlmIC8vICFkZWZpbmVkKE1hcENvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YzNmYTBlYTk3NzlhNmQ0YzJk
OWFkZDE2ODUxMjZiNTBmZmI5Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBEYXRhLmNwcApAQCAtMCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisK
KyNpbmNsdWRlICJNYXBEYXRhLmgiCisKKyNpbmNsdWRlICJDb3BpZWRBbGxvY2F0b3IuaCIKKyNp
bmNsdWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwRGF0
YTo6c19pbmZvID0geyAiTWFwRGF0YSIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoTWFwRGF0YSkgfTsKKworZW51bSB7IE1pbmltdW1NYXBTaXplID0gMTYgfTsKKwor
TWFwRGF0YTo6TWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPm1hcERhdGFTdHJ1Y3R1cmUoKSkKKyAgICAsIG1f
Y2FwYWNpdHkoMCkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9kZWxldGVkQ291bnQoMCkKKyAg
ICAsIG1faXRlcmF0b3JDb3VudCgwKQorICAgICwgbV9lbnRyaWVzKDApCit7Cit9CisKK01hcERh
dGE6Oml0ZXJhdG9yIE1hcERhdGE6OmZpbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEtleVR5cGUg
a2V5KQoreworICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CisgICAgaWYgKGtleS52YWx1ZS5pc1N0
cmluZygpKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyhrZXkudmFsdWUpLT52
YWx1ZShjYWxsRnJhbWUpOworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0cmluZ0tleWVkVGFibGUu
ZmluZChzdHJpbmcuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9zdHJpbmdLZXllZFRh
YmxlLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7CisgICAgICAgIGxvY2F0
aW9uID0gaXRlci0+dmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV92
YWx1ZUtleWVkVGFibGUuZmluZChrZXkpOworICAgICAgICBpZiAoaXRlciA9PSBtX3ZhbHVlS2V5
ZWRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOworICAgICAgICBs
b2NhdGlvbiA9IGl0ZXItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gaXRlcmF0b3IoJm1fZW50
cmllc1tsb2NhdGlvbl0pOworfQorYm9vbCBNYXBEYXRhOjpjb250YWlucyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgS2V5VHlwZSBrZXkpCit7CisgICAgcmV0dXJuICFmaW5kKGNhbGxGcmFtZSwga2V5
KS5pc0VtcHR5KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleT4g
TWFwRGF0YTo6aXRlcmF0b3IgTWFwRGF0YTo6YWRkKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNYXAm
IG1hcCwgS2V5IGtleSwgS2V5VHlwZSBrZXlWYWx1ZSkKK3sKKyAgICB0eXBlbmFtZSBNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtYXAuYWRkKGtleSwgbV9zaXplKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXR1cm4gaXRlcmF0b3IoJm1fZW50cmllc1tyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlXSk7CisgICAgaWYgKCFlbnN1cmVTcGFjZUZvckFwcGVuZChjYWxsRnJhbWUp
KSB7CisgICAgICAgIG1hcC5yZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yKCk7CisgICAgfQorICAgIEFTU0VSVChtYXAuY29udGFpbnMoa2V5KSk7CisgICAg
RW50cnkqIGVudHJ5ID0gJm1fZW50cmllc1ttX3NpemUrK107CisgICAgbmV3IChlbnRyeSkgRW50
cnkoY2FsbEZyYW1lLT52bSgpLCB0aGlzLCBrZXlWYWx1ZS52YWx1ZSk7CisgICAgcmV0dXJuIGl0
ZXJhdG9yKGVudHJ5KTsKK30KKwordm9pZCBNYXBEYXRhOjpzZXQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEtleVR5cGUga2V5LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGl0ZXJhdG9yIGxvY2F0aW9u
ID0gYWRkKGNhbGxGcmFtZSwga2V5KTsKKyAgICBpZiAoIWxvY2F0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgbG9jYXRpb24udmFsdWUoKS5zZXQoY2FsbEZyYW1lLT52bSgpLCB0aGlzLCB2YWx1
ZSk7Cit9CisgICAgCitNYXBEYXRhOjppdGVyYXRvciBNYXBEYXRhOjphZGQoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEtleVR5cGUga2V5KQoreworICAgIGlmICgha2V5LnZhbHVlLmlzU3RyaW5nKCkp
CisgICAgICAgIHJldHVybiBhZGQoY2FsbEZyYW1lLCBtX3ZhbHVlS2V5ZWRUYWJsZSwga2V5LCBr
ZXkpOworCisgICAgU3RyaW5nIHN0cmluZyA9IGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNh
bGxGcmFtZSk7CisgICAgcmV0dXJuIGFkZChjYWxsRnJhbWUsIG1fc3RyaW5nS2V5ZWRUYWJsZSwg
c3RyaW5nLmltcGwoKSwga2V5KTsKK30KKworSlNWYWx1ZSBNYXBEYXRhOjpnZXQoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEtleVR5cGUga2V5KQoreworICAgIGlmIChpdGVyYXRvciBlbnRyeSA9IGZp
bmQoY2FsbEZyYW1lLCBrZXkpKQorICAgICAgICByZXR1cm4gZW50cnkudmFsdWUoKS5nZXQoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitib29sIE1hcERhdGE6OnJlbW92ZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgS2V5VHlwZSBrZXkpCit7CisgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsK
KyAgICBpZiAoa2V5LnZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9
IGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNhbGxGcmFtZSk7CisgICAgICAgIGF1dG8gaXRl
ciA9IG1fc3RyaW5nS2V5ZWRUYWJsZS5maW5kKHN0cmluZy5pbXBsKCkpOworICAgICAgICBpZiAo
aXRlciA9PSBtX3N0cmluZ0tleWVkVGFibGUuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGxvY2F0aW9uID0gaXRlci0+dmFsdWU7CisgICAgICAgIG1fc3RyaW5nS2V5
ZWRUYWJsZS5yZW1vdmUoaXRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0g
bV92YWx1ZUtleWVkVGFibGUuZmluZChrZXkpOworICAgICAgICBpZiAoaXRlciA9PSBtX3ZhbHVl
S2V5ZWRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbG9j
YXRpb24gPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgbV92YWx1ZUtleWVkVGFibGUucmVtb3ZlKGl0
ZXIpOworICAgIH0KKyAgICBtX2VudHJpZXNbbG9jYXRpb25dLmNsZWFyKCk7CisgICAgbV9kZWxl
dGVkQ291bnQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPE1hcERhdGE6OkNv
cHlNb2RlIG1vZGU+IHZvaWQgTWFwRGF0YTo6Y29weUFuZFBhY2tJZlBvc3NpYmxlKEVudHJ5KiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG5ld1NpemUpCit7CisgICAgc2l6ZV90IG5ld0VuZCA9IDA7Cisg
ICAgaWYgKG1vZGUgPT0gQ2FuUGFjaykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaV07
CisgICAgICAgICAgICBpZiAoIWVudHJ5LmtleSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgQVNTRVJUKG5ld0VuZCA8IG5ld1NpemUpOworICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uICsgbmV3RW5kLCAmZW50cnksIHNpemVvZihFbnRyeSkpOworICAgICAg
ICAgICAgbmV3RW5kKys7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKChtX3NpemUgLSBuZXdF
bmQpID09IG1fZGVsZXRlZENvdW50KTsKKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSAwOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdTaXplID49IG1fY2FwYWNpdHkpOworICAgICAg
ICBtZW1jcHkoZGVzdGluYXRpb24sIG1fZW50cmllcywgc2l6ZW9mKEVudHJ5KSAqIG1fc2l6ZSk7
CisgICAgICAgIG5ld0VuZCA9IG1fc2l6ZTsKKyAgICB9CisgICAgbV9jYXBhY2l0eSA9IG5ld1Np
emU7CisgICAgbV9zaXplID0gbmV3RW5kOworICAgIG1fZW50cmllcyA9IGRlc3RpbmF0aW9uOwor
Cit9CisKK0NoZWNrZWRCb29sZWFuIE1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5kKENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChtX2NhcGFjaXR5ID4gbV9zaXplKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHNpemVfdCByZXF1aXJlZFNpemUgPSBzdGQ6Om1heChtX2Nh
cGFjaXR5ICsgKG1fY2FwYWNpdHkgLyAyKSArIDEsIHN0YXRpY19jYXN0PHNpemVfdD4oTWluaW11
bU1hcFNpemUpKTsKKyAgICB2b2lkKiBuZXdTdG9yYWdlID0gMDsKKyAgICBpZiAoIWNhbGxGcmFt
ZS0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3JhZ2UodGhpcywgcmVxdWlyZWRTaXplICogc2l6ZW9m
KEVudHJ5KSwgJm5ld1N0b3JhZ2UpKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihj
YWxsRnJhbWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIERlZmVyR0MgZGVm
ZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKKyAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19j
YXN0PEVudHJ5Kj4obmV3U3RvcmFnZSk7CisgICAgaWYgKGNhblBhY2soKSkKKyAgICAgICAgY29w
eUFuZFBhY2tJZlBvc3NpYmxlPENhblBhY2s+KG5ld0VudHJpZXMsIHJlcXVpcmVkU2l6ZSk7Cisg
ICAgZWxzZQorICAgICAgICBjb3B5QW5kUGFja0lmUG9zc2libGU8Q2Fubm90UGFjaz4obmV3RW50
cmllcywgcmVxdWlyZWRTaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNYXBEYXRh
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKyAgICBNYXBEYXRhKiB0aGlz
T2JqZWN0ID0ganNDYXN0PE1hcERhdGEqPihjZWxsKTsKKyAgICBFbnRyeSogZW50cmllcyA9IHRo
aXNPYmplY3QtPm1fZW50cmllczsKKyAgICBpZiAoIWVudHJpZXMpCisgICAgICAgIHJldHVybjsK
KyAgICBzaXplX3Qgc2l6ZSA9IHRoaXNPYmplY3QtPm1fc2l6ZTsKKyAgICBpZiAodGhpc09iamVj
dC0+bV9kZWxldGVkQ291bnQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKKyAgICAgICAgICAgIGlmICghZW50cmllc1tpXS5rZXkoKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZlbnRyaWVzW2ldLmtl
eUZvckdDKCkpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmVudHJpZXNbaV0udmFsdWUo
KSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
JmVudHJpZXNbMF0ua2V5Rm9yR0MoKSwgc2l6ZSAqIChzaXplb2YoRW50cnkpIC8gc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpKTsKKworICAgIHZpc2l0b3IuY29weUxhdGVyKHRoaXNPYmpl
Y3QsIE1hcEJhY2tpbmdTdG9yZUNvcHlUb2tlbiwgZW50cmllcywgc2l6ZSk7Cit9CisKK3ZvaWQg
TWFwRGF0YTo6Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqIGNlbGwsIENvcHlWaXNpdG9yJiB2aXNp
dG9yLCBDb3B5VG9rZW4gdG9rZW4pCit7CisgICAgTWFwRGF0YSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxNYXBEYXRhKj4oY2VsbCk7CisgICAgaWYgKHRva2VuID09IE1hcEJhY2tpbmdTdG9yZUNvcHlU
b2tlbgorICAgICAgICAmJiB2aXNpdG9yLmNoZWNrSWZTaG91bGRDb3B5KHRoaXNPYmplY3QtPm1f
ZW50cmllcykpIHsKKyAgICAgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSA9IHRoaXNPYmplY3QtPm1f
Y2FwYWNpdHkgKiBzaXplb2YoRW50cnkpOworICAgICAgICB2b2lkKiBvbGRWZWN0b3IgPSB0aGlz
T2JqZWN0LT5tX2VudHJpZXM7CisgICAgICAgIHZvaWQqIG5ld1ZlY3RvciA9IHZpc2l0b3IuYWxs
b2NhdGVOZXdTcGFjZSh0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6ZW9mKEVudHJ5KSk7Cisg
ICAgICAgIEVudHJ5KiBuZXdFbnRyaWVzID0gc3RhdGljX2Nhc3Q8RW50cnkqPihuZXdWZWN0b3Ip
OworICAgICAgICBpZiAodGhpc09iamVjdC0+Y2FuUGFjaygpKQorICAgICAgICAgICAgdGhpc09i
amVjdC0+Y29weUFuZFBhY2tJZlBvc3NpYmxlPENhblBhY2s+KG5ld0VudHJpZXMsIHJlcXVpcmVk
U2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPmNvcHlBbmRQYWNr
SWZQb3NzaWJsZTxDYW5ub3RQYWNrPihuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgICAg
ICB2aXNpdG9yLmRpZENvcHkob2xkVmVjdG9yLCB0aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6
ZW9mKEVudHJ5KSk7CisgICAgfQorICAgIEJhc2U6OmNvcHlCYWNraW5nU3RvcmUoY2VsbCwgdmlz
aXRvciwgdG9rZW4pOworfQorCit2b2lkIE1hcERhdGE6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIHN0YXRpY19jYXN0PE1hcERhdGEqPihjZWxsKS0+fk1hcERhdGEoKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNWQzOWE2
ODBmYzQ0YTk3YjRjZTQwNzRkNTVhM2RlNjM0OTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTAsMCArMSwyMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1hcERhdGFfaAorI2RlZmluZSBNYXBEYXRhX2gKKworI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIE1hcERhdGEgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgeworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRW50cnkgeworICAgICAg
ICBFbnRyeShWTSYgdm0sIE1hcERhdGEqIG93bmVyLCBKU1ZhbHVlIGtleSkKKyAgICAgICAgICAg
IDogbV9rZXkodm0sIG93bmVyLCBrZXkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB2
b2lkIGNsZWFyKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9rZXkuY2xlYXIoKTsKKyAgICAg
ICAgICAgIG1fdmFsdWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+JiBrZXlGb3JHQygpIHsgcmV0dXJuIG1fa2V5OyB9CisgICAgICAg
IGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7
IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFs
dWU7IH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+IG1fa2V5OworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92YWx1ZTsKKyAgICB9
OworCisgICAgc3RydWN0IGl0ZXJhdG9yIHsKKyAgICAgICAgZXhwbGljaXQgaXRlcmF0b3IoRW50
cnkqIGVudHJ5KQorICAgICAgICAgICAgOiBtX2VudHJ5KGVudHJ5KQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICBpdGVyYXRvcigpCisgICAgICAgICAgICA6IG1fZW50cnkoMCkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+
JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5LT5rZXkoKTsgfQorICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4mIHZhbHVlKCkgeyByZXR1cm4gbV9lbnRyeS0+dmFsdWUoKTsgfQorCisg
ICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKTsgfQorICAg
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzRW1wdHkoKTsg
fQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9lbnRyeTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgRW50cnkqIG1fZW50cnk7CisgICAgfTsKKworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0cnVjdCBFeHRl
cm5hbEl0ZXJhdG9yIHsKKyAgICAgICAgRXh0ZXJuYWxJdGVyYXRvcihNYXBEYXRhKiBtYXBEYXRh
KQorICAgICAgICAgICAgOiBtX21hcERhdGEobWFwRGF0YSkKKyAgICAgICAgICAgICwgbV9pbmRl
eCgwKQorICAgICAgICB7CisgICAgICAgICAgICBtX21hcERhdGEtPm1faXRlcmF0b3JDb3VudCsr
OworICAgICAgICB9CisgICAgICAgIH5FeHRlcm5hbEl0ZXJhdG9yKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9tYXBEYXRhLT5tX2l0ZXJhdG9yQ291bnQtLTsKKyAgICAgICAgfQorICAgICAg
ICBKU1ZhbHVlIGtleSgpIHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fbWFwRGF0YS0+bV9l
bnRyaWVzW21faW5kZXhdLmtleSgpLmdldCgpOyB9CisgICAgICAgIEpTVmFsdWUgdmFsdWUoKSB7
IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX21hcERhdGEtPm1fZW50cmllc1ttX2luZGV4XS52
YWx1ZSgpLmdldCgpOyB9CisgICAgICAgIHZvaWQgbmV4dCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgICAgICAgICBFbnRyeSogZW50cmllcyA9IG1fbWFw
RGF0YS0+bV9lbnRyaWVzOworICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9pbmRleCArIDE7
CisgICAgICAgICAgICBzaXplX3QgZW5kID0gbV9tYXBEYXRhLT5tX3NpemU7CisgICAgICAgICAg
ICB3aGlsZSAoaW5kZXggPCBlbmQgJiYgIWVudHJpZXNbaW5kZXhdLmtleSgpKQorICAgICAgICAg
ICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgICAgIH0K
KyAgICAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggPj0gbV9tYXBEYXRh
LT5tX3NpemU7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBNYXBEYXRhKiBtX21hcERhdGE7Cisg
ICAgICAgIHNpemVfdCBtX2luZGV4OworICAgIH07CisKKyAgICBzdHJ1Y3QgS2V5VHlwZSB7Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgS2V5VHlwZSgpIHt9CisgICAgICAgIEFMV0FZU19JTkxJTkUg
S2V5VHlwZShKU1ZhbHVlIHYpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh2LmlzRG91Ymxl
KCkpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgZCA9IHYuYXNEb3VibGUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNuYW4oZCkgfHwgKHNpZ25iaXQoZCkgJiYgZCA9PSAwKSkgeworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHY7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgaSA9IHN0YXRpY19jYXN0PGlu
dD4odi5hc0RvdWJsZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSB2KQorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IHY7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgdmFsdWUgPSB2OworICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEtleVR5cGUgZGVsZXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEtleVR5cGUgcmVz
dWx0OworICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgc2xvdCA9IDA7CisgICAgICAgICAgICBF
bmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90KTsKKyAg
ICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShzbG90KTsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yPT0oS2V5VHlwZSBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKG90aGVyLnZh
bHVlKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgIH07CisgICAgc3Rh
dGljIE1hcERhdGEqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgeworICAgICAgICBNYXBEYXRhKiBtYXBEYXRhID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8TWFwRGF0YT4odm0uaGVhcCkpIE1hcERhdGEodm0sIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIG1hcERhdGEtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIG1hcERhdGE7
CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCisgICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwgS2V5VHlwZSBrZXksIEpTVmFsdWUgdmFsdWUp
OworICAgIEpTVmFsdWUgZ2V0KENhbGxGcmFtZSosIEtleVR5cGUga2V5KTsKKyAgICBib29sIHJl
bW92ZShDYWxsRnJhbWUqLCBLZXlUeXBlIGtleSk7CisgICAgYm9vbCBjb250YWlucyhDYWxsRnJh
bWUqLCBLZXlUeXBlKTsKKyAgICBzaXplX3Qgc2l6ZShDYWxsRnJhbWUqKSBjb25zdCB7IHJldHVy
biBtX3NpemUgLSBtX2RlbGV0ZWRDb3VudDsgfQorCisgICAgRXh0ZXJuYWxJdGVyYXRvciBnZXRJ
dGVyYXRvcigpIHsgcmV0dXJuIEV4dGVybmFsSXRlcmF0b3IodGhpcyk7IH0KKworICAgIHZvaWQg
Y2xlYXIoKQorICAgIHsKKyAgICAgICAgbV92YWx1ZUtleWVkVGFibGUuY2xlYXIoKTsKKyAgICAg
ICAgbV9zdHJpbmdLZXllZFRhYmxlLmNsZWFyKCk7CisgICAgICAgIG1fY2FwYWNpdHkgPSAwOwor
ICAgICAgICBtX3NpemUgPSAwOworICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisgICAgICAg
IG1fZW50cmllcyA9IDA7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgor
ICAgIHN0cnVjdCBLZXlIYXNoIHsKKyAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50NjRf
dCBoYXNoKEtleVR5cGUga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpp
bnRIYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90PihKU1ZhbHVlOjplbmNvZGUoa2V5LnZhbHVlKSkp
OworICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWwoS2V5
VHlwZSBhLCBLZXlUeXBlIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYS52YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGIudmFsdWUpOworICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworICAgIH07CisgICAgc3RydWN0IEtleVRyYWl0cyA6IFdURjo6U2ltcGxlQ2xh
c3NIYXNoVHJhaXRzPEtleVR5cGU+IHsKKyAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoS2V5VHlwZSYgc2xvdCkgeyBzbG90ID0gS2V5VHlwZTo6
ZGVsZXRlZCgpOyB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoS2V5VHlwZSBrZXkpIHsgcmV0dXJuIEtleUhhc2g6OmVxdWFsKGtleS52YWx1ZSwgS2V5
VHlwZTo6ZGVsZXRlZCgpKTsgfQorCisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEtleVR5
cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEtleVR5cGUoKTsgfQorICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICB9OworICAgIHR5cGVkZWYgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+IEluZGV4VHJhaXRzOworCisg
ICAgTWFwRGF0YShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENv
cHlWaXNpdG9yJiwgQ29weVRva2VuKTsKKyAgICBBTFdBWVNfSU5MSU5FIGl0ZXJhdG9yIGZpbmQo
Q2FsbEZyYW1lKiwgS2V5VHlwZSBrZXkpOworICAgIENoZWNrZWRCb29sZWFuIGVuc3VyZVNwYWNl
Rm9yQXBwZW5kKENhbGxGcmFtZSopOworICAgIGVudW0gQ29weU1vZGUge0NhblBhY2ssIENhbm5v
dFBhY2t9OworICAgIHRlbXBsYXRlIDxDb3B5TW9kZT4gQUxXQVlTX0lOTElORSB2b2lkIGNvcHlB
bmRQYWNrSWZQb3NzaWJsZShFbnRyeSogZGVzdGluYXRpb24sIHNpemVfdCBuZXdTaXplKTsKKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuUGFjaygpIGNvbnN0IHsgcmV0dXJuICFtX2l0ZXJhdG9y
Q291bnQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUgaXRlcmF0b3IgYWRkKENhbGxGcmFtZSosIEtl
eVR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleT4gQUxXQVlT
X0lOTElORSBpdGVyYXRvciBhZGQoQ2FsbEZyYW1lKiwgTWFwJiwgS2V5LCBLZXlUeXBlKTsKKwor
ICAgIEhhc2hNYXA8S2V5VHlwZSwgc2l6ZV90LCBLZXlIYXNoLCBLZXlUcmFpdHMsIEluZGV4VHJh
aXRzPiBtX3ZhbHVlS2V5ZWRUYWJsZTsKKyAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBzaXplX3Q+
IG1fc3RyaW5nS2V5ZWRUYWJsZTsKKyAgICBzaXplX3QgbV9jYXBhY2l0eTsKKyAgICBzaXplX3Qg
bV9zaXplOworICAgIHNpemVfdCBtX2RlbGV0ZWRDb3VudDsKKyAgICBzaXplX3QgbV9pdGVyYXRv
ckNvdW50OworICAgIEVudHJ5KiBtX2VudHJpZXM7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Cit9OworCit9CisKKyNlbmRpZiAvKiAhZGVmaW5lZChNYXBEYXRhX2gpICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJbnN0YW5jZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTJiMzgwODdiZDk0YmM4NjBkYjIzN2RjY2I4ZmMxYTAyNGViMGFmMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KworI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBJbnN0YW5jZS5oIgorI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NvbnN0
IENsYXNzSW5mbyBNYXBJbnN0YW5jZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBJbnN0YW5jZSkgfTsKKwordm9pZCBNYXBJbnN0
YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCx2aXNpdG9yKTsKKyAgICBNYXBJbnN0YW5j
ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxNYXBJbnN0YW5jZSo+KGNlbGwpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGEpOworfQorCit2b2lkIE1hcEluc3RhbmNlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1fbWFwRGF0YS5zZXQodm0sIHRoaXMs
IE1hcERhdGE6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7Cit9CisKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSW5zdGFuY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZjZjQxOTcx
NDJiYzk1NmU1MjZjZTAwMTQyZjYxNmFiMjExOTkyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEluc3RhbmNlLmgKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFw
SW5zdGFuY2VfaAorI2RlZmluZSBNYXBJbnN0YW5jZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTWFwRGF0YTsKKworY2xhc3MgTWFwSW5zdGFu
Y2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTWFwSW5zdGFu
Y2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
TWFwSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwSW5z
dGFuY2U+KHZtLmhlYXApKSBNYXBJbnN0YW5jZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHN0YXRpYyBNYXBJbnN0YW5jZSog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSk7CisgICAgfQorCisgICAg
TWFwRGF0YSogbWFwRGF0YSgpIHsgcmV0dXJuIG1fbWFwRGF0YS5nZXQoKTsgfQorCitwcml2YXRl
OgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgTWFwSW5zdGFuY2Uo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPE1hcERhdGE+IG1fbWFwRGF0YTsKK307CisK
K30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcEluc3RhbmNlX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTlmYjMxZjk1
NzgyMWM1M2M4OWQ2MGMzMjVhOWI3ZTI4NjE5MWM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDE4MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQ2Fj
aGVkQ2FsbC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNp
bmNsdWRlICJNYXBJbnN0YW5jZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShNYXBQcm90b3R5cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRm9y
RWFjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByb3RvRnVuY0dldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShFeGVjU3RhdGUqKTsK
KyAgICAKK3ZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKKworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIsIG1hcFByb3RvRnVu
Y0NsZWFyLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5kZWxldGVLZXl3b3JkLCBtYXBQcm90b0Z1bmNEZWxldGUsIERvbnRFbnVtLCAxKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmZvckVhY2gsIG1hcFBy
b3RvRnVuY0ZvckVhY2gsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7CisgICAg
SlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIG1hcFByb3RvRnVuY0hh
cywgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+c2V0LCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKworICAgIEdldHRlclNldHRl
ciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDAsIHZt
LnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOworICAgIGFj
Y2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZnVuY3Rpb24pOworICAgIHB1dERpcmVjdEFj
Y2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIGFjY2Vzc29yLCBEb250RW51bSB8
IEFjY2Vzc29yKTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgTWFwRGF0YSogZ2V0TWFwRGF0
YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0Vycm9yKGNhbGxGcmFtZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgTWFwSW5zdGFuY2UqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8TWFwSW5z
dGFuY2UqPih0aGlzVmFsdWUpOworICAgIGlmICghbWFwKSB7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24t
TWFwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBtYXAt
Pm1hcERhdGEoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1
bmNDbGVhcihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0
TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0
YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBk
YXRhLT5jbGVhcigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGRhdGEtPnJlbW92ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jRm9yRWFjaChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRh
ID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBKU1ZhbHVlIGNhbGxCYWNrID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxC
YWNrLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6
QVNDSUlMaXRlcmFsKCJNYXAucHJvdG90eXBlLmZvckVhY2ggY2FsbGVkIHdpdGhvdXQgY2FsbGJh
Y2siKSkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
KyAgICBNYXBEYXRhOjpFeHRlcm5hbEl0ZXJhdG9yIGl0ZXJhdG9yID0gZGF0YS0+Z2V0SXRlcmF0
b3IoKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUykgeworICAgICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbEJhY2spOworICAgICAgICBD
YWNoZWRDYWxsIGNhY2hlZENhbGwoY2FsbEZyYW1lLCBmdW5jdGlvbiwgMik7CisgICAgICAgIAor
ICAgICAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGNhY2hlZENh
bGwuc2V0VGhpcyh0aGlzVmFsdWUpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgwLCBpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1l
bnQoMSwgaXRlcmF0b3Iua2V5KCkpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5jYWxsKCk7Cisg
ICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgICAgICAgICBpdGVyYXRvci5uZXh0KCk7CisgICAgICAg
IH0KKworICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewor
ICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGl0ZXJhdG9yLnZhbHVlKCkpOworICAgICAgICAgICAgYXJncy5hcHBlbmQoaXRlcmF0
b3Iua2V5KCkpOworICAgICAgICAgICAgSlNDOjpjYWxsKGNhbGxGcmFtZSwgY2FsbEJhY2ssIGNh
bGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgICAgIGlmIChjYWxs
RnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsK
KyAgICAgICAgICAgIGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGRhdGEtPmdldChjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1
bHQgPSBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZGF0YS0+Y29udGFpbnMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY1NldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0
TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0
YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBk
YXRhLT5zZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1Np
emUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERh
dGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkYXRhLT5zaXplKGNhbGxGcmFtZSkpKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNmYwYWI2YTU2MzlhNzFjY2EyNjBlODRlOGNhOGJmYTFkNGMyYzlhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWFwUHJvdG90eXBlX2gKKyNkZWZpbmUgTWFwUHJvdG90eXBlX2gKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBQcm90b3R5
cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgTWFwUHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIE1hcFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTWFwUHJv
dG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRp
b24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFwUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZShleGVjLT52bSgpLCBz
dHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNYXBQ
cm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5YmIwZDRj
YmIyOTI1NWFmYTkwYWM3NjljYjBmMWFmMzFiNWEzNzdiLi42YWFmMjczNTAxNDM4NGZhNDFhMDg3
YTQzYjZmZDg1YzMwNjcyNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMZXhl
ci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2Fj
aGUuaCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtbWFwLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLW1hcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NDdlMTI3ODI4
MGU3NWM3MWVlZTc5ZDA3YWM1NDAwMDk3MTg2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL2Jhc2ljLW1hcC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9iYXNpYy1tYXAuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
YmFzaWMtbWFwLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtbWFw
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZmZDJjZWY0NTA3YTcyMjg0ZWNhZjMwZDIyNzA5OGRjMThkMjZlZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNp
Yy1tYXAuanMKQEAgLTAsMCArMSw2NSBAQAorZGVzY3JpcHRpb24oIlRlc3RzIGJhc2ljIGNvcnJl
Y3RuZXNzIG9mIEVTIE1hcCBvYmplY3QiKTsKKworLy8gQ3VycmVudGx5IHdlIGRvbid0IHN1cHBv
cnQgaXRlcmF0b3JzLCBzbyB3ZSB0aHJvdworLy8gb24gYW55IG5vbi10aHJvd2luZyBwYXJhbWV0
ZXJzCitzaG91bGRCZUZhbHNlKCJNYXAgaW5zdGFuY2VvZiBNYXAiKTsKK3Nob3VsZEJlRmFsc2Uo
Ik1hcC5wcm90b3R5cGUgaW5zdGFuY2VvZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcCgp
IGluc3RhbmNlb2YgTWFwIik7CitzaG91bGRCZVRydWUoIm5ldyBNYXAobnVsbCkgaW5zdGFuY2Vv
ZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcCh1bmRlZmluZWQpIGluc3RhbmNlb2YgTWFw
Iik7CitzaG91bGRCZVRydWUoIm5ldyBNYXAodW5kZWZpbmVkLCB1bmRlZmluZWQpIGluc3RhbmNl
b2YgTWFwIik7CitzaG91bGRCZVRydWUoIm5ldyBNYXAobnVsbCwgdW5kZWZpbmVkKSBpbnN0YW5j
ZW9mIE1hcCIpOworCitzaG91bGRUaHJvdygibmV3IE1hcCgxKSIpOworc2hvdWxkVGhyb3coIm5l
dyBNYXAodHJ1ZSkiKTsKK3Nob3VsZFRocm93KCJuZXcgTWFwKFtdKSIpOworc2hvdWxkVGhyb3co
Im5ldyBNYXAoe30pIik7CitzaG91bGRUaHJvdygibmV3IE1hcCh1bmRlZmluZWQsIG51bGwpIik7
CitzaG91bGRUaHJvdygibmV3IE1hcCh1bmRlZmluZWQsIHt9KSIpOworCit2YXIgbWFwID0gbmV3
IE1hcDsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5oYXNPd25Qcm9wZXJ0eShtYXAsICdzaXplJyki
KQorc2hvdWxkQmVUcnVlKCJPYmplY3QuaGFzT3duUHJvcGVydHkoTWFwLnByb3RvdHlwZSwgJ3Np
emUnKSIpCitzaG91bGRUaHJvdygiTWFwLnByb3RvdHlwZS5zaXplIikKK3Nob3VsZEJlKCJtYXAu
c2l6ZSIsICIwIikKK3Nob3VsZEJlVW5kZWZpbmVkKCJtYXAuc2V0KC0wLCAxKSIpCitzaG91bGRC
ZVVuZGVmaW5lZCgibWFwLnNldCgwLCAyKSIpCitzaG91bGRCZVVuZGVmaW5lZCgibWFwLnNldChJ
bmZpbml0eSwgMykiKQorc2hvdWxkQmVVbmRlZmluZWQoIm1hcC5zZXQoLUluZmluaXR5LCA0KSIp
CitzaG91bGRCZVVuZGVmaW5lZCgibWFwLnNldChOYU4sIDUpIikKK3Nob3VsZEJlVW5kZWZpbmVk
KCJtYXAuc2V0KCcwJywgNikiKQorc2hvdWxkQmVVbmRlZmluZWQoIm1hcC5zZXQoMC4xLCA3KSIp
CitzaG91bGRCZSgibWFwLnNpemUiLCAiNyIpCitzaG91bGRCZSgibWFwLmdldCgtMCkiLCAiMSIp
CitzaG91bGRCZSgibWFwLmdldCgwKSIsICIyIikKK3Nob3VsZEJlKCJtYXAuZ2V0KEluZmluaXR5
KSIsICIzIikKK3Nob3VsZEJlKCJtYXAuZ2V0KC1JbmZpbml0eSkiLCAiNCIpCitzaG91bGRCZSgi
bWFwLmdldChOYU4pIiwgIjUiKQorc2hvdWxkQmUoIm1hcC5nZXQoJzAnKSIsICI2IikKK3Nob3Vs
ZEJlKCJtYXAuZ2V0KDAuMSkiLCAiNyIpCisKK3Nob3VsZEJlVHJ1ZSgibWFwLmhhcygtMCkiKQor
c2hvdWxkQmVUcnVlKCJtYXAuaGFzKDApIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmhhcyhJbmZpbml0
eSkiKQorc2hvdWxkQmVUcnVlKCJtYXAuaGFzKC1JbmZpbml0eSkiKQorc2hvdWxkQmVUcnVlKCJt
YXAuaGFzKE5hTikiKQorc2hvdWxkQmVUcnVlKCJtYXAuaGFzKCcwJykiKQorc2hvdWxkQmVUcnVl
KCJtYXAuaGFzKDAuMSkiKQorCitzaG91bGRCZVRydWUoIm1hcC5kZWxldGUoLTApIikKK3Nob3Vs
ZEJlVHJ1ZSgibWFwLmRlbGV0ZSgwKSIpCitzaG91bGRCZVRydWUoIm1hcC5kZWxldGUoSW5maW5p
dHkpIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgtSW5maW5pdHkpIikKK3Nob3VsZEJlVHJ1
ZSgibWFwLmRlbGV0ZShOYU4pIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgnMCcpIikKK3No
b3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgwLjEpIikKKworc2hvdWxkQmVGYWxzZSgibWFwLmRlbGV0
ZSgtMCkiKQorc2hvdWxkQmVGYWxzZSgibWFwLmRlbGV0ZSgwKSIpCitzaG91bGRCZUZhbHNlKCJt
YXAuZGVsZXRlKEluZmluaXR5KSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKC1JbmZpbml0
eSkiKQorc2hvdWxkQmVGYWxzZSgibWFwLmRlbGV0ZShOYU4pIikKK3Nob3VsZEJlRmFsc2UoIm1h
cC5kZWxldGUoJzAnKSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKDAuMSkiKQorCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210043</attachid>
            <date>2013-08-29 16:18:26 -0700</date>
            <delta_ts>2013-08-29 16:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120333-20130829162156.patch</filename>
            <type>text/plain</type>
            <size>76309</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjM1YTczNDc4YzE5OTFmMjUyNzVjM2Q2NzYxMDdjMDQwM2NiMzk0Li5jZTQwZDdlNzRiN2U1NmZl
MjVkYWVhZjYxNmJiYTMyZDg2YzdhMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxMy0wOC0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBNYXAgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAzMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgdGhlIEVT
NiBNYXAgdHlwZSBhbmQgcmVsYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0NvcHlUb2tlbi5o
OiBBZGQgYSBuZXcgdG9rZW4gdG8gdHJhY2sgY29weWluZyB0aGUgYmFja2luZyBzdG9yZQorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDogQWRkIG5ldyBpZGVudGlmaWVycwor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgICAgIEFkZCBuZXcgc3RydWN0dXJlcyBhbmQgcHJv
dG90eXBlcworCisgICAgICAgICogcnVudGltZS9KU01hcC5jcHA6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNNYXAuaDogQWRkZWQuCisgICAgICAgICAgICBOZXcgSlNNYXAgY2xhc3MgdG8g
cmVwcmVzZW50IGEgTWFwIGluc3RhbmNlCisKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRl
ZC4KKyAgICAgICAgICAgIFRoZSBNYXAgY29uc3RydWN0b3IKKworICAgICAgICAqIHJ1bnRpbWUv
TWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOiBBZGRlZC4K
KyAgICAgICAgICAgIFRoZSBtb3N0IGludGVyZXN0aW5nIGRhdGEgc3RydWN0dXJlLiAgVGhlIHJv
dWdobHkgY29ycmVzcG9uZHMKKyAgICAgICAgICAgIHRvIHRoZSBFUzYgbm90aW9uIG9mIE1hcERh
dGEuICBJdCBwcm92aWRlcyB0aGUgY29yZSBKU1ZhbHVlLT5KU1ZhbHVlCisgICAgICAgICAgICBt
YXAgaW1wbGVtZW50YXRpb24uICBXZSBpbXBsZW1lbnQgaXQgdXNpbmcgMiBoYXNodGFibGVzIGFu
ZCBhIGZsYXQKKyAgICAgICAgICAgIHRhYmxlLiAgRHVlIHRvIHRoZSBkaWZmZXJlbnQgc2VtYW50
aWNzIG9mIHN0cmluZyBjb21wYXJpc29ucyB2cy4KKyAgICAgICAgICAgIGFsbCBvdGhlcnMgd2Ug
bmVlZCBoYXZlIG9uZSBtYXAga2V5ZWQgYnkgU3RyaW5nIGFuZCB0aGUgb3RoZXIgYnkKKyAgICAg
ICAgICAgIGdlbmVyaWMgSlNWYWx1ZS4gIFRoZSBhY3R1YWwgdGFibGUgaXMgcmVwcmVzZW50ZWQg
bW9yZSBvciBsZXNzCisgICAgICAgICAgICBleGFjdGx5IGFzIGRlc2NyaWJlZCBpbiB0aGUgRVM2
IGRyYWZ0IC0gYSBzaW5nbGUgY29udGlndW91cyBsaXN0IG9mCisgICAgICAgICAgICBrZXkvdmFs
dWUgcGFpcnMuICBUaGUgZW50aXJlIG1hcCBjb3VsZCBiZSBhY2hpZXZlZCB3aXRoIGp1c3QgdGhp
cworICAgICAgICAgICAgdGFibGUsIGhvd2V2ZXIgd2UgbmVlZCB0aGUgSGFzaE1hcHMgaW4gb3Jk
ZXIgdG8gbWFpbnRhaW4gTygxKSBsb29rdXAuCisKKyAgICAgICAgICAgIERlbGV0ZWQgdmFsdWVz
IGFyZSBzaW1wbHkgY2xlYXJlZCBhcyB0aGUgZHJhZnQgc2F5cywgaG93ZXZlciB0aGUKKyAgICAg
ICAgICAgIGltcGxlbWVudGF0aW9uIGNvbXBhY3RzIHRoZSBzdG9yYWdlIG9uIGNvcHkgYXMgbG9u
ZyBhcyB0aGUgYXJlIG5vCisgICAgICAgICAgICBhY3RpdmUgaXRlcmF0b3JzLgorCisgICAgICAg
ICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL01h
cFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgICAgIEltcGxlbWVudCBNYXAgcHJvdG90eXBl
IGZ1bmN0aW9ucworCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICAgICBBZGQg
bmV3IHN0cnVjdHVyZXMuCisKIDIwMTMtMDgtMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBZGQgRU5BQkxFIGd1YXJkcyBmb3IgUHJvbWlzZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjNjc0YTY5NmQ5YjhmZjM3MDM3MDBhNGY2MjA4ZmU2
ZjdkN2E4YjMwLi5mZTU1YTkxNWYyOWYyY2ZiYmY3Mjc1Y2MxNTBkYjA5ZDRhYzY3MDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMzIsNiArMzMyLDkgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAg
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCiAgICAgcnVudGltZS9KU0xvY2su
Y3BwCisgICAgcnVudGltZS9KU01hcC5jcHAKKyAgICBydW50aW1lL0pTTWFwQ29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9KU01hcFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTTmFtZVNj
b3BlLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT05P
YmplY3QuY3BwCkBAIC0zNTksNiArMzYyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKICAgICBydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwCiAgICAgcnVudGltZS9Mb29rdXAuY3BwCisgICAgcnVudGltZS9NYXBEYXRhLmNwcAog
ICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAKICAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3Mu
Y3BwCiAgICAgcnVudGltZS9OYW1lQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZmODRlYzNiZjk1ZWQ0ZmM3ZTRkZjIyNzQxYzhi
ZmI5OTNlOWZiM2QuLjhhYWViOTdhOTcwODg1ZWQ3MWRiYTQwNjVjMWVjNWFkZjRlZmEyZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC04NjgsNiArODY4
LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbnQ4QXJyYXkuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBDb25zdHJ1Y3Rvci5jcHAgXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTWFwUHJvdG90eXBlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTm90QW5PYmplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4
IDI5NTkwYmJlMmUzYzAwZDliMTAyOWQ5ZWE0NmU2NjE5NWE0ODY2ODMuLjdmNmZlZTViYzdjMzVk
NzJkODBiZGIxN2JmODU5ZWZhOTg4MTg1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagpAQCAtNDY2LDYgKzQ2Niw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCIgLz4NCiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcENvbnN0cnVjdG9yLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTWFwUHJvdG90eXBlLmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmFtZVNjb3BlLmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQpAQCAtNDkyLDYgKzQ5
NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV3JhcHBlck9iamVj
dC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxMaXRlcmFsUGFy
c2VyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXExvb2t1cC5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXBEYXRhLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhPYmplY3QuY3BwIiAv
Pg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmFtZUNvbnN0cnVjdG9yLmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hbWVJbnN0YW5jZS5j
cHAiIC8+DQpAQCAtODkwLDYgKzg5NCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTSW50MzJBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNJbnQ4QXJyYXkuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTG9jay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
YXAuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwQ29uc3Ry
dWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwUHJv
dG90eXBlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hbWVT
Y29wZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9i
amVjdC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVj
dC5oIiAvPg0KQEAgLTkyMyw2ICs5MzAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1dyYXBwZXJPYmplY3QuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXExpdGVyYWxQYXJzZXIuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXExvb2t1cC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcTWFwRGF0YS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0
Y2hSZXN1bHQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhP
YmplY3QuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hbWVDb25z
dHJ1Y3Rvci5oIiAvPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCAxMjM3YjA2N2M4YWFiZDM4MjdlNTRlN2FlNDliYWY2YTQ1Y2Y3NTYx
Li40NGYyYTk3MWYxYjI2MTdkYzZkODM3MmJmOTE2ZGMzY2NlNGJmNzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC01NzMsNiArNTcz
LDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiPg0K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+DQorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBQcm90b3R5cGUuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcENvbnN0cnVjdG9yLmNwcCI+DQorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNOYW1lU2NvcGUuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtNjIxLDYgKzYzMCw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXExvb2t1cC5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXE1hcERhdGEuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxNYXRoT2JqZWN0LmNwcCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAg
IDwvQ2xDb21waWxlPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzlkM2IzYzQw
OGEwODQ4ZmVmYWJhMTU2ZTQyYjI4ZTA1N2YwZjg1YS4uNjE5N2NiMzc3MTgzNWQ0MTNmODU3ZGY1
MWVmNzg5YmE2MTExZGNiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNiw2
ICs4MDYsMTIgQEAKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNB
MTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFD
N0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8q
IFJlZ0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JF
ODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzAwODczQTE3Q0JF
ODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25z
dHJ1Y3Rvci5oICovOyB9OworCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MDA4NzNCMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovOyB9OworCQlBNzAw
ODczRTE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyog
TWFwUHJvdG90eXBlLmggKi87IH07CisJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01h
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAw
ODczRjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwICovOyB9OworCQlBNzAwODc0MjE3Q0JF
OEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovOyB9Owog
CQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NDdFOTE3QTBCRDQ2MDBG
NTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwNDQ3RUQxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgKi87IH07CiAJCUE3MDQ0
N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDQ3RUMxN0EwQkQ3MDAwRjU4OThFIC8qIER1
bXBDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg2NSw2ICs4NzEsOCBAQAogCQlBNzdGMTgyNTE2NDE5MkM3MDA2NDBBNDcgLyogUGFy
c2VyTW9kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRBMjYxMTFEMTY2MjIwMDU3
NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNUQnVpbGRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRBMjY0MTFE
MTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NzExQjk4QjhEMDA2NUExNEYgLyogU3ludGF4
Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3ODUwN0Q2MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUwN0Q0MTdDQkM2RkQwMDExRjZF
NyAvKiBNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTc4NTA3RDcxN0NCQzZGRDAwMTFGNkU3IC8qIE1h
cERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi87IH07CiAJCUE3ODg1M0Y5MTc5
NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y3MTc5NzI2MjkwMDE0NDBF
NCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJQTc4ODUzRkExNzk3MjYy
OTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZp
bmFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzhBOTc2QzE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCAqLzsg
fTsKQEAgLTE5NzgsNiArMTk4NiwxMiBAQAogCQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyog
UmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVn
RXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkIzRTExQzdC
MjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJC
NDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcw
MDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDA4NzNCMTdDQkU4RDMwMEMzRTY0MyAv
KiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0Mx
N0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MDQ0N0U5MTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3BlcmFuZHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEdW1wQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBE
dW1wQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAzNCw2ICsyMDQ4LDggQEAKIAkJ
QTc3RjE4MUYxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzdGMTgyMDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzdGMTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFyc2VyTW9kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTc4ODUzRjcxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hh
aW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1
Y3R1cmVDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODg1M0Y4MTc5
NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZp
bmFsaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWls
ZWRGaW5hbGl6ZXIuY3BwOyBwYXRoID0gZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzc5LDkgKzIzOTUsOSBAQAogCQkwMzQ3NjhERkZG
MzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAq
LywKIAkJCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovLAotCQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi8sCiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8s
CiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIz
MDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCkBAIC0zMTgwLDYgKzMxOTYsOCBA
QAogCQkJCUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8sCiAJ
CQkJRjY5MkE4NjgwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCiAJCQkJRjY5MkE4
NjkwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5oICovLAorCQkJCUE3ODUwN0Q0MTdDQkM2RkQw
MDExRjZFNyAvKiBNYXBEYXRhLmNwcCAqLywKKwkJCQlBNzg1MDdENTE3Q0JDNkZEMDAxMUY2RTcg
LyogTWFwRGF0YS5oICovLAogCQkJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJl
c3VsdC5oICovLAogCQkJCUY2OTJBODZBMDI1NTU5N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmNw
cCAqLywKIAkJCQlGNjkyQTg2QjAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5oICovLApA
QCAtMzI5Niw2ICszMzE0LDEyIEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdl
YWtHQ01hcC5oICovLAogCQkJCTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9t
LmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICov
LAorCQkJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8s
CisJCQkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi8sCisJ
CQkJQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJ
QTcwMDg3M0MxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovLAorCQkJCUE3MDA4
NzNGMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5jcHAgKi8sCisJCQkJQTcwMDg3NDAxN0NCRThF
QjAwQzNFNjQzIC8qIEpTTWFwLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzg1MCwxMCArMzg3NCwxMiBAQAogCQkJCUE3M0Ux
MzMxMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5z
aXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyog
REZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODczRTE3Q0JF
OEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZE
OTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFy
cmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlGRiAvKiBE
RkdEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgxQUQzMTU0RkI0RjAwMDk4
M0U3MiAvKiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODc0MjE3Q0JF
OEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENC
QjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMzk4NSw2ICs0MDExLDcgQEAKIAkJCQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVu
Y3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEw
OEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FF
MTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21p
bmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FF
M0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQx
NzQsNiArNDIwMSw3IEBACiAJCQkJODYwMTYxRTQwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAg
LyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU2MEYz
QTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTc4NTA3RDcxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MkQ2RjA5MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJs
b2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTQzMDIsMTIgKzQzMzAsMTIgQEAKIAkJCQlCQ0NG
MEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8q
IFRvTmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNE
MDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFE
MTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU3
MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2
ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5
IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA2MTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA4MTdC
NkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC00OTg0LDYgKzUwMTIsNyBAQAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0E0
QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTc4NTA3RDYxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAwOSw2ICs1MDM4LDcg
QEAKIAkJCQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyogT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyog
UGFyc2VyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOEND
OTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOUZDOEMzMTRFMUI1RkUwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTA0MCw2ICs1MDcwLDcgQEAKIAkJCQkxNDI4MDg0
MTEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEy
QjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDIxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4
cENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2
RDRFRiAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4
NDMxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTUwNTYsNiArNTA4Nyw3IEBACiAJCQkJMEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNp
YWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5
NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0MxRUFGMTE3OTg3
QUI2MDAyOTlEQjIgLyogU3RhY2tJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzAw
ODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcz
MEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3Ry
aW5nT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRl
eCA5ODM5MGM0NjIyNGM3MWIyMjU4YzA0ODA0MTQ4NWZiOTA2NTg0NGE3Li43YjNmY2RkMWUyMWE2
YjNlMjRkOGE5N2NkNDliMzlmM2FhMTY1MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpA
QCAtMzIxLDYgKzMyMSwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgXAogICAg
IHJ1bnRpbWUvSlNMb2NrLmNwcCBcCisgICAgcnVudGltZS9KU01hcC5jcHAgXAorICAgIHJ1bnRp
bWUvSlNNYXBDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm90b3R5cGUuY3BwIFwK
KyAgICBydW50aW1lL0pTTmFtZVNjb3BlLmNwcCBcCiAgICAgcnVudGltZS9KU05hbWVTY29wZS5j
cHAgXAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHAgXApAQCAtMzQ3LDYgKzM1MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUv
SlNXcmFwcGVyT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBcCiAg
ICAgcnVudGltZS9Mb29rdXAuY3BwIFwKKyAgICBydW50aW1lL01hcERhdGEuY3BwIFwKICAgICBy
dW50aW1lL01hdGhPYmplY3QuY3BwIFwKICAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuY3Bw
IFwKICAgICBydW50aW1lL05hbWVDb25zdHJ1Y3Rvci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db3B5VG9rZW4uaAppbmRleCBiYzhhMTJjNWFhNzM5NTI1ZDk5NjUyOTMyZDFjOWUzM2M0
YWE4YWNmLi4zNWUwZTY3ZTZlOTNjZjI0NmJhYTBlNjhlZGI5Mzc1Y2ZjZDMzOTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaApAQCAtMzAsNyArMzAsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogZW51bSBDb3B5VG9rZW4gewogICAgIEJ1dHRlcmZseUNvcHlUb2tlbiwKLSAg
ICBUeXBlZEFycmF5VmVjdG9yQ29weVRva2VuCisgICAgVHlwZWRBcnJheVZlY3RvckNvcHlUb2tl
biwKKyAgICBNYXBCYWNraW5nU3RvcmVDb3B5VG9rZW4KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggNmZmOTg3N2EzOTc5YWE0MGQ5M2UyYzUxYjQwMzRiYzlmOTZjOTFmMi4uOTQ3ZjY4
MjY0NzY5MmExNzZkODY5MzU0MDQ3N2JiZGUyNDU2ZjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xMzYsNyArMTM2LDEy
IEBACiAgICAgbWFjcm8odmFsdWUpIFwKICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8o
d2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFjcm8od3JpdGFibGUpIFwKKyAg
ICBtYWNybyhoYXMpIFwKKyAgICBtYWNybyhmb3JFYWNoKSBcCisgICAgbWFjcm8oY2xlYXIpIFwK
KyAgICBtYWNybyhzaXplKSBcCisgICAgbWFjcm8oTWFwKQogCiAjZGVmaW5lIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8obnVsbCkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDdhNzBkYjc5ZWYwOGQyMjY0ZjM4YWFlMmI5MjM0ZDMzNGY4ODUyY2MuLjM2ZjY2MDcyZjc1NTE2
NDIzNWEwNDc1OTEzNmVhYTJmYmRjMmZlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRl
ICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUg
IkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCkBAIC03Miw2ICs3Myw5
IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMZWdhY3lQcm9maWxlci5o
IgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIk1hcENvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiTWFwRGF0YS5oIgorI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk1h
dGhPYmplY3QuaCIKICNpbmNsdWRlICJOYW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYW1l
SW5zdGFuY2UuaCIKQEAgLTMxNyw2ICszMjEsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0
dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7
CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQogCisKKyAgICBtX21hcERhdGFTdHJ1Y3R1cmUu
c2V0KGV4ZWMtPnZtKCksIHRoaXMsIE1hcERhdGE6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCB0aGlzLCBqc051bGwoKSkpOworICAgIG1fbWFwUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0
aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsK
KyAgICBtX21hcFN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNYXA6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX21hcFByb3RvdHlwZS5nZXQoKSkpOworCiAgICAg
Ly8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMzEsNiArMzQwLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgSlNDZWxsKiBwcm9taXNlQ29u
c3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJv
bWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlND
ZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKICNlbmRpZiAvLyBFTkFCTEUo
UFJPTUlTRVMpCisgICAgSlNDZWxsKiBtYXBDb25zdHJ1Y3RvciA9IE1hcENvbnN0cnVjdG9yOjpj
cmVhdGUoZXhlYywgdGhpcywgTWFwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9tYXBQcm90b3R5cGUuZ2V0
KCkpOwogCiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+dm0oKSwgdGhpcywgUmVn
RXhwQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogCkBAIC0zNTYsNiArMzY2LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgbV9lcnJvclByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKICAgICBtX3Byb21pc2VQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgcHJvbWlzZUNvbnN0
cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBt
X21hcFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuRnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTM3NCw2ICsz
ODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
UHJvbWlzZVJlc29sdmVyLCBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5NYXAsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAKICAgICBtX2V2YWxGdW5j
dGlvbi5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMs
IDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLnN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5ldmFsLCBtX2V2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0pOwpAQCAtNjMy
LDYgKzY0NCw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUpOwogI2VuZGlmIC8vIEVO
QUJMRShQUk9NSVNFUykKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXBQcm90
b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGFTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFN0cnVjdHVyZSk7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclByb3RvdHlwZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggMDA0MmRjZmYzNjA2YjkzOWViMTM4NjQ0ZDQxMTRmYWZkNTgyZmMwYS4uOTI5YjdiMmY0YzIy
MDE0YjgwNWYzNTdiMzQ1ZDM4NzA4YjBlMTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIEpTUHJv
bWlzZVByb3RvdHlwZTsKIGNsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOwogY2xhc3Mg
SlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIE1hcFByb3RvdHlw
ZTsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2Nr
OwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CkBAIC0xNTAsNiArMTUxLDcgQEAgcHJvdGVjdGVk
OgogICAgIFdyaXRlQmFycmllcjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3RvdHlwZTsKICAg
ICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUHJvdG90eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CiAg
ICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlPiBtX3Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8TWFwUHJvdG90eXBlPiBtX21hcFByb3Rv
dHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1
Y3R1cmU7CkBAIC0xOTEsNiArMTkzLDkgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZTsKICNlbmRpZiAvLyBF
TkFCTEUoUFJPTUlTRVMpCiAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21hcERhdGFT
dHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBTdHJ1Y3R1cmU7Cisg
ICAgCiAgICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXJQcm90b3R5cGU+IG1fYXJyYXlCdWZm
ZXJQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJheUJ1ZmZlclN0
cnVjdHVyZTsKICAgICAKQEAgLTM4MSw2ICszODYsOCBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJl
KiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5h
bEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSog
bWFwRGF0YVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwRGF0YVN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0OWRlMGYwNjIyMDc1MmEwYTQ4NTY5
NWFkZWRhNzc1N2FlNzg4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01hcC5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIkpTTWFwLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
Ik1hcERhdGEuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisgICAgCitjb25zdCBDbGFzc0luZm8gSlNNYXA6OnNfaW5mbyA9IHsgIk1hcCIsICZC
YXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNYXApIH07CisKK3ZvaWQg
SlNNYXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworICAgIEpTTWFwKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTTWFwKj4oY2VsbCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbWFwRGF0YSk7Cit9CisKK3ZvaWQgSlNNYXA6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgbV9tYXBEYXRhLnNldCh2bSwgdGhpcywgTWFwRGF0YTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QpKTsKK30KKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NjU5MjkzNWQ3NmZhMDhjNDdkMzEwNjM3MDIzMTQ4NThkZjQ1
ZTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
YXAuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU01hcF9oCisjZGVmaW5lIEpTTWFwX2gKKworI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBEYXRhOworCitjbGFz
cyBKU01hcCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU01h
cCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBK
U01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01hcD4odm0uaGVh
cCkpIEpTTWFwKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0sIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICByZXR1cm4gaW5zdGFu
Y2U7CisgICAgfQorCisgICAgc3RhdGljIEpTTWFwKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+
dm0oKSwgc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBNYXBEYXRhKiBtYXBEYXRhKCkgeyByZXR1
cm4gbV9tYXBEYXRhLmdldCgpOyB9CisKK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CisKKyAgICBKU01hcChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8
TWFwRGF0YT4gbV9tYXBEYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoSlNNYXBf
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYjIzYTIwOTZiNWQyNWRlMjAwYmFkOTNiYTdhMjYzN2M1Mjk2ZTNjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3Ry
dWN0b3IuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gTWFwQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShNYXBDb25zdHJ1Y3RvcikgfTsKKwordm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBNYXBQcm90b3R5cGUqIG1hcFByb3RvdHlwZSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBtYXBQcm90b3R5cGUtPmNsYXNzSW5mbygp
LT5jbGFzc05hbWUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG1hcFByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ly8gVW50aWwgd2UgaGF2ZSBpdGVyYXRvcnMgd2UgdGhyb3cgaWYgd2UndmUgYmVlbiBnaXZlbgor
ICAgIC8vIGFueSBhcmd1bWVudHMgdGhhdCBjb3VsZCByZXF1aXJlIHVzIHRvIHRocm93LgorICAg
IGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1h
cCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzIikpKTsKKyAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBjb21wYXJhdG9yIGZ1bmN0aW9uIikpKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bWFwU3RydWN0
dXJlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU01hcDo6Y3JlYXRlKGV4ZWMsIG1h
cFN0cnVjdHVyZSkpOworfQorCitDb25zdHJ1Y3RUeXBlIE1hcENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RNYXA7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdE1hcDsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYzgyNjA5OTk2MzM4ZjYxNzc1ZWU3Y2E4MWRiNGYzN2Y5NWNjMGFlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0
b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNYXBDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIE1hcENvbnN0cnVj
dG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIE1hcFByb3RvdHlwZTsKKworY2xhc3MgTWFwQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CisKKyAgICBzdGF0aWMgTWFwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBN
YXBQcm90b3R5cGUqIG1hcFByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIE1hcENvbnN0cnVjdG9y
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1hcENvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgTWFwQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgbWFwUHJvdG90eXBl
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5G
TzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNYXBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
LCBNYXBQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVk
KE1hcENvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA5NDQwOTNkNmNkMDFkYzVjM2RmOGEwZTEzYzY3M2M2NjU4OTVhZWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRh
LmNwcApAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIk1hcERhdGEuaCIKKworI2luY2x1ZGUgIkNvcGllZEFsbG9jYXRvci5oIgor
I2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIE1hcERhdGE6OnNfaW5mbyA9IHsgIk1hcERhdGEi
LCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hcERhdGEpIH07CisK
K3N0YXRpYyBjb25zdCBpbnQzMl90IE1pbmltdW1NYXBTaXplID0gODsKKworTWFwRGF0YTo6TWFw
RGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBCYXNlKHZt
LCBnbG9iYWxPYmplY3QtPm1hcERhdGFTdHJ1Y3R1cmUoKSkKKyAgICAsIG1fY2FwYWNpdHkoMCkK
KyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9kZWxldGVkQ291bnQoMCkKKyAgICAsIG1faXRlcmF0
b3JDb3VudCgwKQorICAgICwgbV9lbnRyaWVzKDApCit7Cit9CisKK01hcERhdGE6OkVudHJ5KiBN
YXBEYXRhOjpmaW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBLZXlUeXBlIGtleSkKK3sKKyAgICBp
ZiAoa2V5LnZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9zdHJpbmdL
ZXllZFRhYmxlLmZpbmQoYXNTdHJpbmcoa2V5LnZhbHVlKS0+dmFsdWUoY2FsbEZyYW1lKS5pbXBs
KCkpOworICAgICAgICBpZiAoaXRlciA9PSBtX3N0cmluZ0tleWVkVGFibGUuZW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuICZtX2VudHJpZXNbaXRlci0+dmFsdWVd
OworICAgIH0KKyAgICBhdXRvIGl0ZXIgPSBtX3ZhbHVlS2V5ZWRUYWJsZS5maW5kKEpTVmFsdWU6
OmVuY29kZShrZXkudmFsdWUpKTsKKyAgICBpZiAoaXRlciA9PSBtX3ZhbHVlS2V5ZWRUYWJsZS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZtX2VudHJpZXNbaXRlci0+dmFs
dWVdOworfQorYm9vbCBNYXBEYXRhOjpjb250YWlucyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgS2V5
VHlwZSBrZXkpCit7CisgICAgcmV0dXJuIGZpbmQoY2FsbEZyYW1lLCBrZXkpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXk+IE1hcERhdGE6OkVudHJ5KiBNYXBEYXRh
OjphZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE1hcCYgbWFwLCBLZXkga2V5LCBLZXlUeXBlIGtl
eVZhbHVlKQoreworICAgIHR5cGVuYW1lIE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5hZGQo
a2V5LCBtX3NpemUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVy
biAmbV9lbnRyaWVzW3Jlc3VsdC5pdGVyYXRvci0+dmFsdWVdOworICAgIGlmICghZW5zdXJlU3Bh
Y2VGb3JBcHBlbmQoY2FsbEZyYW1lKSkgeworICAgICAgICBtYXAucmVtb3ZlKHJlc3VsdC5pdGVy
YXRvcik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEVudHJ5KiBlbnRyeSA9ICZt
X2VudHJpZXNbbV9zaXplKytdOworICAgIG5ldyAoZW50cnkpIEVudHJ5KCk7CisgICAgZW50cnkt
PmtleS5zZXQoY2FsbEZyYW1lLT52bSgpLCB0aGlzLCBrZXlWYWx1ZS52YWx1ZSk7CisgICAgcmV0
dXJuIGVudHJ5OworfQorCit2b2lkIE1hcERhdGE6OnNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
S2V5VHlwZSBrZXksIEpTVmFsdWUgdmFsdWUpCit7CisgICAgRW50cnkqIGxvY2F0aW9uID0gYWRk
KGNhbGxGcmFtZSwga2V5KTsKKyAgICBpZiAoIWxvY2F0aW9uKQorICAgICAgICByZXR1cm47Cisg
ICAgbG9jYXRpb24tPnZhbHVlLnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHZhbHVlKTsKK30K
KyAgICAKK01hcERhdGE6OkVudHJ5KiBNYXBEYXRhOjphZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEtleVR5cGUga2V5KQoreworICAgIGlmICgha2V5LnZhbHVlLmlzU3RyaW5nKCkpCisgICAgICAg
IHJldHVybiBhZGQoY2FsbEZyYW1lLCBtX3ZhbHVlS2V5ZWRUYWJsZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGtleS52YWx1ZSksIGtleSk7CisgICAgcmV0dXJuIGFkZChjYWxsRnJhbWUsIG1fc3RyaW5nS2V5
ZWRUYWJsZSwgYXNTdHJpbmcoa2V5LnZhbHVlKS0+dmFsdWUoY2FsbEZyYW1lKS5pbXBsKCksIGtl
eSk7Cit9CisKK0pTVmFsdWUgTWFwRGF0YTo6Z2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBLZXlU
eXBlIGtleSkKK3sKKyAgICBpZiAoRW50cnkqIGVudHJ5ID0gZmluZChjYWxsRnJhbWUsIGtleSkp
CisgICAgICAgIHJldHVybiBlbnRyeS0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIEpTVmFsdWUo
KTsKK30KKworYm9vbCBNYXBEYXRhOjpyZW1vdmUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEtleVR5
cGUga2V5KQoreworICAgIGludDMyX3QgbG9jYXRpb247CisgICAgaWYgKGtleS52YWx1ZS5pc1N0
cmluZygpKSB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fc3RyaW5nS2V5ZWRUYWJsZS5maW5kKGFz
U3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNhbGxGcmFtZSkuaW1wbCgpKTsKKyAgICAgICAgaWYg
KGl0ZXIgPT0gbV9zdHJpbmdLZXllZFRhYmxlLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBsb2NhdGlvbiA9IGl0ZXItPnZhbHVlOworICAgICAgICBtX3N0cmluZ0tl
eWVkVGFibGUucmVtb3ZlKGl0ZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gaXRlciA9
IG1fdmFsdWVLZXllZFRhYmxlLmZpbmQoSlNWYWx1ZTo6ZW5jb2RlKGtleS52YWx1ZSkpOworICAg
ICAgICBpZiAoaXRlciA9PSBtX3ZhbHVlS2V5ZWRUYWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgbG9jYXRpb24gPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgbV92
YWx1ZUtleWVkVGFibGUucmVtb3ZlKGl0ZXIpOworICAgIH0KKyAgICBtX2VudHJpZXNbbG9jYXRp
b25dLmtleS5jbGVhcigpOworICAgIG1fZW50cmllc1tsb2NhdGlvbl0udmFsdWUuY2xlYXIoKTsK
KyAgICBtX2RlbGV0ZWRDb3VudCsrOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1hcERh
dGE6OnJlcGxhY2VBbmRQYWNrQmFja2luZ1N0b3JlKEVudHJ5KiBkZXN0aW5hdGlvbiwgaW50MzJf
dCBuZXdTaXplKQoreworICAgIEFTU0VSVChzaG91bGRQYWNrKCkpOworICAgIGludDMyX3QgbmV3
RW5kID0gMDsKKyAgICBSRUxFQVNFX0FTU0VSVChuZXdTaXplID4gMCk7CisgICAgZm9yIChpbnQz
Ml90IGkgPSAwOyBpIDwgbV9zaXplOyBpKyspIHsKKyAgICAgICAgRW50cnkmIGVudHJ5ID0gbV9l
bnRyaWVzW2ldOworICAgICAgICBpZiAoIWVudHJ5LmtleSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBBU1NFUlQobmV3RW5kIDwgbmV3U2l6ZSk7CisgICAgICAgIGRlc3RpbmF0aW9u
W25ld0VuZF0gPSBlbnRyeTsKKyAgICAgICAgZW50cnkudmFsdWUuc2V0V2l0aG91dFdyaXRlQmFy
cmllcihqc051bWJlcihuZXdFbmQpKTsKKyAgICAgICAgbmV3RW5kKys7CisgICAgfQorCisgICAg
Ly8gRml4dXAgZm9yIHRoZSBoYXNobWFwcworICAgIGZvciAoYXV0byBwdHIgPSBtX3ZhbHVlS2V5
ZWRUYWJsZS5iZWdpbigpOyBwdHIgIT0gbV92YWx1ZUtleWVkVGFibGUuZW5kKCk7ICsrcHRyKQor
ICAgICAgICBwdHItPnZhbHVlID0gbV9lbnRyaWVzW3B0ci0+dmFsdWVdLnZhbHVlLmdldCgpLmFz
SW50MzIoKTsKKyAgICBmb3IgKGF1dG8gcHRyID0gbV9zdHJpbmdLZXllZFRhYmxlLmJlZ2luKCk7
IHB0ciAhPSBtX3N0cmluZ0tleWVkVGFibGUuZW5kKCk7ICsrcHRyKQorICAgICAgICBwdHItPnZh
bHVlID0gbV9lbnRyaWVzW3B0ci0+dmFsdWVdLnZhbHVlLmdldCgpLmFzSW50MzIoKTsKKworICAg
IEFTU0VSVCgobV9zaXplIC0gbmV3RW5kKSA9PSBtX2RlbGV0ZWRDb3VudCk7CisgICAgbV9kZWxl
dGVkQ291bnQgPSAwOworCisgICAgbV9jYXBhY2l0eSA9IG5ld1NpemU7CisgICAgbV9zaXplID0g
bmV3RW5kOworICAgIG1fZW50cmllcyA9IGRlc3RpbmF0aW9uOworCit9CisKK3ZvaWQgTWFwRGF0
YTo6cmVwbGFjZUJhY2tpbmdTdG9yZShFbnRyeSogZGVzdGluYXRpb24sIGludDMyX3QgbmV3U2l6
ZSkKK3sKKyAgICBBU1NFUlQoIXNob3VsZFBhY2soKSk7CisgICAgaW50MzJfdCBuZXdFbmQgPSAw
OworICAgIFJFTEVBU0VfQVNTRVJUKG5ld1NpemUgPiAwKTsKKyAgICBBU1NFUlQobmV3U2l6ZSA+
PSBtX2NhcGFjaXR5KTsKKyAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fZW50cmllcywgc2l6ZW9m
KEVudHJ5KSAqIG1fc2l6ZSk7CisgICAgbmV3RW5kID0gbV9zaXplOworICAgIG1fY2FwYWNpdHkg
PSBuZXdTaXplOworICAgIG1fc2l6ZSA9IG5ld0VuZDsKKyAgICBtX2VudHJpZXMgPSBkZXN0aW5h
dGlvbjsKK30KKworQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YTo6ZW5zdXJlU3BhY2VGb3JBcHBlbmQo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgaWYgKG1fY2FwYWNpdHkgPiBtX3NpemUpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSA9IHN0ZDo6bWF4
KG1fY2FwYWNpdHkgKyAobV9jYXBhY2l0eSAvIDIpICsgMSwgTWluaW11bU1hcFNpemUpOworICAg
IHZvaWQqIG5ld1N0b3JhZ2UgPSAwOworICAgIGlmICghY2FsbEZyYW1lLT5oZWFwKCktPnRyeUFs
bG9jYXRlU3RvcmFnZSh0aGlzLCByZXF1aXJlZFNpemUgKiBzaXplb2YoRW50cnkpLCAmbmV3U3Rv
cmFnZSkpIHsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGNhbGxGcmFtZSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgRGVmZXJHQyBkZWZlcigqY2FsbEZyYW1lLT5o
ZWFwKCkpOworICAgIEVudHJ5KiBuZXdFbnRyaWVzID0gc3RhdGljX2Nhc3Q8RW50cnkqPihuZXdT
dG9yYWdlKTsKKyAgICBpZiAoc2hvdWxkUGFjaygpKQorICAgICAgICByZXBsYWNlQW5kUGFja0Jh
Y2tpbmdTdG9yZShuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgIGVsc2UKKyAgICAgICAg
cmVwbGFjZUJhY2tpbmdTdG9yZShuZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIE1hcERhdGE6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZp
c2l0b3IpOworICAgIE1hcERhdGEqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TWFwRGF0YSo+KGNlbGwp
OworICAgIEVudHJ5KiBlbnRyaWVzID0gdGhpc09iamVjdC0+bV9lbnRyaWVzOworICAgIGlmICgh
ZW50cmllcykKKyAgICAgICAgcmV0dXJuOworICAgIHNpemVfdCBzaXplID0gdGhpc09iamVjdC0+
bV9zaXplOworICAgIGlmICh0aGlzT2JqZWN0LT5tX2RlbGV0ZWRDb3VudCkgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCFlbnRy
aWVzW2ldLmtleSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZlbnRyaWVzW2ldLmtleSk7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
ZW50cmllc1tpXS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmRWYWx1ZXMoJmVudHJpZXNbMF0ua2V5LCBzaXplICogKHNpemVvZihFbnRyeSkgLyBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpOworCisgICAgdmlzaXRvci5jb3B5TGF0ZXIo
dGhpc09iamVjdCwgTWFwQmFja2luZ1N0b3JlQ29weVRva2VuLCBlbnRyaWVzLCBzaXplKTsKK30K
Kwordm9pZCBNYXBEYXRhOjpjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCogY2VsbCwgQ29weVZpc2l0
b3ImIHZpc2l0b3IsIENvcHlUb2tlbiB0b2tlbikKK3sKKyAgICBNYXBEYXRhKiB0aGlzT2JqZWN0
ID0ganNDYXN0PE1hcERhdGEqPihjZWxsKTsKKyAgICBpZiAodG9rZW4gPT0gTWFwQmFja2luZ1N0
b3JlQ29weVRva2VuICYmIHZpc2l0b3IuY2hlY2tJZlNob3VsZENvcHkodGhpc09iamVjdC0+bV9l
bnRyaWVzKSkgeworICAgICAgICBzaXplX3QgcmVxdWlyZWRTaXplID0gdGhpc09iamVjdC0+bV9j
YXBhY2l0eSAqIHNpemVvZihFbnRyeSk7CisgICAgICAgIEVudHJ5KiBvbGRFbnRyaWVzID0gdGhp
c09iamVjdC0+bV9lbnRyaWVzOworICAgICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19j
YXN0PEVudHJ5Kj4odmlzaXRvci5hbGxvY2F0ZU5ld1NwYWNlKHRoaXNPYmplY3QtPm1fY2FwYWNp
dHkgKiBzaXplb2YoRW50cnkpKSk7CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5zaG91bGRQYWNr
KCkpCisgICAgICAgICAgICB0aGlzT2JqZWN0LT5yZXBsYWNlQW5kUGFja0JhY2tpbmdTdG9yZShu
ZXdFbnRyaWVzLCByZXF1aXJlZFNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlz
T2JqZWN0LT5yZXBsYWNlQmFja2luZ1N0b3JlKG5ld0VudHJpZXMsIHJlcXVpcmVkU2l6ZSk7Cisg
ICAgICAgIHZpc2l0b3IuZGlkQ29weShvbGRFbnRyaWVzLCB0aGlzT2JqZWN0LT5tX2NhcGFjaXR5
ICogc2l6ZW9mKEVudHJ5KSk7CisgICAgfQorICAgIEJhc2U6OmNvcHlCYWNraW5nU3RvcmUoY2Vs
bCwgdmlzaXRvciwgdG9rZW4pOworfQorCit2b2lkIE1hcERhdGE6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQoreworICAgIHN0YXRpY19jYXN0PE1hcERhdGEqPihjZWxsKS0+fk1hcERhdGEoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZl
ZWIxZTZiMjIzMTM2MDM0ZWVlZWMxODI4MTEzMDdlNmE4ODIyZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTAsMCArMSwyMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcERhdGFfaAorI2RlZmluZSBNYXBEYXRhX2gKKwor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRl
ICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
TWFwRGF0YSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RydWN0IGNvbnN0X2l0ZXJh
dG9yIHsKKyAgICAgICAgY29uc3RfaXRlcmF0b3IoY29uc3QgTWFwRGF0YSopOworICAgICAgICB+
Y29uc3RfaXRlcmF0b3IoKTsKKyAgICAgICAgY29uc3QgV1RGOjpLZXlWYWx1ZVBhaXI8SlNWYWx1
ZSwgSlNWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgICAgIEpTVmFsdWUga2V5KCkgY29u
c3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1cm4gbV9tYXBEYXRhLT5tX2VudHJpZXNbbV9pbmRl
eF0ua2V5LmdldCgpOyB9CisgICAgICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IEFTU0VSVCgh
YXRFbmQoKSk7IHJldHVybiBtX21hcERhdGEtPm1fZW50cmllc1ttX2luZGV4XS52YWx1ZS5nZXQo
KTsgfQorICAgICAgICB2b2lkIG9wZXJhdG9yKysoKTsKKyAgICAgICAgc3RhdGljIGNvbnN0X2l0
ZXJhdG9yIGVuZChjb25zdCBNYXBEYXRhKik7CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBjb25zdF9pdGVyYXRvciYgb3RoZXIpOworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Y29uc3RfaXRlcmF0b3ImIG90aGVyKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIC8vIFRoaXMg
aXMgYSBiaXQgZ25hcmx5LiBXZSB1c2UgYW4gaW5kZXggb2YgLTEgdG8gaW5kaWNhdGUgdGhlCisg
ICAgICAgIC8vICJlbmQoKSIgaXRlcmF0b3IuIEJ5IGNhc3RpbmcgdG8gdW5zaWduZWQgd2UgY2Fu
IGltbWVkaWF0ZWx5CisgICAgICAgIC8vIHRlc3QgaWYgYm90aCBpdGVyYXRvcnMgYXJlIGF0IHRo
ZSBlbmQgb2YgdGhlaXIgaXRlcmF0aW9uLgorICAgICAgICAvLyBXZSBuZWVkIHRoaXMgaW4gb3Jk
ZXIgdG8ga2VlcCB0aGUgY29tbW9uIGNhc2UgKGVnLiBpdGVyICE9IGVuZCgpKQorICAgICAgICAv
LyBmYXN0LgorICAgICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
c2l6ZV90PihtX2luZGV4KSA+PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbWFwRGF0YS0+bV9zaXpl
KTsgfQorICAgICAgICBjb25zdCBNYXBEYXRhKiBtX21hcERhdGE7CisgICAgICAgIGludDMyX3Qg
bV9pbmRleDsKKyAgICB9OworCisgICAgc3RydWN0IEtleVR5cGUgeworICAgICAgICBBTFdBWVNf
SU5MSU5FIEtleVR5cGUoKSB7IH0KKyAgICAgICAgS2V5VHlwZShKU1ZhbHVlKTsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZTsKKyAgICB9OworCisgICAgc3RhdGljIE1hcERhdGEqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBNYXBEYXRh
KiBtYXBEYXRhID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TWFwRGF0YT4odm0uaGVhcCkp
IE1hcERhdGEodm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIG1hcERhdGEtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIG1hcERhdGE7CisgICAgfQorCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgdm9pZCBzZXQoQ2FsbEZy
YW1lKiwgS2V5VHlwZSwgSlNWYWx1ZSk7CisgICAgSlNWYWx1ZSBnZXQoQ2FsbEZyYW1lKiwgS2V5
VHlwZSk7CisgICAgYm9vbCByZW1vdmUoQ2FsbEZyYW1lKiwgS2V5VHlwZSk7CisgICAgYm9vbCBj
b250YWlucyhDYWxsRnJhbWUqLCBLZXlUeXBlKTsKKyAgICBzaXplX3Qgc2l6ZShDYWxsRnJhbWUq
KSBjb25zdCB7IHJldHVybiBtX3NpemUgLSBtX2RlbGV0ZWRDb3VudDsgfQorCisgICAgY29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzKTsgfQor
ICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yOjpl
bmQodGhpcyk7IH0KKworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENo
aWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDMyX3Q+IEluZGV4VHJhaXRzOwor
CisgICAgLy8gT3VyIG1hcmtpbmcgZnVuY3Rpb25zIGV4cGVjdCBFbnRyeSB0byBtYWludGFpbiB0
aGlzIGxheW91dAorICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtu
b3duPiBrZXk7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiB2YWx1ZTsKKyAgICB9Owor
CisgICAgdHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNW
YWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cywgSW5kZXhUcmFpdHM+IFZhbHVlS2V5
ZWRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBpbnQzMl90LCB0eXBlbmFt
ZSBXVEY6OkRlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPjo6SGFzaCwgV1RGOjpIYXNoVHJhaXRzPFN0
cmluZ0ltcGwqPiwgSW5kZXhUcmFpdHM+IFN0cmluZ0tleWVkTWFwOworCisgICAgTWFwRGF0YShW
TSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cisg
ICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENv
cHlUb2tlbik7CisKKworICAgIEFMV0FZU19JTkxJTkUgRW50cnkqIGZpbmQoQ2FsbEZyYW1lKiwg
S2V5VHlwZSk7CisgICAgQUxXQVlTX0lOTElORSBFbnRyeSogYWRkKENhbGxGcmFtZSosIEtleVR5
cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleT4gQUxXQVlTX0lO
TElORSBFbnRyeSogYWRkKENhbGxGcmFtZSosIE1hcCYsIEtleSwgS2V5VHlwZSk7CisKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkUGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRlZENv
dW50ICYmICFtX2l0ZXJhdG9yQ291bnQ7IH0KKyAgICBDaGVja2VkQm9vbGVhbiBlbnN1cmVTcGFj
ZUZvckFwcGVuZChDYWxsRnJhbWUqKTsKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXBsYWNl
QW5kUGFja0JhY2tpbmdTdG9yZShFbnRyeSogZGVzdGluYXRpb24sIGludDMyX3QgbmV3U2l6ZSk7
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlcGxhY2VCYWNraW5nU3RvcmUoRW50cnkqIGRlc3Rp
bmF0aW9uLCBpbnQzMl90IG5ld1NpemUpOworCisgICAgVmFsdWVLZXllZE1hcCBtX3ZhbHVlS2V5
ZWRUYWJsZTsKKyAgICBTdHJpbmdLZXllZE1hcCBtX3N0cmluZ0tleWVkVGFibGU7CisgICAgaW50
MzJfdCBtX2NhcGFjaXR5OworICAgIGludDMyX3QgbV9zaXplOworICAgIGludDMyX3QgbV9kZWxl
dGVkQ291bnQ7CisgICAgbXV0YWJsZSBpbnQzMl90IG1faXRlcmF0b3JDb3VudDsKKyAgICBFbnRy
eSogbV9lbnRyaWVzOworfTsKKworQUxXQVlTX0lOTElORSB2b2lkIE1hcERhdGE6OmNsZWFyKCkK
K3sKKyAgICBtX3ZhbHVlS2V5ZWRUYWJsZS5jbGVhcigpOworICAgIG1fc3RyaW5nS2V5ZWRUYWJs
ZS5jbGVhcigpOworICAgIG1fY2FwYWNpdHkgPSAwOworICAgIG1fc2l6ZSA9IDA7CisgICAgbV9k
ZWxldGVkQ291bnQgPSAwOworICAgIG1fZW50cmllcyA9IDA7Cit9CisKK0FMV0FZU19JTkxJTkUg
TWFwRGF0YTo6S2V5VHlwZTo6S2V5VHlwZShKU1ZhbHVlIHYpCit7CisgICAgaWYgKCF2LmlzRG91
YmxlKCkpIHsKKyAgICAgICAgdmFsdWUgPSB2OworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGRvdWJsZSBkID0gdi5hc0RvdWJsZSgpOworICAgIGlmIChpc25hbihkKSB8fCAoc2lnbmJpdChk
KSAmJiBkID09IDAuMCkpIHsKKyAgICAgICAgdmFsdWUgPSB2OworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaW50IGkgPSBzdGF0aWNfY2FzdDxpbnQ+KHYuYXNEb3VibGUoKSk7CisgICAg
aWYgKGkgIT0gdikKKyAgICAgICAgdmFsdWUgPSB2OworICAgIGVsc2UKKyAgICAgICAgdmFsdWUg
PSBqc051bWJlcihpKTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIE1hcERhdGE6OmNvbnN0X2l0
ZXJhdG9yOjpvcGVyYXRvcisrKCkKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIEVudHJ5
KiBlbnRyaWVzID0gbV9tYXBEYXRhLT5tX2VudHJpZXM7CisgICAgc2l6ZV90IGluZGV4ID0gbV9p
bmRleCArIDE7CisgICAgc2l6ZV90IGVuZCA9IG1fbWFwRGF0YS0+bV9zaXplOworICAgIHdoaWxl
IChpbmRleCA8IGVuZCAmJiAhZW50cmllc1tpbmRleF0ua2V5KQorICAgICAgICBpbmRleCsrOwor
ICAgIG1faW5kZXggPSBpbmRleDsKK30KKworQUxXQVlTX0lOTElORSBNYXBEYXRhOjpjb25zdF9p
dGVyYXRvcjo6Y29uc3RfaXRlcmF0b3IoY29uc3QgTWFwRGF0YSogbWFwRGF0YSkKKyAgICA6IG1f
bWFwRGF0YShtYXBEYXRhKQorICAgICwgbV9pbmRleCgwKQoreworICAgIG1fbWFwRGF0YS0+bV9p
dGVyYXRvckNvdW50Kys7Cit9CisKK0FMV0FZU19JTkxJTkUgTWFwRGF0YTo6Y29uc3RfaXRlcmF0
b3I6On5jb25zdF9pdGVyYXRvcigpCit7CisgICAgbV9tYXBEYXRhLT5tX2l0ZXJhdG9yQ291bnQt
LTsKK30KKworQUxXQVlTX0lOTElORSBjb25zdCBXVEY6OktleVZhbHVlUGFpcjxKU1ZhbHVlLCBK
U1ZhbHVlPiBNYXBEYXRhOjpjb25zdF9pdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAg
ICBFbnRyeSogZW50cnkgPSAmbV9tYXBEYXRhLT5tX2VudHJpZXNbbV9pbmRleF07CisgICAgcmV0
dXJuIFdURjo6S2V5VmFsdWVQYWlyPEpTVmFsdWUsIEpTVmFsdWU+KGVudHJ5LT5rZXkuZ2V0KCks
IGVudHJ5LT52YWx1ZS5nZXQoKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgTWFwRGF0YTo6Y29uc3Rf
aXRlcmF0b3IgTWFwRGF0YTo6Y29uc3RfaXRlcmF0b3I6OmVuZChjb25zdCBNYXBEYXRhKiBtYXBE
YXRhKQoreworICAgIGNvbnN0X2l0ZXJhdG9yIHJlc3VsdChtYXBEYXRhKTsKKyAgICByZXN1bHQu
bV9pbmRleCA9IC0xOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9v
bCBNYXBEYXRhOjpjb25zdF9pdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRv
ciYgb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyLm1fbWFwRGF0YSA9PSBtX21hcERhdGEpOwor
ICAgIGlmIChhdEVuZCgpICYmIG90aGVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OworfQorCitBTFdBWVNfSU5MSU5F
IGJvb2wgTWFwRGF0YTo6Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRl
cmF0b3ImIG90aGVyKQoreworICAgIHJldHVybiAhKCp0aGlzICE9IG90aGVyKTsKK30KKworfQor
CisjZW5kaWYgLyogIWRlZmluZWQoTWFwRGF0YV9oKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNjNTQxYjhkOTI5NTVl
ZTgzNTkxYTQ1ZjI1MWQ4ZDI1OGZkZGIxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJNYXBQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkNhY2hlZENh
bGwuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIK
KyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUg
Ik1hcERhdGEuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBNYXBQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIk1hcCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoTWFwUHJvdG90eXBlKSB9OworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXBQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0ZvckVhY2goRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNH
ZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQ
cm90b0Z1bmNIYXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUoRXhlY1N0YXRlKik7CisgICAgCit2b2lk
IE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwor
ICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CisKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmNsZWFyLCBtYXBQcm90b0Z1bmNDbGVhciwgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZGVs
ZXRlS2V5d29yZCwgbWFwUHJvdG9GdW5jRGVsZXRlLCBEb250RW51bSwgMSk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5mb3JFYWNoLCBtYXBQcm90b0Z1bmNGb3JF
YWNoLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5nZXQsIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzLCBtYXBQcm90b0Z1bmNIYXMsIERvbnRFbnVt
LCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNldCwgbWFw
UHJvdG9GdW5jU2V0LCBEb250RW51bSwgMik7CisKKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29y
ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zaXplLnN0cmluZygpLCBtYXBQcm90b0Z1bmNTaXplKTsKKyAgICBhY2Nlc3Nvci0+c2V0
R2V0dGVyKGV4ZWMtPnZtKCksIGZ1bmN0aW9uKTsKKyAgICBwdXREaXJlY3RBY2Nlc3NvcihleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBhY2Nlc3NvciwgRG9udEVudW0gfCBBY2Nlc3Nvcik7
Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIE1hcERhdGEqIGdldE1hcERhdGEoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIGlmICghdGhpc1ZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlTm90QW5P
YmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgSlNNYXAqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih0aGlzVmFsdWUpOwor
ICAgIGlmICghbWFwKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlM
aXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdCIpKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBtYXAtPm1hcERhdGEoKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNDbGVhcihDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBkYXRhLT5jbGVhcigpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGRhdGEtPnJlbW92ZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRm9yRWFjaChDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVlIGNhbGxCYWNr
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxCYWNrLCBjYWxsRGF0YSk7CisgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJNYXAucHJv
dG90eXBlLmZvckVhY2ggY2FsbGVkIHdpdGhvdXQgY2FsbGJhY2siKSkpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBWTSogdm0gPSAmY2FsbEZy
YW1lLT52bSgpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTKSB7CisgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsQmFjayk7CisgICAg
ICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChjYWxsRnJhbWUsIGZ1bmN0aW9uLCAyKTsKKyAgICAg
ICAgZm9yIChhdXRvIHB0ciA9IGRhdGEtPmJlZ2luKCksIGVuZCA9IGRhdGEtPmVuZCgpOyBwdHIg
IT0gZW5kICYmICF2bS0+ZXhjZXB0aW9uKCk7ICsrcHRyKSB7CisgICAgICAgICAgICBjYWNoZWRD
YWxsLnNldFRoaXModGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1l
bnQoMCwgcHRyLnZhbHVlKCkpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgx
LCBwdHIua2V5KCkpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5jYWxsKCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGF1dG8gcHRyID0gZGF0YS0+YmVnaW4oKSwgZW5k
ID0gZGF0YS0+ZW5kKCk7IHB0ciAhPSBlbmQgJiYgIXZtLT5leGNlcHRpb24oKTsgKytwdHIpIHsK
KyAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgICAgICBhcmdz
LmFwcGVuZChwdHIudmFsdWUoKSk7CisgICAgICAgICAgICBhcmdzLmFwcGVuZChwdHIua2V5KCkp
OworICAgICAgICAgICAgSlNDOjpjYWxsKGNhbGxGcmFtZSwgY2FsbEJhY2ssIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBN
YXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGRhdGEtPmdldChjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1bHQg
PSBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNIYXMoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oZGF0YS0+Y29udGFpbnMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y1NldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFw
RGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBkYXRh
LT5zZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihkYXRhLT5zaXplKGNhbGxGcmFtZSkpKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNmYwYWI2YTU2MzlhNzFjY2EyNjBlODRlOGNhOGJmYTFkNGMyYzlhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTWFwUHJvdG90eXBlX2gKKyNkZWZpbmUgTWFwUHJvdG90eXBlX2gKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBQcm90b3R5cGUg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgTWFwUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgICAgIE1hcFByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8TWFwUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTWFwUHJvdG90
eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFwUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZShleGVjLT52bSgpLCBzdHJ1
Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNYXBQcm90
b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA3MzAyMjU4OTU4
ZWVhYjUwM2E4NDJiYThiNGMzMDliNThiY2Q5YjdkLi4xNmY5YTMwZmMwNTFkYzA0N2VmZjYwMGJh
NWNiNThmNTk5NzczYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01
OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMZXhlci5o
IgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJO
b2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUu
aCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBjZTlkMDExOTNhYjUyMGQzYzQ2MmVjMmU4NmI2N2UzM2FjOGNkZjhjLi45ZjAz
ZmM4NjE1ZDM4MjVjZDlhNDViZGE1NWM4NjA5ZDBmODM2YTIwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMDgtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgRVM2IE1hcCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMDMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzCisKKyAgICAgICAgKiBmYXN0L2pzL2Jhc2ljLW1hcC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvYmFzaWMtbWFwLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLW1hcC5qczogQWRkZWQu
CisKIDIwMTMtMDgtMjkgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjE1MzIyMiwgMzItYml0KTogTlVMTCBKU1ZhbHVlKCkgc2VlbiB3
aGVuIHJ1bm5pbmcgcGVhY2VrZWVwZXIgYmVuY2htYXJrCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2pzL2Jhc2ljLW1hcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jh
c2ljLW1hcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIzNDQyZjkzYzU0ODljNGE1YTI0NWJh
YWU0YmU5NjE5NWE0NGMwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
YmFzaWMtbWFwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyNyBAQAorVGVzdHMgYmFzaWMgY29y
cmVjdG5lc3Mgb2YgRVMgTWFwIG9iamVjdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBNYXAgaW5zdGFuY2VvZiBNYXAgaXMgZmFsc2UKK1BBU1MgTWFwLnByb3RvdHlwZSBp
bnN0YW5jZW9mIE1hcCBpcyBmYWxzZQorUEFTUyBuZXcgTWFwKCkgaW5zdGFuY2VvZiBNYXAgaXMg
dHJ1ZQorUEFTUyBuZXcgTWFwKG51bGwpIGluc3RhbmNlb2YgTWFwIGlzIHRydWUKK1BBU1MgbmV3
IE1hcCh1bmRlZmluZWQpIGluc3RhbmNlb2YgTWFwIGlzIHRydWUKK1BBU1MgbmV3IE1hcCh1bmRl
ZmluZWQsIHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBNYXAgaXMgdHJ1ZQorUEFTUyBuZXcgTWFwKG51
bGwsIHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBNYXAgaXMgdHJ1ZQorUEFTUyBuZXcgTWFwKDEpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1hcCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2NlcHQg
YXJndW1lbnRzLgorUEFTUyBuZXcgTWFwKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE1hcCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzLgorUEFTUyBuZXcgTWFw
KFtdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNYXAgY29uc3RydWN0b3IgZG9lcyBub3Qg
YWNjZXB0IGFyZ3VtZW50cy4KK1BBU1MgbmV3IE1hcCh7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTWFwIGNvbnN0cnVjdG9yIGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMuCitQQVNTIG5l
dyBNYXAodW5kZWZpbmVkLCBudWxsKSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogSW52YWxp
ZCBjb21wYXJhdG9yIGZ1bmN0aW9uLgorUEFTUyBuZXcgTWFwKHVuZGVmaW5lZCwge30pIHRocmV3
IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBJbnZhbGlkIGNvbXBhcmF0b3IgZnVuY3Rpb24uCitQQVNT
IE9iamVjdC5oYXNPd25Qcm9wZXJ0eShtYXAsICdzaXplJykgaXMgZmFsc2UKK1BBU1MgTWFwLnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnc2l6ZScpIGlzIHRydWUKK1BBU1MgTWFwLnByb3RvdHlw
ZS5zaXplIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1NYXAgb2JqZWN0LgorUEFTUyBtYXAuc2l6ZSBpcyAwCitQQVNTIG1hcC5zZXQoLTAsIDEp
IGlzIG1hcAorUEFTUyBtYXAuc2V0KDAsIDIpIGlzIG1hcAorUEFTUyBtYXAuc2V0KEluZmluaXR5
LCAzKSBpcyBtYXAKK1BBU1MgbWFwLnNldCgtSW5maW5pdHksIDQpIGlzIG1hcAorUEFTUyBtYXAu
c2V0KE5hTiwgNSkgaXMgbWFwCitQQVNTIG1hcC5zZXQoJzAnLCA2KSBpcyBtYXAKK1BBU1MgbWFw
LnNldCgwLjEsIDcpIGlzIG1hcAorUEFTUyBtYXAuc2l6ZSBpcyA3CitQQVNTIG1hcC5nZXQoLTAp
IGlzIDEKK1BBU1MgbWFwLmdldCgwKSBpcyAyCitQQVNTIG1hcC5nZXQoSW5maW5pdHkpIGlzIDMK
K1BBU1MgbWFwLmdldCgtSW5maW5pdHkpIGlzIDQKK1BBU1MgbWFwLmdldChOYU4pIGlzIDUKK1BB
U1MgbWFwLmdldCgnMCcpIGlzIDYKK1BBU1MgbWFwLmdldCgwLjEpIGlzIDcKK1BBU1MgbWFwLmhh
cygtMCkgaXMgdHJ1ZQorUEFTUyBtYXAuaGFzKDApIGlzIHRydWUKK1BBU1MgbWFwLmhhcyhJbmZp
bml0eSkgaXMgdHJ1ZQorUEFTUyBtYXAuaGFzKC1JbmZpbml0eSkgaXMgdHJ1ZQorUEFTUyBtYXAu
aGFzKE5hTikgaXMgdHJ1ZQorUEFTUyBtYXAuaGFzKCcwJykgaXMgdHJ1ZQorUEFTUyBtYXAuaGFz
KDAuMSkgaXMgdHJ1ZQorUEFTUyBtYXAuZGVsZXRlKC0wKSBpcyB0cnVlCitQQVNTIG1hcC5kZWxl
dGUoMCkgaXMgdHJ1ZQorUEFTUyBtYXAuZGVsZXRlKEluZmluaXR5KSBpcyB0cnVlCitQQVNTIG1h
cC5kZWxldGUoLUluZmluaXR5KSBpcyB0cnVlCitQQVNTIG1hcC5kZWxldGUoTmFOKSBpcyB0cnVl
CitQQVNTIG1hcC5kZWxldGUoJzAnKSBpcyB0cnVlCitQQVNTIG1hcC5kZWxldGUoMC4xKSBpcyB0
cnVlCitQQVNTIG1hcC5kZWxldGUoLTApIGlzIGZhbHNlCitQQVNTIG1hcC5kZWxldGUoMCkgaXMg
ZmFsc2UKK1BBU1MgbWFwLmRlbGV0ZShJbmZpbml0eSkgaXMgZmFsc2UKK1BBU1MgbWFwLmRlbGV0
ZSgtSW5maW5pdHkpIGlzIGZhbHNlCitQQVNTIG1hcC5kZWxldGUoTmFOKSBpcyBmYWxzZQorUEFT
UyBtYXAuZGVsZXRlKCcwJykgaXMgZmFsc2UKK1BBU1MgbWFwLmRlbGV0ZSgwLjEpIGlzIGZhbHNl
CitQQVNTIG1hcC5nZXQoc2ltcGxlU3RyaW5nKSBpcyBtYXAuZ2V0KG90aGVyU3RyaW5nKQorUEFT
UyBtYXAuY2xlYXIoKSBpcyB1bmRlZmluZWQuCitQQVNTIG1hcC5zaXplIGlzIDAKK1BBU1MgbWFw
LnNldCgwLCAwKSBpcyBtYXAKK1BBU1MgbWFwLnNldCgnMCcsIDEpIGlzIG1hcAorUEFTUyBtYXAu
c2V0KDEsIDIpIGlzIG1hcAorUEFTUyBtYXAuc2V0KCcxJywgMykgaXMgbWFwCitQQVNTIG1hcC5z
ZXQoMiwgNCkgaXMgbWFwCitQQVNTIG1hcC5zZXQoJzInLCA1KSBpcyBtYXAKK1BBU1MgbWFwLnNl
dCgzLCA2KSBpcyBtYXAKK1BBU1MgbWFwLnNldCgnMycsIDcpIGlzIG1hcAorUEFTUyBtYXAuc2V0
KDQsIDgpIGlzIG1hcAorUEFTUyBtYXAuc2V0KCc0JywgOSkgaXMgbWFwCitQQVNTIG1hcC5zZXQo
NSwgMTApIGlzIG1hcAorUEFTUyBtYXAuc2V0KCc1JywgMTEpIGlzIG1hcAorUEFTUyBtYXAuc2V0
KDYsIDEyKSBpcyBtYXAKK1BBU1MgbWFwLnNldCgnNicsIDEzKSBpcyBtYXAKK1BBU1MgbWFwLnNp
emUgaXMgMTQKK2ZvckVhY2ggIzAKK1BBU1MgdGVzdFRoaXMgaXMgdW5kZWZpbmVkLgorMAorZm9y
RWFjaCAjMQorUEFTUyB0ZXN0VGhpcyBpcyB0aGlzVmFsdWUKKzEKKzAKKzEKKzIKKzMKKzQKKzUK
KzYKKzcKKzgKKzkKKzEwCisxMQorMTIKKzEzCitQQVNTIG1hcC5mb3JFYWNoKGRlYnVnKSBpcyB1
bmRlZmluZWQuCiswIDogbnVtYmVyID0+IDAKKzAgOiBzdHJpbmcgPT4gMQorMSA6IG51bWJlciA9
PiAyCisxIDogc3RyaW5nID0+IDMKKzIgOiBudW1iZXIgPT4gNAorMiA6IHN0cmluZyA9PiA1Cisz
IDogc3RyaW5nID0+IDcKKzQgOiBzdHJpbmcgPT4gOQorNSA6IG51bWJlciA9PiAxMAorNSA6IHN0
cmluZyA9PiAxMQorNiA6IG51bWJlciA9PiAxMgorNiA6IHN0cmluZyA9PiAxMworNCA6IG51bWJl
ciA9PiAxMQorUEFTUyBtYXAuZ2V0KDApIGlzIDAKK1BBU1MgbWFwLmdldCgiMCIpIGlzIDEKK1BB
U1MgbWFwLmdldCgxKSBpcyAyCitQQVNTIG1hcC5nZXQoIjEiKSBpcyAzCitQQVNTIG1hcC5nZXQo
MikgaXMgNAorUEFTUyBtYXAuZ2V0KCIyIikgaXMgNQorUEFTUyBtYXAuZ2V0KCIzIikgaXMgInJl
cGxhY2VkIgorUEFTUyBtYXAuZ2V0KCI0IikgaXMgOQorUEFTUyBtYXAuZ2V0KDUpIGlzIDEwCitQ
QVNTIG1hcC5nZXQoIjUiKSBpcyAxMQorUEFTUyBtYXAuZ2V0KDYpIGlzIDEyCitQQVNTIG1hcC5n
ZXQoIjYiKSBpcyAxMworUEFTUyBtYXAuZ2V0KDQpIGlzIDExCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9iYXNpYy1tYXAuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtbWFwLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzc0N2UxMjc4MjgwZTc1YzcxZWVlNzlkMDdhYzU0MDAwOTcxODZlNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtbWFwLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2Jhc2ljLW1hcC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1tYXAuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjZDZjYzc4MTdmYWE5
NWIyMzBhMTA0YTBlMTQ3NDFlODNiMWVhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLW1hcC5qcwpAQCAtMCwwICsxLDEyMyBAQAorZGVz
Y3JpcHRpb24oIlRlc3RzIGJhc2ljIGNvcnJlY3RuZXNzIG9mIEVTIE1hcCBvYmplY3QiKTsKKwor
Ly8gQ3VycmVudGx5IHdlIGRvbid0IHN1cHBvcnQgaXRlcmF0b3JzLCBzbyB3ZSB0aHJvdworLy8g
b24gYW55IG5vbi10aHJvd2luZyBwYXJhbWV0ZXJzCitzaG91bGRCZUZhbHNlKCJNYXAgaW5zdGFu
Y2VvZiBNYXAiKTsKK3Nob3VsZEJlRmFsc2UoIk1hcC5wcm90b3R5cGUgaW5zdGFuY2VvZiBNYXAi
KTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcCgpIGluc3RhbmNlb2YgTWFwIik7CitzaG91bGRCZVRy
dWUoIm5ldyBNYXAobnVsbCkgaW5zdGFuY2VvZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1h
cCh1bmRlZmluZWQpIGluc3RhbmNlb2YgTWFwIik7CitzaG91bGRCZVRydWUoIm5ldyBNYXAodW5k
ZWZpbmVkLCB1bmRlZmluZWQpIGluc3RhbmNlb2YgTWFwIik7CitzaG91bGRCZVRydWUoIm5ldyBN
YXAobnVsbCwgdW5kZWZpbmVkKSBpbnN0YW5jZW9mIE1hcCIpOworCitzaG91bGRUaHJvdygibmV3
IE1hcCgxKSIpOworc2hvdWxkVGhyb3coIm5ldyBNYXAodHJ1ZSkiKTsKK3Nob3VsZFRocm93KCJu
ZXcgTWFwKFtdKSIpOworc2hvdWxkVGhyb3coIm5ldyBNYXAoe30pIik7CitzaG91bGRUaHJvdygi
bmV3IE1hcCh1bmRlZmluZWQsIG51bGwpIik7CitzaG91bGRUaHJvdygibmV3IE1hcCh1bmRlZmlu
ZWQsIHt9KSIpOworCit2YXIgbWFwID0gbmV3IE1hcDsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5o
YXNPd25Qcm9wZXJ0eShtYXAsICdzaXplJykiKQorc2hvdWxkQmVUcnVlKCJNYXAucHJvdG90eXBl
Lmhhc093blByb3BlcnR5KCdzaXplJykiKQorc2hvdWxkVGhyb3coIk1hcC5wcm90b3R5cGUuc2l6
ZSIpCitzaG91bGRCZSgibWFwLnNpemUiLCAiMCIpCitzaG91bGRCZSgibWFwLnNldCgtMCwgMSki
LCAibWFwIikKK3Nob3VsZEJlKCJtYXAuc2V0KDAsIDIpIiwgIm1hcCIpCitzaG91bGRCZSgibWFw
LnNldChJbmZpbml0eSwgMykiLCAibWFwIikKK3Nob3VsZEJlKCJtYXAuc2V0KC1JbmZpbml0eSwg
NCkiLCAibWFwIikKK3Nob3VsZEJlKCJtYXAuc2V0KE5hTiwgNSkiLCAibWFwIikKK3Nob3VsZEJl
KCJtYXAuc2V0KCcwJywgNikiLCAibWFwIikKK3Nob3VsZEJlKCJtYXAuc2V0KDAuMSwgNykiLCAi
bWFwIikKK3Nob3VsZEJlKCJtYXAuc2l6ZSIsICI3IikKK3Nob3VsZEJlKCJtYXAuZ2V0KC0wKSIs
ICIxIikKK3Nob3VsZEJlKCJtYXAuZ2V0KDApIiwgIjIiKQorc2hvdWxkQmUoIm1hcC5nZXQoSW5m
aW5pdHkpIiwgIjMiKQorc2hvdWxkQmUoIm1hcC5nZXQoLUluZmluaXR5KSIsICI0IikKK3Nob3Vs
ZEJlKCJtYXAuZ2V0KE5hTikiLCAiNSIpCitzaG91bGRCZSgibWFwLmdldCgnMCcpIiwgIjYiKQor
c2hvdWxkQmUoIm1hcC5nZXQoMC4xKSIsICI3IikKKworc2hvdWxkQmVUcnVlKCJtYXAuaGFzKC0w
KSIpCitzaG91bGRCZVRydWUoIm1hcC5oYXMoMCkiKQorc2hvdWxkQmVUcnVlKCJtYXAuaGFzKElu
ZmluaXR5KSIpCitzaG91bGRCZVRydWUoIm1hcC5oYXMoLUluZmluaXR5KSIpCitzaG91bGRCZVRy
dWUoIm1hcC5oYXMoTmFOKSIpCitzaG91bGRCZVRydWUoIm1hcC5oYXMoJzAnKSIpCitzaG91bGRC
ZVRydWUoIm1hcC5oYXMoMC4xKSIpCisKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZSgtMCkiKQor
c2hvdWxkQmVUcnVlKCJtYXAuZGVsZXRlKDApIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmRlbGV0ZShJ
bmZpbml0eSkiKQorc2hvdWxkQmVUcnVlKCJtYXAuZGVsZXRlKC1JbmZpbml0eSkiKQorc2hvdWxk
QmVUcnVlKCJtYXAuZGVsZXRlKE5hTikiKQorc2hvdWxkQmVUcnVlKCJtYXAuZGVsZXRlKCcwJyki
KQorc2hvdWxkQmVUcnVlKCJtYXAuZGVsZXRlKDAuMSkiKQorCitzaG91bGRCZUZhbHNlKCJtYXAu
ZGVsZXRlKC0wKSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKDApIikKK3Nob3VsZEJlRmFs
c2UoIm1hcC5kZWxldGUoSW5maW5pdHkpIikKK3Nob3VsZEJlRmFsc2UoIm1hcC5kZWxldGUoLUlu
ZmluaXR5KSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKE5hTikiKQorc2hvdWxkQmVGYWxz
ZSgibWFwLmRlbGV0ZSgnMCcpIikKK3Nob3VsZEJlRmFsc2UoIm1hcC5kZWxldGUoMC4xKSIpCisK
K3ZhciBzaW1wbGVTdHJpbmcgPSAiYWFhYWEiOwordmFyIG90aGVyU3RyaW5nID0gIiI7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDU7IGkrKykKKwlvdGhlclN0cmluZyArPSAiYSIKK21hcC5zZXQoc2lt
cGxlU3RyaW5nLCB7fSk7CitzaG91bGRCZSgibWFwLmdldChzaW1wbGVTdHJpbmcpIiwgIm1hcC5n
ZXQob3RoZXJTdHJpbmcpIik7CisKKworCitzaG91bGRCZVVuZGVmaW5lZCgibWFwLmNsZWFyKCki
KTsKK3Nob3VsZEJlKCJtYXAuc2l6ZSIsICIwIikKK3ZhciBjb3VudCA9IDc7Citmb3IgKHZhciBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICBzaG91bGRCZSgibWFwLnNldCgiICsgaSArICIs
ICIgKyAoaSAqIDIpICsgIikiLCAibWFwIikKKyAgICBzaG91bGRCZSgibWFwLnNldCgnIiArIGkg
KyAiJywgIiArIChpICogMiArIDEpICsgIikiLCAibWFwIikKK30KKworc2hvdWxkQmUoIm1hcC5z
aXplIiwgIjE0IikKKwordmFyIHRoaXNWYWx1ZSA9IDB4ZjAwCit2YXIgdGVzdFRoaXM7Cit2YXIg
Y291bnQgPSAwOworCit0cnkgeworCW1hcC5mb3JFYWNoKGZ1bmN0aW9uKCkgeyAidXNlIHN0cmlj
dCI7IGRlYnVnKCJmb3JFYWNoICMwIik7IHRlc3RUaGlzID0gdGhpczsgc2hvdWxkQmVVbmRlZmlu
ZWQoInRlc3RUaGlzIik7IHRocm93IGNvdW50Kys7ICB9KQorfSBjYXRjaChlKSB7CisgICAgZGVi
dWcoZSkKK30KK3RyeSB7CisgICAgbWFwLmZvckVhY2goZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0
IjsgZGVidWcoImZvckVhY2ggIzEiKTsgdGVzdFRoaXMgPSB0aGlzOyBzaG91bGRCZSgidGVzdFRo
aXMiLCAidGhpc1ZhbHVlIik7IHRocm93IGNvdW50Kys7ICB9LCB0aGlzVmFsdWUpCit9IGNhdGNo
KGUpIHsKKyAgICBkZWJ1ZyhlKQorfQorCitzaG91bGRCZVVuZGVmaW5lZCgnbWFwLmZvckVhY2go
ZGVidWcpJykKKworbWFwLmZvckVhY2goZnVuY3Rpb24gKHYsaykgeworCWRlYnVnKGsgKyAiIDog
IiArIHR5cGVvZiAoaykgKyAiID0+ICIgKyB2KQorCisJaWYgKGsgPT0gMikKKwkJbWFwLmRlbGV0
ZSgzKQorCWlmIChrID09ICIzIikgeworCQltYXAuc2V0KCIzIiwgInJlcGxhY2VkIik7CisJCW1h
cC5kZWxldGUoNCkKKwkJbWFwLnNldCg0LCAxMSkKKwl9Cit9KQorCit2YXIga2V5czsKK21hcC5m
b3JFYWNoKGZ1bmN0aW9uICh2LGspIHsKKwlrZXlzID0ga2V5cyB8fCBbXTsKKwlrZXlzLnB1c2go
W2ssdl0pOworfSkKK2djKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKysp
IHsKKwl2YXIgZXhwZWN0ZWRLZXkgPSBrZXlzW2ldWzBdCisJdmFyIGV4cGVjdGVkVmFsdWUgPSBr
ZXlzW2ldWzFdCisJc2hvdWxkQmUoIm1hcC5nZXQoIitKU09OLnN0cmluZ2lmeShleHBlY3RlZEtl
eSkrIikiLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210047</attachid>
            <date>2013-08-29 16:49:55 -0700</date>
            <delta_ts>2013-08-29 17:37:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120333-20130829165325.patch</filename>
            <type>text/plain</type>
            <size>89559</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjM1YTczNDc4YzE5OTFmMjUyNzVjM2Q2NzYxMDdjMDQwM2NiMzk0Li5jZTQwZDdlNzRiN2U1NmZl
MjVkYWVhZjYxNmJiYTMyZDg2YzdhMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxMy0wOC0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisKKyAgICAgICAgSW1wbGVtZW50IEVTNiBNYXAgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAzMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgdGhlIEVT
NiBNYXAgdHlwZSBhbmQgcmVsYXRlZCBjbGFzc2VzLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0NvcHlUb2tlbi5o
OiBBZGQgYSBuZXcgdG9rZW4gdG8gdHJhY2sgY29weWluZyB0aGUgYmFja2luZyBzdG9yZQorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDogQWRkIG5ldyBpZGVudGlmaWVycwor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgICAgIEFkZCBuZXcgc3RydWN0dXJlcyBhbmQgcHJv
dG90eXBlcworCisgICAgICAgICogcnVudGltZS9KU01hcC5jcHA6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNNYXAuaDogQWRkZWQuCisgICAgICAgICAgICBOZXcgSlNNYXAgY2xhc3MgdG8g
cmVwcmVzZW50IGEgTWFwIGluc3RhbmNlCisKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5oOiBBZGRl
ZC4KKyAgICAgICAgICAgIFRoZSBNYXAgY29uc3RydWN0b3IKKworICAgICAgICAqIHJ1bnRpbWUv
TWFwRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOiBBZGRlZC4K
KyAgICAgICAgICAgIFRoZSBtb3N0IGludGVyZXN0aW5nIGRhdGEgc3RydWN0dXJlLiAgVGhlIHJv
dWdobHkgY29ycmVzcG9uZHMKKyAgICAgICAgICAgIHRvIHRoZSBFUzYgbm90aW9uIG9mIE1hcERh
dGEuICBJdCBwcm92aWRlcyB0aGUgY29yZSBKU1ZhbHVlLT5KU1ZhbHVlCisgICAgICAgICAgICBt
YXAgaW1wbGVtZW50YXRpb24uICBXZSBpbXBsZW1lbnQgaXQgdXNpbmcgMiBoYXNodGFibGVzIGFu
ZCBhIGZsYXQKKyAgICAgICAgICAgIHRhYmxlLiAgRHVlIHRvIHRoZSBkaWZmZXJlbnQgc2VtYW50
aWNzIG9mIHN0cmluZyBjb21wYXJpc29ucyB2cy4KKyAgICAgICAgICAgIGFsbCBvdGhlcnMgd2Ug
bmVlZCBoYXZlIG9uZSBtYXAga2V5ZWQgYnkgU3RyaW5nIGFuZCB0aGUgb3RoZXIgYnkKKyAgICAg
ICAgICAgIGdlbmVyaWMgSlNWYWx1ZS4gIFRoZSBhY3R1YWwgdGFibGUgaXMgcmVwcmVzZW50ZWQg
bW9yZSBvciBsZXNzCisgICAgICAgICAgICBleGFjdGx5IGFzIGRlc2NyaWJlZCBpbiB0aGUgRVM2
IGRyYWZ0IC0gYSBzaW5nbGUgY29udGlndW91cyBsaXN0IG9mCisgICAgICAgICAgICBrZXkvdmFs
dWUgcGFpcnMuICBUaGUgZW50aXJlIG1hcCBjb3VsZCBiZSBhY2hpZXZlZCB3aXRoIGp1c3QgdGhp
cworICAgICAgICAgICAgdGFibGUsIGhvd2V2ZXIgd2UgbmVlZCB0aGUgSGFzaE1hcHMgaW4gb3Jk
ZXIgdG8gbWFpbnRhaW4gTygxKSBsb29rdXAuCisKKyAgICAgICAgICAgIERlbGV0ZWQgdmFsdWVz
IGFyZSBzaW1wbHkgY2xlYXJlZCBhcyB0aGUgZHJhZnQgc2F5cywgaG93ZXZlciB0aGUKKyAgICAg
ICAgICAgIGltcGxlbWVudGF0aW9uIGNvbXBhY3RzIHRoZSBzdG9yYWdlIG9uIGNvcHkgYXMgbG9u
ZyBhcyB0aGUgYXJlIG5vCisgICAgICAgICAgICBhY3RpdmUgaXRlcmF0b3JzLgorCisgICAgICAg
ICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL01h
cFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgICAgIEltcGxlbWVudCBNYXAgcHJvdG90eXBl
IGZ1bmN0aW9ucworCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICAgICBBZGQg
bmV3IHN0cnVjdHVyZXMuCisKIDIwMTMtMDgtMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBZGQgRU5BQkxFIGd1YXJkcyBmb3IgUHJvbWlzZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjNjc0YTY5NmQ5YjhmZjM3MDM3MDBhNGY2MjA4ZmU2
ZjdkN2E4YjMwLi5mZTU1YTkxNWYyOWYyY2ZiYmY3Mjc1Y2MxNTBkYjA5ZDRhYzY3MDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zMzIsNiArMzMyLDkgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAg
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCiAgICAgcnVudGltZS9KU0xvY2su
Y3BwCisgICAgcnVudGltZS9KU01hcC5jcHAKKyAgICBydW50aW1lL0pTTWFwQ29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9KU01hcFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTTmFtZVNj
b3BlLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT05P
YmplY3QuY3BwCkBAIC0zNTksNiArMzYyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKICAgICBydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwCiAgICAgcnVudGltZS9Mb29rdXAuY3BwCisgICAgcnVudGltZS9NYXBEYXRhLmNwcAog
ICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAKICAgICBydW50aW1lL01lbW9yeVN0YXRpc3RpY3Mu
Y3BwCiAgICAgcnVudGltZS9OYW1lQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZmODRlYzNiZjk1ZWQ0ZmM3ZTRkZjIyNzQxYzhi
ZmI5OTNlOWZiM2QuLjhhYWViOTdhOTcwODg1ZWQ3MWRiYTQwNjVjMWVjNWFkZjRlZmEyZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC04NjgsNiArODY4
LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbnQ4QXJyYXkuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBDb25zdHJ1Y3Rvci5jcHAgXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTWFwUHJvdG90eXBlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTm90QW5PYmplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4
IDI5NTkwYmJlMmUzYzAwZDliMTAyOWQ5ZWE0NmU2NjE5NWE0ODY2ODMuLjdmNmZlZTViYzdjMzVk
NzJkODBiZGIxN2JmODU5ZWZhOTg4MTg1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagpAQCAtNDY2LDYgKzQ2Niw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCIgLz4NCiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcENvbnN0cnVjdG9yLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTWFwUHJvdG90eXBlLmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmFtZVNjb3BlLmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQpAQCAtNDkyLDYgKzQ5
NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV3JhcHBlck9iamVj
dC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxMaXRlcmFsUGFy
c2VyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXExvb2t1cC5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNYXBEYXRhLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhPYmplY3QuY3BwIiAv
Pg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmFtZUNvbnN0cnVjdG9yLmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hbWVJbnN0YW5jZS5j
cHAiIC8+DQpAQCAtODkwLDYgKzg5NCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTSW50MzJBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNJbnQ4QXJyYXkuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTG9jay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
YXAuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwQ29uc3Ry
dWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwUHJv
dG90eXBlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hbWVT
Y29wZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9i
amVjdC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVj
dC5oIiAvPg0KQEAgLTkyMyw2ICs5MzAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1dyYXBwZXJPYmplY3QuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXExpdGVyYWxQYXJzZXIuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXExvb2t1cC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcTWFwRGF0YS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWF0
Y2hSZXN1bHQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hdGhP
YmplY3QuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE5hbWVDb25z
dHJ1Y3Rvci5oIiAvPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCAxMjM3YjA2N2M4YWFiZDM4MjdlNTRlN2FlNDliYWY2YTQ1Y2Y3NTYx
Li40NGYyYTk3MWYxYjI2MTdkYzZkODM3MmJmOTE2ZGMzY2NlNGJmNzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC01NzMsNiArNTcz
LDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiPg0K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+DQorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBQcm90b3R5cGUuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcENvbnN0cnVjdG9yLmNwcCI+DQorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNOYW1lU2NvcGUuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtNjIxLDYgKzYzMCw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXExvb2t1cC5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXE1hcERhdGEuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxNYXRoT2JqZWN0LmNwcCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAg
IDwvQ2xDb21waWxlPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzlkM2IzYzQw
OGEwODQ4ZmVmYWJhMTU2ZTQyYjI4ZTA1N2YwZjg1YS4uZjRmZTE4OTAwZDU2MTdlODAyNjI3NzBj
ZDU2ZWZjMjRkODRlOGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNiw2
ICs4MDYsMTIgQEAKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNB
MTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFD
N0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8q
IFJlZ0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczNzE3Q0JF
ODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzAwODczQTE3Q0JF
ODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25z
dHJ1Y3Rvci5oICovOyB9OworCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MDA4NzNCMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovOyB9OworCQlBNzAw
ODczRTE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyog
TWFwUHJvdG90eXBlLmggKi87IH07CisJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01h
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAw
ODczRjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwICovOyB9OworCQlBNzAwODc0MjE3Q0JF
OEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovOyB9Owog
CQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NDdFOTE3QTBCRDQ2MDBG
NTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwNDQ3RUQxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgKi87IH07CiAJCUE3MDQ0
N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDQ3RUMxN0EwQkQ3MDAwRjU4OThFIC8qIER1
bXBDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg2NSw2ICs4NzEsOCBAQAogCQlBNzdGMTgyNTE2NDE5MkM3MDA2NDBBNDcgLyogUGFy
c2VyTW9kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRBMjYxMTFEMTY2MjIwMDU3
NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNUQnVpbGRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRBMjY0MTFE
MTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NzExQjk4QjhEMDA2NUExNEYgLyogU3ludGF4
Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3ODUwN0Q2MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUwN0Q0MTdDQkM2RkQwMDExRjZF
NyAvKiBNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTc4NTA3RDcxN0NCQzZGRDAwMTFGNkU3IC8qIE1h
cERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi87IH07CiAJCUE3ODg1M0Y5MTc5
NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y3MTc5NzI2MjkwMDE0NDBF
NCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJQTc4ODUzRkExNzk3MjYy
OTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZp
bmFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzhBOTc2QzE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmluYWxpemVyLmNwcCAqLzsg
fTsKQEAgLTE5NzgsNiArMTk4NiwxMiBAQAogCQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyog
UmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVn
RXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkIzRTExQzdC
MjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJC
NDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcw
MDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDA4NzNCMTdDQkU4RDMwMEMzRTY0MyAv
KiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0Mx
N0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MDQ0N0U5MTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3BlcmFuZHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEdW1wQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBE
dW1wQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAzNCw2ICsyMDQ4LDggQEAKIAkJ
QTc3RjE4MUYxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzdGMTgyMDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzdGMTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFyc2VyTW9kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTc4ODUzRjcxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hh
aW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1
Y3R1cmVDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODg1M0Y4MTc5
NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZp
bmFsaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWls
ZWRGaW5hbGl6ZXIuY3BwOyBwYXRoID0gZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzc5LDkgKzIzOTUsOSBAQAogCQkwMzQ3NjhERkZG
MzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCTkzMkY1QkUxMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJ
CQkJMEZGOTIyQ0YxNEY0NkIxMzAwNDFBMjRFIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LywKIAkJCQk5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrICovLAorCQkJCTkzMkY1QkUxMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJMTQx
MjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5
MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8q
IHRlc3RSZWdFeHAgKi8sCkBAIC0yODkzLDEyICsyOTA5LDEyIEBACiAJCTY1MEZERjhEMDlEMEZD
QTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTdDM0JBMjlBMTdDMDNCRTEwMDcyRERDOSAvKiBKU1Byb21p
c2VSZXNvbHZlclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3
RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYx
NENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCiAJCQkJN0MxODRFMjQxN0JGRkEzNjAwN0NCNjNB
IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCTdDMTg0RTI1MTdCRkZBMzYw
MDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8sCisJCQkJN0MzQkEyOUExN0Mw
M0JFMTAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oICovLAogCQkJ
CUE3QzIyNUNEMTM5OTg0OUMwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwLmggKi8sCiAJCQkJQkMx
OEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovLAogCQkJCUJDMjY4MEU2MEUx
NkQ1MjMwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTMxMjEsNiAr
MzEzNyw4IEBACiAJCQkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5Lmgg
Ki8sCiAJCQkJNjVFQTRDOTkwOTJBRjlFMjAwOTNEODAwIC8qIEpTTG9jay5jcHAgKi8sCiAJCQkJ
NjVFQTRDOUEwOTJBRjlFMjAwOTNEODAwIC8qIEpTTG9jay5oICovLAorCQkJCUE3MDA4NzNGMTdD
QkU4RUIwMEMzRTY0MyAvKiBKU01hcC5jcHAgKi8sCisJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNF
NjQzIC8qIEpTTWFwLmggKi8sCiAJCQkJMTQ4NzRBREYxNUVCREU0QTAwMkUzNTg3IC8qIEpTTmFt
ZVNjb3BlLmNwcCAqLywKIAkJCQkxNDg3NEFFMDE1RUJERTRBMDAyRTM1ODcgLyogSlNOYW1lU2Nv
cGUuaCAqLywKIAkJCQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5j
cHAgKi8sCkBAIC0zMTgwLDYgKzMxOTgsMTIgQEAKIAkJCQlBN0UyRUE2OTBGQjQ2MENGMDA2MDFG
MDYgLyogTGl0ZXJhbFBhcnNlci5oICovLAogCQkJCUY2OTJBODY4MDI1NTU5N0QwMUZGNjBGNyAv
KiBMb29rdXAuY3BwICovLAogCQkJCUY2OTJBODY5MDI1NTU5N0QwMUZGNjBGNyAvKiBMb29rdXAu
aCAqLywKKwkJCQlBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3Bw
ICovLAorCQkJCUE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICov
LAorCQkJCUE3ODUwN0Q0MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCAqLywKKwkJCQlB
Nzg1MDdENTE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oICovLAorCQkJCUE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovLAorCQkJCUE3MDA4NzNDMTdDQkU4
RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCAqLywKIAkJCQk4NjEyRTRDQjE1MjI5MTg0MDBD
ODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLywKIAkJCQlGNjkyQTg2QTAyNTU1OTdEMDFGRjYwRjcg
LyogTWF0aE9iamVjdC5jcHAgKi8sCiAJCQkJRjY5MkE4NkIwMjU1NTk3RDAxRkY2MEY3IC8qIE1h
dGhPYmplY3QuaCAqLywKQEAgLTM3OTksNyArMzgyMyw2IEBACiAJCQkJNURFNkU1QjMwRTE3MjhF
QzAwMTgwNDA3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZB
NEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NkRGMTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmlldy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZDNzEyREYxN0NEODc3QzAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAzNEEwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8q
IERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzExNjYwMjBFMTk5N0I0MDA4
MDY2REQgLyogRGF0ZUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MTAsOCArMzgzMyw4
IEBACiAJCQkJQkMzMTM1NjQwRjMwMkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2Vy
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQg
LyogRGVmZXJHQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDNzEyREYxN0NEODc3QzAwOENDOTND
IC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJ
bnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0
IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zODc5LDcgKzM5MDIsNiBAQAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYxOCAv
KiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQ
cmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwNzE3QTBC
QUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0
NTE1MjI4MDFCMDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zOTQxLDcgKzM5NjMsNiBAQAogCQkJCTg2Q0FGRUUzMTAzNURERTYwMDI4QTYwOSAvKiBFeGVj
dXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzY2QjQ0RjBFRThEQ0QxMDA5NTE4Q0EgLyog
RXhlY3V0YWJsZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NkExRDMxNTAwMEYz
NTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMzhC
MDEyMTdDRjA3ODMwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0S2luZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJy
YXkuaCBpbiBIZWFkZXJzICovLApAQCAtMzk1Nyw3ICszOTc4LDYgQEAKIAkJCQkwRjIzNUJENDE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJENjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDcxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1
bWVudExpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDM0JBMjk5MTdDMDM5NTYwMDcyRERDOSAv
KiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVC
RDkxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyMzVCREIxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdGMjk5NkMxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBI
ZWFkZXJzICovLApAQCAtNDAyMiw3ICs0MDQyLDYgQEAKIAkJCQlCQzExNjY3QjBFMTk5QzA1MDA4
MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyOUQ3N0Mw
RUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBC
RDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKLQkJCQk3
QzNCQTI5NTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQxNDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC00MDQ0LDYgKzQwNjMsNyBAQAogCQkJ
CUZFRjY4MzYwMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic1g4Nl82NC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdBNEFFMTAxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjVFRjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkM3MTJFMzE3Q0Q4NzkzMDA4Q0M5M0MgLyogSklUVG9E
RkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NkY1
NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC00MDgzLDYgKzQxMDMsNyBAQAogCQkJCUE3MjAyOEJBMTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY2RjExN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZGMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RjIxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NkYzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjQx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY2RjUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTQwOTUsMTQgKzQxMTYsMjEg
QEAKIAkJCQlBNzZDNTE3NjExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDIzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xvY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwMDg3NDIxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDg3NEFFNDE1RUJERTRBMDAyRTM1ODcgLyogSlNOYW1l
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjUwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTT2JqZWN0UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI4MEEyODExNTU3RTMwMDBENTY5
NTcgLyogSlNPYmplY3RSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkM3MTJFMzE3
Q0Q4NzkzMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCUE3Rjk5MzVGMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzg3Q0RCOTEwNzEyQUQ0MDAwNjE0Q0YgLyogSlNPTk9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk1MzRBQUZCMEU1QjdBOTYwMEI4QTQ1QiAv
KiBKU1Byb2ZpbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUIxN0JFREJE
MzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MxNUY2NUUxN0Mx
OTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0JBMjk1MTdDMDM5NTYwMDcyRERDOSAvKiBKU1By
b21pc2VSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTcxN0MwMzk1NjAwNzJE
REM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdDM0JBMjk5MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODYyNTUzRDIxNjEzNkUxQTAwOUYxN0QwIC8qIEpTUHJveHku
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1JldGFp
blB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpT
U2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDE1NCw2ICs0MTgyLDcgQEAKIAkJCQlGRTIwQ0U5
RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjM4QjAxMjE3Q0YwNzgzMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUQyODdCMjE1RUM5QTU3MDBE
QTgxNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDE3NCw2ICs0MjAzLDkg
QEAKIAkJCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODcz
QTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE3ODUwN0Q3MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNzAwODczRTE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDJENkYwOTEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENCMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRC
bG9ja1NldC5oIGluIEhlYWRlcnMgKi8sCkBAIC00MjQ2LDE0ICs0Mjc4LDExIEBACiAJCQkJMTQ3
NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUu
aCBpbiBIZWFkZXJzICovLAotCQkJCTdDMTg0RTFCMTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21p
c2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlG
QzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJN0MzQkEyOTcxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlz
ZVJlc29sdmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2
QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNE
MjAyRDYwRTE3MDcwODAwMkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhl
YWRlcnMgKi8sCkBAIC00MjY0LDcgKzQyOTMsNiBAQAogCQkJCUJDMThDNDVEMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MkIwRUQxQ0U2OTAw
RjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlEMTVFRDhF
NDYwMEYxNjdCMiAvKiBSZWplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDMTg0RTIzMTdCRUUy
NDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQzMDIsMTIgKzQzMzAsMTIgQEAKIAkJCQlCQ0NGMEQwODBFRjBB
QUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
OTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZl
RnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAg
LyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFEMTY2MjIwMDU3
NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU3MkQ0RjE2ODc5
RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2
NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA2MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBl
ZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA4MTdCNkI1QUIwMEE3
QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NzQ1LDYg
KzQ3NzMsNyBAQAogCQkJCTE0MjgwODIzMTA3RUMwMkMwMDEzRTdCMiAvKiBEZWJ1Z2dlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzMxMzU2NTBGMzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OTU1OUVFMEREQ0RERjcwMDY0ODA4
NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkM3MTJERTE3
Q0Q4Nzc5MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3N0E0MjNEMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUMxOTQxNzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fi
c3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxNjAxNUQxNTYxOThDOTAwQzI1
ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC00Nzc2LDcgKzQ4MDUsNiBAQAogCQkJCUMyOTgxRkQ4MTdCQUVFNEIwMEEzQkM5OCAvKiBE
RkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI5ODFGREMx
N0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0MzQkEyOTgxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgxQUQyMTU0RkI0
RUUwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDND
ODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGMEYxOUUxNkI3MkEwQjAwNURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC00Nzk4LDcgKzQ4MjYsNiBAQAogCQkJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdM
b29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM0
RDE1MjI4MTg2MDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3Mzc4MTBEMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJN0MxNUY2NUQxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlDMTZCNzJBMDMwMDVERjk1QiAvKiBE
RkdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAv
KiBERkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQ0YxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00ODE4LDcgKzQ4
NDUsNiBAQAogCQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJCMDlDMDEzOEUzODFCMDA1
NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOUREMjEzMjhE
RjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
N0MzQkEyOTYxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBGNEQxNDM1M0Iy
MTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdEODlDRkYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTQ4NDgsNyArNDg3NCw2IEBACiAJCQkJMEZFQTBBMUMxNzA4QjAwNzAw
QkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEx
RTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVBMEEwOTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1By
b21pc2VQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRDExNzE3OEUxQzAw
NjkwQzdGIC8qIEZUTENBcmd1bWVudEdldHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVB
MEEyNzE3MDk2MjNCMDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUEwQTBCMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtNDkwNywxMCArNDkzMiwxMCBAQAogCQkJCTBGNzY2RDJCMTVBOENDMzgwMDhG
MzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEEyM0Q3
NTBGNEUxQUJCMDAyM0NEQUQgLyogSklUU3R1YnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1
RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkM3MTJFMjE3Q0Q4NzkxMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwQjdEMUQwREM2OUFGNzAwOUM0MkI4
IC8qIEpTQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1
MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJD
RjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDkz
NSwxMiArNDk2MCwyMCBAQAogCQkJCTE0RTlEMTdCMTA3RUM0NjkwMDREREEyMSAvKiBKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3NTEwN0VDMTNF
MDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5
RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE3MDA4
NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDg3
NEFFMzE1RUJERTRBMDAyRTM1ODcgLyogSlNOYW1lU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTcyNzAwOTAwREFDNkJCQzAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ3RjM5RDQxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0ODJCN0U0MEE0MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Y5OTM2MDBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NUY2RTY5NTBFNUI1Rjk3MDA5MUU4NjAgLyog
SlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MxODRFMUExN0JFREJE
MzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzE1RjY1RDE3
QzE5OUNFMDA3OTRENDAgLyogSlNQcm9taXNlQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzQkEyOTQxN0MwMzk1NjAwNzJEREM5
IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk2MTdD
MDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDM0JBMjk4MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI3RkY2QjBEQTMwOTIyMDBFNTQ4
RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjI1
NTNEMTE2MTM2REE5MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDg3NEFFNTE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTQ5NzIsNiArNTAwNSw3IEBACiAJCQkJQTdFMkVBNkMwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVy
YWxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMw
IC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwRDIxNEJCRDE2NTAw
QkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjM4QjAxMTE3Q0Yw
NzgwMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ5NzksMTEgKzUwMTMsMTMgQEAKIAkJCQkxNDQ2OURE
RTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4
MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MxODRFMUExN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJv
bWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyog
TWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mjkw
MDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3QTRBRTA4MTc5NzNCMjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzAwODczOTE3Q0JFODUzMDBDM0U2NDMgLyog
TWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc4NTA3RDYxN0NCQzZGRDAw
MTFGNkU3IC8qIE1hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwMDg3M0QxN0NCRThE
MzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkI5MTZD
NTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC01MDEwLDcgKzUwNDYsNiBAQAogCQkJCTBGRTIyOEVFMTQzNkFCMkMw
MDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUJDMTA3RUM1
NEQwMDQyRUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNTJDMzQwRkI3
OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGQzcx
MkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyogUG9s
eW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjk4MjA2MDE2QkZF
MzgxMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk1NzQyRjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNTAzMCwxMyArNTA2NSwxMSBAQAogCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQ
cm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RkI2MEE0
MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ0NjlERTcxMDdFQzdFNzAwNjUwNDQ2IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTBGMzhCMDExMTdDRjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5
cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTgxMDdFQzdFNzAwNjUwNDQ2IC8q
IFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUzOUZGRjE2REQxNDRCMDAw
M0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc0QzMzQzE2
QUEyRDlCMDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
OTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTdDMTg0RTIyMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEwN0VDMDkzMDAxM0U3
QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNCMTFDN0IyMTIwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMDE1MUMw
NkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTA5MCw3ICs1MTIzLDYgQEAKIAkJCQkxNEU4NEY5RTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Js
b2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RjcyNTY1MTRFRTI2NUUwMEIxNjUyQiAvKiBX
ZWFrSGFuZGxlT3duZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFODRGQTAxNEVFMUFDQzAw
RDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZDNzEyREUxN0NEODc3
OTAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjZFNUMxOTE3MjRBRjNEMDA1QzU3NEYgLyogV2ViS2l0TExWTUxpYnJhcnlBbmNo
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRC
MjAwRDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKaW5kZXggOTgzOTBjNDYyMjRjNzFiMjI1OGMwNDgwNDE0ODVmYjkwNjU4
NDRhNy4uN2IzZmNkZDFlMjFhNmIzZTI0ZDhhOTdjZDQ5YjM5ZjNhYTE2NTFjZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKQEAgLTMyMSw2ICszMjEsMTAgQEAgU09VUkNFUyArPSBcCiAgICAg
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwIFwKICAgICBydW50aW1lL0pTTG9jay5jcHAgXAorICAgIHJ1bnRpbWUvSlNN
YXAuY3BwIFwKKyAgICBydW50aW1lL0pTTWFwQ29uc3RydWN0b3IuY3BwIFwKKyAgICBydW50aW1l
L0pTUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU05hbWVTY29wZS5jcHAgXAogICAgIHJ1
bnRpbWUvSlNOYW1lU2NvcGUuY3BwIFwKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwIFwK
ICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwIFwKQEAgLTM0Nyw2ICszNTEsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAgXAogICAgIHJ1bnRpbWUvTG9va3VwLmNwcCBcCisgICAgcnVudGltZS9N
YXBEYXRhLmNwcCBcCiAgICAgcnVudGltZS9NYXRoT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9N
ZW1vcnlTdGF0aXN0aWNzLmNwcCBcCiAgICAgcnVudGltZS9OYW1lQ29uc3RydWN0b3IuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlUb2tlbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmgKaW5kZXggYmM4YTEyYzVhYTczOTUy
NWQ5OTY1MjkzMmQxYzllMzNjNGFhOGFjZi4uMzVlMGU2N2U2ZTkzY2YyNDZiYWEwZTY4ZWRiOTM3
NWNmY2QzMzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRv
a2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVRva2VuLmgKQEAgLTMw
LDcgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQ29weVRva2VuIHsKICAgICBCdXR0
ZXJmbHlDb3B5VG9rZW4sCi0gICAgVHlwZWRBcnJheVZlY3RvckNvcHlUb2tlbgorICAgIFR5cGVk
QXJyYXlWZWN0b3JDb3B5VG9rZW4sCisgICAgTWFwQmFja2luZ1N0b3JlQ29weVRva2VuCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDZmZjk4NzdhMzk3OWFhNDBkOTNlMmM1MWI0MDM0
YmM5Zjk2YzkxZjIuLjk0N2Y2ODI2NDc2OTJhMTc2ZDg2OTM1NDA0NzdiYmRlMjQ1NmY0NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtMTM2LDcgKzEzNiwxMiBAQAogICAgIG1hY3JvKHZhbHVlKSBcCiAgICAgbWFjcm8odmFs
dWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3JvKHdyaXRhYmxlKQorICAgIG1h
Y3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaGFzKSBcCisgICAgbWFjcm8oZm9yRWFjaCkgXAor
ICAgIG1hY3JvKGNsZWFyKSBcCisgICAgbWFjcm8oc2l6ZSkgXAorICAgIG1hY3JvKE1hcCkKIAog
I2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAg
IG1hY3JvKG51bGwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA3YTcwZGI3OWVmMDhkMjI2NGYzOGFhZTJiOTIzNGQzMzRmODg1
MmNjLi4zNmY2NjA3MmY3NTUxNjQyMzVhMDQ3NTkxMzZlYWEyZmJkYzJmZTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC02NCw2
ICs2NCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJK
U0xvY2suaCIKKyNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheUNvbnN0cnVjdG9y
cy5oIgpAQCAtNzIsNiArNzMsOSBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJNYXBD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJNYXBQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJNYXRoT2JqZWN0LmgiCiAjaW5jbHVkZSAiTmFtZUNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCkBAIC0zMTcsNiArMzIxLDExIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1fcHJvbWlzZVdy
YXBwZXJDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlV3Jh
cHBlckNhbGxiYWNrOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSkpOwogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAorCisgICAg
bV9tYXBEYXRhU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywganNOdWxsKCkpKTsKKyAgICBtX21hcFByb3RvdHlw
ZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgTWFwUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywg
TWFwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9tYXBTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRo
aXMsIEpTTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9tYXBQcm90b3R5
cGUuZ2V0KCkpKTsKKwogICAgIC8vIENvbnN0cnVjdG9ycwogCiAgICAgSlNDZWxsKiBvYmplY3RD
b25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwpAQCAtMzMxLDYgKzM0
MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAg
IEpTQ2VsbCogcHJvbWlzZUNvbnN0cnVjdG9yID0gSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0
ZShleGVjLCB0aGlzLCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
PnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3Byb21pc2VQcm90b3R5
cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IgPSBKU1By
b21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKSk7
CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQorICAgIEpTQ2VsbCogbWFwQ29uc3RydWN0b3Ig
PSBNYXBDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE1hcENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fbWFwUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4
ZWMtPnZtKCksIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgUmVn
RXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMzU2
LDYgKzM2Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBl
KQogICAgIG1fZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
PnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVj
dG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fcHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
LCBEb250RW51bSk7CisgICAgbV9tYXBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbWFwQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9y
LCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250
RW51bSk7CkBAIC0zNzQsNiArMzg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0o
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlVSSUVycm9yLCBtX1VSSUVycm9yQ29uc3RydWN0b3Iu
Z2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuUHJvbWlzZSwgcHJvbWlzZUNvbnN0cnVjdG9yLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLlByb21pc2VSZXNvbHZlciwgcHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuTWFwLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVuY3Rpb246
OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5zdHJpbmco
KSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCks
IERvbnRFbnVtKTsKQEAgLTYzMiw2ICs2NDQsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0
dXJlKTsKICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlTRVMpCisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbWFwUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tYXBEYXRhU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9tYXBTdHJ1Y3R1cmUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJy
YXlCdWZmZXJQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Fy
cmF5QnVmZmVyU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IDAwNDJkY2ZmMzYwNmI5MzllYjEzODY0NGQ0MTE0ZmFmZDU4
MmZjMGEuLjkyOWI3YjJmNGMyMjAxNGI4MDVmMzU3YjM0NWQzODcwOGIwZTExYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMsNiAr
NjMsNyBAQCBjbGFzcyBKU1Byb21pc2VQcm90b3R5cGU7CiBjbGFzcyBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZTsKIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CitjbGFzcyBNYXBQcm90b3R5cGU7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwpAQCAtMTUwLDYg
KzE1MSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8RXJyb3JQcm90b3R5cGU+IG1f
ZXJyb3JQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVByb3RvdHlwZT4gbV9w
cm9taXNlUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZT4gbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPE1hcFBy
b3RvdHlwZT4gbV9tYXBQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3dpdGhTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwpAQCAtMTkxLDYgKzE5Myw5IEBAIHByb3RlY3RlZDoK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1
Y3R1cmU7CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQogCisgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9tYXBEYXRhU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fbWFwU3RydWN0dXJlOworICAgIAogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVyUHJv
dG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zODEsNiArMzg2LDggQEAgcHVi
bGljOgogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByaXZh
dGVOYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVj
dHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7
IH0KKyAgICBTdHJ1Y3R1cmUqIG1hcERhdGFTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21h
cERhdGFTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDlk
ZTBmMDYyMjA3NTJhMGE0ODU2OTVhZGVkYTc3NTdhZTc4OGNlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJKU01hcC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJNYXBEYXRhLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxp
bmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY29uc3QgQ2xhc3NJbmZvIEpTTWFwOjpz
X2luZm8gPSB7ICJNYXAiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTTWFwKSB9OworCit2b2lkIEpTTWFwOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNp
dG9yKTsKKyAgICBKU01hcCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01hcCo+KGNlbGwpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGEpOworfQorCit2b2lkIEpTTWFw
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1fbWFwRGF0YS5zZXQodm0sIHRo
aXMsIE1hcERhdGE6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7Cit9CisKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY1OTI5MzVkNzZmYTA4YzQ3
ZDMxMDYzNzAyMzE0ODU4ZGY0NWU0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTWFwLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNYXBfaAorI2RlZmluZSBK
U01hcF9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgTWFwRGF0YTsKKworY2xhc3MgSlNNYXAgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNNYXAqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgSlNNYXAqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNNYXA+KHZtLmhlYXApKSBKU01hcCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHN0YXRpYyBKU01hcCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBy
ZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSk7CisgICAgfQorCisgICAgTWFwRGF0
YSogbWFwRGF0YSgpIHsgcmV0dXJuIG1fbWFwRGF0YS5nZXQoKTsgfQorCitwcml2YXRlOgorCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgSlNNYXAoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwor
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
CisgICAgV3JpdGVCYXJyaWVyPE1hcERhdGE+IG1fbWFwRGF0YTsKK307CisKK30KKworI2VuZGlm
IC8vICFkZWZpbmVkKEpTTWFwX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIyM2EyMDk2YjVkMjVkZTIwMGJhZDkz
YmE3YTI2MzdjNTI5NmUzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUg
Ik1hcFByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIE1h
cENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoTWFwQ29uc3RydWN0b3IpIH07CisKK3ZvaWQgTWFwQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTWFwUHJvdG90eXBlKiBtYXBQ
cm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgbWFwUHJv
dG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBtYXBQ
cm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIFVudGlsIHdlIGhhdmUgaXRlcmF0b3JzIHdlIHRocm93IGlm
IHdlJ3ZlIGJlZW4gZ2l2ZW4KKyAgICAvLyBhbnkgYXJndW1lbnRzIHRoYXQgY291bGQgcmVxdWly
ZSB1cyB0byB0aHJvdy4KKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJNYXAgY29uc3RydWN0b3IgZG9lcyBub3QgYWNjZXB0IGFyZ3VtZW50
cyIpKSk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgV1RGOjpB
U0NJSUxpdGVyYWwoIkludmFsaWQgY29tcGFyYXRvciBmdW5jdGlvbiIpKSk7CisKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNN
YXA6OmNyZWF0ZShleGVjLCBtYXBTdHJ1Y3R1cmUpKTsKK30KKworQ29uc3RydWN0VHlwZSBNYXBD
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3Ry
dWN0TWFwOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgTWFw
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sK
KyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RNYXA7CisgICAgcmV0dXJu
IENhbGxUeXBlSG9zdDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M4MjYwOTk5NjMzOGY2MTc3NWVlN2NhODFk
YjRmMzdmOTVjYzBhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFwQ29uc3RydWN0b3JfaAor
I2RlZmluZSBNYXBDb25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBQcm90b3R5cGU7CisKK2NsYXNzIE1hcENv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVk
ZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIE1hcENvbnN0cnVjdG9yKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgTWFwUHJvdG90eXBlKiBtYXBQcm90b3R5cGUpCisgICAgeworICAg
ICAgICBNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxNYXBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE1hcENvbnN0cnVjdG9yKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KGV4ZWMsIG1hcFByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFwQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFz
ZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiwgTWFwUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9CisK
KyNlbmRpZiAvLyAhZGVmaW5lZChNYXBDb25zdHJ1Y3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ0MDkzZDZjZDAxZGM1YzNkZjhh
MGUxM2M2NzNjNjY1ODk1YWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwRGF0YS5jcHAKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNYXBEYXRhLmgiCisKKyNpbmNsdWRlICJD
b3BpZWRBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CisKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBNYXBEYXRhOjpz
X2luZm8gPSB7ICJNYXBEYXRhIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShNYXBEYXRhKSB9OworCitzdGF0aWMgY29uc3QgaW50MzJfdCBNaW5pbXVtTWFwU2l6ZSA9
IDg7CisKK01hcERhdGE6Ok1hcERhdGEoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQorICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LT5tYXBEYXRhU3RydWN0dXJlKCkpCisg
ICAgLCBtX2NhcGFjaXR5KDApCisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fZGVsZXRlZENvdW50
KDApCisgICAgLCBtX2l0ZXJhdG9yQ291bnQoMCkKKyAgICAsIG1fZW50cmllcygwKQoreworfQor
CitNYXBEYXRhOjpFbnRyeSogTWFwRGF0YTo6ZmluZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgS2V5
VHlwZSBrZXkpCit7CisgICAgaWYgKGtleS52YWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIGF1
dG8gaXRlciA9IG1fc3RyaW5nS2V5ZWRUYWJsZS5maW5kKGFzU3RyaW5nKGtleS52YWx1ZSktPnZh
bHVlKGNhbGxGcmFtZSkuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9zdHJpbmdLZXll
ZFRhYmxlLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAmbV9l
bnRyaWVzW2l0ZXItPnZhbHVlXTsKKyAgICB9CisgICAgYXV0byBpdGVyID0gbV92YWx1ZUtleWVk
VGFibGUuZmluZChKU1ZhbHVlOjplbmNvZGUoa2V5LnZhbHVlKSk7CisgICAgaWYgKGl0ZXIgPT0g
bV92YWx1ZUtleWVkVGFibGUuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAm
bV9lbnRyaWVzW2l0ZXItPnZhbHVlXTsKK30KK2Jvb2wgTWFwRGF0YTo6Y29udGFpbnMoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEtleVR5cGUga2V5KQoreworICAgIHJldHVybiBmaW5kKGNhbGxGcmFt
ZSwga2V5KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5PiBNYXBE
YXRhOjpFbnRyeSogTWFwRGF0YTo6YWRkKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNYXAmIG1hcCwg
S2V5IGtleSwgS2V5VHlwZSBrZXlWYWx1ZSkKK3sKKyAgICB0eXBlbmFtZSBNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtYXAuYWRkKGtleSwgbV9zaXplKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICByZXR1cm4gJm1fZW50cmllc1tyZXN1bHQuaXRlcmF0b3ItPnZhbHVlXTsK
KyAgICBpZiAoIWVuc3VyZVNwYWNlRm9yQXBwZW5kKGNhbGxGcmFtZSkpIHsKKyAgICAgICAgbWFw
LnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICBFbnRyeSogZW50cnkgPSAmbV9lbnRyaWVzW21fc2l6ZSsrXTsKKyAgICBuZXcgKGVudHJ5KSBF
bnRyeSgpOworICAgIGVudHJ5LT5rZXkuc2V0KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywga2V5VmFs
dWUudmFsdWUpOworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZCBNYXBEYXRhOjpzZXQoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEtleVR5cGUga2V5LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEVu
dHJ5KiBsb2NhdGlvbiA9IGFkZChjYWxsRnJhbWUsIGtleSk7CisgICAgaWYgKCFsb2NhdGlvbikK
KyAgICAgICAgcmV0dXJuOworICAgIGxvY2F0aW9uLT52YWx1ZS5zZXQoY2FsbEZyYW1lLT52bSgp
LCB0aGlzLCB2YWx1ZSk7Cit9CisgICAgCitNYXBEYXRhOjpFbnRyeSogTWFwRGF0YTo6YWRkKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBLZXlUeXBlIGtleSkKK3sKKyAgICBpZiAoIWtleS52YWx1ZS5p
c1N0cmluZygpKQorICAgICAgICByZXR1cm4gYWRkKGNhbGxGcmFtZSwgbV92YWx1ZUtleWVkVGFi
bGUsIEpTVmFsdWU6OmVuY29kZShrZXkudmFsdWUpLCBrZXkpOworICAgIHJldHVybiBhZGQoY2Fs
bEZyYW1lLCBtX3N0cmluZ0tleWVkVGFibGUsIGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGNh
bGxGcmFtZSkuaW1wbCgpLCBrZXkpOworfQorCitKU1ZhbHVlIE1hcERhdGE6OmdldChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgS2V5VHlwZSBrZXkpCit7CisgICAgaWYgKEVudHJ5KiBlbnRyeSA9IGZp
bmQoY2FsbEZyYW1lLCBrZXkpKQorICAgICAgICByZXR1cm4gZW50cnktPnZhbHVlLmdldCgpOwor
ICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK2Jvb2wgTWFwRGF0YTo6cmVtb3ZlKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBLZXlUeXBlIGtleSkKK3sKKyAgICBpbnQzMl90IGxvY2F0aW9uOworICAg
IGlmIChrZXkudmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0cmlu
Z0tleWVkVGFibGUuZmluZChhc1N0cmluZyhrZXkudmFsdWUpLT52YWx1ZShjYWxsRnJhbWUpLmlt
cGwoKSk7CisgICAgICAgIGlmIChpdGVyID09IG1fc3RyaW5nS2V5ZWRUYWJsZS5lbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbG9jYXRpb24gPSBpdGVyLT52YWx1ZTsK
KyAgICAgICAgbV9zdHJpbmdLZXllZFRhYmxlLnJlbW92ZShpdGVyKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBhdXRvIGl0ZXIgPSBtX3ZhbHVlS2V5ZWRUYWJsZS5maW5kKEpTVmFsdWU6OmVuY29k
ZShrZXkudmFsdWUpKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV92YWx1ZUtleWVkVGFibGUuZW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGxvY2F0aW9uID0gaXRlci0+
dmFsdWU7CisgICAgICAgIG1fdmFsdWVLZXllZFRhYmxlLnJlbW92ZShpdGVyKTsKKyAgICB9Cisg
ICAgbV9lbnRyaWVzW2xvY2F0aW9uXS5rZXkuY2xlYXIoKTsKKyAgICBtX2VudHJpZXNbbG9jYXRp
b25dLnZhbHVlLmNsZWFyKCk7CisgICAgbV9kZWxldGVkQ291bnQrKzsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBNYXBEYXRhOjpyZXBsYWNlQW5kUGFja0JhY2tpbmdTdG9yZShFbnRyeSog
ZGVzdGluYXRpb24sIGludDMyX3QgbmV3U2l6ZSkKK3sKKyAgICBBU1NFUlQoc2hvdWxkUGFjaygp
KTsKKyAgICBpbnQzMl90IG5ld0VuZCA9IDA7CisgICAgUkVMRUFTRV9BU1NFUlQobmV3U2l6ZSA+
IDApOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG1fc2l6ZTsgaSsrKSB7CisgICAgICAg
IEVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1tpXTsKKyAgICAgICAgaWYgKCFlbnRyeS5rZXkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG5ld0VuZCA8IG5ld1NpemUpOwor
ICAgICAgICBkZXN0aW5hdGlvbltuZXdFbmRdID0gZW50cnk7CisgICAgICAgIGVudHJ5LnZhbHVl
LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIobmV3RW5kKSk7CisgICAgICAgIG5ld0Vu
ZCsrOworICAgIH0KKworICAgIC8vIEZpeHVwIGZvciB0aGUgaGFzaG1hcHMKKyAgICBmb3IgKGF1
dG8gcHRyID0gbV92YWx1ZUtleWVkVGFibGUuYmVnaW4oKTsgcHRyICE9IG1fdmFsdWVLZXllZFRh
YmxlLmVuZCgpOyArK3B0cikKKyAgICAgICAgcHRyLT52YWx1ZSA9IG1fZW50cmllc1twdHItPnZh
bHVlXS52YWx1ZS5nZXQoKS5hc0ludDMyKCk7CisgICAgZm9yIChhdXRvIHB0ciA9IG1fc3RyaW5n
S2V5ZWRUYWJsZS5iZWdpbigpOyBwdHIgIT0gbV9zdHJpbmdLZXllZFRhYmxlLmVuZCgpOyArK3B0
cikKKyAgICAgICAgcHRyLT52YWx1ZSA9IG1fZW50cmllc1twdHItPnZhbHVlXS52YWx1ZS5nZXQo
KS5hc0ludDMyKCk7CisKKyAgICBBU1NFUlQoKG1fc2l6ZSAtIG5ld0VuZCkgPT0gbV9kZWxldGVk
Q291bnQpOworICAgIG1fZGVsZXRlZENvdW50ID0gMDsKKworICAgIG1fY2FwYWNpdHkgPSBuZXdT
aXplOworICAgIG1fc2l6ZSA9IG5ld0VuZDsKKyAgICBtX2VudHJpZXMgPSBkZXN0aW5hdGlvbjsK
KworfQorCit2b2lkIE1hcERhdGE6OnJlcGxhY2VCYWNraW5nU3RvcmUoRW50cnkqIGRlc3RpbmF0
aW9uLCBpbnQzMl90IG5ld1NpemUpCit7CisgICAgQVNTRVJUKCFzaG91bGRQYWNrKCkpOworICAg
IGludDMyX3QgbmV3RW5kID0gMDsKKyAgICBSRUxFQVNFX0FTU0VSVChuZXdTaXplID4gMCk7Cisg
ICAgQVNTRVJUKG5ld1NpemUgPj0gbV9jYXBhY2l0eSk7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9u
LCBtX2VudHJpZXMsIHNpemVvZihFbnRyeSkgKiBtX3NpemUpOworICAgIG5ld0VuZCA9IG1fc2l6
ZTsKKyAgICBtX2NhcGFjaXR5ID0gbmV3U2l6ZTsKKyAgICBtX3NpemUgPSBuZXdFbmQ7CisgICAg
bV9lbnRyaWVzID0gZGVzdGluYXRpb247Cit9CisKK0NoZWNrZWRCb29sZWFuIE1hcERhdGE6OmVu
c3VyZVNwYWNlRm9yQXBwZW5kKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChtX2Nh
cGFjaXR5ID4gbV9zaXplKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHNpemVfdCByZXF1
aXJlZFNpemUgPSBzdGQ6Om1heChtX2NhcGFjaXR5ICsgKG1fY2FwYWNpdHkgLyAyKSArIDEsIE1p
bmltdW1NYXBTaXplKTsKKyAgICB2b2lkKiBuZXdTdG9yYWdlID0gMDsKKyAgICBpZiAoIWNhbGxG
cmFtZS0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3JhZ2UodGhpcywgcmVxdWlyZWRTaXplICogc2l6
ZW9mKEVudHJ5KSwgJm5ld1N0b3JhZ2UpKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIERlZmVyR0Mg
ZGVmZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKKyAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRp
Y19jYXN0PEVudHJ5Kj4obmV3U3RvcmFnZSk7CisgICAgaWYgKHNob3VsZFBhY2soKSkKKyAgICAg
ICAgcmVwbGFjZUFuZFBhY2tCYWNraW5nU3RvcmUobmV3RW50cmllcywgcmVxdWlyZWRTaXplKTsK
KyAgICBlbHNlCisgICAgICAgIHJlcGxhY2VCYWNraW5nU3RvcmUobmV3RW50cmllcywgcmVxdWly
ZWRTaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNYXBEYXRhOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKyAgICBNYXBEYXRhKiB0aGlzT2JqZWN0ID0ganND
YXN0PE1hcERhdGEqPihjZWxsKTsKKyAgICBFbnRyeSogZW50cmllcyA9IHRoaXNPYmplY3QtPm1f
ZW50cmllczsKKyAgICBpZiAoIWVudHJpZXMpCisgICAgICAgIHJldHVybjsKKyAgICBzaXplX3Qg
c2l6ZSA9IHRoaXNPYmplY3QtPm1fc2l6ZTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9kZWxldGVk
Q291bnQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAg
ICAgICAgICAgIGlmICghZW50cmllc1tpXS5rZXkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZW50cmllc1tpXS5rZXkpOworICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJmVudHJpZXNbaV0udmFsdWUpOworICAgICAgICB9CisgICAgfSBl
bHNlCisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKCZlbnRyaWVzWzBdLmtleSwgc2l6ZSAq
IChzaXplb2YoRW50cnkpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpKTsKKworICAg
IHZpc2l0b3IuY29weUxhdGVyKHRoaXNPYmplY3QsIE1hcEJhY2tpbmdTdG9yZUNvcHlUb2tlbiwg
ZW50cmllcywgc2l6ZSk7Cit9CisKK3ZvaWQgTWFwRGF0YTo6Y29weUJhY2tpbmdTdG9yZShKU0Nl
bGwqIGNlbGwsIENvcHlWaXNpdG9yJiB2aXNpdG9yLCBDb3B5VG9rZW4gdG9rZW4pCit7CisgICAg
TWFwRGF0YSogdGhpc09iamVjdCA9IGpzQ2FzdDxNYXBEYXRhKj4oY2VsbCk7CisgICAgaWYgKHRv
a2VuID09IE1hcEJhY2tpbmdTdG9yZUNvcHlUb2tlbiAmJiB2aXNpdG9yLmNoZWNrSWZTaG91bGRD
b3B5KHRoaXNPYmplY3QtPm1fZW50cmllcykpIHsKKyAgICAgICAgc2l6ZV90IHJlcXVpcmVkU2l6
ZSA9IHRoaXNPYmplY3QtPm1fY2FwYWNpdHkgKiBzaXplb2YoRW50cnkpOworICAgICAgICBFbnRy
eSogb2xkRW50cmllcyA9IHRoaXNPYmplY3QtPm1fZW50cmllczsKKyAgICAgICAgRW50cnkqIG5l
d0VudHJpZXMgPSBzdGF0aWNfY2FzdDxFbnRyeSo+KHZpc2l0b3IuYWxsb2NhdGVOZXdTcGFjZSh0
aGlzT2JqZWN0LT5tX2NhcGFjaXR5ICogc2l6ZW9mKEVudHJ5KSkpOworICAgICAgICBpZiAodGhp
c09iamVjdC0+c2hvdWxkUGFjaygpKQorICAgICAgICAgICAgdGhpc09iamVjdC0+cmVwbGFjZUFu
ZFBhY2tCYWNraW5nU3RvcmUobmV3RW50cmllcywgcmVxdWlyZWRTaXplKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGhpc09iamVjdC0+cmVwbGFjZUJhY2tpbmdTdG9yZShuZXdFbnRyaWVz
LCByZXF1aXJlZFNpemUpOworICAgICAgICB2aXNpdG9yLmRpZENvcHkob2xkRW50cmllcywgdGhp
c09iamVjdC0+bV9jYXBhY2l0eSAqIHNpemVvZihFbnRyeSkpOworICAgIH0KKyAgICBCYXNlOjpj
b3B5QmFja2luZ1N0b3JlKGNlbGwsIHZpc2l0b3IsIHRva2VuKTsKK30KKwordm9pZCBNYXBEYXRh
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxNYXBEYXRhKj4oY2Vs
bCktPn5NYXBEYXRhKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERh
dGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZWViMWU2YjIyMzEzNjAzNGVlZWVjMTgyODExMzA3ZTZhODgyMmQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0
YS5oCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXBEYXRhX2gKKyNk
ZWZpbmUgTWFwRGF0YV9oCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworI2luY2x1ZGUg
PHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIE1hcERhdGEgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
eworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAg
IHN0cnVjdCBjb25zdF9pdGVyYXRvciB7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yKGNvbnN0IE1h
cERhdGEqKTsKKyAgICAgICAgfmNvbnN0X2l0ZXJhdG9yKCk7CisgICAgICAgIGNvbnN0IFdURjo6
S2V5VmFsdWVQYWlyPEpTVmFsdWUsIEpTVmFsdWU+IG9wZXJhdG9yKigpIGNvbnN0OworICAgICAg
ICBKU1ZhbHVlIGtleSgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fbWFwRGF0
YS0+bV9lbnRyaWVzW21faW5kZXhdLmtleS5nZXQoKTsgfQorICAgICAgICBKU1ZhbHVlIHZhbHVl
KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1cm4gbV9tYXBEYXRhLT5tX2VudHJpZXNb
bV9pbmRleF0udmFsdWUuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBvcGVyYXRvcisrKCk7CisgICAg
ICAgIHN0YXRpYyBjb25zdF9pdGVyYXRvciBlbmQoY29uc3QgTWFwRGF0YSopOworICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKTsKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcik7CisKKyAgICBwcml2YXRl
OgorICAgICAgICAvLyBUaGlzIGlzIGEgYml0IGduYXJseS4gV2UgdXNlIGFuIGluZGV4IG9mIC0x
IHRvIGluZGljYXRlIHRoZQorICAgICAgICAvLyAiZW5kKCkiIGl0ZXJhdG9yLiBCeSBjYXN0aW5n
IHRvIHVuc2lnbmVkIHdlIGNhbiBpbW1lZGlhdGVseQorICAgICAgICAvLyB0ZXN0IGlmIGJvdGgg
aXRlcmF0b3JzIGFyZSBhdCB0aGUgZW5kIG9mIHRoZWlyIGl0ZXJhdGlvbi4KKyAgICAgICAgLy8g
V2UgbmVlZCB0aGlzIGluIG9yZGVyIHRvIGtlZXAgdGhlIGNvbW1vbiBjYXNlIChlZy4gaXRlciAh
PSBlbmQoKSkKKyAgICAgICAgLy8gZmFzdC4KKyAgICAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4obV9pbmRleCkgPj0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX21hcERhdGEtPm1fc2l6ZSk7IH0KKyAgICAgICAgY29uc3QgTWFwRGF0YSogbV9tYXBEYXRh
OworICAgICAgICBpbnQzMl90IG1faW5kZXg7CisgICAgfTsKKworICAgIHN0cnVjdCBLZXlUeXBl
IHsKKyAgICAgICAgQUxXQVlTX0lOTElORSBLZXlUeXBlKCkgeyB9CisgICAgICAgIEtleVR5cGUo
SlNWYWx1ZSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgfTsKKworICAgIHN0YXRpYyBN
YXBEYXRhKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAg
IHsKKyAgICAgICAgTWFwRGF0YSogbWFwRGF0YSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE1hcERhdGE+KHZtLmhlYXApKSBNYXBEYXRhKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICBt
YXBEYXRhLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBtYXBEYXRhOworICAg
IH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
ICAgIHZvaWQgc2V0KENhbGxGcmFtZSosIEtleVR5cGUsIEpTVmFsdWUpOworICAgIEpTVmFsdWUg
Z2V0KENhbGxGcmFtZSosIEtleVR5cGUpOworICAgIGJvb2wgcmVtb3ZlKENhbGxGcmFtZSosIEtl
eVR5cGUpOworICAgIGJvb2wgY29udGFpbnMoQ2FsbEZyYW1lKiwgS2V5VHlwZSk7CisgICAgc2l6
ZV90IHNpemUoQ2FsbEZyYW1lKikgY29uc3QgeyByZXR1cm4gbV9zaXplIC0gbV9kZWxldGVkQ291
bnQ7IH0KKworICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3Rf
aXRlcmF0b3IodGhpcyk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBjb25zdF9pdGVyYXRvcjo6ZW5kKHRoaXMpOyB9CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAg
ICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCitwcml2
YXRlOgorICAgIHR5cGVkZWYgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQz
Ml90PiBJbmRleFRyYWl0czsKKworICAgIC8vIE91ciBtYXJraW5nIGZ1bmN0aW9ucyBleHBlY3Qg
RW50cnkgdG8gbWFpbnRhaW4gdGhpcyBsYXlvdXQKKyAgICBzdHJ1Y3QgRW50cnkgeworICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4ga2V5OworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4gdmFsdWU7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMsIElu
ZGV4VHJhaXRzPiBWYWx1ZUtleWVkTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmdJbXBs
KiwgaW50MzJfdCwgdHlwZW5hbWUgV1RGOjpEZWZhdWx0SGFzaDxTdHJpbmdJbXBsKj46Okhhc2gs
IFdURjo6SGFzaFRyYWl0czxTdHJpbmdJbXBsKj4sIEluZGV4VHJhaXRzPiBTdHJpbmdLZXllZE1h
cDsKKworICAgIE1hcERhdGEoVk0mLCBKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworICAgIHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxs
KiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOworCisKKyAgICBBTFdBWVNfSU5MSU5FIEVudHJ5
KiBmaW5kKENhbGxGcmFtZSosIEtleVR5cGUpOworICAgIEFMV0FZU19JTkxJTkUgRW50cnkqIGFk
ZChDYWxsRnJhbWUqLCBLZXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwLCB0eXBl
bmFtZSBLZXk+IEFMV0FZU19JTkxJTkUgRW50cnkqIGFkZChDYWxsRnJhbWUqLCBNYXAmLCBLZXks
IEtleVR5cGUpOworCisgICAgQUxXQVlTX0lOTElORSBib29sIHNob3VsZFBhY2soKSBjb25zdCB7
IHJldHVybiBtX2RlbGV0ZWRDb3VudCAmJiAhbV9pdGVyYXRvckNvdW50OyB9CisgICAgQ2hlY2tl
ZEJvb2xlYW4gZW5zdXJlU3BhY2VGb3JBcHBlbmQoQ2FsbEZyYW1lKik7CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgcmVwbGFjZUFuZFBhY2tCYWNraW5nU3RvcmUoRW50cnkqIGRlc3RpbmF0aW9u
LCBpbnQzMl90IG5ld1NpemUpOworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXBsYWNlQmFja2lu
Z1N0b3JlKEVudHJ5KiBkZXN0aW5hdGlvbiwgaW50MzJfdCBuZXdTaXplKTsKKworICAgIFZhbHVl
S2V5ZWRNYXAgbV92YWx1ZUtleWVkVGFibGU7CisgICAgU3RyaW5nS2V5ZWRNYXAgbV9zdHJpbmdL
ZXllZFRhYmxlOworICAgIGludDMyX3QgbV9jYXBhY2l0eTsKKyAgICBpbnQzMl90IG1fc2l6ZTsK
KyAgICBpbnQzMl90IG1fZGVsZXRlZENvdW50OworICAgIG11dGFibGUgaW50MzJfdCBtX2l0ZXJh
dG9yQ291bnQ7CisgICAgRW50cnkqIG1fZW50cmllczsKK307CisKK0FMV0FZU19JTkxJTkUgdm9p
ZCBNYXBEYXRhOjpjbGVhcigpCit7CisgICAgbV92YWx1ZUtleWVkVGFibGUuY2xlYXIoKTsKKyAg
ICBtX3N0cmluZ0tleWVkVGFibGUuY2xlYXIoKTsKKyAgICBtX2NhcGFjaXR5ID0gMDsKKyAgICBt
X3NpemUgPSAwOworICAgIG1fZGVsZXRlZENvdW50ID0gMDsKKyAgICBtX2VudHJpZXMgPSAwOwor
fQorCitBTFdBWVNfSU5MSU5FIE1hcERhdGE6OktleVR5cGU6OktleVR5cGUoSlNWYWx1ZSB2KQor
eworICAgIGlmICghdi5pc0RvdWJsZSgpKSB7CisgICAgICAgIHZhbHVlID0gdjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBkb3VibGUgZCA9IHYuYXNEb3VibGUoKTsKKyAgICBpZiAoaXNu
YW4oZCkgfHwgKHNpZ25iaXQoZCkgJiYgZCA9PSAwLjApKSB7CisgICAgICAgIHZhbHVlID0gdjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBpID0gc3RhdGljX2Nhc3Q8aW50Pih2
LmFzRG91YmxlKCkpOworICAgIGlmIChpICE9IHYpCisgICAgICAgIHZhbHVlID0gdjsKKyAgICBl
bHNlCisgICAgICAgIHZhbHVlID0ganNOdW1iZXIoaSk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9p
ZCBNYXBEYXRhOjpjb25zdF9pdGVyYXRvcjo6b3BlcmF0b3IrKygpCit7CisgICAgQVNTRVJUKCFh
dEVuZCgpKTsKKyAgICBFbnRyeSogZW50cmllcyA9IG1fbWFwRGF0YS0+bV9lbnRyaWVzOworICAg
IHNpemVfdCBpbmRleCA9IG1faW5kZXggKyAxOworICAgIHNpemVfdCBlbmQgPSBtX21hcERhdGEt
Pm1fc2l6ZTsKKyAgICB3aGlsZSAoaW5kZXggPCBlbmQgJiYgIWVudHJpZXNbaW5kZXhdLmtleSkK
KyAgICAgICAgaW5kZXgrKzsKKyAgICBtX2luZGV4ID0gaW5kZXg7Cit9CisKK0FMV0FZU19JTkxJ
TkUgTWFwRGF0YTo6Y29uc3RfaXRlcmF0b3I6OmNvbnN0X2l0ZXJhdG9yKGNvbnN0IE1hcERhdGEq
IG1hcERhdGEpCisgICAgOiBtX21hcERhdGEobWFwRGF0YSkKKyAgICAsIG1faW5kZXgoMCkKK3sK
KyAgICBtX21hcERhdGEtPm1faXRlcmF0b3JDb3VudCsrOworfQorCitBTFdBWVNfSU5MSU5FIE1h
cERhdGE6OmNvbnN0X2l0ZXJhdG9yOjp+Y29uc3RfaXRlcmF0b3IoKQoreworICAgIG1fbWFwRGF0
YS0+bV9pdGVyYXRvckNvdW50LS07Cit9CisKK0FMV0FZU19JTkxJTkUgY29uc3QgV1RGOjpLZXlW
YWx1ZVBhaXI8SlNWYWx1ZSwgSlNWYWx1ZT4gTWFwRGF0YTo6Y29uc3RfaXRlcmF0b3I6Om9wZXJh
dG9yKigpIGNvbnN0Cit7CisgICAgRW50cnkqIGVudHJ5ID0gJm1fbWFwRGF0YS0+bV9lbnRyaWVz
W21faW5kZXhdOworICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxKU1ZhbHVlLCBKU1ZhbHVl
PihlbnRyeS0+a2V5LmdldCgpLCBlbnRyeS0+dmFsdWUuZ2V0KCkpOworfQorCitBTFdBWVNfSU5M
SU5FIE1hcERhdGE6OmNvbnN0X2l0ZXJhdG9yIE1hcERhdGE6OmNvbnN0X2l0ZXJhdG9yOjplbmQo
Y29uc3QgTWFwRGF0YSogbWFwRGF0YSkKK3sKKyAgICBjb25zdF9pdGVyYXRvciByZXN1bHQobWFw
RGF0YSk7CisgICAgcmVzdWx0Lm1faW5kZXggPSAtMTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitBTFdBWVNfSU5MSU5FIGJvb2wgTWFwRGF0YTo6Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yIT0o
Y29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlci5tX21hcERh
dGEgPT0gbV9tYXBEYXRhKTsKKyAgICBpZiAoYXRFbmQoKSAmJiBvdGhlci5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faW5kZXggIT0gb3RoZXIubV9pbmRleDsK
K30KKworQUxXQVlTX0lOTElORSBib29sIE1hcERhdGE6OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRv
cj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikKK3sKKyAgICByZXR1cm4gISgqdGhpcyAh
PSBvdGhlcik7Cit9CisKK30KKworI2VuZGlmIC8qICFkZWZpbmVkKE1hcERhdGFfaCkgKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ2NTQyZDJmNTBmYzcxNGNkMTE0ZWFiMzYwYjQyYzIxYWFhMDFkMWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBA
IC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJDYWNoZWRDYWxsLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiTWFwRGF0YS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXBQcm90b3R5cGUpIH07CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
RGVsZXRlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChFeGVjU3RhdGUq
KTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6
ZShFeGVjU3RhdGUqKTsKKyAgICAKK3ZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlw
ZSh0aGlzKTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xl
YXIsIG1hcFByb3RvRnVuY0NsZWFyLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5kZWxldGVLZXl3b3JkLCBtYXBQcm90b0Z1bmNEZWxldGUs
IERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmZvckVhY2gsIG1hcFByb3RvRnVuY0ZvckVhY2gsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBEb250
RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMs
IG1hcFByb3RvRnVuY0hhcywgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+c2V0LCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKwor
ICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsK
KyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9i
YWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIG1hcFByb3RvRnVu
Y1NpemUpOworICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZnVuY3Rpb24pOwor
ICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIGFjY2Vz
c29yLCBEb250RW51bSB8IEFjY2Vzc29yKTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgTWFw
RGF0YSogZ2V0TWFwRGF0YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUp
Cit7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1ZhbHVl
KSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBKU01hcCogbWFwID0ganNEeW5hbWlj
Q2FzdDxKU01hcCo+KHRoaXNWYWx1ZSk7CisgICAgaWYgKCFtYXApIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1NYXAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJu
IG1hcC0+bWFwRGF0YSgpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
b3RvRnVuY0NsZWFyKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEg
PSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIGRhdGEtPmNsZWFyKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNEZWxl
dGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERh
dGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGF0YS0+cmVtb3ZlKGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNGb3JFYWNoKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEq
IGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIEpTVmFsdWUgY2FsbEJhY2sgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
Y2FsbEJhY2ssIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwg
V1RGOjpBU0NJSUxpdGVyYWwoIk1hcC5wcm90b3R5cGUuZm9yRWFjaCBjYWxsZWQgd2l0aG91dCBj
YWxsYmFjayIpKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpOworICAgIFZNKiB2bSA9ICZjYWxsRnJhbWUtPnZtKCk7CisgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlSlMpIHsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNhbGxCYWNrKTsKKyAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGNhbGxG
cmFtZSwgZnVuY3Rpb24sIDIpOworICAgICAgICBmb3IgKGF1dG8gcHRyID0gZGF0YS0+YmVnaW4o
KSwgZW5kID0gZGF0YS0+ZW5kKCk7IHB0ciAhPSBlbmQgJiYgIXZtLT5leGNlcHRpb24oKTsgKytw
dHIpIHsKKyAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyh0aGlzVmFsdWUpOworICAgICAg
ICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgwLCBwdHIudmFsdWUoKSk7CisgICAgICAgICAg
ICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIHB0ci5rZXkoKSk7CisgICAgICAgICAgICBjYWNo
ZWRDYWxsLmNhbGwoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0
byBwdHIgPSBkYXRhLT5iZWdpbigpLCBlbmQgPSBkYXRhLT5lbmQoKTsgcHRyICE9IGVuZCAmJiAh
dm0tPmV4Y2VwdGlvbigpOyArK3B0cikgeworICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHB0ci52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKHB0ci5rZXkoKSk7CisgICAgICAgICAgICBKU0M6OmNhbGwoY2FsbEZy
YW1lLCBjYWxsQmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gZGF0YS0+Z2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY0hhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBEYXRhKiBk
YXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkYXRhLT5jb250YWlucyhj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIGRhdGEtPnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBN
YXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGRhdGEtPnNp
emUoY2FsbEZyYW1lKSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ZjBhYjZhNTYzOWE3MWNjYTI2MGU4NGU4Y2E4
YmZhMWQ0YzJjOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBQcm90b3R5cGUuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXBQcm90b3R5cGVfaAorI2RlZmlu
ZSBNYXBQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIE1hcFByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBN
YXBQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgTWFwUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXBQcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBNYXBQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOworICAgICAgICBy
ZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBN
YXBQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBCYXNlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30KKwor
I2VuZGlmIC8vICFkZWZpbmVkKE1hcFByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IDczMDIyNTg5NThlZWFiNTAzYTg0MmJhOGI0YzMwOWI1OGJjZDliN2Qu
LjE2ZjlhMzBmYzA1MWRjMDQ3ZWZmNjAwYmE1Y2I1OGY1OTk3NzNhZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJKU1dpdGhT
Y29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVk
ZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEu
aCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlOWQwMTE5M2FiNTIwZDNjNDYy
ZWMyZTg2YjY3ZTMzYWM4Y2RmOGMuLjlmMDNmYzg2MTVkMzgyNWNkOWE0NWJkYTU1Yzg2MDlkMGY4
MzZhMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wOC0yOSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFUzYgTWFwIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMKKworICAg
ICAgICAqIGZhc3QvanMvYmFzaWMtbWFwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9iYXNpYy1tYXAuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQt
dGVzdHMvYmFzaWMtbWFwLmpzOiBBZGRlZC4KKwogMjAxMy0wOC0yOSAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTUzMjIyLCAzMi1i
aXQpOiBOVUxMIEpTVmFsdWUoKSBzZWVuIHdoZW4gcnVubmluZyBwZWFjZWtlZXBlciBiZW5jaG1h
cmsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtbWFwLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtbWFwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MjM0NDJmOTNjNTQ4OWM0YTVhMjQ1YmFhZTRiZTk2MTk1YTQ0YzAwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1tYXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTI3IEBACitUZXN0cyBiYXNpYyBjb3JyZWN0bmVzcyBvZiBFUyBNYXAgb2JqZWN0CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE1hcCBpbnN0YW5jZW9mIE1hcCBpcyBm
YWxzZQorUEFTUyBNYXAucHJvdG90eXBlIGluc3RhbmNlb2YgTWFwIGlzIGZhbHNlCitQQVNTIG5l
dyBNYXAoKSBpbnN0YW5jZW9mIE1hcCBpcyB0cnVlCitQQVNTIG5ldyBNYXAobnVsbCkgaW5zdGFu
Y2VvZiBNYXAgaXMgdHJ1ZQorUEFTUyBuZXcgTWFwKHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBNYXAg
aXMgdHJ1ZQorUEFTUyBuZXcgTWFwKHVuZGVmaW5lZCwgdW5kZWZpbmVkKSBpbnN0YW5jZW9mIE1h
cCBpcyB0cnVlCitQQVNTIG5ldyBNYXAobnVsbCwgdW5kZWZpbmVkKSBpbnN0YW5jZW9mIE1hcCBp
cyB0cnVlCitQQVNTIG5ldyBNYXAoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWFwIGNv
bnN0cnVjdG9yIGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMuCitQQVNTIG5ldyBNYXAodHJ1ZSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWFwIGNvbnN0cnVjdG9yIGRvZXMgbm90IGFjY2Vw
dCBhcmd1bWVudHMuCitQQVNTIG5ldyBNYXAoW10pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE1hcCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzLgorUEFTUyBuZXcgTWFw
KHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNYXAgY29uc3RydWN0b3IgZG9lcyBub3Qg
YWNjZXB0IGFyZ3VtZW50cy4KK1BBU1MgbmV3IE1hcCh1bmRlZmluZWQsIG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBSYW5nZUVycm9yOiBJbnZhbGlkIGNvbXBhcmF0b3IgZnVuY3Rpb24uCitQQVNTIG5l
dyBNYXAodW5kZWZpbmVkLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IEludmFsaWQg
Y29tcGFyYXRvciBmdW5jdGlvbi4KK1BBU1MgT2JqZWN0Lmhhc093blByb3BlcnR5KG1hcCwgJ3Np
emUnKSBpcyBmYWxzZQorUEFTUyBNYXAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCdzaXplJykg
aXMgdHJ1ZQorUEFTUyBNYXAucHJvdG90eXBlLnNpemUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QuCitQQVNTIG1hcC5zaXpl
IGlzIDAKK1BBU1MgbWFwLnNldCgtMCwgMSkgaXMgbWFwCitQQVNTIG1hcC5zZXQoMCwgMikgaXMg
bWFwCitQQVNTIG1hcC5zZXQoSW5maW5pdHksIDMpIGlzIG1hcAorUEFTUyBtYXAuc2V0KC1JbmZp
bml0eSwgNCkgaXMgbWFwCitQQVNTIG1hcC5zZXQoTmFOLCA1KSBpcyBtYXAKK1BBU1MgbWFwLnNl
dCgnMCcsIDYpIGlzIG1hcAorUEFTUyBtYXAuc2V0KDAuMSwgNykgaXMgbWFwCitQQVNTIG1hcC5z
aXplIGlzIDcKK1BBU1MgbWFwLmdldCgtMCkgaXMgMQorUEFTUyBtYXAuZ2V0KDApIGlzIDIKK1BB
U1MgbWFwLmdldChJbmZpbml0eSkgaXMgMworUEFTUyBtYXAuZ2V0KC1JbmZpbml0eSkgaXMgNAor
UEFTUyBtYXAuZ2V0KE5hTikgaXMgNQorUEFTUyBtYXAuZ2V0KCcwJykgaXMgNgorUEFTUyBtYXAu
Z2V0KDAuMSkgaXMgNworUEFTUyBtYXAuaGFzKC0wKSBpcyB0cnVlCitQQVNTIG1hcC5oYXMoMCkg
aXMgdHJ1ZQorUEFTUyBtYXAuaGFzKEluZmluaXR5KSBpcyB0cnVlCitQQVNTIG1hcC5oYXMoLUlu
ZmluaXR5KSBpcyB0cnVlCitQQVNTIG1hcC5oYXMoTmFOKSBpcyB0cnVlCitQQVNTIG1hcC5oYXMo
JzAnKSBpcyB0cnVlCitQQVNTIG1hcC5oYXMoMC4xKSBpcyB0cnVlCitQQVNTIG1hcC5kZWxldGUo
LTApIGlzIHRydWUKK1BBU1MgbWFwLmRlbGV0ZSgwKSBpcyB0cnVlCitQQVNTIG1hcC5kZWxldGUo
SW5maW5pdHkpIGlzIHRydWUKK1BBU1MgbWFwLmRlbGV0ZSgtSW5maW5pdHkpIGlzIHRydWUKK1BB
U1MgbWFwLmRlbGV0ZShOYU4pIGlzIHRydWUKK1BBU1MgbWFwLmRlbGV0ZSgnMCcpIGlzIHRydWUK
K1BBU1MgbWFwLmRlbGV0ZSgwLjEpIGlzIHRydWUKK1BBU1MgbWFwLmRlbGV0ZSgtMCkgaXMgZmFs
c2UKK1BBU1MgbWFwLmRlbGV0ZSgwKSBpcyBmYWxzZQorUEFTUyBtYXAuZGVsZXRlKEluZmluaXR5
KSBpcyBmYWxzZQorUEFTUyBtYXAuZGVsZXRlKC1JbmZpbml0eSkgaXMgZmFsc2UKK1BBU1MgbWFw
LmRlbGV0ZShOYU4pIGlzIGZhbHNlCitQQVNTIG1hcC5kZWxldGUoJzAnKSBpcyBmYWxzZQorUEFT
UyBtYXAuZGVsZXRlKDAuMSkgaXMgZmFsc2UKK1BBU1MgbWFwLmdldChzaW1wbGVTdHJpbmcpIGlz
IG1hcC5nZXQob3RoZXJTdHJpbmcpCitQQVNTIG1hcC5jbGVhcigpIGlzIHVuZGVmaW5lZC4KK1BB
U1MgbWFwLnNpemUgaXMgMAorUEFTUyBtYXAuc2V0KDAsIDApIGlzIG1hcAorUEFTUyBtYXAuc2V0
KCcwJywgMSkgaXMgbWFwCitQQVNTIG1hcC5zZXQoMSwgMikgaXMgbWFwCitQQVNTIG1hcC5zZXQo
JzEnLCAzKSBpcyBtYXAKK1BBU1MgbWFwLnNldCgyLCA0KSBpcyBtYXAKK1BBU1MgbWFwLnNldCgn
MicsIDUpIGlzIG1hcAorUEFTUyBtYXAuc2V0KDMsIDYpIGlzIG1hcAorUEFTUyBtYXAuc2V0KCcz
JywgNykgaXMgbWFwCitQQVNTIG1hcC5zZXQoNCwgOCkgaXMgbWFwCitQQVNTIG1hcC5zZXQoJzQn
LCA5KSBpcyBtYXAKK1BBU1MgbWFwLnNldCg1LCAxMCkgaXMgbWFwCitQQVNTIG1hcC5zZXQoJzUn
LCAxMSkgaXMgbWFwCitQQVNTIG1hcC5zZXQoNiwgMTIpIGlzIG1hcAorUEFTUyBtYXAuc2V0KCc2
JywgMTMpIGlzIG1hcAorUEFTUyBtYXAuc2l6ZSBpcyAxNAorZm9yRWFjaCAjMAorUEFTUyB0ZXN0
VGhpcyBpcyB1bmRlZmluZWQuCiswCitmb3JFYWNoICMxCitQQVNTIHRlc3RUaGlzIGlzIHRoaXNW
YWx1ZQorMQorMAorMQorMgorMworNAorNQorNgorNworOAorOQorMTAKKzExCisxMgorMTMKK1BB
U1MgbWFwLmZvckVhY2goZGVidWcpIGlzIHVuZGVmaW5lZC4KKzAgOiBudW1iZXIgPT4gMAorMCA6
IHN0cmluZyA9PiAxCisxIDogbnVtYmVyID0+IDIKKzEgOiBzdHJpbmcgPT4gMworMiA6IG51bWJl
ciA9PiA0CisyIDogc3RyaW5nID0+IDUKKzMgOiBzdHJpbmcgPT4gNworNCA6IHN0cmluZyA9PiA5
Cis1IDogbnVtYmVyID0+IDEwCis1IDogc3RyaW5nID0+IDExCis2IDogbnVtYmVyID0+IDEyCis2
IDogc3RyaW5nID0+IDEzCis0IDogbnVtYmVyID0+IDExCitQQVNTIG1hcC5nZXQoMCkgaXMgMAor
UEFTUyBtYXAuZ2V0KCIwIikgaXMgMQorUEFTUyBtYXAuZ2V0KDEpIGlzIDIKK1BBU1MgbWFwLmdl
dCgiMSIpIGlzIDMKK1BBU1MgbWFwLmdldCgyKSBpcyA0CitQQVNTIG1hcC5nZXQoIjIiKSBpcyA1
CitQQVNTIG1hcC5nZXQoIjMiKSBpcyAicmVwbGFjZWQiCitQQVNTIG1hcC5nZXQoIjQiKSBpcyA5
CitQQVNTIG1hcC5nZXQoNSkgaXMgMTAKK1BBU1MgbWFwLmdldCgiNSIpIGlzIDExCitQQVNTIG1h
cC5nZXQoNikgaXMgMTIKK1BBU1MgbWFwLmdldCgiNiIpIGlzIDEzCitQQVNTIG1hcC5nZXQoNCkg
aXMgMTEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLW1hcC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9qcy9iYXNpYy1tYXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzQ3ZTEyNzgyODBlNzVj
NzFlZWU3OWQwN2FjNTQwMDA5NzE4NmU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9iYXNpYy1tYXAuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYmFzaWMtbWFwLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2lj
LW1hcC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLW1hcC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OGNkNmNjNzgxN2ZhYTk1YjIzMGExMDRhMGUxNDc0MWU4M2IxZWE1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtbWFw
LmpzCkBAIC0wLDAgKzEsMTIzIEBACitkZXNjcmlwdGlvbigiVGVzdHMgYmFzaWMgY29ycmVjdG5l
c3Mgb2YgRVMgTWFwIG9iamVjdCIpOworCisvLyBDdXJyZW50bHkgd2UgZG9uJ3Qgc3VwcG9ydCBp
dGVyYXRvcnMsIHNvIHdlIHRocm93CisvLyBvbiBhbnkgbm9uLXRocm93aW5nIHBhcmFtZXRlcnMK
K3Nob3VsZEJlRmFsc2UoIk1hcCBpbnN0YW5jZW9mIE1hcCIpOworc2hvdWxkQmVGYWxzZSgiTWFw
LnByb3RvdHlwZSBpbnN0YW5jZW9mIE1hcCIpOworc2hvdWxkQmVUcnVlKCJuZXcgTWFwKCkgaW5z
dGFuY2VvZiBNYXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcChudWxsKSBpbnN0YW5jZW9mIE1h
cCIpOworc2hvdWxkQmVUcnVlKCJuZXcgTWFwKHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBNYXAiKTsK
K3Nob3VsZEJlVHJ1ZSgibmV3IE1hcCh1bmRlZmluZWQsIHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBN
YXAiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IE1hcChudWxsLCB1bmRlZmluZWQpIGluc3RhbmNlb2Yg
TWFwIik7CisKK3Nob3VsZFRocm93KCJuZXcgTWFwKDEpIik7CitzaG91bGRUaHJvdygibmV3IE1h
cCh0cnVlKSIpOworc2hvdWxkVGhyb3coIm5ldyBNYXAoW10pIik7CitzaG91bGRUaHJvdygibmV3
IE1hcCh7fSkiKTsKK3Nob3VsZFRocm93KCJuZXcgTWFwKHVuZGVmaW5lZCwgbnVsbCkiKTsKK3No
b3VsZFRocm93KCJuZXcgTWFwKHVuZGVmaW5lZCwge30pIik7CisKK3ZhciBtYXAgPSBuZXcgTWFw
Oworc2hvdWxkQmVGYWxzZSgiT2JqZWN0Lmhhc093blByb3BlcnR5KG1hcCwgJ3NpemUnKSIpCitz
aG91bGRCZVRydWUoIk1hcC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ3NpemUnKSIpCitzaG91
bGRUaHJvdygiTWFwLnByb3RvdHlwZS5zaXplIikKK3Nob3VsZEJlKCJtYXAuc2l6ZSIsICIwIikK
K3Nob3VsZEJlKCJtYXAuc2V0KC0wLCAxKSIsICJtYXAiKQorc2hvdWxkQmUoIm1hcC5zZXQoMCwg
MikiLCAibWFwIikKK3Nob3VsZEJlKCJtYXAuc2V0KEluZmluaXR5LCAzKSIsICJtYXAiKQorc2hv
dWxkQmUoIm1hcC5zZXQoLUluZmluaXR5LCA0KSIsICJtYXAiKQorc2hvdWxkQmUoIm1hcC5zZXQo
TmFOLCA1KSIsICJtYXAiKQorc2hvdWxkQmUoIm1hcC5zZXQoJzAnLCA2KSIsICJtYXAiKQorc2hv
dWxkQmUoIm1hcC5zZXQoMC4xLCA3KSIsICJtYXAiKQorc2hvdWxkQmUoIm1hcC5zaXplIiwgIjci
KQorc2hvdWxkQmUoIm1hcC5nZXQoLTApIiwgIjEiKQorc2hvdWxkQmUoIm1hcC5nZXQoMCkiLCAi
MiIpCitzaG91bGRCZSgibWFwLmdldChJbmZpbml0eSkiLCAiMyIpCitzaG91bGRCZSgibWFwLmdl
dCgtSW5maW5pdHkpIiwgIjQiKQorc2hvdWxkQmUoIm1hcC5nZXQoTmFOKSIsICI1IikKK3Nob3Vs
ZEJlKCJtYXAuZ2V0KCcwJykiLCAiNiIpCitzaG91bGRCZSgibWFwLmdldCgwLjEpIiwgIjciKQor
CitzaG91bGRCZVRydWUoIm1hcC5oYXMoLTApIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmhhcygwKSIp
CitzaG91bGRCZVRydWUoIm1hcC5oYXMoSW5maW5pdHkpIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmhh
cygtSW5maW5pdHkpIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmhhcyhOYU4pIikKK3Nob3VsZEJlVHJ1
ZSgibWFwLmhhcygnMCcpIikKK3Nob3VsZEJlVHJ1ZSgibWFwLmhhcygwLjEpIikKKworc2hvdWxk
QmVUcnVlKCJtYXAuZGVsZXRlKC0wKSIpCitzaG91bGRCZVRydWUoIm1hcC5kZWxldGUoMCkiKQor
c2hvdWxkQmVUcnVlKCJtYXAuZGVsZXRlKEluZmluaXR5KSIpCitzaG91bGRCZVRydWUoIm1hcC5k
ZWxldGUoLUluZmluaXR5KSIpCitzaG91bGRCZVRydWUoIm1hcC5kZWxldGUoTmFOKSIpCitzaG91
bGRCZVRydWUoIm1hcC5kZWxldGUoJzAnKSIpCitzaG91bGRCZVRydWUoIm1hcC5kZWxldGUoMC4x
KSIpCisKK3Nob3VsZEJlRmFsc2UoIm1hcC5kZWxldGUoLTApIikKK3Nob3VsZEJlRmFsc2UoIm1h
cC5kZWxldGUoMCkiKQorc2hvdWxkQmVGYWxzZSgibWFwLmRlbGV0ZShJbmZpbml0eSkiKQorc2hv
dWxkQmVGYWxzZSgibWFwLmRlbGV0ZSgtSW5maW5pdHkpIikKK3Nob3VsZEJlRmFsc2UoIm1hcC5k
ZWxldGUoTmFOKSIpCitzaG91bGRCZUZhbHNlKCJtYXAuZGVsZXRlKCcwJykiKQorc2hvdWxkQmVG
YWxzZSgibWFwLmRlbGV0ZSgwLjEpIikKKwordmFyIHNpbXBsZVN0cmluZyA9ICJhYWFhYSI7Cit2
YXIgb3RoZXJTdHJpbmcgPSAiIjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKQorCW90aGVy
U3RyaW5nICs9ICJhIgorbWFwLnNldChzaW1wbGVTdHJpbmcsIHt9KTsKK3Nob3VsZEJlKCJtYXAu
Z2V0KHNpbXBsZVN0cmluZykiLCAibWFwLmdldChvdGhlclN0cmluZykiKTsKKworCisKK3Nob3Vs
ZEJlVW5kZWZpbmVkKCJtYXAuY2xlYXIoKSIpOworc2hvdWxkQmUoIm1hcC5zaXplIiwgIjAiKQor
dmFyIGNvdW50ID0gNzsKK2ZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIHNo
b3VsZEJlKCJtYXAuc2V0KCIgKyBpICsgIiwgIiArIChpICogMikgKyAiKSIsICJtYXAiKQorICAg
IHNob3VsZEJlKCJtYXAuc2V0KCciICsgaSArICInLCAiICsgKGkgKiAyICsgMSkgKyAiKSIsICJt
YXAiKQorfQorCitzaG91bGRCZSgibWFwLnNpemUiLCAiMTQiKQorCit2YXIgdGhpc1ZhbHVlID0g
MHhmMDAKK3ZhciB0ZXN0VGhpczsKK3ZhciBjb3VudCA9IDA7CisKK3RyeSB7CisJbWFwLmZvckVh
Y2goZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgZGVidWcoImZvckVhY2ggIzAiKTsgdGVzdFRo
aXMgPSB0aGlzOyBzaG91bGRCZVVuZGVmaW5lZCgidGVzdFRoaXMiKTsgdGhyb3cgY291bnQrKzsg
IH0pCit9IGNhdGNoKGUpIHsKKyAgICBkZWJ1ZyhlKQorfQordHJ5IHsKKyAgICBtYXAuZm9yRWFj
aChmdW5jdGlvbigpIHsgInVzZSBzdHJpY3QiOyBkZWJ1ZygiZm9yRWFjaCAjMSIpOyB0ZXN0VGhp
cyA9IHRoaXM7IHNob3VsZEJlKCJ0ZXN0VGhpcyIsICJ0aGlzVmFsdWUiKTsgdGhyb3cgY291bnQr
KzsgIH0sIHRoaXNWYWx1ZSkKK30gY2F0Y2goZSkgeworICAgIGRlYnVnKGUpCit9CisKK3Nob3Vs
ZEJlVW5kZWZpbmVkKCdtYXAuZm9yRWFjaChkZWJ1ZyknKQorCittYXAuZm9yRWFjaChmdW5jdGlv
biAodixrKSB7CisJZGVidWcoayArICIgOiAiICsgdHlwZW9mIChrKSArICIgPT4gIiArIHYpCisK
KwlpZiAoayA9PSAyKQorCQltYXAuZGVsZXRlKDMpCisJaWYgKGsgPT0gIjMiKSB7CisJCW1hcC5z
ZXQoIjMiLCAicmVwbGFjZWQiKTsKKwkJbWFwLmRlbGV0ZSg0KQorCQltYXAuc2V0KDQsIDExKQor
CX0KK30pCisKK3ZhciBrZXlzOworbWFwLmZvckVhY2goZnVuY3Rpb24gKHYsaykgeworCWtleXMg
PSBrZXlzIHx8IFtdOworCWtleXMucHVzaChbayx2XSk7Cit9KQorZ2MoKTsKK2ZvciAodmFyIGkg
PSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgeworCXZhciBleHBlY3RlZEtleSA9IGtleXNbaV1b
MF0KKwl2YXIgZXhwZWN0ZWRWYWx1ZSA9IGtleXNbaV1bMV0KKwlzaG91bGRCZSgibWFwLmdldCgi
K0pTT04uc3RyaW5naWZ5KGV4cGVjdGVkS2V5KSsiKSIsIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVk
VmFsdWUpKTsKK30K
</data>
<flag name="review"
          id="232134"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>