<?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>90198</bug_id>
          
          <creation_ts>2012-06-28 12:52:15 -0700</creation_ts>
          <short_desc>Port DFG JIT to traditional ARM</short_desc>
          <delta_ts>2016-07-28 04:28:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          <dependson>90656</dependson>
    
    <dependson>160288</dependson>
          <blocked>90644</blocked>
    
    <blocked>91238</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>loki</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659715</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-06-28 12:52:15 -0700</bug_when>
    <thetext>Let&apos;s do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659717</commentid>
    <comment_count>1</comment_count>
      <attachid>149988</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-06-28 12:54:30 -0700</bug_when>
    <thetext>Created attachment 149988
first draft patch

There is some progress on this porting work. Most of the JSCore tests are running now, but some runtime assertions are hit during the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659722</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 12:57:36 -0700</bug_when>
    <thetext>Attachment 149988 did not pass style-queue:

Source/JavaScriptCore/dfg/DFGOperations.cpp:146:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:178:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:189:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1384:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1393:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.cpp:295:  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/assembler/ARMAssembler.cpp:331:  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/assembler/ARMAssembler.h:430:  vmov_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:465:  vabs_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:470:  vneg_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:485:  dtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:490:  dtr_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:495:  dtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:500:  dtr_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:505:  dtrh_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:510:  dtrh_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:515:  dtrh_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:520:  dtrh_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:525:  fdtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:532:  fdtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:561:  vmov_vfp64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:567:  vmov_arm64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:573:  vmov_vfp32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:579:  vmov_arm32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:597:  vcvt_u32_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:603:  vcvt_f64_f32_r is incorrectly named. Don&apos;t use underscores in your identifieFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/assembler/ARMAssembl...&quot; exit_code: 1
r names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:609:  vcvt_f32_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:893:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:910:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:911:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:912:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:913:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:914:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:915:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 35 in 14 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>661370</commentid>
    <comment_count>3</comment_count>
      <attachid>150392</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-02 03:41:34 -0700</bug_when>
    <thetext>Created attachment 150392
second draft patch

3 regressions in jscore tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661371</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 03:43:33 -0700</bug_when>
    <thetext>Attachment 150392 did not pass style-queue:

Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1205:  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/dfg/DFGOperations.cpp:146:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:178:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:189:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1382:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1391:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.cpp:295:  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/assembler/ARMAssembler.cpp:331:  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/assembler/ARMAssembler.h:433:  vmov_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:468:  vabs_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:473:  vneg_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:488:  dtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:493:  dtr_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:498:  dtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:503:  dtr_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:508:  dtrh_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:513:  dtrh_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:518:  dtrh_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:523:  dtrh_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:528:  fdtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:535:  fdtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:564:  vmov_vfp64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:570:  vmov_arm64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:576:  vmov_vfp32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:582:  vmov_arm32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:600:  vcvt_u32_f64_r is incorrectly named. DoFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/assembler/ARMAssembl...&quot; exit_code: 1
n&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:606:  vcvt_f64_f32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:612:  vcvt_f32_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:932:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:949:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:950:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:951:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:952:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:953:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:954:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 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>661496</commentid>
    <comment_count>5</comment_count>
      <attachid>150423</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-02 08:11:14 -0700</bug_when>
    <thetext>Created attachment 150423
working patch

The patch is working now.

SunSpider:

With DFG: 1910.2ms
Without DFG 2062.6ms

ChangeLog is missing but I think the patch is ready for a first round of review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661497</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 08:13:14 -0700</bug_when>
    <thetext>Attachment 150423 did not pass style-queue:

Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1205:  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/dfg/DFGOperations.cpp:146:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:178:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:189:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1382:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1391:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.cpp:295:  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/assembler/ARMAssembler.cpp:331:  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/assembler/ARMAssembler.h:433:  vmov_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:468:  vabs_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:473:  vneg_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:488:  dtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:493:  dtr_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:498:  dtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:503:  dtr_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:508:  dtrh_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:513:  dtrh_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:518:  dtrh_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:523:  dtrh_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:528:  fdtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:535:  fdtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:564:  vmov_vfp64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:570:  vmov_arm64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:576:  vmov_vfp32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:582:  vmov_arm32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:600:  vcvt_u32_f64_r is incorrectly named. DoFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/assembler/ARMAssembl...&quot; exit_code: 1
n&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:606:  vcvt_f64_f32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:612:  vcvt_f32_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:932:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:949:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:950:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:951:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:952:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:953:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:954:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 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>662141</commentid>
    <comment_count>7</comment_count>
      <attachid>150590</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-03 05:26:49 -0700</bug_when>
    <thetext>Created attachment 150590
patch

Some minor things were refactored and a changelog is added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662143</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 05:29:27 -0700</bug_when>
    <thetext>Attachment 150590 did not pass style-queue:

Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1195:  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/dfg/DFGOperations.cpp:146:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:178:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:189:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1382:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1391:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.cpp:295:  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/assembler/ARMAssembler.cpp:331:  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/assembler/ARMAssembler.h:433:  vmov_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:468:  vabs_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:473:  vneg_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:488:  dtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:493:  dtr_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:498:  dtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:503:  dtr_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:508:  dtrh_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:513:  dtrh_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:518:  dtrh_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:523:  dtrh_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:528:  fdtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:535:  fdtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:564:  vmov_vfp64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:570:  vmov_arm64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:576:  vmov_vfp32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:582:  vmov_arm32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:600:  vcvt_u32_f64_r is incorrectly named. DoFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
n&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:606:  vcvt_f64_f32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:612:  vcvt_f32_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:933:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 30 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662273</commentid>
    <comment_count>9</comment_count>
      <attachid>150590</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-03 08:57:11 -0700</bug_when>
    <thetext>Comment on attachment 150590
patch

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

R=me.  Please measure V8 and Kraken though.  You should see big speed-ups there; if you don&apos;t then there&apos;s something wrong!

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        Sunspider is improved by 8%.

Affect on V8 performance?  Kraken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662741</commentid>
    <comment_count>10</comment_count>
      <attachid>150590</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2012-07-04 01:20:36 -0700</bug_when>
    <thetext>Comment on attachment 150590
patch

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

&gt;&gt; Source/JavaScriptCore/assembler/ARMAssembler.cpp:295
&gt;&gt; +    if (offset == 0) {
&gt; 
&gt; Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]

You should refine this and other style errors below. ;)

&gt; Source/JavaScriptCore/assembler/ARMAssembler.h:-158
&gt; -#if WTF_ARM_ARCH_AT_LEAST(5) || defined(__ARM_ARCH_4T__)

Please mention in the ChangeLog that the support of ARMv4 and below is removed.

Additionally you should check WTF_ARM_ARCH_AT_LEAST(4) and similar constructs and modify them in Platform.h and other files.

&gt; Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h:269
&gt; +#if CPU(ARM_THUMB2)
&gt;          m_assembler.vmov(payloadGPR, tagGPR, fpr);
&gt; +#else
&gt; +        m_assembler.vmov_arm64_r(payloadGPR, tagGPR, fpr);
&gt; +#endif

I suggest to define a common name or a wrapper function reducing #ifdef burden for the same logic.

Apart from these, I really like your patch. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662745</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 01:24:52 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 150590 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150590&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/assembler/ARMAssembler.cpp:295
&gt; &gt;&gt; +    if (offset == 0) {
&gt; &gt; 
&gt; &gt; Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
&gt; 
&gt; You should refine this and other style errors below. ;)
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/ARMAssembler.h:-158
&gt; &gt; -#if WTF_ARM_ARCH_AT_LEAST(5) || defined(__ARM_ARCH_4T__)
&gt; 
&gt; Please mention in the ChangeLog that the support of ARMv4 and below is removed.
&gt; 
&gt; Additionally you should check WTF_ARM_ARCH_AT_LEAST(4) and similar constructs and modify them in Platform.h and other files.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h:269
&gt; &gt; +#if CPU(ARM_THUMB2)
&gt; &gt;          m_assembler.vmov(payloadGPR, tagGPR, fpr);
&gt; &gt; +#else
&gt; &gt; +        m_assembler.vmov_arm64_r(payloadGPR, tagGPR, fpr);
&gt; &gt; +#endif
&gt; 
&gt; I suggest to define a common name or a wrapper function reducing #ifdef burden for the same logic.
&gt; 
&gt; Apart from these, I really like your patch. ;)

+1

I like the idea of wrapping the &quot;m_assembler.vmov_blah&quot; in something nicer.  Perhaps you can add a method in DFGAssemblyHelpers.h like:

void transferReturnValueToReturnValueFPR()
{
#if thumb2
     the thumb2 thingy
#else if arm
     the arm thingy
#else
     do thing
#endif
}

I think that would be useful in other places in the future, particularly since there are code paths in the DFG that make calls in a manner that bypasses the helper methods for a variety of reasons.  Currently none of those deal with floating point returns, but that might change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662747</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-04 01:33:12 -0700</bug_when>
    <thetext>I finished the V8 measurements.

Without DFG: 15372.2ms
With DFG: 8010.5ms

So there is a nice progression here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662748</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 01:33:41 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I finished the V8 measurements.
&gt; 
&gt; Without DFG: 15372.2ms
&gt; With DFG: 8010.5ms
&gt; 
&gt; So there is a nice progression here.

Fantastic!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662750</commentid>
    <comment_count>14</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-04 01:42:48 -0700</bug_when>
    <thetext>&gt; Please mention in the ChangeLog that the support of ARMv4 and below is removed.

It is already there :)

Ok I will do the necessary style changes. I think further refactoring could be done in followup patches, but this patch is already big enough, so I focus on the DFG related changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662792</commentid>
    <comment_count>15</comment_count>
      <attachid>150746</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-04 02:39:27 -0700</bug_when>
    <thetext>Created attachment 150746
latest patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662794</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 02:41:32 -0700</bug_when>
    <thetext>Attachment 150746 did not pass style-queue:

Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1195:  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/dfg/DFGOperations.cpp:146:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:178:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:189:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1382:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/dfg/DFGOperations.cpp:1391:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/ARMAssembler.h:433:  vmov_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:468:  vabs_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:473:  vneg_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:488:  dtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:493:  dtr_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:498:  dtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:503:  dtr_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:508:  dtrh_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:513:  dtrh_ur is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:518:  dtrh_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:523:  dtrh_dr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:528:  fdtr_u is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:535:  fdtr_d is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:564:  vmov_vfp64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:570:  vmov_arm64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:576:  vmov_vfp32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:582:  vmov_arm32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:600:  vcvt_u32_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:606:  vcvt_f64_f32_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMAssembler.h:612:  vcvt_f32_f64_r is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/namingFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
] [4]
Total errors found: 27 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662798</commentid>
    <comment_count>17</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-04 02:45:23 -0700</bug_when>
    <thetext>&gt; void transferReturnValueToReturnValueFPR()
&gt; {
&gt; #if thumb2
&gt;      the thumb2 thingy
&gt; #else if arm
&gt;      the arm thingy
&gt; #else
&gt;      do thing
&gt; #endif
&gt; }

I am not sure I understand this, but I added two vmov-s to the traditional assemblers, which wraps the &quot;arm thingy&quot; and this way I could remove all ifdefs from the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663102</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 12:42:34 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; void transferReturnValueToReturnValueFPR()
&gt; &gt; {
&gt; &gt; #if thumb2
&gt; &gt;      the thumb2 thingy
&gt; &gt; #else if arm
&gt; &gt;      the arm thingy
&gt; &gt; #else
&gt; &gt;      do thing
&gt; &gt; #endif
&gt; &gt; }
&gt; 
&gt; I am not sure I understand this, but I added two vmov-s to the traditional assemblers, which wraps the &quot;arm thingy&quot; and this way I could remove all ifdefs from the code.

Argh, sorry, I got confused by context.  Never mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663354</commentid>
    <comment_count>19</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-05 00:05:33 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/121885</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663765</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-05 16:08:16 -0700</bug_when>
    <thetext>FYI, this appears to have broken the ARMv7 port.  I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663780</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-05 16:31:45 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; FYI, this appears to have broken the ARMv7 port.  I&apos;ll fix it.

Fixed in http://trac.webkit.org/changeset/121927</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663918</commentid>
    <comment_count>22</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-06 00:20:40 -0700</bug_when>
    <thetext>&gt; Fixed in http://trac.webkit.org/changeset/121927

This macro should only used by traditional arm, and as far as I see all of its uses are guarded by CPU(ARM_TRADITIONAL). How does it slip out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663919</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-06 00:25:19 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; Fixed in http://trac.webkit.org/changeset/121927
&gt; 
&gt; This macro should only used by traditional arm, and as far as I see all of its uses are guarded by CPU(ARM_TRADITIONAL). How does it slip out?

Ah, interesting.

Around line 1089 in JITStubs.cpp:

#if CPU(ARM_THUMB2) &amp;&amp; COMPILER(GCC)

#define DEFINE_STUB_FUNCTION(rtype, op) \
    extern &quot;C&quot; { \
        rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
    }; \
    asm ( \
        &quot;.text&quot; &quot;\n&quot; \
        &quot;.align 2&quot; &quot;\n&quot; \
        &quot;.globl &quot; SYMBOL_STRING(cti_##op) &quot;\n&quot; \
        HIDE_SYMBOL(cti_##op) &quot;\n&quot;             \
        INLINE_ARM_FUNCTION(cti_##op) \
        SYMBOL_STRING(cti_##op) &quot;:&quot; &quot;\n&quot; \
        &quot;str lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
        &quot;bl &quot; SYMBOL_STRING(JITStubThunked_##op) &quot;\n&quot; \
        &quot;ldr lr, [sp, #&quot; STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) &quot;]&quot; &quot;\n&quot; \
        &quot;bx lr&quot; &quot;\n&quot; \
        ); \
    rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) \

Maybe you didn&apos;t mean to use INLINE_ARM_FUNCTION there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663924</commentid>
    <comment_count>24</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-06 00:50:24 -0700</bug_when>
    <thetext>That is my mistake. I accidentaly replaced that macro as well. I will revert it.

-        &quot;.thumb&quot; &quot;\n&quot; \
-        &quot;.thumb_func &quot; THUMB_FUNC_PARAM(cti_##op) &quot;\n&quot; \
+        INLINE_ARM_FUNCTION(cti_##op) \</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149988</attachid>
            <date>2012-06-28 12:54:30 -0700</date>
            <delta_ts>2012-07-02 03:41:34 -0700</delta_ts>
            <desc>first draft patch</desc>
            <filename>0001-dfg-port.patch</filename>
            <type>text/plain</type>
            <size>69902</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA0NGEwNjQzMTI3MWZiYTc2OWEwYTgwODVmMDI1MTgwMDI5YTU3YWFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAd2Via2l0Lm9yZz4K
RGF0ZTogVGh1LCAyOCBKdW4gMjAxMiAwNzowMDo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGRm
Zy1wb3J0CgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVy
LmNwcCAgIHwgICA4OSArKystLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1B
c3NlbWJsZXIuaCAgICAgfCAgMjMxICsrKysrKysrLS0tLS0KIC4uLi9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIHwgICAxMiArLQogLi4uL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oICAgfCAgMzgxICsrKysrKysrKysrKysr
Ky0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oICAg
ICB8ICAgMTAgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgg
ICAgICAgIHwgICAxMyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgg
ICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUklu
Zm8uaCAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAgICAgICAgIHwgICA2NyArKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggICAgICB8ICAgIDggKwogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAgICAgICAgICAgICAgfCAgIDIyICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggICAgICAgICB8ICAgMTQgKy0KIFNvdXJjZS9X
VEYvd3RmL0lubGluZUFTTS5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwog
MTQgZmlsZXMgY2hhbmdlZCwgNjM1IGluc2VydGlvbnMoKyksIDIyOCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKaW5k
ZXggNzQ4MDljYS4uYzc4OTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNQXNzZW1ibGVyLmNwcApAQCAtMjYyLDg2ICsyNjIsMTE3IEBAIEFSTVdvcmQgQVJN
QXNzZW1ibGVyOjplbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCkKIAogLy8g
TWVtb3J5IGxvYWQvc3RvcmUgaGVscGVycwogCi12b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5z
ZmVyMzIoYm9vbCBpc0xvYWQsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGlu
dDMyX3Qgb2Zmc2V0LCBib29sIGJ5dGVzKQordm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2Zl
cjMyKERhdGFUcmFuc2ZlclR5cGUxIHR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklE
IGJhc2UsIGludDMyX3Qgb2Zmc2V0KQogewotICAgIEFSTVdvcmQgdHJhbnNmZXJGbGFnID0gYnl0
ZXMgPyBEVF9CWVRFIDogMDsKICAgICBpZiAob2Zmc2V0ID49IDApIHsKICAgICAgICAgaWYgKG9m
ZnNldCA8PSAweGZmZikKLSAgICAgICAgICAgIGR0cl91KGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBv
ZmZzZXQgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRyX3UodHlwZSwgc3JjRHN0LCBi
YXNlLCBvZmZzZXQpOwogICAgICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZikgewogICAg
ICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQg
Pj4gMTIpIHwgKDEwIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cl91KGlzTG9hZCwgc3JjRHN0LCBB
Uk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ICYgMHhmZmYpIHwgdHJhbnNmZXJGbGFnKTsKKyAgICAg
ICAgICAgIGR0cl91KHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCAmIDB4
ZmZmKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJN
UmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBkdHJfdXIoaXNMb2FkLCBzcmNEc3QsIGJhc2Us
IEFSTVJlZ2lzdGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRyX3VyKHR5
cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0cl9kKGlz
TG9hZCwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0IHwgdHJhbnNmZXJGbGFnKTsKKyAgICAgICAgICAg
IGR0cl9kKHR5cGUsIHNyY0RzdCwgYmFzZSwgLW9mZnNldCk7CiAgICAgICAgIGVsc2UgaWYgKG9m
ZnNldCA+PSAtMHhmZmZmZikgewogICAgICAgICAgICAgc3ViX3IoQVJNUmVnaXN0ZXJzOjpTMCwg
YmFzZSwgT1AyX0lNTSB8ICgtb2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7Ci0gICAgICAgICAg
ICBkdHJfZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZm
ZikgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRyX2QodHlwZSwgc3JjRHN0LCBBUk1S
ZWdpc3RlcnM6OlMwLCAoLW9mZnNldCAmIDB4ZmZmKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBk
dHJfdXIoaXNMb2FkLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzAgfCB0cmFuc2ZlckZs
YWcpOworICAgICAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJz
OjpTMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5k
ZXhUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0LCBib29sIGJ5
dGVzKQordm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyMzIoRGF0YVRyYW5zZmVy
VHlwZTEgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKIHsKLSAgICBBUk1Xb3JkIG9wMjsK
LSAgICBBUk1Xb3JkIHRyYW5zZmVyRmxhZyA9IGJ5dGVzID8gRFRfQllURSA6IDA7Ci0KICAgICBB
U1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzKTsKLSAgICBvcDIgPSBsc2woaW5kZXgsIHNj
YWxlKTsKKyAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOwogCi0gICAgaWYgKG9m
ZnNldCA+PSAwICYmIG9mZnNldCA8PSAweGZmZikgewotICAgICAgICBhZGRfcihBUk1SZWdpc3Rl
cnM6OlMwLCBiYXNlLCBvcDIpOwotICAgICAgICBkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJNUmVn
aXN0ZXJzOjpTMCwgb2Zmc2V0IHwgdHJhbnNmZXJGbGFnKTsKKyAgICBpZiAob2Zmc2V0ID09IDAp
IHsKKyAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwgb3AyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAob2Zmc2V0IDw9IDAgJiYgb2Zmc2V0ID49IC0weGZmZikgewot
ICAgICAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBvcDIpOwotICAgICAgICBkdHJf
ZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikgfCB0
cmFuc2ZlckZsYWcpOworCisgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgb3AyKTsK
KyAgICBkYXRhVHJhbnNmZXIzMih0eXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzEsIG9mZnNl
dCk7Cit9CisKK3ZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJU
eXBlMiB0eXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9m
ZnNldCkKK3sKKyAgICBpZiAob2Zmc2V0ID49IDApIHsKKyAgICAgICAgaWYgKG9mZnNldCA8PSAw
eGZmKQorICAgICAgICAgICAgZHRyaF91KHR5cGUsIHNyY0RzdCwgYmFzZSwgZ2V0T3AySGFsZihv
ZmZzZXQpKTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZmZikgeworICAgICAgICAg
ICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQgPj4gOCkg
fCAoMTIgPDwgOCkpOworICAgICAgICAgICAgZHRyaF91KHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgZ2V0T3AySGFsZihvZmZzZXQgJiAweGZmKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgICAg
ICBkdHJoX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmKQorICAgICAgICAg
ICAgZHRyaF9kKHR5cGUsIHNyY0RzdCwgYmFzZSwgZ2V0T3AySGFsZigtb2Zmc2V0KSk7CisgICAg
ICAgIGVsc2UgaWYgKG9mZnNldCA+PSAtMHhmZmZmKSB7CisgICAgICAgICAgICBzdWJfcihBUk1S
ZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKC1vZmZzZXQgPj4gOCkgfCAoMTIgPDwgOCkp
OworICAgICAgICAgICAgZHRyaF9kKHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0
T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICAgICAgZHRyaF91cih0
eXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNmZXIxNihEYXRhVHJhbnNmZXJU
eXBlMiB0eXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KQoreworICAgIGlmIChzY2FsZSA9PSAw
ICYmIG9mZnNldCA9PSAwKSB7CisgICAgICAgIGR0cmhfdXIodHlwZSwgc3JjRHN0LCBiYXNlLCBp
bmRleCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBsZHJfdW5faW1tKEFSTVJlZ2lz
dGVyczo6UzAsIG9mZnNldCk7Ci0gICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0
ZXJzOjpTMCwgb3AyKTsKLSAgICBkdHJfdXIoaXNMb2FkLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lz
dGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGJh
c2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBkYXRhVHJhbnNmZXIxNih0eXBlLCBzcmNEc3Qs
IEFSTVJlZ2lzdGVyczo6UzEsIG9mZnNldCk7CiB9CiAKLXZvaWQgQVJNQXNzZW1ibGVyOjpkb3Vi
bGVUcmFuc2Zlcihib29sIGlzTG9hZCwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBi
YXNlLCBpbnQzMl90IG9mZnNldCkKK3ZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXJGbG9h
dChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0
ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKIHsKICAgICAvLyBWRlAgY2Fubm90IGRpcmVjdGx5
IGFjY2VzcyBtZW1vcnkgdGhhdCBpcyBub3QgZm91ci1ieXRlLWFsaWduZWQKICAgICBpZiAoIShv
ZmZzZXQgJiAweDMpKSB7CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmYgJiYgb2Zmc2V0ID49
IDApIHsKLSAgICAgICAgICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+
IDIpOworICAgICAgICAgICAgZmR0cl91KHR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChvZmZzZXQgPD0g
MHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJz
OjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKLSAgICAg
ICAgICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+
PiAyKSAmIDB4ZmYpOworICAgICAgICAgICAgZmR0cl91KHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CiAKICAgICAgICAgaWYgKG9mZnNldCA8
PSAweDNmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgZmR0cl9kKGlzTG9hZCwgc3Jj
RHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7CisgICAgICAgICAgICBmZHRyX2QodHlwZSwgc3JjRHN0
LCBiYXNlLCBvZmZzZXQgPj4gMik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKG9mZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+PSAwKSB7CiAgICAgICAgICAg
ICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKG9mZnNldCA+PiAxMCkg
fCAoMTEgPDwgOCkpOwotICAgICAgICAgICAgZmR0cl9kKGlzTG9hZCwgc3JjRHN0LCBBUk1SZWdp
c3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CisgICAgICAgICAgICBmZHRyX2QodHlw
ZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKICAg
ICB9CiAKLSAgICBsZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIG9mZnNldCk7CisgICAgbW92
ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6
UzAsIEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UpOwotICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwg
QVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgZmR0cl91KHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgMCk7Cit9CisKK3ZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlckZs
b2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBGUFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQp
Cit7CisgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgbHNsKGluZGV4LCBzY2FsZSkp
OworICAgIGRhdGFUcmFuc2ZlckZsb2F0KHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMSwg
b2Zmc2V0KTsKIH0KIAogUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBBUk1Bc3Nl
bWJsZXI6OmV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb3du
ZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCmluZGV4IDE2ZGMwY2YuLmYzZTAyYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaApAQCAt
NDEsMTYgKzQxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcjAgPSAwLAogICAg
ICAgICAgICAgcjEsCiAgICAgICAgICAgICByMiwKLSAgICAgICAgICAgIHIzLCBTMCA9IHIzLAor
ICAgICAgICAgICAgcjMsIFMwID0gcjMsIC8qIFNhbWUgYXMgdGh1bWIgYXNzZW1ibGVyLiAqLwog
ICAgICAgICAgICAgcjQsCiAgICAgICAgICAgICByNSwKICAgICAgICAgICAgIHI2LAogICAgICAg
ICAgICAgcjcsCi0gICAgICAgICAgICByOCwgUzEgPSByOCwKKyAgICAgICAgICAgIHI4LAogICAg
ICAgICAgICAgcjksCiAgICAgICAgICAgICByMTAsCiAgICAgICAgICAgICByMTEsCi0gICAgICAg
ICAgICByMTIsCisgICAgICAgICAgICByMTIsIFMxID0gcjEyLAogICAgICAgICAgICAgcjEzLCBz
cCA9IHIxMywKICAgICAgICAgICAgIHIxNCwgbHIgPSByMTQsCiAgICAgICAgICAgICByMTUsIHBj
ID0gcjE1CkBAIC02MCwxMSArNjAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBk
MCwKICAgICAgICAgICAgIGQxLAogICAgICAgICAgICAgZDIsCi0gICAgICAgICAgICBkMywgU0Qw
ID0gZDMsCisgICAgICAgICAgICBkMywKICAgICAgICAgICAgIGQ0LAogICAgICAgICAgICAgZDUs
CiAgICAgICAgICAgICBkNiwKLSAgICAgICAgICAgIGQ3LAorICAgICAgICAgICAgZDcsIFNEMCA9
IGQ3LCAvKiBTYW1lIGFzIHRodW1iIGFzc2VtYmxlci4gKi8KICAgICAgICAgICAgIGQ4LAogICAg
ICAgICAgICAgZDksCiAgICAgICAgICAgICBkMTAsCkBAIC0xNDEsMzMgKzE0MSwzMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIE1WTiA9ICgweGYgPDwgMjEpLAogICAgICAgICAgICAg
TVVMID0gMHgwMDAwMDA5MCwKICAgICAgICAgICAgIE1VTEwgPSAweDAwYzAwMDkwLAorICAgICAg
ICAgICAgVk1PVl9GNjQgPSAweDBlYjAwYjQwLAogICAgICAgICAgICAgVkFERF9GNjQgPSAweDBl
MzAwYjAwLAogICAgICAgICAgICAgVkRJVl9GNjQgPSAweDBlODAwYjAwLAogICAgICAgICAgICAg
VlNVQl9GNjQgPSAweDBlMzAwYjQwLAogICAgICAgICAgICAgVk1VTF9GNjQgPSAweDBlMjAwYjAw
LAogICAgICAgICAgICAgVkNNUF9GNjQgPSAweDBlYjQwYjQwLAogICAgICAgICAgICAgVlNRUlRf
RjY0ID0gMHgwZWIxMGJjMCwKLSAgICAgICAgICAgIERUUiA9IDB4MDUwMDAwMDAsCi0gICAgICAg
ICAgICBMRFJIID0gMHgwMDEwMDA5MCwKLSAgICAgICAgICAgIFNUUkggPSAweDAwMDAwMDkwLAor
ICAgICAgICAgICAgVkFCU19GNjQgPSAweDBlYjAwYmMwLAorICAgICAgICAgICAgVk5FR19GNjQg
PSAweDBlYjEwYjQwLAogICAgICAgICAgICAgU1RNREIgPSAweDA5MjAwMDAwLAogICAgICAgICAg
ICAgTERNSUEgPSAweDA4YjAwMDAwLAotICAgICAgICAgICAgRkRUUiA9IDB4MGQwMDBiMDAsCiAg
ICAgICAgICAgICBCID0gMHgwYTAwMDAwMCwKICAgICAgICAgICAgIEJMID0gMHgwYjAwMDAwMCwK
LSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzRUX18p
CiAgICAgICAgICAgICBCWCA9IDB4MDEyZmZmMTAsCi0jZW5kaWYKLSAgICAgICAgICAgIFZNT1Zf
VkZQID0gMHgwZTAwMGExMCwKLSAgICAgICAgICAgIFZNT1ZfQVJNID0gMHgwZTEwMGExMCwKKyAg
ICAgICAgICAgIFZNT1ZfVkZQNjQgPSAweDBjNDAwYTEwLAorICAgICAgICAgICAgVk1PVl9BUk02
NCA9IDB4MGM1MDBhMTAsCisgICAgICAgICAgICBWTU9WX1ZGUDMyID0gMHgwZTAwMGExMCwKKyAg
ICAgICAgICAgIFZNT1ZfQVJNMzIgPSAweDBlMTAwYTEwLAogICAgICAgICAgICAgVkNWVF9GNjRf
UzMyID0gMHgwZWI4MGJjMCwKICAgICAgICAgICAgIFZDVlRfUzMyX0Y2NCA9IDB4MGViZDBiNDAs
CisgICAgICAgICAgICBWQ1ZUX1UzMl9GNjQgPSAweDBlYmMwYjQwLAorICAgICAgICAgICAgVkNW
VF9GMzJfRjY0ID0gMHgwZWI3MGJjMCwKKyAgICAgICAgICAgIFZDVlRfRjY0X0YzMiA9IDB4MGVi
NzBhYzAsCiAgICAgICAgICAgICBWTVJTX0FQU1IgPSAweDBlZjFmYTEwLAotI2lmIFdURl9BUk1f
QVJDSF9BVF9MRUFTVCg1KQogICAgICAgICAgICAgQ0xaID0gMHgwMTZmMGYxMCwKICAgICAgICAg
ICAgIEJLUFQgPSAweGUxMjAwMDcwLAogICAgICAgICAgICAgQkxYID0gMHgwMTJmZmYzMCwKLSNl
bmRpZgogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQogICAgICAgICAgICAgTU9WVyA9IDB4
MDMwMDAwMDAsCiAgICAgICAgICAgICBNT1ZUID0gMHgwMzQwMDAwMCwKQEAgLTE3NywxNyArMTc3
LDM3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGVudW0gewogICAgICAgICAgICAgT1Ay
X0lNTSA9ICgxIDw8IDI1KSwKLSAgICAgICAgICAgIE9QMl9JTU1oID0gKDEgPDwgMjIpLAorICAg
ICAgICAgICAgT1AyX0lNTV9IQUxGID0gKDEgPDwgMjIpLAogICAgICAgICAgICAgT1AyX0lOVl9J
TU0gPSAoMSA8PCAyNiksCiAgICAgICAgICAgICBTRVRfQ0MgPSAoMSA8PCAyMCksCiAgICAgICAg
ICAgICBPUDJfT0ZTUkVHID0gKDEgPDwgMjUpLAorICAgICAgICAgICAgLy8gRGF0YSB0cmFuc2Zl
ciBmbGFncy4KICAgICAgICAgICAgIERUX1VQID0gKDEgPDwgMjMpLAotICAgICAgICAgICAgRFRf
QllURSA9ICgxIDw8IDIyKSwKICAgICAgICAgICAgIERUX1dCID0gKDEgPDwgMjEpLAotICAgICAg
ICAgICAgLy8gVGhpcyBmbGFnIGlzIGlubGN1ZGVkIGluIExEUiBhbmQgU1RSCiAgICAgICAgICAg
ICBEVF9QUkUgPSAoMSA8PCAyNCksCi0gICAgICAgICAgICBIRFRfVUggPSAoMSA8PCA1KSwKICAg
ICAgICAgICAgIERUX0xPQUQgPSAoMSA8PCAyMCksCisgICAgICAgICAgICBEVF9CWVRFID0gKDEg
PDwgMjIpLAorICAgICAgICB9OworCisgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZTEgewor
ICAgICAgICAgICAgTG9hZFVpbnQzMiA9IDB4MDUwMDAwMDAgfCBEVF9MT0FELAorICAgICAgICAg
ICAgTG9hZFVpbnQ4ID0gMHgwNTQwMDAwMCB8IERUX0xPQUQsCisgICAgICAgICAgICBTdG9yZVVp
bnQzMiA9IDB4MDUwMDAwMDAsCisgICAgICAgICAgICBTdG9yZVVpbnQ4ID0gMHgwNTQwMDAwMCwK
KyAgICAgICAgfTsKKworICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGUyIHsKKyAgICAgICAg
ICAgIExvYWRVaW50MTYgPSAweDAxMDAwMGIwIHwgRFRfTE9BRCwKKyAgICAgICAgICAgIExvYWRJ
bnQxNiA9IDB4MDEwMDAwZjAgfCBEVF9MT0FELAorICAgICAgICAgICAgTG9hZEludDggPSAweDAx
MDAwMGQwIHwgRFRfTE9BRCwKKyAgICAgICAgICAgIFN0b3JlVWludDE2ID0gMHgwMTAwMDBiMCwK
KyAgICAgICAgfTsKKworICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVGbG9hdCB7CisgICAg
ICAgICAgICBMb2FkRmxvYXQgPSAweDBkMDAwYTAwIHwgRFRfTE9BRCwKKyAgICAgICAgICAgIExv
YWREb3VibGUgPSAweDBkMDAwYjAwIHwgRFRfTE9BRCwKKyAgICAgICAgICAgIFN0b3JlRmxvYXQg
PSAweDBkMDAwYTAwLAorICAgICAgICAgICAgU3RvcmVEb3VibGUgPSAweDBkMDAwYjAwLAogICAg
ICAgICB9OwogCiAgICAgICAgIC8vIE1hc2tzIG9mIEFSTSBpbnN0cnVjdGlvbnMKQEAgLTIxOCw3
ICsyMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRJbnN0KEFSTVdv
cmQgb3AsIGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMikKICAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKCgob3AyICYgfk9QMl9JTU0pIDw9IDB4ZmZmKSB8fCAoKChvcDIgJiB+T1AyX0lN
TWgpIDw9IDB4ZmZmKSkpOworICAgICAgICAgICAgQVNTRVJUKCgob3AyICYgfk9QMl9JTU0pIDw9
IDB4ZmZmKSB8fCAoKChvcDIgJiB+T1AyX0lNTV9IQUxGKSA8PSAweGZmZikpKTsKICAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEludChvcCB8IFJOKHJuKSB8IFJEKHJkKSB8IG9wMik7CiAgICAgICAg
IH0KIApAQCAtNDA3LDYgKzQyNywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBNVUxMIHwgUk4ocmRoaSkg
fCBSRChyZGxvKSB8IFJTKHJuKSB8IFJNKHJtKSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lk
IHZtb3ZfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB7
CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBWTU9WX0Y2NCwgZGQsIDAsIGRtKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQg
dmFkZF9mNjRfcihpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8
QVJNV29yZD4oY2MpIHwgVkFERF9GNjQsIGRkLCBkbiwgZG0pOwpAQCAtNDM3LDEwMCArNDYyLDEy
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0
KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZTUVJUX0Y2NCwgZGQsIDAsIGRtKTsKICAgICAg
ICAgfQogCisgICAgICAgIHZvaWQgdmFic19mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9u
IGNjID0gQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0
KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZBQlNfRjY0LCBkZCwgMCwgZG0pOworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCB2bmVnX2Y2NF9yKGludCBkZCwgaW50IGRtLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qo
c3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk5FR19GNjQsIGRkLCAwLCBkbSk7CisgICAgICAg
IH0KKwogICAgICAgICB2b2lkIGxkcl9pbW0oaW50IHJkLCBBUk1Xb3JkIGltbSwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludFdpdGhDb25z
dGFudEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBEVFIgfCBEVF9MT0FEIHwgRFRfVVAg
fCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tLCB0cnVlKTsKKyAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEludFdpdGhDb25zdGFudEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykg
fCBMb2FkVWludDMyIHwgRFRfVVAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1t
LCB0cnVlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgbGRyX3VuX2ltbShpbnQgcmQsIEFS
TVdvcmQgaW1tLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERU
UiB8IERUX0xPQUQgfCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBpbW0p
OworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHN0YXRpY19jYXN0
PEFSTVdvcmQ+KGNjKSB8IExvYWRVaW50MzIgfCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMp
IHwgUkQocmQpLCBpbW0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJfdShib29sIGlz
TG9hZCwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAg
ICAgICAgdm9pZCBkdHJfdShEYXRhVHJhbnNmZXJUeXBlMSB0eXBlLCBpbnQgcmQsIGludCByYiwg
QVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBl
bWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBEVFIgfCAoaXNMb2FkID8gRFRfTE9B
RCA6IDApIHwgRFRfVVAsIHJkLCByYiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRp
Y19jYXN0PEFSTVdvcmQ+KGNjKSB8IHR5cGUgfCBEVF9VUCwgcmQsIHJiLCBvcDIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBkdHJfdXIoYm9vbCBpc0xvYWQsIGludCByZCwgaW50IHJiLCBp
bnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0cl91cihEYXRhVHJhbnNm
ZXJUeXBlMSB0eXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2Mp
IHwgRFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSB8IERUX1VQIHwgT1AyX09GU1JFRywgcmQs
IHJiLCBybSk7CisgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykg
fCB0eXBlIHwgRFRfVVAgfCBPUDJfT0ZTUkVHLCByZCwgcmIsIHJtKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZHRyX2QoYm9vbCBpc0xvYWQsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9w
MiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyX2QoRGF0YVRyYW5zZmVyVHlw
ZTEgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2Mp
IHwgRFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSwgcmQsIHJiLCBvcDIpOworICAgICAgICAg
ICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHlwZSwgcmQsIHJiLCBvcDIp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJfZHIoYm9vbCBpc0xvYWQsIGludCByZCwg
aW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0cl9kcihE
YXRhVHJhbnNmZXJUeXBlMSB0eXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJN
V29yZD4oY2MpIHwgRFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSB8IE9QMl9PRlNSRUcsIHJk
LCByYiwgcm0pOworICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2Mp
IHwgdHlwZSB8IE9QMl9PRlNSRUcsIHJkLCByYiwgcm0pOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBsZHJoX3IoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisg
ICAgICAgIHZvaWQgZHRyaF91KERhdGFUcmFuc2ZlclR5cGUyIHR5cGUsIGludCByZCwgaW50IHJi
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IExEUkggfCBIRFRfVUggfCBEVF9V
UCB8IERUX1BSRSwgcmQsIHJuLCBybSk7CisgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2Fz
dDxBUk1Xb3JkPihjYykgfCB0eXBlIHwgRFRfVVAsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgbGRyaF9kKGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyaF91cihEYXRhVHJhbnNmZXJUeXBlMiB0eXBl
LCBpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewot
ICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTERSSCB8IEhE
VF9VSCB8IERUX1BSRSwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGlj
X2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHlwZSB8IERUX1VQLCByZCwgcm4sIHJtKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgbGRyaF91KGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyaF9kKERhdGFUcmFuc2ZlclR5cGUyIHR5
cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IExE
UkggfCBIRFRfVUggfCBEVF9VUCB8IERUX1BSRSwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAg
ZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHlwZSwgcmQsIHJiLCBvcDIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzdHJoX3IoaW50IHJuLCBpbnQgcm0sIGludCByZCwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyaF9kcihEYXRhVHJhbnNmZXJUeXBl
MiB0eXBlLCBpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgU1RS
SCB8IEhEVF9VSCB8IERUX1VQIHwgRFRfUFJFLCByZCwgcm4sIHJtKTsKKyAgICAgICAgICAgIGVt
aXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHR5cGUsIHJkLCBybiwgcm0pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBmZHRyX3UoYm9vbCBpc0xvYWQsIGludCByZCwgaW50IHJi
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZmR0cl91KERh
dGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQob3AyIDw9IDB4
ZmYpOwotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgRkRU
UiB8IERUX1VQIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSwgcmQsIHJiLCBvcDIpOworICAgICAg
ICAgICAgQVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1KTsKKyAgICAgICAgICAgIC8qIE9u
bHkgZDAtZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRlZC4gKi8KKyAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBEVF9VUCB8
IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIpIHwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgZmR0cl9kKGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGZkdHJfZChEYXRhVHJhbnNmZXJUeXBlRmxv
YXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmKTsKLSAgICAgICAgICAg
IGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IEZEVFIgfCAoaXNMb2FkID8gRFRf
TE9BRCA6IDApLCByZCwgcmIsIG9wMik7CisgICAgICAgICAgICBBU1NFUlQob3AyIDw9IDB4ZmYg
JiYgcmQgPD0gMTUpOworICAgICAgICAgICAgLyogT25seSBkMC1kMTUgYW5kIHMwLCBzMiwgczQg
Li4uIHMzMCBhcmUgc3VwcG9ydGVkLiAqLworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0
YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIpIHwgb3Ay
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgcHVzaF9yKGludCByZWcsIENvbmRpdGlvbiBj
YyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoQVJNV29yZChyZWcpIDw9IDB4
Zik7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoY2MgfCBEVFIgfCBEVF9XQiB8IFJOKEFS
TVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CisgICAgICAgICAgICBtX2J1ZmZlci5w
dXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgU3RvcmVVaW50MzIgfCBEVF9XQiB8IFJO
KEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CiAgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIHBvcF9yKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoQVJNV29yZChyZWcpIDw9IDB4Zik7Ci0gICAgICAgICAgICBtX2J1ZmZl
ci5wdXRJbnQoY2MgfCAoRFRSIF4gRFRfUFJFKSB8IERUX0xPQUQgfCBEVF9VUCB8IFJOKEFSTVJl
Z2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJ
bnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgKExvYWRVaW50MzIgXiBEVF9QUkUpIHwgRFRf
VVAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQpOwogICAgICAgICB9CiAK
ICAgICAgICAgaW5saW5lIHZvaWQgcG9rZV9yKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBkdHJfZChmYWxzZSwgQVJNUmVnaXN0ZXJzOjpzcCwgMCwg
cmVnLCBjYyk7CisgICAgICAgICAgICBkdHJfZChTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpz
cCwgMCwgcmVnLCBjYyk7CiAgICAgICAgIH0KIAogICAgICAgICBpbmxpbmUgdm9pZCBwZWVrX3Io
aW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGR0cl91
KHRydWUsIHJlZywgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgY2MpOworICAgICAgICAgICAgZHRyX3Uo
TG9hZFVpbnQzMiwgcmVnLCBBUk1SZWdpc3RlcnM6OnNwLCAwLCBjYyk7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIHZtb3ZfdmZwNjRfcihpbnQgc20sIGludCBydCwgaW50IHJ0MiwgQ29uZGl0
aW9uIGNjID0gQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzbSA8PSAxNSk7Cisg
ICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1P
Vl9WRlA2NCB8IFJOKHJ0MikgfCBSRChydCkgfCBzbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHZtb3ZfdmZwX3IoaW50IHNuLCBpbnQgcnQsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB2b2lkIHZtb3ZfYXJtNjRfcihpbnQgcnQsIGludCBydDIsIGludCBzbSwgQ29uZGl0aW9uIGNj
ID0gQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzbSA8PSAxNSk7CisgICAgICAg
ICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1PVl9BUk02
NCB8IFJOKHJ0MikgfCBSRChydCkgfCBzbSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHZt
b3ZfdmZwMzJfcihpbnQgc24sIGludCBydCwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChydCA8PSAxNSk7Ci0gICAgICAgICAgICBlbWl0U2luZ2xlUHJl
Y2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX1ZGUCwgcnQgPDwgMSwg
c24sIDApOworICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8
QVJNV29yZD4oY2MpIHwgVk1PVl9WRlAzMiwgcnQgPDwgMSwgc24sIDApOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCB2bW92X2FybV9yKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2MgPSBB
TCkKKyAgICAgICAgdm9pZCB2bW92X2FybTMyX3IoaW50IHJ0LCBpbnQgc24sIENvbmRpdGlvbiBj
YyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAgICAg
ICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwg
Vk1PVl9BUk0sIHJ0IDw8IDEsIHNuLCAwKTsKKyAgICAgICAgICAgIGVtaXRTaW5nbGVQcmVjaXNp
b25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZNT1ZfQVJNMzIsIHJ0IDw8IDEsIHNu
LCAwKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdmN2dF9mNjRfczMyX3IoaW50IGRkLCBp
bnQgc20sIENvbmRpdGlvbiBjYyA9IEFMKQpAQCAtNTQ1LDI2ICs1OTQsMzcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxB
Uk1Xb3JkPihjYykgfCBWQ1ZUX1MzMl9GNjQsIChzZCA+PiAxKSwgMCwgZG0pOwogICAgICAgICB9
CiAKKyAgICAgICAgdm9pZCB2Y3Z0X3UzMl9mNjRfcihpbnQgc2QsIGludCBkbSwgQ29uZGl0aW9u
IGNjID0gQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghKHNkICYgMHgxKSk7IC8v
IHNkIG11c3QgYmUgZGl2aXNpYmxlIGJ5IDIKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNp
b25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZDVlRfVTMyX0Y2NCwgKHNkID4+IDEp
LCAwLCBkbSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHZjdnRfZjY0X2YzMl9yKGludCBk
ZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNp
b25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZDVlRfRjY0X0YzMiwgZGQsIDAsIHNt
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdmN2dF9mMzJfZjY0X3IoaW50IGRkLCBpbnQg
c20sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZGQg
PD0gMTUgJiYgc20gPD0gMTUpOworICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qo
c3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkNWVF9GMzJfRjY0LCBkZCwgMCwgc20pOworICAg
ICAgICB9CisKICAgICAgICAgdm9pZCB2bXJzX2Fwc3IoQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihj
YykgfCBWTVJTX0FQU1IpOwogICAgICAgICB9CiAKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1Qo
NSkKICAgICAgICAgdm9pZCBjbHpfcihpbnQgcmQsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwp
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1X
b3JkPihjYykgfCBDTFogfCBSRChyZCkgfCBSTShybSkpOwogICAgICAgICB9Ci0jZW5kaWYKIAog
ICAgICAgICB2b2lkIGJrcHQoQVJNV29yZCB2YWx1ZSkKICAgICAgICAgewotI2lmIFdURl9BUk1f
QVJDSF9BVF9MRUFTVCg1KQogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KEJLUFQgfCAoKHZh
bHVlICYgMHhmZjApIDw8IDQpIHwgKHZhbHVlICYgMHhmKSk7Ci0jZWxzZQotICAgICAgICAgICAg
Ly8gQ2Fubm90IGFjY2VzcyB0byBaZXJvIG1lbW9yeSBhZGRyZXNzCi0gICAgICAgICAgICBkdHJf
ZHIodHJ1ZSwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJz
OjpTMCk7Ci0jZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgbm9wKCkKQEAgLTU3NCwy
MyArNjM0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYngoaW50IHJtLCBD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1
KSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNFRfXykKICAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRp
Y19jYXN0PEFSTVdvcmQ+KGNjKSB8IEJYLCAwLCAwLCBSTShybSkpOwotI2Vsc2UKLSAgICAgICAg
ICAgIG1vdl9yKEFSTVJlZ2lzdGVyczo6cGMsIFJNKHJtKSwgY2MpOwotI2VuZGlmCiAgICAgICAg
IH0KIAogICAgICAgICBBc3NlbWJsZXJMYWJlbCBibHgoaW50IHJtLCBDb25kaXRpb24gY2MgPSBB
TCkKICAgICAgICAgewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQogICAgICAgICAgICAg
ZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgQkxYLCAwLCAwLCBSTShybSkpOwot
I2Vsc2UKLSAgICAgICAgICAgIEFTU0VSVChybSAhPSAxNCk7Ci0gICAgICAgICAgICBlbnN1cmVT
cGFjZSgyICogc2l6ZW9mKEFSTVdvcmQpLCAwKTsKLSAgICAgICAgICAgIG1vdl9yKEFSTVJlZ2lz
dGVyczo6bHIsIEFSTVJlZ2lzdGVyczo6cGMsIGNjKTsKLSAgICAgICAgICAgIGJ4KHJtLCBjYyk7
Ci0jZW5kaWYKICAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwogICAgICAgICB9
CiAKQEAgLTY1OSw2ICs3MDgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICAgICAgfQogCisgICAgICAgIEFzc2VtYmxlckxhYmVs
IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBsYWJlbCgpOworICAgICAgICB9CisKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JX
YXRjaHBvaW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxhYmVsKCk7CisgICAg
ICAgIH0KKwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQogICAg
ICAgICB7CiAgICAgICAgICAgICB3aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQp
KQpAQCAtNjg4LDE0ICs3NDcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGlj
IEFSTVdvcmQqIGdldExkckltbUFkZHJlc3MoQVJNV29yZCogaW5zbikKICAgICAgICAgewotI2lm
IFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQogICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbGwK
ICAgICAgICAgICAgIGlmICgoKmluc24gJiAweDBmN2YwMDAwKSAhPSAweDA1MWYwMDAwKSB7CiAg
ICAgICAgICAgICAgICAgLy8gTXVzdCBiZSBCTFgKICAgICAgICAgICAgICAgICBBU1NFUlQoKCpp
bnNuICYgMHgwMTJmZmYzMCkgPT0gMHgwMTJmZmYzMCk7CiAgICAgICAgICAgICAgICAgaW5zbi0t
OwogICAgICAgICAgICAgfQotI2VuZGlmCisKICAgICAgICAgICAgIC8vIE11c3QgYmUgYW4gbGRy
IC4uLiwgW3BjICsvLSBpbW1dCiAgICAgICAgICAgICBBU1NFUlQoKCppbnNuICYgMHgwZjdmMDAw
MCkgPT0gMHgwNTFmMDAwMCk7CiAKQEAgLTgyMCwxMyArODc4LDIwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIC8vIEhhbmRsZSBpbW1lZGlhdGVzCiAKKyAgICAgICAgc3RhdGljIEFSTVdv
cmQgZ2V0T3AyKEFSTVdvcmQgaW1tKTsKKworICAgICAgICAvLyBGYXN0IGNhc2UgaWYgaW1tIGlz
IGtub3duIHRvIGJlIGJldHdlZW4gMCBhbmQgMHhmZgogICAgICAgICBzdGF0aWMgQVJNV29yZCBn
ZXRPcDJCeXRlKEFSTVdvcmQgaW1tKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaW1t
IDw9IDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJuIE9QMl9JTU1oIHwgKGltbSAmIDB4MGYpIHwg
KChpbW0gJiAweGYwKSA8PCA0KSA7CisgICAgICAgICAgICByZXR1cm4gT1AyX0lNTSB8IGltbTsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1Xb3JkIGltbSk7
CisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMkhhbGYoQVJNV29yZCBpbW0pCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChpbW0gPD0gMHhmZik7CisgICAgICAgICAgICByZXR1cm4g
T1AyX0lNTV9IQUxGIHwgKGltbSAmIDB4MGYpIHwgKChpbW0gJiAweGYwKSA8PCA0KSA7CisgICAg
ICAgIH0KIAogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQogICAgICAgICBzdGF0aWMgQVJN
V29yZCBnZXRJbW0xNk9wMihBUk1Xb3JkIGltbSkKQEAgLTg0MCwyMCArOTA1LDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIG1vdmVJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0KTsK
ICAgICAgICAgQVJNV29yZCBlbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCk7
CiAKLSAgICAgICAgQVJNV29yZCBnZXRPZmZzZXRGb3JIYWxmd29yZERhdGFUcmFuc2ZlcihBUk1X
b3JkIGltbSwgaW50IHRtcFJlZykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRW5jb2RlIGlt
bWVkaWF0ZSBkYXRhIGluIHRoZSBpbnN0cnVjdGlvbiBpZiBpdCBpcyBwb3NzaWJsZQotICAgICAg
ICAgICAgaWYgKGltbSA8PSAweGZmKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRPcDJCeXRl
KGltbSk7Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHN0b3JlIHRoZSBkYXRhIGluIGEgdGVt
cG9yYXJ5IHJlZ2lzdGVyCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlQ29tcGxleEltbShpbW0s
IHRtcFJlZyk7Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBNZW1vcnkgbG9hZC9zdG9yZSBoZWxw
ZXJzCiAKLSAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIzMihib29sIGlzTG9hZCwgUmVnaXN0ZXJJ
RCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQsIGJvb2wgYnl0ZXMgPSBm
YWxzZSk7Ci0gICAgICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXIzMihib29sIGlzTG9hZCwgUmVn
aXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlLCBpbnQzMl90IG9mZnNldCwgYm9vbCBieXRlcyA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBk
b3VibGVUcmFuc2Zlcihib29sIGlzTG9hZCwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJ
RCBiYXNlLCBpbnQzMl90IG9mZnNldCk7CisgICAgICAgIHZvaWQgZGF0YVRyYW5zZmVyMzIoRGF0
YVRyYW5zZmVyVHlwZTEgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwg
aW50MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGJhc2VJbmRleFRyYW5zZmVyMzIoRGF0YVRy
YW5zZmVyVHlwZTEgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCk7CisgICAgICAgIHZvaWQg
ZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZTIgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3Qs
IFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGJhc2VJbmRl
eFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZTIgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNl
dCk7CisgICAgICAgIHZvaWQgZGF0YVRyYW5zZmVyRmxvYXQoRGF0YVRyYW5zZmVyVHlwZUZsb2F0
IHR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZz
ZXQpOworICAgICAgICB2b2lkIGJhc2VJbmRleFRyYW5zZmVyRmxvYXQoRGF0YVRyYW5zZmVyVHlw
ZUZsb2F0IHR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCk7CiAKICAgICAgICAgLy8gQ29u
c3RhbnQgcG9vbCBobmFkbGVycwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCmluZGV4IDJkYjVkZjEuLjBhZGYxYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uY3BwCkBAIC03NywxOCArNzcsMTggQEAgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6bG9h
ZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXIKIAog
ICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAwICYmIGFkZHJlc3Mub2Zmc2V0ICsgMHgyIDw9IDB4
ZmYpIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVz
cy5iYXNlLCBvcDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJoX3UoZGVzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmxkcmhfdShBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMw
LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoYWRkcmVzcy5vZmZzZXQgKyAweDIpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyaF91KHRydWUsIFRZUEVfVUgsIGRlc3QsIEFSTVJlZ2lzdGVyczo6
UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCkpOworICAgICAgICBt
X2Fzc2VtYmxlci5kdHJoX3UodHJ1ZSwgVFlQRV9VSCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0ICsgMHgy
KSk7CiAgICAgfSBlbHNlIGlmIChhZGRyZXNzLm9mZnNldCA8IDAgJiYgYWRkcmVzcy5vZmZzZXQg
Pj0gLTB4ZmYpIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwg
YWRkcmVzcy5iYXNlLCBvcDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJoX2QoZGVzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKC1hZGRyZXNzLm9mZnNldCkp
OwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJoX2QoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKC1hZGRyZXNzLm9mZnNldCAtIDB4Mikp
OworICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX2QodHJ1ZSwgVFlQRV9VSCwgZGVzdCwgQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKC1hZGRyZXNzLm9mZnNldCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX2QodHJ1ZSwgVFlQRV9VSCwgQVJNUmVnaXN0ZXJzOjpT
MCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKC1hZGRyZXNzLm9m
ZnNldCAtIDB4MikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9p
bW0oQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVzcy5vZmZzZXQpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJoX3IoZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMw
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF9yKHRydWUsIFRZUEVfVUgsIGRlc3QsIGFkZHJl
c3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFS
TVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6T1AyX0lNTSB8
IDB4Mik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcmhfcihBUk1SZWdpc3RlcnM6OlMwLCBhZGRy
ZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX3Io
dHJ1ZSwgVFlQRV9VSCwgQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3Rl
cnM6OlMwKTsKICAgICB9CiAgICAgbV9hc3NlbWJsZXIub3JyX3IoZGVzdCwgZGVzdCwgbV9hc3Nl
bWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXggOGVhMjllMy4u
NDMzYmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uaApAQCAtOTAsNiArOTAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRzX3IoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMy
KFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYWRkc19yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAg
ICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAg
ICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKQEAgLTExOCw2ICsxMjMs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwgZGVzdCwgc3Jj
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19yKGRl
c3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFSTVdvcmQgdyA9IG1fYXNzZW1ibGVy
LmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCwgdHJ1ZSk7CkBAIC0xMzYsMTMg
KzE0NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwg
c3JjLCB3KTsKICAgICB9CiAKLSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRfYW1v
dW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0
QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1B
c3NlbWJsZXI6OmdldE9wMigweDFmKTsKLSAgICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVy
OjpJTlZBTElEX0lNTSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6
UzAsIHNoaWZ0X2Ftb3VudCwgdyk7CisgICAgICAgIGxzaGlmdDMyKGRlc3QsIHNoaWZ0QW1vdW50
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBUk1X
b3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3KTsKIAotICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIubHNsX3IoZGVzdCwgQVJNUmVnaXN0
ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIu
bHNsX3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNTUsMTMgKzE2OSwyNSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5s
c2woc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKICAgICB9CiAKLSAgICB2b2lkIG11bDMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBtdWwzMihSZWdpc3RlcklE
IG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGlm
IChzcmMgPT0gZGVzdCkgewotICAgICAgICAgICAgbW92ZShzcmMsIEFSTVJlZ2lzdGVyczo6UzAp
OwotICAgICAgICAgICAgc3JjID0gQVJNUmVnaXN0ZXJzOjpTMDsKKyAgICAgICAgaWYgKG9wMiA9
PSBkZXN0KSB7CisgICAgICAgICAgICBpZiAob3AxID09IGRlc3QpIHsKKyAgICAgICAgICAgICAg
ICBtb3ZlKG9wMiwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgICAgICAgICAgb3AyID0gQVJN
UmVnaXN0ZXJzOjpTMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8g
U3dhcCB0aGUgb3BlcmFuZHMuCisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBvcDE7
CisgICAgICAgICAgICAgICAgb3AxID0gb3AyOworICAgICAgICAgICAgICAgIG9wMiA9IHRtcDsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5tdWxzX3IoZGVz
dCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsc19yKGRlc3QsIG9wMSwgb3Ay
KTsKKyAgICB9CisKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtdWwzMihzcmMsIGRlc3QsIGRlc3QpOwogICAgIH0KIAogICAg
IHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKQEAgLTE3Miw3ICsxOTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5lZzMyKFJlZ2lz
dGVySUQgc3JjRGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJzYnNfcihzcmNEZXN0
LCBzcmNEZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnJzYnNfcihzcmNEZXN0LCBzcmNEZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwog
ICAgIH0KIAogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTk1LDE1ICsyMjEsMTkgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcnJzX3Io
ZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBz
aGlmdF9hbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVy
SUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFSTVdvcmQg
dyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4MWYpOwotICAgICAgICBBU1NFUlQodyAhPSBBUk1B
c3NlbWJsZXI6OklOVkFMSURfSU1NKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVn
aXN0ZXJzOjpTMCwgc2hpZnRfYW1vdW50LCB3KTsKKyAgICAgICAgcnNoaWZ0MzIoZGVzdCwgc2hp
ZnRBbW91bnQsIGRlc3QpOworICAgIH0KIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVz
dCwgbV9hc3NlbWJsZXIuYXNyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgIHZvaWQg
cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgweDFmKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwg
c2hpZnRBbW91bnQsIHcpOworCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fz
c2VtYmxlci5hc3JfcihzcmMsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9Ci0gICAgCisKICAg
ICB2b2lkIHJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIHJzaGlmdDMyKGRlc3QsIGltbSwgZGVzdCk7CkBAIC0yMTMsMTYgKzI0MywyMCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3Nl
bWJsZXIuYXNyKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7CiAgICAgfQotICAgIAotICAgIHZv
aWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisK
KyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDFm
KTsKLSAgICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJTlZBTElEX0lNTSk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0X2Ftb3VudCwgdyk7
Ci0gICAgICAgIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIu
bHNyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICB1cnNoaWZ0MzIoZGVzdCwg
c2hpZnRBbW91bnQsIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgdXJzaGlmdDMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50
LCB3KTsKKworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIubHNy
X3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgfQorCiAgICAgdm9pZCB1cnNoaWZ0MzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzcihkZXN0LCBpbW0ubV92YWx1ZSAmIDB4
MWYpKTsKQEAgLTI2Niw2ICszMDAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5l
b3JzX3IoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVy
SUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuZW9yc19yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHhv
cjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlm
IChpbW0ubV92YWx1ZSA9PSAtMSkKQEAgLTI5NSwyMiArMzM0LDQyIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbG9hZDgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKHRydWUsIGRlc3QsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQsIHRydWUpOworICAgICAgICBtX2Fzc2VtYmxlci5kYXRh
VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9pZCBsb2FkOChCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4
VHJhbnNmZXIzMih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0LCB0cnVlKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50
OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFk
ZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkOFNp
Z25lZChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4LCBk
ZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVz
cy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQxNihJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZGF0YVRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQxNihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3Qs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNj
YWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbG9hZDE2U2lnbmVkKEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6TG9hZEludDE2LCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2Fs
ZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQzMihJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuZGF0YVRyYW5zZmVyMzIodHJ1ZSwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNl
dCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6TG9h
ZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAg
ICAgdm9pZCBsb2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIodHJ1ZSwgZGVzdCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUp
LCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVy
MzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsK
ICAgICB9CiAKICNpZiBDUFUoQVJNVjVfT1JfTE9XRVIpCkBAIC0zMzEsNyArMzkwLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIDApOwotICAgICAgICBt
X2Fzc2VtYmxlci5kdHJfdXIodHJ1ZSwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6
OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQz
MiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICAgICAgcmV0dXJu
IGRhdGFMYWJlbDsKICAgICB9CiAgICAgCkBAIC0zNDIsMzYgKzQwMSwzMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogCi0gICAgdm9pZCBsb2FkMTYoQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBEYXRhTGFiZWwzMiBzdG9yZTMyV2l0
aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYWRkcmVzcy5i
YXNlLCBtX2Fzc2VtYmxlci5sc2woYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSkpOwotICAg
ICAgICBsb2FkMTYoQWRkcmVzcyhBUk1SZWdpc3RlcnM6OlMxLCBhZGRyZXNzLm9mZnNldCksIGRl
c3QpOworICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmR0cl91cihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3MuYmFzZSwg
QVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQotICAg
IAotICAgIHZvaWQgbG9hZDE2KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCisKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3Mp
CiAgICAgewotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0gMCkKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcmhfdShkZXN0LCBhZGRyZXNzLmJhc2UsIG1fYXNzZW1ibGVyLmdldE9mZnNl
dEZvckhhbGZ3b3JkRGF0YVRyYW5zZmVyKGFkZHJlc3Mub2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMw
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmhfZChkZXN0LCBh
ZGRyZXNzLmJhc2UsIG1fYXNzZW1ibGVyLmdldE9mZnNldEZvckhhbGZ3b3JkRGF0YVRyYW5zZmVy
KC1hZGRyZXNzLm9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50OCwgc3JjLCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSks
IGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKLSAgICBEYXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFk
ZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHZv
aWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotICAg
ICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxk
cl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91
cihmYWxzZSwgc3JjLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBy
ZXR1cm4gZGF0YUxhYmVsOworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2
KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CiAg
ICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKGZhbHNl
LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICBtX2Fzc2VtYmxl
ci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5i
YXNlSW5kZXhUcmFuc2ZlcjMyKGZhbHNlLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAg
ICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVV
aW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9y
ZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQpAQCAtMzgwLDE3
ICs0MzUsMjMgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMyKEFSTVJlZ2lzdGVyczo6UzEsIGFk
ZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBBUk1SZWdpc3RlcnM6OlMx
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6
OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAg
ICB9CisKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJl
aW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOwotICAgICAgICBtX2Fzc2VtYmxlci5k
dHJfdShmYWxzZSwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBBUk1SZWdpc3RlcnM6OlMw
LCAwKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCog
YWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0
ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmVJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5kdHJfdShmYWxzZSwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJz
OjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6U3RvcmVV
aW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAog
ICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKQEAgLTU2Niw2ICs2MjcsMTIgQEAgcHVibGlj
OgogICAgICAgICBsb2FkMzIoYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgfQogCisg
ICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAg
ICAgbG9hZDMyKEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMCwgMCksIEFSTVJlZ2lzdGVyczo6cGMp
OworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOwpAQCAtNTczLDYgKzY0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKICAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0
KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25k
KSkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CkBAIC01ODcsMjggKzY2MSw0NyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsK
ICAgICB9CiAKLSAgICB2b2lkIG11bGwzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgYWRkMzIoaW1tLCBk
ZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihj
b25kKSkpOworICAgIH0KKworICAgIHZvaWQgbXVsbDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3Rl
cklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHNyYzEgPT0gZGVz
dCkgewotICAgICAgICAgICAgbW92ZShzcmMxLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAg
ICAgIHNyYzEgPSBBUk1SZWdpc3RlcnM6OlMwOworICAgICAgICBpZiAob3AyID09IGRlc3QpIHsK
KyAgICAgICAgICAgIGlmIChvcDEgPT0gZGVzdCkgeworICAgICAgICAgICAgICAgIG1vdmUob3Ay
LCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgICAgICBvcDIgPSBBUk1SZWdpc3RlcnM6
OlMwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTd2FwIHRoZSBv
cGVyYW5kcy4KKyAgICAgICAgICAgICAgICBSZWdpc3RlcklEIHRtcCA9IG9wMTsKKyAgICAgICAg
ICAgICAgICBvcDEgPSBvcDI7CisgICAgICAgICAgICAgICAgb3AyID0gdG1wOworICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11bGxfcihBUk1SZWdpc3RlcnM6
OlMxLCBkZXN0LCBzcmMyLCBzcmMxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsbF9yKEFSTVJl
Z2lzdGVyczo6UzEsIGRlc3QsIG9wMSwgb3AyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3Io
QVJNUmVnaXN0ZXJzOjpTMSwgbV9hc3NlbWJsZXIuYXNyKGRlc3QsIDMxKSk7CiAgICAgfQogCi0g
ICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWdu
ZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgaWYg
KGNvbmQgPT0gT3ZlcmZsb3cpIHsKLSAgICAgICAgICAgIG11bGwzMihzcmMsIGRlc3QsIGRlc3Qp
OworICAgICAgICAgICAgbXVsbDMyKHNyYzEsIHNyYzIsIGRlc3QpOwogICAgICAgICAgICAgY29u
ZCA9IE5vblplcm87CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgbXVsMzIo
c3JjLCBkZXN0KTsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOwogICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CiAgICAg
fQogCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwz
Mihjb25kLCBzcmMsIGRlc3QsIGRlc3QpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoTXVsMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOwpAQCAtNjcyLDcgKzc2NSw2IEBAIHB1YmxpYzoKICAgICBDYWxsIG5lYXJDYWxsKCkKICAg
ICB7CiAjaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCi0gICAgICAgIGVuc3VyZVNwYWNlKDIg
KiBzaXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmxvYWRCcmFuY2hUYXJnZXQoQVJNUmVnaXN0ZXJzOjpTMSwgQVJNQXNzZW1ibGVyOjpBTCwgdHJ1
ZSk7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChBUk1SZWdpc3RlcnM6OlMx
KSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKICNlbHNlCkBAIC02OTksMTUgKzc5MSwxNSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcF9yKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0aW9uKGNvbmQp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwogICAgIH0KIAogICAgIHZvaWQgY29t
cGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmNtcF9yKGxlZnQsIG1fYXNzZW1ibGVyLmdldEltbShyaWdodC5tX3ZhbHVlLCBBUk1SZWdpc3Rl
cnM6OlMwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6
Z2V0T3AyKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDIoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9u
KGNvbmQpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTcyMiw4ICs4MTQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBf
cigwLCByZWcpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Rfcihy
ZWcsIG1fYXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkp
OwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigx
KSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwg
QVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3Io
ZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwog
ICAgIH0KIAogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCkBAIC03NDYsMjUgKzgz
OCwyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0o
QVJNUmVnaXN0ZXJzOjpTMSwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRy
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KHRydWUsIEFSTVJlZ2lzdGVyczo6UzEsIEFS
TVJlZ2lzdGVyczo6UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOwog
ICAgICAgICBhZGQzMihpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4o
YWRkcmVzcy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShmYWxzZSwgQVJNUmVn
aXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0
cl91KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lz
dGVyczo6UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwg
QWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJf
dW5faW1tKEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVz
cy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdSh0cnVlLCBBUk1SZWdpc3RlcnM6
OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJN
QXNzZW1ibGVyOjpMb2FkVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMx
LCAwKTsKICAgICAgICAgc3ViMzIoaW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgbV9h
c3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0PEFS
TVdvcmQ+KGFkZHJlc3MubV9wdHIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoZmFsc2Us
IEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2Vt
Ymxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBB
Uk1SZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lk
KiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRk
cmVzcykpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdSh0cnVlLCBkZXN0LCBBUk1SZWdpc3Rl
cnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2Fk
VWludDMyLCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICBKdW1wIGJy
YW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJl
Z2lzdGVySUQgcmlnaHQpCkBAIC04NjEsMjAgKzk1Myw1MiBAQCBwdWJsaWM6CiAgICAgfQogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFS
TUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZG91YmxlVHJhbnNmZXIodHJ1
ZSwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmRhdGFUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkRG91Ymxl
KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRG91Ymxl
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRk
cmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWREb3Vi
bGUoY29uc3Qgdm9pZCogYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIChBUk1Xb3JkKWFkZHJl
c3MpOwotICAgICAgICBtX2Fzc2VtYmxlci5mZHRyX3UodHJ1ZSwgZGVzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgMCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8QVJN
V29yZD4oYWRkcmVzcykpLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
ZmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNm
ZXJGbG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRmxvYXQsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNl
dCk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRvdWJsZVRy
YW5zZmVyKGZhbHNlLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAg
ICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRG91Ymxl
LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
c3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6
U3RvcmVEb3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2Fz
dDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihh
ZGRyZXNzKSksIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJh
bnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMsIEFSTVJlZ2lzdGVyczo6
UzAsIDApOworICAgIH0KKworICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfZjY0X3IoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2
b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTg4
MiwxNyArMTAwNiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0X3Io
ZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVy
SUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAg
IHZvaWQgYWRkRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGxvYWREb3VibGUoc3JjLCBBUk1SZWdpc3RlcnM6OlNEMCk7CiAgICAgICAgIGFkZERv
dWJsZShBUk1SZWdpc3RlcnM6OlNEMCwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhZGREb3Vi
bGUoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbG9hZERvdWJsZShhZGRyZXNzLm1fcHRyLCBBUk1SZWdpc3RlcnM6OlNEMCk7CisgICAg
ICAgIGFkZERvdWJsZShBUk1SZWdpc3RlcnM6OlNEMCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci52ZGl2X2Y2NF9yKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQog
CisgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwg
RlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52ZGl2X2Y2NF9y
KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgLy8gVW50ZXN0ZWQKQEAgLTkwNSw2ICsxMDQ1LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIudnN1Yl9mNjRfcihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQg
c3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9mNjRfcihkZXN0LCBvcDEs
IG9wMik7CisgICAgfQorCiAgICAgdm9pZCBzdWJEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZERvdWJsZShzcmMsIEFSTVJlZ2lzdGVyczo6
U0QwKTsKQEAgLTkyMiwxOSArMTA2NywyOSBAQCBwdWJsaWM6CiAgICAgICAgIG11bERvdWJsZShB
Uk1SZWdpc3RlcnM6OlNEMCwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBtdWxEb3VibGUoRlBS
ZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci52bXVsX2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9
CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52c3FydF9mNjRfcihkZXN0LCBzcmMpOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJ
RCkKKyAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBtX2Fzc2Vt
Ymxlci52YWJzX2Y2NF9yKGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBuZWdhdGVEb3Vi
bGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci52bmVnX2Y2NF9yKGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBjb252
ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci52bW92X3ZmcF9yKGRlc3QgPDwgMSwgc3JjKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudm1vdl92ZnAzMl9yKGRlc3QgPDwgMSwgc3JjKTsKICAgICAgICAgbV9h
c3NlbWJsZXIudmN2dF9mNjRfczMyX3IoZGVzdCwgZGVzdCA8PCAxKTsKICAgICB9CiAKQEAgLTk1
MSwxMCArMTEwNiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAv
LyBVbnRlc3RlZAogICAgICAgICAvLyBmbGRzIGRvZXMgbm90IHdvcnRoIHRoZSBlZmZvcnQgaGVy
ZQogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzEsIChBUk1X
b3JkKXNyYy5tX3B0cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KHRydWUsIEFSTVJlZ2lz
dGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJf
dShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVy
czo6UzEsIDApOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMx
LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91YmxlKEZQUmVnaXN0
ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52
Y3Z0X2Y2NF9mMzJfcihkc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0RG91Ymxl
VG9GbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudmN2dF9mMzJfZjY0X3IoZHN0LCBzcmMpOworICAgIH0KKwogICAgIEp1
bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwg
RlBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9mNjRf
cihsZWZ0LCByaWdodCk7CkBAIC05NjgsMTIgKzExMzMsNDIgQEAgcHVibGljOgogICAgIC8vIElm
IHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5j
aC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2ggZm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJl
c2VudGFibGUgaW4gMzIgYml0cwogICAgIC8vIChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwg
SU5UX01JTikuCi0gICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsg
QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAg
ICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVu
Y2F0ZUZhaWxlZCkKICAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShzcmMpOwotICAgICAgICBV
TlVTRURfUEFSQU0oZGVzdCk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4ganVtcCgpOworICAgICAgICB0cnVuY2F0ZURvdWJsZVRvSW50MzIoc3JjLCBkZXN0
KTsKKworICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5iaWNfcihB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoMSkpOworCisgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4ODAw
MDAwMDApOworICAgICAgICBBU1NFUlQodyAhPSBBUk1Bc3NlbWJsZXI6OklOVkFMSURfSU1NKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJzOjpTMCwgdyk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNh
dGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVRIDogQVJNQXNzZW1ibGVyOjpORSkpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNo
SWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIHRydW5jYXRlRG91YmxlVG9VaW50MzIo
c3JjLCBkZXN0KTsKKworICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMw
LCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5iaWNfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6
OmdldE9wMkJ5dGUoMSkpOworCisgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVy
czo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmptcChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBB
Uk1Bc3NlbWJsZXI6OkVRIDogQVJNQXNzZW1ibGVyOjpORSkpOworICAgIH0KKworICAgIC8vIFJl
c3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUgb2YgdGhlIGludGVnZXIg
cmFuZ2UuCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0
X3IoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1v
dl9hcm0zMl9yKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOworICAgIH0KKworICAgIHZv
aWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3UzMl9mNjRfcihBUk1SZWdpc3Rl
cnM6OlNEMCA8PCAxLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyX3IoZGVz
dCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAnc3Jj
JyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2VzIHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAtOTgz
LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQz
MihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2Fz
ZXMsIEZQUmVnaXN0ZXJJRCBmcFRlbXApCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0
X3MzMl9mNjRfcihBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci52bW92X2FybV9yKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOworICAgICAgICBt
X2Fzc2VtYmxlci52bW92X2FybTMyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CiAK
ICAgICAgICAgLy8gQ29udmVydCB0aGUgaW50ZWdlciByZXN1bHQgYmFjayB0byBmbG9hdCAmIGNv
bXBhcmUgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIC0gaWYgbm90IGVxdWFsIG9yIHVub3JkZXJlZCAo
TmFOKSB0aGVuIGp1bXAuCiAgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZjY0X3MzMl9yKEFSTVJl
Z2lzdGVyczo6U0QwLCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKQEAgLTk5NSwxOCArMTE5MCwy
NCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklE
IHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgwKSk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFSTVJlZ2lzdGVyczo6UzAs
IHNjcmF0Y2gpOwogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCBy
ZWcsIHNjcmF0Y2gpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQ
UmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoMCkpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdp
c3RlcnM6OlMwLCBzY3JhdGNoKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVF
cXVhbE9yVW5vcmRlcmVkLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBh
IHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwg
ZXRjLgorICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb25h
bENvbmRpdGlvbj4oY29uZCBeIDEpOworICAgIH0KKwogICAgIHZvaWQgbm9wKCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMTA3MywyOSArMTI3NCwyOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIGlmIChvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAgaWYgKG9mZnNldCA8
PSAweGZmZikgewogICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgdGFyZ2V0UmVnLCBiYXNlLCBvZmZzZXQpOworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
dGFyZ2V0UmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQg
PD0gMHhmZmZmZikgewogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKHRtcFJlZywg
YmFzZSwgQVJNQXNzZW1ibGVyOjpPUDJfSU1NIHwgKG9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkp
OwogICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyX3UodHJ1ZSwgdGFyZ2V0UmVnLCB0bXBSZWcsIG9mZnNldCAmIDB4ZmZmKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIs
IHRhcmdldFJlZywgdG1wUmVnLCBvZmZzZXQgJiAweGZmZik7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0ob2Zmc2V0LCB0bXBSZWcpOwog
ICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuZHRyX3VyKHRydWUsIHRhcmdldFJlZywgYmFzZSwgdG1wUmVnKTsKKyAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5kdHJfdXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCB0YXJnZXRSZWcs
IGJhc2UsIHRtcFJlZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSAgewogICAgICAg
ICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKICAgICAgICAgICAgIGlmIChvZmZzZXQgPD0gMHhmZmYp
IHsKICAgICAgICAgICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmR0cl9kKHRydWUsIHRhcmdldFJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5kdHJfZChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIHRhcmdldFJl
ZywgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZm
ZmYpIHsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJfcih0bXBSZWcsIGJhc2UsIEFS
TUFzc2VtYmxlcjo6T1AyX0lNTSB8IChvZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgpKTsKICAgICAg
ICAgICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0
cl9kKHRydWUsIHRhcmdldFJlZywgdG1wUmVnLCBvZmZzZXQgJiAweGZmZik7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuZHRyX2QoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCB0YXJnZXRS
ZWcsIHRtcFJlZywgb2Zmc2V0ICYgMHhmZmYpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKG9mZnNldCwgdG1wUmVnKTsKICAgICAgICAg
ICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl9k
cih0cnVlLCB0YXJnZXRSZWcsIGJhc2UsIHRtcFJlZyk7CisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyX2RyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgdGFyZ2V0UmVnLCBiYXNlLCB0
bXBSZWcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYgV1RGX0FSTV9BUkNIX0FUX0xF
QVNUKDUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMu
aAppbmRleCBmODZjMTVlLi42MGMxMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSks
IEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNo
U2l6ZSksIEdQUkluZm86OnJlZ1QwKTsKIAotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk1fVEhV
TUIyKQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pCiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0yNjIsMTMgKzI2MiwyMSBAQCBwdWJsaWM6CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkgJiYgQ1BVKEFSTSkKICAgICB2b2lkIGJveERvdWJsZShGUFJS
ZWcgZnByLCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKICAgICB7CisjaWYgQ1BV
KEFSTV9USFVNQjIpCiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YocGF5bG9hZEdQUiwgdGFnR1BS
LCBmcHIpOworI2Vsc2UKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm02NF9yKHBheWxvYWRH
UFIsIHRhZ0dQUiwgZnByKTsKKyNlbmRpZgogICAgIH0KICAgICB2b2lkIHVuYm94RG91YmxlKEdQ
UlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSLCBGUFJSZWcgZnByLCBGUFJSZWcgc2NyYXRj
aEZQUikKICAgICB7CiAgICAgICAgIGppdEFzc2VydElzSlNEb3VibGUodGFnR1BSKTsKICAgICAg
ICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2hGUFIpOworI2lmIENQVShBUk1fVEhVTUIyKQogICAgICAg
ICBtX2Fzc2VtYmxlci52bW92KGZwciwgcGF5bG9hZEdQUiwgdGFnR1BSKTsKKyNlbHNlCisgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtNjRfcihmcHIsIHBheWxvYWRHUFIsIHRhZ0dQUik7Cisj
ZW5kaWYKICAgICB9CiAjZW5kaWYKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NDYWxsSGVscGVycy5oCmluZGV4IDRjYWNkNDUuLjBjNWFmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaApAQCAtNDE3LDE3ICs0MTcsMjggQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgc2V0dXBUd29TdHViQXJnczxGUFJJbmZvOjphcmd1bWVudEZQ
UjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwgYXJnMik7CiAgICAgfQotI2Vsc2UKKyNl
bGlmIENQVShBUk0pCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJl
ZyBhcmcxKQogICAgIHsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgYXNzZW1ibGVyKCku
dm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7
CisjZWxzZQorICAgICAgICBhc3NlbWJsZXIoKS52bW92X2FybTY0X3IoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcg
YXJnMikKICAgICB7CisjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGFzc2VtYmxlcigpLnZt
b3YoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOwog
ICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIzLCBhcmcyKTsKKyNlbHNlCisgICAgICAgIGFzc2VtYmxlcigpLnZtb3ZfYXJt
NjRfcihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7
CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3ZfYXJtNjRfcihHUFJJbmZvOjphcmd1bWVudEdQUjIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMik7CisjZW5kaWYKICAgICB9CisjZWxzZQorI2Vy
cm9yICJERkcgSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhHUFJSZWcgYXJnMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKaW5kZXggNmFmNDVkZC4uZTgxN2VkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
dWJsaWM6CiAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9USFVNQjIpCisjaWYgQ1BVKEFSTSkKIAog
Y2xhc3MgRlBSSW5mbyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5m
by5oCmluZGV4IGJkNGZhMzIuLjg5ZmFlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R1BSSW5mby5oCkBAIC0zODQsNyArMzg0LDcgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKLSNpZiBD
UFUoQVJNX1RIVU1CMikKKyNpZiBDUFUoQVJNKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTIDQKIAogY2xhc3MgR1BSSW5mbyB7CkBAIC00MTAsNyArNDEwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gQVJNUmVnaXN0ZXJzOjpy
MTsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IEFSTVJl
Z2lzdGVyczo6cjI7IC8vIHJlZ1QyCiAgICAgLy8gRklYTUU6IHIzIGlzIGN1cnJlbnRseSB1c2Vk
IGJlIHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBhIHRlbXBvcmFyeSAtIGl0IHNlZW1zCi0gICAgLy8g
VGhpcyBjb3VsZCB0aHJlb3JldGljYWxseSBiZSBhIHByb2JsZW0gaWYgdGhlaXMgaXMgdXNlZCBp
biBjb2RlIGdlbmVyYXRpb24KKyAgICAvLyBUaGlzIGNvdWxkIHRocmVvcmV0aWNhbGx5IGJlIGEg
cHJvYmxlbSBpZiB0aGlzIGlzIHVzZWQgaW4gY29kZSBnZW5lcmF0aW9uCiAgICAgLy8gYmV0d2Vl
biB0aGUgYXJndW1lbnRzIGJlaW5nIHNldCB1cCwgYW5kIHRoZSBjYWxsIGJlaW5nIG1hZGUuIFRo
YXQgc2FpZCwKICAgICAvLyBhbnkgY2hhbmdlIGludHJvZHVjaW5nIGEgcHJvYmxlbSBoZXJlIGlz
IGxpa2VseSB0byBiZSBpbW1lZGlhdGVseSBhcHBhcmVudCEKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMyA9IEFSTVJlZ2lzdGVyczo6cjM7IC8vIEZJWE1FIQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggYjA1NmEzYy4uMDUxNWM2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0x
NDAsNiArMTQwLDYyIEBACiAgICAgICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGZ1bmN0aW9uKSAi
V2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAogICAgICk7CiAKKyNlbGlmIENPTVBJTEVSKEdDQykg
JiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKKworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhf
UkVUVVJOX0FERFJFU1NfRShmdW5jdGlvbikgXAorICAgIGFzbSAoIFwKKyAgICAiLnRleHQiICJc
biIgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBI
SURFX1NZTUJPTChmdW5jdGlvbikgIlxuIiBcCisgICAgSU5MSU5FX0FSTV9GVU5DVElPTihmdW5j
dGlvbikgXAorICAgIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICI6IiAiXG4iIFwKKyAgICAgICAg
Im1vdiBhMiwgbHIiICJcbiIgXAorICAgICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlv
bikgIldpdGhSZXR1cm5BZGRyZXNzIiAiXG4iIFwKKyAgICApOworCisjZGVmaW5lIEZVTkNUSU9O
X1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0koZnVuY3Rpb24pIFwKKyAgICBhc20gKCBc
CisgICAgIi50ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhmdW5jdGlv
bikgIlxuIiBcCisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAorICAgIElOTElORV9B
Uk1fRlVOQ1RJT04oZnVuY3Rpb24pIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiOiIg
IlxuIiBcCisgICAgICAgICJtb3YgYTQsIGxyIiAiXG4iIFwKKyAgICAgICAgImIgIiBMT0NBTF9S
RUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCisgICAgKTsKKwor
Ly8gRW5jb2RlZEpTVmFsdWUgaW4gSlNWQUxVRTMyXzY0IGlzIGEgNjQtYml0IGludGVnZXIuIFdo
ZW4gYmVpbmcgY29tcGlsZWQgaW4gQVJNIEVBQkksIGl0IG11c3QgYmUgYWxpZ25lZCBldmVuLW51
bWJlcmVkIHJlZ2lzdGVyIChyMCwgcjIgb3IgW3NwXSkuCisvLyBBcyBhIHJlc3VsdCwgcmV0dXJu
IGFkZHJlc3Mgd2lsbCBiZSBhdCBhIDQtYnl0ZSBmdXJ0aGVyIGxvY2F0aW9uIGluIHRoZSBmb2xs
b3dpbmcgY2FzZXMuCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BVKEFSTSkKKyNk
ZWZpbmUgSU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FERFJFU1NfRUpJICJzdHIgbHIsIFtzcCwg
IzRdIgorI2RlZmluZSBJTlNUUlVDVElPTl9TVE9SRV9SRVRVUk5fQUREUkVTU19FSkNJICJzdHIg
bHIsIFtzcCwgIzhdIgorI2Vsc2UKKyNkZWZpbmUgSU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FE
RFJFU1NfRUpJICJzdHIgbHIsIFtzcCwgIzBdIgorI2RlZmluZSBJTlNUUlVDVElPTl9TVE9SRV9S
RVRVUk5fQUREUkVTU19FSkNJICJzdHIgbHIsIFtzcCwgIzRdIgorI2VuZGlmCisKKyNkZWZpbmUg
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShmdW5jdGlvbikgXAorICAg
IGFzbSAoIFwKKyAgICAiLnRleHQiICJcbiIgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBISURFX1NZTUJPTChmdW5jdGlvbikgIlxuIiBcCisgICAg
SU5MSU5FX0FSTV9GVU5DVElPTihmdW5jdGlvbikgXAorICAgIFNZTUJPTF9TVFJJTkcoZnVuY3Rp
b24pICI6IiAiXG4iIFwKKyAgICAgICAgSU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FERFJFU1Nf
RUpJICJcbiIgXAorICAgICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikgIldpdGhS
ZXR1cm5BZGRyZXNzIiAiXG4iIFwKKyAgICApOworCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJf
V0lUSF9SRVRVUk5fQUREUkVTU19FSkNJKGZ1bmN0aW9uKSBcCisgICAgYXNtICggXAorICAgICIu
dGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICJcbiIg
XAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBJTkxJTkVfQVJNX0ZVTkNU
SU9OKGZ1bmN0aW9uKSBcCisgICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoiICJcbiIgXAor
ICAgICAgICBJTlNUUlVDVElPTl9TVE9SRV9SRVRVUk5fQUREUkVTU19FSkNJICJcbiIgXAorICAg
ICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikgIldpdGhSZXR1cm5BZGRyZXNzIiAi
XG4iIFwKKyAgICApOworCiAjZW5kaWYKIAogI2RlZmluZSBQX0ZVTkNUSU9OX1dSQVBQRVJfV0lU
SF9SRVRVUk5fQUREUkVTU19FKGZ1bmN0aW9uKSBcCkBAIC0xMzE0LDYgKzEzNzAsMTcgQEAgU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgogICAgICJtb3YgcjAs
IHI1IiAiXG4iCiAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CisjZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQorYXNt
ICgKKyIudGV4dCIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgor
SU5MSU5FX0FSTV9GVU5DVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKQorU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00
MF0iICJcbiIKKyAgICAibW92IHIwLCByNSIgIlxuIgorICAgICJiICIgTE9DQUxfUkVGRVJFTkNF
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOwogI2VuZGlmCiAK
IGV4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDZjNjk0
OGIuLjk3YWJkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTE4MzMsMTMgKzE4MzMsMjEgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwor
I2lmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92KHJlc3Vs
dCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7Cisj
ZWxzZQorICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92X2FybTY0X3IocmVzdWx0LCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKKyNlbmRpZgog
ICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5k
Q2FsbFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQp
CiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBwZW5kQ2Fs
bChmdW5jdGlvbik7CisjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIG1faml0LmFzc2VtYmxl
cigpLnZtb3YocmVzdWx0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKKyNlbHNlCisgICAgICAgIG1faml0LmFzc2VtYmxlcigpLnZtb3ZfYXJtNjRf
cihyZXN1bHQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UjIpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGIwZmY0YTAuLjE3ZDI4NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC02MjIsOCArNjIyLDEwIEBAIFNZ
TUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKICNlbGlmIENPTVBJTEVS
KEdDQykgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKIAogYXNtICgKKyIudGV4dCIgIlxuIgogIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIlxuIgogSElERV9TWU1CT0woY3Rp
VHJhbXBvbGluZSkgIlxuIgorSU5MSU5FX0FSTV9GVU5DVElPTihjdGlUcmFtcG9saW5lKQogU1lN
Qk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgogICAgICJzdG1kYiBzcCEsIHtyMS1y
M30iICJcbiIKICAgICAic3RtZGIgc3AhLCB7cjQtcjgsIGxyfSIgIlxuIgpAQCAtNjMxLDI5ICs2
MzMsMzUgQEAgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgogICAgICJtb3Yg
cjQsIHIyIiAiXG4iCiAgICAgIm1vdiByNSwgIzUxMiIgIlxuIgogICAgIC8vIHIwIGNvbnRhaW5z
IHRoZSBjb2RlCi0gICAgIm1vdiBsciwgcGMiICJcbiIKLSAgICAibW92IHBjLCByMCIgIlxuIgor
ICAgICJibHggcjAiICJcbiIKICAgICAiYWRkIHNwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBSRVNFUlZFRFI0X09GRlNFVCkgIlxuIgogICAgICJsZG1pYSBzcCEsIHtyNC1yOCwgbHJ9IiAi
XG4iCiAgICAgImFkZCBzcCwgc3AsICMxMiIgIlxuIgotICAgICJtb3YgcGMsIGxyIiAiXG4iCisg
ICAgImJ4IGxyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lRW5k
KSAiXG4iCitISURFX1NZTUJPTChjdGlUcmFtcG9saW5lRW5kKSAiXG4iCitTWU1CT0xfU1RSSU5H
KGN0aVRyYW1wb2xpbmVFbmQpICI6IiAiXG4iCiApOwogCiBhc20gKAorIi50ZXh0IiAiXG4iCiAi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIlxuIgogSElERV9T
WU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKK0lOTElORV9BUk1fRlVOQ1RJT04oY3Rp
Vk1UaHJvd1RyYW1wb2xpbmUpCiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAi
OiIgIlxuIgogICAgICJtb3YgcjAsIHNwIiAiXG4iCiAgICAgImJsICIgU1lNQk9MX1NUUklORyhj
dGlfdm1fdGhyb3cpICJcbiIKIAogLy8gQm90aCBoYXMgdGhlIHNhbWUgcmV0dXJuIHNlcXVlbmNl
CisiLnRleHQiICJcbiIKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVn
aHQpICJcbiIKIEhJREVfU1lNQk9MKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKK0lOTElORV9B
Uk1fRlVOQ1RJT04oY3RpT3BUaHJvd05vdENhdWdodCkKIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJv
d05vdENhdWdodCkgIjoiICJcbiIKICAgICAiYWRkIHNwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBSRVNFUlZFRFI0X09GRlNFVCkgIlxuIgogICAgICJsZG1pYSBzcCEsIHtyNC1yOCwgbHJ9
IiAiXG4iCiAgICAgImFkZCBzcCwgc3AsICMxMiIgIlxuIgotICAgICJtb3YgcGMsIGxyIiAiXG4i
CisgICAgImJ4IGxyIiAiXG4iCiApOwogCiAjZWxpZiBDT01QSUxFUihSVkNUKSAmJiBDUFUoQVJN
X1RIVU1CMikKQEAgLTEwNzgsOCArMTA4Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyBUIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbChKSVRTdGFja0ZyYW1lJiBqaXRTdGFja0ZyCiAg
ICAgICAgICIuYWxpZ24gMiIgIlxuIiBcCiAgICAgICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGN0aV8jI29wKSAiXG4iIFwKICAgICAgICAgSElERV9TWU1CT0woY3RpXyMjb3ApICJcbiIgICAg
ICAgICAgICAgXAotICAgICAgICAiLnRodW1iIiAiXG4iIFwKLSAgICAgICAgIi50aHVtYl9mdW5j
ICIgVEhVTUJfRlVOQ19QQVJBTShjdGlfIyNvcCkgIlxuIiBcCisgICAgICAgIElOTElORV9BUk1f
RlVOQ1RJT04oY3RpXyMjb3ApIFwKICAgICAgICAgU1lNQk9MX1NUUklORyhjdGlfIyNvcCkgIjoi
ICJcbiIgXAogICAgICAgICAic3RyIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihUSFVO
S19SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAiXG4iIFwKICAgICAgICAgImJsICIgU1lNQk9M
X1NUUklORyhKSVRTdHViVGh1bmtlZF8jI29wKSAiXG4iIFwKQEAgLTExNTYsMTEgKzExNjMsMTIg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxs
KEpJVFN0YWNrRnJhbWUmIGppdFN0YWNrRnIKICAgICB9OyBcCiAgICAgYXNtICggXAogICAgICAg
ICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlfIyNvcCkgIlxuIiBcCisgICAgICAgIElOTElO
RV9BUk1fRlVOQ1RJT04oY3RpXyMjb3ApIFwKICAgICAgICAgU1lNQk9MX1NUUklORyhjdGlfIyNv
cCkgIjoiICJcbiIgXAogICAgICAgICAic3RyIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAiXG4iIFwKICAgICAgICAgImJsICIg
U1lNQk9MX1NUUklORyhKSVRTdHViVGh1bmtlZF8jI29wKSAiXG4iIFwKICAgICAgICAgImxkciBs
ciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoVEhVTktfUkVUVVJOX0FERFJFU1NfT0ZGU0VU
KSAiXSIgIlxuIiBcCi0gICAgICAgICJtb3YgcGMsIGxyIiAiXG4iIFwKKyAgICAgICAgImJ4IGxy
IiAiXG4iIFwKICAgICAgICAgKTsgXAogICAgIHJ0eXBlIEpJVFN0dWJUaHVua2VkXyMjb3AoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgKaW5kZXggMDVkMWNlNS4uMzk2NTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtMTE5LDIzICsxMTksMjcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIg
PSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNo
ZWRSZXN1bHRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0g
ICAgICAgIAorCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI3Owor
I2VuZGlmCisKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVn
aXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI1OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjQ7Ci0gICAgICAgIAorCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsKICAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEgPSBBUk1SZWdpc3RlcnM6OnIxOwog
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IEFSTVJlZ2lzdGVyczo6cjI7
CiAgICAgICAgIC8vIENhbGxlZSBwcmVzZXJ2ZWQKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDMgPSBBUk1SZWdpc3RlcnM6OnI3OwotICAgICAgICAKKwogICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdTMCA9IEFSTVJlZ2lzdGVyczo6UzA7CiAgICAgICAgIC8v
IENhbGxlZSBwcmVzZXJ2ZWQKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnUzEg
PSBBUk1SZWdpc3RlcnM6OlMxOwotICAgICAgICAKKwogICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCByZWdTdGFja1B0ciA9IEFSTVJlZ2lzdGVyczo6c3A7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHJlZ0xpbmsgPSBBUk1SZWdpc3RlcnM6OmxyOwotICAgICAgICAKKwog
ICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDAgPSBBUk1SZWdpc3RlcnM6
OmQwOwogICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBBUk1SZWdp
c3RlcnM6OmQxOwogICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBB
Uk1SZWdpc3RlcnM6OmQyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAppbmRleCAxMGNkMWNjLi5mYTEwNGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9J
bmxpbmVBU00uaApAQCAtODMsNCArODMsMTAgQEAKICNkZWZpbmUgTE9DQUxfTEFCRUxfU1RSSU5H
KG5hbWUpICIuTCIgI25hbWUKICNlbmRpZgogCisjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkgJiYg
KGRlZmluZWQodGh1bWIyKSB8fCBkZWZpbmVkKF9fdGh1bWIyX18pIHx8IGRlZmluZWQoX190aHVt
YikgfHwgZGVmaW5lZChfX3RodW1iX18pKQorI2RlZmluZSBJTkxJTkVfQVJNX0ZVTkNUSU9OKG5h
bWUpICIudGh1bWIiICJcbiIgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShuYW1lKSAi
XG4iCisjZWxzZQorI2RlZmluZSBJTkxJTkVfQVJNX0ZVTkNUSU9OKG5hbWUpCisjZW5kaWYKKwog
I2VuZGlmIC8vIElubGluZUFTTV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA0YTY4ZTQ5Li43NzU3MWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTkwNSw2ICs5MDUsMTAgQEAKICNpZiBDUFUoQVJNX1RIVU1CMikgJiYg
UExBVEZPUk0oSU9TKQogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYKKy8qIEVuYWJs
ZSB0aGUgREZHIEpJVCBvbiBBUk0uICovCisjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyNkZWZp
bmUgRU5BQkxFX0RGR19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogUHJvZmlsaW5nIG9mIHR5
cGVzIGFuZCB2YWx1ZXMgdXNlZCBieSBKSVQgY29kZS4gREZHX0pJVCBkZXBlbmRzIG9uIGl0LCBi
dXQgeW91Ci0tIAoxLjcuMi41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150392</attachid>
            <date>2012-07-02 03:41:34 -0700</date>
            <delta_ts>2012-07-02 08:11:14 -0700</delta_ts>
            <desc>second draft patch</desc>
            <filename>0001-dfg-port.patch</filename>
            <type>text/plain</type>
            <size>78553</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA0YTg3ZDMxYjJiYThhZjI1MGE2ZWJhNzJkZjNjOWJhYjJkYjg5NGY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAd2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAyIEp1bCAyMDEyIDAzOjI5OjA1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZGZn
LXBvcnQKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIu
Y3BwICAgfCAgIDkxICsrKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFz
c2VtYmxlci5oICAgICB8ICAyODUgKysrKysrKysrKy0tLS0tCiAuLi4vYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAgICB8ICAgIDQgKy0KIC4uLi9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIHwgICAxMiArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oICAgfCAgMzk1ICsrKysrKysr
KysrKysrKy0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxl
ci5oICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlI
ZWxwZXJzLmggICAgIHwgICAxMCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2Fs
bEhlbHBlcnMuaCAgICAgICAgfCAgIDEzICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZQUkluZm8uaCAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR1BSSW5mby5oICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgICAgICAgfCAgIDY3ICsrKysKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCAgICAgIHwgICAxMCArLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgICAgICAgICAgICAgfCAgIDMyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggICAgICAgICAgICAgICB8ICAgIDQg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCAgICAgICAgIHwg
ICAzMiArLS0KIFNvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgNiArCiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKwogMTcgZmlsZXMgY2hhbmdlZCwgNjk2IGluc2VydGlvbnMoKyksIDI3
NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TUFzc2VtYmxlci5jcHAKaW5kZXggNzQ4MDljYS4uMjYxZTU5NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApAQCAtMjYyLDg2ICsyNjIs
MTE3IEBAIEFSTVdvcmQgQVJNQXNzZW1ibGVyOjplbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1t
LCBpbnQgZGVzdCkKIAogLy8gTWVtb3J5IGxvYWQvc3RvcmUgaGVscGVycwogCi12b2lkIEFSTUFz
c2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIoYm9vbCBpc0xvYWQsIFJlZ2lzdGVySUQgc3JjRHN0LCBS
ZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0LCBib29sIGJ5dGVzKQordm9pZCBBUk1Bc3Nl
bWJsZXI6OmRhdGFUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGUxIHR5cGUsIFJlZ2lzdGVySUQg
c3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQogewotICAgIEFSTVdvcmQg
dHJhbnNmZXJGbGFnID0gYnl0ZXMgPyBEVF9CWVRFIDogMDsKICAgICBpZiAob2Zmc2V0ID49IDAp
IHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikKLSAgICAgICAgICAgIGR0cl91KGlzTG9h
ZCwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRy
X3UodHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQpOwogICAgICAgICBlbHNlIGlmIChvZmZzZXQg
PD0gMHhmZmZmZikgewogICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwg
T1AyX0lNTSB8IChvZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cl91
KGlzTG9hZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ICYgMHhmZmYpIHwgdHJh
bnNmZXJGbGFnKTsKKyAgICAgICAgICAgIGR0cl91KHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgKG9mZnNldCAmIDB4ZmZmKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBt
b3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBkdHJfdXIoaXNM
b2FkLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAg
ICAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAg
ICAgICAgICAgIGR0cl9kKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0IHwgdHJhbnNmZXJG
bGFnKTsKKyAgICAgICAgICAgIGR0cl9kKHR5cGUsIHNyY0RzdCwgYmFzZSwgLW9mZnNldCk7CiAg
ICAgICAgIGVsc2UgaWYgKG9mZnNldCA+PSAtMHhmZmZmZikgewogICAgICAgICAgICAgc3ViX3Io
QVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8ICgtb2Zmc2V0ID4+IDEyKSB8ICgxMCA8
PCA4KSk7Ci0gICAgICAgICAgICBkdHJfZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpT
MCwgKC1vZmZzZXQgJiAweGZmZikgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRyX2Qo
dHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAoLW9mZnNldCAmIDB4ZmZmKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpT
MCk7Ci0gICAgICAgICAgICBkdHJfdXIoaXNMb2FkLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVy
czo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwg
YmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQVJN
QXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBSZWdpc3RlcklEIHNy
Y0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMy
X3Qgb2Zmc2V0LCBib29sIGJ5dGVzKQordm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5z
ZmVyMzIoRGF0YVRyYW5zZmVyVHlwZTEgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKIHsK
LSAgICBBUk1Xb3JkIG9wMjsKLSAgICBBUk1Xb3JkIHRyYW5zZmVyRmxhZyA9IGJ5dGVzID8gRFRf
QllURSA6IDA7Ci0KICAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzKTsKLSAgICBv
cDIgPSBsc2woaW5kZXgsIHNjYWxlKTsKKyAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2Nh
bGUpOwogCi0gICAgaWYgKG9mZnNldCA+PSAwICYmIG9mZnNldCA8PSAweGZmZikgewotICAgICAg
ICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBvcDIpOwotICAgICAgICBkdHJfdShpc0xv
YWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgb2Zmc2V0IHwgdHJhbnNmZXJGbGFnKTsKKyAg
ICBpZiAob2Zmc2V0ID09IDApIHsKKyAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwg
b3AyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAob2Zmc2V0IDw9IDAgJiYgb2Zm
c2V0ID49IC0weGZmZikgewotICAgICAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBv
cDIpOwotICAgICAgICBkdHJfZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1v
ZmZzZXQgJiAweGZmZikgfCB0cmFuc2ZlckZsYWcpOworCisgICAgYWRkX3IoQVJNUmVnaXN0ZXJz
OjpTMSwgYmFzZSwgb3AyKTsKKyAgICBkYXRhVHJhbnNmZXIzMih0eXBlLCBzcmNEc3QsIEFSTVJl
Z2lzdGVyczo6UzEsIG9mZnNldCk7Cit9CisKK3ZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNm
ZXIxNihEYXRhVHJhbnNmZXJUeXBlMiB0eXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJ
RCBiYXNlLCBpbnQzMl90IG9mZnNldCkKK3sKKyAgICBpZiAob2Zmc2V0ID49IDApIHsKKyAgICAg
ICAgaWYgKG9mZnNldCA8PSAweGZmKQorICAgICAgICAgICAgZHRyaF91KHR5cGUsIHNyY0RzdCwg
YmFzZSwgZ2V0T3AySGFsZihvZmZzZXQpKTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0IDw9IDB4
ZmZmZikgeworICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lN
TSB8IChvZmZzZXQgPj4gOCkgfCAoMTIgPDwgOCkpOworICAgICAgICAgICAgZHRyaF91KHR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZihvZmZzZXQgJiAweGZmKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJz
OjpTMCk7CisgICAgICAgICAgICBkdHJoX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0
ZXJzOjpTMCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAob2Zmc2V0ID49
IC0weGZmKQorICAgICAgICAgICAgZHRyaF9kKHR5cGUsIHNyY0RzdCwgYmFzZSwgZ2V0T3AySGFs
Zigtb2Zmc2V0KSk7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldCA+PSAtMHhmZmZmKSB7CisgICAg
ICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKC1vZmZzZXQg
Pj4gOCkgfCAoMTIgPDwgOCkpOworICAgICAgICAgICAgZHRyaF9kKHR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOworICAg
ICAgICAgICAgZHRyaF91cih0eXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNm
ZXIxNihEYXRhVHJhbnNmZXJUeXBlMiB0eXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KQorewor
ICAgIGlmIChzY2FsZSA9PSAwICYmIG9mZnNldCA9PSAwKSB7CisgICAgICAgIGR0cmhfdXIodHlw
ZSwgc3JjRHN0LCBiYXNlLCBpbmRleCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBs
ZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIG9mZnNldCk7Ci0gICAgYWRkX3IoQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgb3AyKTsKLSAgICBkdHJfdXIoaXNMb2FkLCBzcmNE
c3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgIGFkZF9yKEFS
TVJlZ2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBkYXRhVHJhbnNm
ZXIxNih0eXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzEsIG9mZnNldCk7CiB9CiAKLXZvaWQg
QVJNQXNzZW1ibGVyOjpkb3VibGVUcmFuc2Zlcihib29sIGlzTG9hZCwgRlBSZWdpc3RlcklEIHNy
Y0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKK3ZvaWQgQVJNQXNzZW1ibGVy
OjpkYXRhVHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgRlBSZWdpc3Rl
cklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKIHsKICAgICAvLyBW
RlAgY2Fubm90IGRpcmVjdGx5IGFjY2VzcyBtZW1vcnkgdGhhdCBpcyBub3QgZm91ci1ieXRlLWFs
aWduZWQKICAgICBpZiAoIShvZmZzZXQgJiAweDMpKSB7CiAgICAgICAgIGlmIChvZmZzZXQgPD0g
MHgzZmYgJiYgb2Zmc2V0ID49IDApIHsKLSAgICAgICAgICAgIGZkdHJfdShpc0xvYWQsIHNyY0Rz
dCwgYmFzZSwgb2Zmc2V0ID4+IDIpOworICAgICAgICAgICAgZmR0cl91KHR5cGUsIHNyY0RzdCwg
YmFzZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAg
YWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQgPj4gMTApIHwg
KDExIDw8IDgpKTsKLSAgICAgICAgICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOworICAgICAgICAgICAgZmR0cl91KHR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CiAKICAg
ICAgICAgaWYgKG9mZnNldCA8PSAweDNmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAg
ZmR0cl9kKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7CisgICAgICAgICAgICBm
ZHRyX2QodHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9mZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+
PSAwKSB7CiAgICAgICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1N
IHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOwotICAgICAgICAgICAgZmR0cl9kKGlzTG9h
ZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CisgICAg
ICAgICAgICBmZHRyX2QodHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+
IDIpICYgMHhmZik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgb2Zm
c2V0ID0gLW9mZnNldDsKICAgICB9CiAKLSAgICBsZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAs
IG9mZnNldCk7CisgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgIGFk
ZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UpOwotICAgIGZkdHJf
dShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgZmR0cl91KHR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Cit9CisKK3ZvaWQgQVJNQXNzZW1ibGVyOjpi
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBGUFJlZ2lz
dGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgaW50MzJfdCBvZmZzZXQpCit7CisgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwg
bHNsKGluZGV4LCBzY2FsZSkpOworICAgIGRhdGFUcmFuc2ZlckZsb2F0KHR5cGUsIHNyY0RzdCwg
QVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIAogUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVt
b3J5SGFuZGxlPiBBUk1Bc3NlbWJsZXI6OmV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKQEAg
LTM2MSw3ICszOTIsNyBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEFSTUFz
c2VtYmxlcjo6ZXhlY3V0YWJsZUNvcHkoSlNHbG9iYWxEYXRhJiBnbAogICAgICAgICBBUk1Xb3Jk
KiBhZGRyID0gZ2V0TGRySW1tQWRkcmVzcyhsZHJBZGRyKTsKICAgICAgICAgaWYgKCphZGRyICE9
IEludmFsaWRCcmFuY2hUYXJnZXQpIHsKICAgICAgICAgICAgIGlmICghKGl0ZXItPm1fb2Zmc2V0
ICYgMSkpIHsKLSAgICAgICAgICAgICAgICBpbnQgZGlmZiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEFSTVdvcmQqPihkYXRhICsgKmFkZHIpIC0gKGxkckFkZHIgKyBEZWZhdWx0UHJlZmV0Y2hpbmcp
OworICAgICAgICAgICAgICAgIGludHB0cl90IGRpZmYgPSByZWludGVycHJldF9jYXN0X3B0cjxB
Uk1Xb3JkKj4oZGF0YSArICphZGRyKSAtIChsZHJBZGRyICsgRGVmYXVsdFByZWZldGNoaW5nKTsK
IAogICAgICAgICAgICAgICAgIGlmICgoZGlmZiA8PSBCT0ZGU0VUX01BWCAmJiBkaWZmID49IEJP
RkZTRVRfTUlOKSkgewogICAgICAgICAgICAgICAgICAgICAqbGRyQWRkciA9IEIgfCBnZXRDb25k
aXRpb25hbEZpZWxkKCpsZHJBZGRyKSB8IChkaWZmICYgQlJBTkNIX01BU0spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKaW5kZXggMTZkYzBjZi4u
YWM4ZGEwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1B
c3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2Vt
Ymxlci5oCkBAIC00MSwxNiArNDEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
MCA9IDAsCiAgICAgICAgICAgICByMSwKICAgICAgICAgICAgIHIyLAotICAgICAgICAgICAgcjMs
IFMwID0gcjMsCisgICAgICAgICAgICByMywgUzAgPSByMywgLyogU2FtZSBhcyB0aHVtYiBhc3Nl
bWJsZXIuICovCiAgICAgICAgICAgICByNCwKICAgICAgICAgICAgIHI1LAogICAgICAgICAgICAg
cjYsCiAgICAgICAgICAgICByNywKLSAgICAgICAgICAgIHI4LCBTMSA9IHI4LAorICAgICAgICAg
ICAgcjgsCiAgICAgICAgICAgICByOSwKICAgICAgICAgICAgIHIxMCwKICAgICAgICAgICAgIHIx
MSwKLSAgICAgICAgICAgIHIxMiwKKyAgICAgICAgICAgIHIxMiwgUzEgPSByMTIsCiAgICAgICAg
ICAgICByMTMsIHNwID0gcjEzLAogICAgICAgICAgICAgcjE0LCBsciA9IHIxNCwKICAgICAgICAg
ICAgIHIxNSwgcGMgPSByMTUKQEAgLTYwLDExICs2MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIGQwLAogICAgICAgICAgICAgZDEsCiAgICAgICAgICAgICBkMiwKLSAgICAgICAg
ICAgIGQzLCBTRDAgPSBkMywKKyAgICAgICAgICAgIGQzLAogICAgICAgICAgICAgZDQsCiAgICAg
ICAgICAgICBkNSwKICAgICAgICAgICAgIGQ2LAotICAgICAgICAgICAgZDcsCisgICAgICAgICAg
ICBkNywgU0QwID0gZDcsIC8qIFNhbWUgYXMgdGh1bWIgYXNzZW1ibGVyLiAqLwogICAgICAgICAg
ICAgZDgsCiAgICAgICAgICAgICBkOSwKICAgICAgICAgICAgIGQxMCwKQEAgLTEwMCw3ICsxMDAs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgQXNzZW1ibGVyQnVmZmVyV2l0
aENvbnN0YW50UG9vbDwyMDQ4LCA0LCA0LCBBUk1Bc3NlbWJsZXI+IEFSTUJ1ZmZlcjsKICAgICAg
ICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8QXNzZW1ibGVyTGFiZWwsIDY0PiBKdW1wczsKIAot
ICAgICAgICBBUk1Bc3NlbWJsZXIoKSB7IH0KKyAgICAgICAgQVJNQXNzZW1ibGVyKCkKKyAgICAg
ICAgICAgIDogbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoMSkKKyAgICAgICAgeworICAg
ICAgICB9CiAKICAgICAgICAgLy8gQVJNIGNvbmRpdGlvbmFsIGNvbnN0YW50cwogICAgICAgICB0
eXBlZGVmIGVudW0gewpAQCAtMTQxLDMzICsxNDQsMzMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBNVk4gPSAoMHhmIDw8IDIxKSwKICAgICAgICAgICAgIE1VTCA9IDB4MDAwMDAwOTAs
CiAgICAgICAgICAgICBNVUxMID0gMHgwMGMwMDA5MCwKKyAgICAgICAgICAgIFZNT1ZfRjY0ID0g
MHgwZWIwMGI0MCwKICAgICAgICAgICAgIFZBRERfRjY0ID0gMHgwZTMwMGIwMCwKICAgICAgICAg
ICAgIFZESVZfRjY0ID0gMHgwZTgwMGIwMCwKICAgICAgICAgICAgIFZTVUJfRjY0ID0gMHgwZTMw
MGI0MCwKICAgICAgICAgICAgIFZNVUxfRjY0ID0gMHgwZTIwMGIwMCwKICAgICAgICAgICAgIFZD
TVBfRjY0ID0gMHgwZWI0MGI0MCwKICAgICAgICAgICAgIFZTUVJUX0Y2NCA9IDB4MGViMTBiYzAs
Ci0gICAgICAgICAgICBEVFIgPSAweDA1MDAwMDAwLAotICAgICAgICAgICAgTERSSCA9IDB4MDAx
MDAwOTAsCi0gICAgICAgICAgICBTVFJIID0gMHgwMDAwMDA5MCwKKyAgICAgICAgICAgIFZBQlNf
RjY0ID0gMHgwZWIwMGJjMCwKKyAgICAgICAgICAgIFZORUdfRjY0ID0gMHgwZWIxMGI0MCwKICAg
ICAgICAgICAgIFNUTURCID0gMHgwOTIwMDAwMCwKICAgICAgICAgICAgIExETUlBID0gMHgwOGIw
MDAwMCwKLSAgICAgICAgICAgIEZEVFIgPSAweDBkMDAwYjAwLAogICAgICAgICAgICAgQiA9IDB4
MGEwMDAwMDAsCiAgICAgICAgICAgICBCTCA9IDB4MGIwMDAwMDAsCi0jaWYgV1RGX0FSTV9BUkNI
X0FUX0xFQVNUKDUpIHx8IGRlZmluZWQoX19BUk1fQVJDSF80VF9fKQogICAgICAgICAgICAgQlgg
PSAweDAxMmZmZjEwLAotI2VuZGlmCi0gICAgICAgICAgICBWTU9WX1ZGUCA9IDB4MGUwMDBhMTAs
Ci0gICAgICAgICAgICBWTU9WX0FSTSA9IDB4MGUxMDBhMTAsCisgICAgICAgICAgICBWTU9WX1ZG
UDY0ID0gMHgwYzQwMGExMCwKKyAgICAgICAgICAgIFZNT1ZfQVJNNjQgPSAweDBjNTAwYTEwLAor
ICAgICAgICAgICAgVk1PVl9WRlAzMiA9IDB4MGUwMDBhMTAsCisgICAgICAgICAgICBWTU9WX0FS
TTMyID0gMHgwZTEwMGExMCwKICAgICAgICAgICAgIFZDVlRfRjY0X1MzMiA9IDB4MGViODBiYzAs
CiAgICAgICAgICAgICBWQ1ZUX1MzMl9GNjQgPSAweDBlYmQwYjQwLAorICAgICAgICAgICAgVkNW
VF9VMzJfRjY0ID0gMHgwZWJjMGI0MCwKKyAgICAgICAgICAgIFZDVlRfRjMyX0Y2NCA9IDB4MGVi
NzBiYzAsCisgICAgICAgICAgICBWQ1ZUX0Y2NF9GMzIgPSAweDBlYjcwYWMwLAogICAgICAgICAg
ICAgVk1SU19BUFNSID0gMHgwZWYxZmExMCwKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkK
ICAgICAgICAgICAgIENMWiA9IDB4MDE2ZjBmMTAsCiAgICAgICAgICAgICBCS1BUID0gMHhlMTIw
MDA3MCwKICAgICAgICAgICAgIEJMWCA9IDB4MDEyZmZmMzAsCi0jZW5kaWYKICNpZiBXVEZfQVJN
X0FSQ0hfQVRfTEVBU1QoNykKICAgICAgICAgICAgIE1PVlcgPSAweDAzMDAwMDAwLAogICAgICAg
ICAgICAgTU9WVCA9IDB4MDM0MDAwMDAsCkBAIC0xNzcsMTcgKzE4MCwzNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBlbnVtIHsKICAgICAgICAgICAgIE9QMl9JTU0gPSAoMSA8PCAyNSks
Ci0gICAgICAgICAgICBPUDJfSU1NaCA9ICgxIDw8IDIyKSwKKyAgICAgICAgICAgIE9QMl9JTU1f
SEFMRiA9ICgxIDw8IDIyKSwKICAgICAgICAgICAgIE9QMl9JTlZfSU1NID0gKDEgPDwgMjYpLAog
ICAgICAgICAgICAgU0VUX0NDID0gKDEgPDwgMjApLAogICAgICAgICAgICAgT1AyX09GU1JFRyA9
ICgxIDw8IDI1KSwKKyAgICAgICAgICAgIC8vIERhdGEgdHJhbnNmZXIgZmxhZ3MuCiAgICAgICAg
ICAgICBEVF9VUCA9ICgxIDw8IDIzKSwKLSAgICAgICAgICAgIERUX0JZVEUgPSAoMSA8PCAyMiks
CiAgICAgICAgICAgICBEVF9XQiA9ICgxIDw8IDIxKSwKLSAgICAgICAgICAgIC8vIFRoaXMgZmxh
ZyBpcyBpbmxjdWRlZCBpbiBMRFIgYW5kIFNUUgogICAgICAgICAgICAgRFRfUFJFID0gKDEgPDwg
MjQpLAotICAgICAgICAgICAgSERUX1VIID0gKDEgPDwgNSksCiAgICAgICAgICAgICBEVF9MT0FE
ID0gKDEgPDwgMjApLAorICAgICAgICAgICAgRFRfQllURSA9ICgxIDw8IDIyKSwKKyAgICAgICAg
fTsKKworICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGUxIHsKKyAgICAgICAgICAgIExvYWRV
aW50MzIgPSAweDA1MDAwMDAwIHwgRFRfTE9BRCwKKyAgICAgICAgICAgIExvYWRVaW50OCA9IDB4
MDU0MDAwMDAgfCBEVF9MT0FELAorICAgICAgICAgICAgU3RvcmVVaW50MzIgPSAweDA1MDAwMDAw
LAorICAgICAgICAgICAgU3RvcmVVaW50OCA9IDB4MDU0MDAwMDAsCisgICAgICAgIH07CisKKyAg
ICAgICAgZW51bSBEYXRhVHJhbnNmZXJUeXBlMiB7CisgICAgICAgICAgICBMb2FkVWludDE2ID0g
MHgwMTAwMDBiMCB8IERUX0xPQUQsCisgICAgICAgICAgICBMb2FkSW50MTYgPSAweDAxMDAwMGYw
IHwgRFRfTE9BRCwKKyAgICAgICAgICAgIExvYWRJbnQ4ID0gMHgwMTAwMDBkMCB8IERUX0xPQUQs
CisgICAgICAgICAgICBTdG9yZVVpbnQxNiA9IDB4MDEwMDAwYjAsCisgICAgICAgIH07CisKKyAg
ICAgICAgZW51bSBEYXRhVHJhbnNmZXJUeXBlRmxvYXQgeworICAgICAgICAgICAgTG9hZEZsb2F0
ID0gMHgwZDAwMGEwMCB8IERUX0xPQUQsCisgICAgICAgICAgICBMb2FkRG91YmxlID0gMHgwZDAw
MGIwMCB8IERUX0xPQUQsCisgICAgICAgICAgICBTdG9yZUZsb2F0ID0gMHgwZDAwMGEwMCwKKyAg
ICAgICAgICAgIFN0b3JlRG91YmxlID0gMHgwZDAwMGIwMCwKICAgICAgICAgfTsKIAogICAgICAg
ICAvLyBNYXNrcyBvZiBBUk0gaW5zdHJ1Y3Rpb25zCkBAIC0yMTgsNyArMjQxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0SW5zdChBUk1Xb3JkIG9wLCBpbnQgcmQsIGlu
dCBybiwgQVJNV29yZCBvcDIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgoKG9wMiAm
IH5PUDJfSU1NKSA8PSAweGZmZikgfHwgKCgob3AyICYgfk9QMl9JTU1oKSA8PSAweGZmZikpKTsK
KyAgICAgICAgICAgIEFTU0VSVCgoKG9wMiAmIH5PUDJfSU1NKSA8PSAweGZmZikgfHwgKCgob3Ay
ICYgfk9QMl9JTU1fSEFMRikgPD0gMHhmZmYpKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJ
bnQob3AgfCBSTihybikgfCBSRChyZCkgfCBvcDIpOwogICAgICAgICB9CiAKQEAgLTQwNyw2ICs0
MzAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3Rh
dGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTVVMTCB8IFJOKHJkaGkpIHwgUkQocmRsbykgfCBSUyhy
bikgfCBSTShybSkpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB2bW92X2Y2NF9yKGludCBk
ZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgZW1p
dERvdWJsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1PVl9GNjQs
IGRkLCAwLCBkbSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHZhZGRfZjY0X3IoaW50IGRk
LCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZB
RERfRjY0LCBkZCwgZG4sIGRtKTsKQEAgLTQzNywxMDAgKzQ2NSwxMjQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1X
b3JkPihjYykgfCBWU1FSVF9GNjQsIGRkLCAwLCBkbSk7CiAgICAgICAgIH0KIAorICAgICAgICB2
b2lkIHZhYnNfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB7CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1X
b3JkPihjYykgfCBWQUJTX0Y2NCwgZGQsIDAsIGRtKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgdm5lZ19mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdv
cmQ+KGNjKSB8IFZORUdfRjY0LCBkZCwgMCwgZG0pOworICAgICAgICB9CisKICAgICAgICAgdm9p
ZCBsZHJfaW1tKGludCByZCwgQVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQoc3RhdGljX2Nh
c3Q8QVJNV29yZD4oY2MpIHwgRFRSIHwgRFRfTE9BRCB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJz
OjpwYykgfCBSRChyZCksIGltbSwgdHJ1ZSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRX
aXRoQ29uc3RhbnRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTG9hZFVpbnQzMiB8IERU
X1VQIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSwgdHJ1ZSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIGxkcl91bl9pbW0oaW50IHJkLCBBUk1Xb3JkIGltbSwgQ29uZGl0
aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludFdpdGhD
b25zdGFudEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBEVFIgfCBEVF9MT0FEIHwgRFRf
VVAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEludFdpdGhDb25zdGFudEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBM
b2FkVWludDMyIHwgRFRfVVAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHRyX3UoYm9vbCBpc0xvYWQsIGludCByZCwgaW50
IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyX3Uo
RGF0YVRyYW5zZmVyVHlwZTEgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nh
c3Q8QVJNV29yZD4oY2MpIHwgRFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSB8IERUX1VQLCBy
ZCwgcmIsIG9wMik7CisgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihj
YykgfCB0eXBlIHwgRFRfVVAsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZHRyX3VyKGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJfdXIoRGF0YVRyYW5zZmVyVHlwZTEgdHlwZSwgaW50
IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8IChpc0xvYWQg
PyBEVF9MT0FEIDogMCkgfCBEVF9VUCB8IE9QMl9PRlNSRUcsIHJkLCByYiwgcm0pOworICAgICAg
ICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHlwZSB8IERUX1VQIHwg
T1AyX09GU1JFRywgcmQsIHJiLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9k
KGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQorICAgICAgICB2b2lkIGR0cl9kKERhdGFUcmFuc2ZlclR5cGUxIHR5cGUsIGludCByZCwg
aW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8IChpc0xvYWQg
PyBEVF9MT0FEIDogMCksIHJkLCByYiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRp
Y19jYXN0PEFSTVdvcmQ+KGNjKSB8IHR5cGUsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZHRyX2RyKGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBD
b25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJfZHIoRGF0YVRyYW5zZmVyVHlwZTEg
dHlwZSwgaW50IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8
IChpc0xvYWQgPyBEVF9MT0FEIDogMCkgfCBPUDJfT0ZTUkVHLCByZCwgcmIsIHJtKTsKKyAgICAg
ICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHR5cGUgfCBPUDJfT0ZT
UkVHLCByZCwgcmIsIHJtKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbGRyaF9yKGludCBy
ZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0cmhf
dShEYXRhVHJhbnNmZXJUeXBlMiB0eXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBMRFJIIHwgSERUX1VIIHwgRFRfVVAgfCBEVF9QUkUsIHJkLCBy
biwgcm0pOworICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwg
dHlwZSB8IERUX1VQLCByZCwgcmIsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGxk
cmhfZChpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAg
ICAgICB2b2lkIGR0cmhfdXIoRGF0YVRyYW5zZmVyVHlwZTIgdHlwZSwgaW50IHJkLCBpbnQgcm4s
IGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJ
bnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IExEUkggfCBIRFRfVUggfCBEVF9QUkUsIHJk
LCByYiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNj
KSB8IHR5cGUgfCBEVF9VUCwgcmQsIHJuLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IGxkcmhfdShpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIGR0cmhfZChEYXRhVHJhbnNmZXJUeXBlMiB0eXBlLCBpbnQgcmQsIGludCBy
YiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBMRFJIIHwgSERUX1VIIHwgRFRf
VVAgfCBEVF9QUkUsIHJkLCByYiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19j
YXN0PEFSTVdvcmQ+KGNjKSB8IHR5cGUsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgc3RyaF9yKGludCBybiwgaW50IHJtLCBpbnQgcmQsIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIGR0cmhfZHIoRGF0YVRyYW5zZmVyVHlwZTIgdHlwZSwgaW50IHJkLCBp
bnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFNUUkggfCBIRFRfVUggfCBEVF9V
UCB8IERUX1BSRSwgcmQsIHJuLCBybSk7CisgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2Fz
dDxBUk1Xb3JkPihjYykgfCB0eXBlLCByZCwgcm4sIHJtKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgZmR0cl91KGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGZkdHJfdShEYXRhVHJhbnNmZXJUeXBlRmxv
YXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmKTsKLSAgICAgICAgICAg
IGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IEZEVFIgfCBEVF9VUCB8IChpc0xv
YWQgPyBEVF9MT0FEIDogMCksIHJkLCByYiwgb3AyKTsKKyAgICAgICAgICAgIEFTU0VSVChvcDIg
PD0gMHhmZiAmJiByZCA8PSAxNSk7CisgICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAs
IHMyLCBzNCAuLi4gczMwIGFyZSBzdXBwb3J0ZWQuICovCisgICAgICAgICAgICBtX2J1ZmZlci5w
dXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgRFRfVVAgfCB0eXBlIHwgKHJkIDw8IDEy
KSB8IFJOKHJiKSB8IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZkdHJfZChib29s
IGlzTG9hZCwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCBmZHRyX2QoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwg
aW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChvcDIgPD0gMHhmZik7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBGRFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSwgcmQsIHJi
LCBvcDIpOworICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1KTsKKyAg
ICAgICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJlIHN1cHBv
cnRlZC4gKi8KKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIHB1c2hfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAg
bV9idWZmZXIucHV0SW50KGNjIHwgRFRSIHwgRFRfV0IgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8
IFJEKHJlZykgfCAweDQpOworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0
PEFSTVdvcmQ+KGNjKSB8IFN0b3JlVWludDMyIHwgRFRfV0IgfCBSTihBUk1SZWdpc3RlcnM6OnNw
KSB8IFJEKHJlZykgfCAweDQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBwb3BfcihpbnQg
cmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKEFS
TVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KGNjIHwgKERU
UiBeIERUX1BSRSkgfCBEVF9MT0FEIHwgRFRfVVAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJE
KHJlZykgfCAweDQpOworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFS
TVdvcmQ+KGNjKSB8IChMb2FkVWludDMyIF4gRFRfUFJFKSB8IERUX1VQIHwgUk4oQVJNUmVnaXN0
ZXJzOjpzcCkgfCBSRChyZWcpIHwgMHg0KTsKICAgICAgICAgfQogCiAgICAgICAgIGlubGluZSB2
b2lkIHBva2VfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAg
ICAgICAgZHRyX2QoZmFsc2UsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOworICAgICAg
ICAgICAgZHRyX2QoU3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOwog
ICAgICAgICB9CiAKICAgICAgICAgaW5saW5lIHZvaWQgcGVla19yKGludCByZWcsIENvbmRpdGlv
biBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBkdHJfdSh0cnVlLCByZWcsIEFSTVJl
Z2lzdGVyczo6c3AsIDAsIGNjKTsKKyAgICAgICAgICAgIGR0cl91KExvYWRVaW50MzIsIHJlZywg
QVJNUmVnaXN0ZXJzOjpzcCwgMCwgY2MpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2bW92
X3ZmcDY0X3IoaW50IHNtLCBpbnQgcnQsIGludCBydDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQocnQgIT0gcnQyKTsKKyAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQy
KSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAoKHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCB2bW92X3ZmcF9yKGludCBzbiwgaW50IHJ0LCBDb25kaXRp
b24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bW92X2FybTY0X3IoaW50IHJ0LCBpbnQgcnQyLCBp
bnQgc20sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
cnQgIT0gcnQyKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1X
b3JkPihjYykgfCBWTU9WX0FSTTY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAo
KHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2bW92
X3ZmcDMyX3IoaW50IHNuLCBpbnQgcnQsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNp
c2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1PVl9WRlAsIHJ0IDw8IDEsIHNu
LCAwKTsKKyAgICAgICAgICAgIGVtaXRTaW5nbGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFS
TVdvcmQ+KGNjKSB8IFZNT1ZfVkZQMzIsIHJ0IDw8IDEsIHNuLCAwKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgdm1vdl9hcm1fcihpbnQgcnQsIGludCBzbiwgQ29uZGl0aW9uIGNjID0gQUwp
CisgICAgICAgIHZvaWQgdm1vdl9hcm0zMl9yKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJ0IDw9IDE1KTsKLSAgICAgICAg
ICAgIGVtaXRTaW5nbGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZN
T1ZfQVJNLCBydCA8PCAxLCBzbiwgMCk7CisgICAgICAgICAgICBlbWl0U2luZ2xlUHJlY2lzaW9u
SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwg
MCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHZjdnRfZjY0X3MzMl9yKGludCBkZCwgaW50
IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKQEAgLTU0NSwyNiArNTk3LDM3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJN
V29yZD4oY2MpIHwgVkNWVF9TMzJfRjY0LCAoc2QgPj4gMSksIDAsIGRtKTsKICAgICAgICAgfQog
CisgICAgICAgIHZvaWQgdmN2dF91MzJfZjY0X3IoaW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBz
ZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAyCisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9u
SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWQ1ZUX1UzMl9GNjQsIChzZCA+PiAxKSwg
MCwgZG0pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2Y3Z0X2Y2NF9mMzJfcihpbnQgZGQs
IGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChkZCA8PSAxNSAmJiBzbSA8PSAxNSk7CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9u
SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWQ1ZUX0Y2NF9GMzIsIGRkLCAwLCBzbSk7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHZjdnRfZjMyX2Y2NF9yKGludCBkZCwgaW50IHNt
LCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGRkIDw9
IDE1ICYmIHNtIDw9IDE1KTsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0
YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZDVlRfRjMyX0Y2NCwgZGQsIDAsIHNtKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgdm1yc19hcHNyKENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2Mp
IHwgVk1SU19BUFNSKTsKICAgICAgICAgfQogCi0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUp
CiAgICAgICAgIHZvaWQgY2x6X3IoaW50IHJkLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29y
ZD4oY2MpIHwgQ0xaIHwgUkQocmQpIHwgUk0ocm0pKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAg
ICAgICAgdm9pZCBia3B0KEFSTVdvcmQgdmFsdWUpCiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FS
Q0hfQVRfTEVBU1QoNSkKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChCS1BUIHwgKCh2YWx1
ZSAmIDB4ZmYwKSA8PCA0KSB8ICh2YWx1ZSAmIDB4ZikpOwotI2Vsc2UKLSAgICAgICAgICAgIC8v
IENhbm5vdCBhY2Nlc3MgdG8gWmVybyBtZW1vcnkgYWRkcmVzcwotICAgICAgICAgICAgZHRyX2Ry
KHRydWUsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6
UzApOwotI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG5vcCgpCkBAIC01NzQsMjMg
KzYzNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGJ4KGludCBybSwgQ29u
ZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkg
fHwgZGVmaW5lZChfX0FSTV9BUkNIXzRUX18pCiAgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBCWCwgMCwgMCwgUk0ocm0pKTsKLSNlbHNlCi0gICAgICAgICAg
ICBtb3ZfcihBUk1SZWdpc3RlcnM6OnBjLCBSTShybSksIGNjKTsKLSNlbmRpZgogICAgICAgICB9
CiAKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgYmx4KGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwp
CiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKICAgICAgICAgICAgIGVt
aXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IEJMWCwgMCwgMCwgUk0ocm0pKTsKLSNl
bHNlCi0gICAgICAgICAgICBBU1NFUlQocm0gIT0gMTQpOwotICAgICAgICAgICAgZW5zdXJlU3Bh
Y2UoMiAqIHNpemVvZihBUk1Xb3JkKSwgMCk7Ci0gICAgICAgICAgICBtb3ZfcihBUk1SZWdpc3Rl
cnM6OmxyLCBBUk1SZWdpc3RlcnM6OnBjLCBjYyk7Ci0gICAgICAgICAgICBieChybSwgY2MpOwot
I2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICAgICAgfQog
CkBAIC02NTMsMTIgKzcwNSwzMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBtX2J1ZmZlci5zaXplT2ZDb25zdGFudFBvb2woKTsKICAgICAgICAgfQogCi0gICAgICAgIEFz
c2VtYmxlckxhYmVsIGxhYmVsKCkKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxJZ25vcmlu
Z1dhdGNocG9pbnRzKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3Bh
Y2VGb3JBbnlPbmVJbnN0cnVjdGlvbigpOworICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3Bh
Y2VGb3JBbnlJbnN0cnVjdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVs
KCk7CiAgICAgICAgIH0KIAorICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9p
bnQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZUZvckFueUlu
c3RydWN0aW9uKG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSAvIHNpemVvZihBUk1Xb3JkKSk7Cisg
ICAgICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAg
ICAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSAobV9pbmRleE9mVGFpbE9mTGFzdFdhdGNo
cG9pbnQgLSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpKQorICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGxhYmVsKCk7CisgICAgICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9
IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgICAg
IHJldHVybiBsYWJlbCgpOworICAgICAgICB9CisKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFi
ZWwoKQorICAgICAgICB7CisgICAgICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBsYWJl
bElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICAgICAgICAgIHdoaWxlIChyZXN1bHQubV9vZmZz
ZXQgKyAxIDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpIHsKKyAgICAgICAgICAgICAg
ICBub3AoKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2lu
dHMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH0KKwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQogICAgICAg
ICB7CiAgICAgICAgICAgICB3aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQpA
QCAtNjg4LDE0ICs3NjAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEFS
TVdvcmQqIGdldExkckltbUFkZHJlc3MoQVJNV29yZCogaW5zbikKICAgICAgICAgewotI2lmIFdU
Rl9BUk1fQVJDSF9BVF9MRUFTVCg1KQogICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbGwKICAg
ICAgICAgICAgIGlmICgoKmluc24gJiAweDBmN2YwMDAwKSAhPSAweDA1MWYwMDAwKSB7CiAgICAg
ICAgICAgICAgICAgLy8gTXVzdCBiZSBCTFgKICAgICAgICAgICAgICAgICBBU1NFUlQoKCppbnNu
ICYgMHgwMTJmZmYzMCkgPT0gMHgwMTJmZmYzMCk7CiAgICAgICAgICAgICAgICAgaW5zbi0tOwog
ICAgICAgICAgICAgfQotI2VuZGlmCisKICAgICAgICAgICAgIC8vIE11c3QgYmUgYW4gbGRyIC4u
LiwgW3BjICsvLSBpbW1dCiAgICAgICAgICAgICBBU1NFUlQoKCppbnNuICYgMHgwZjdmMDAwMCkg
PT0gMHgwNTFmMDAwMCk7CiAKQEAgLTc5OSw2ICs4NzAsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZFBvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyhmcm9tKSkpKTsKICAg
ICAgICAgfQogCisgICAgICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICAgICAgeworICAgICAgICAgICAgQVJNV29yZCog
aW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpIC0gMTsK
KyAgICAgICAgICAgIGludHB0cl90IGRpZmYgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0
bykgLSAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgKyBEZWZh
dWx0UHJlZmV0Y2hpbmcgKiBzaXplb2YoQVJNV29yZCkpOworCisgICAgICAgICAgICBpZiAoIShk
aWZmICYgMSkpIHsKKyAgICAgICAgICAgICAgICBkaWZmID4+PSAyOworICAgICAgICAgICAgICAg
IGlmICgoZGlmZiA8PSBCT0ZGU0VUX01BWCAmJiBkaWZmID49IEJPRkZTRVRfTUlOKSkgeworICAg
ICAgICAgICAgICAgICAgICAgLy8gRGlyZWN0IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAg
IGluc25bMF0gPSBCIHwgQUwgfCAoZGlmZiAmIEJSQU5DSF9NQVNLKTsKKyAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlRmx1c2goaW5zbiwgc2l6ZW9mKEFSTVdvcmQpKTsKKyAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIExvYWQgdGFyZ2V0LgorICAgICAgICAgICAgaW5zblswXSA9IExvYWRVaW50MzIg
fCBBTCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQoQVJNUmVnaXN0ZXJzOjpwYykgfCA0Owor
ICAgICAgICAgICAgaW5zblsxXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4odG8pOworICAg
ICAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBzaXplb2YoQVJNV29yZCkgKiAyKTsKKyAgICAgICAg
fQorCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzaXplb2YoQVJNV29yZCkgKiAyOworICAgICAg
ICB9CisKICAgICAgICAgLy8gQWRkcmVzcyBvcGVyYXRpb25zCiAKICAgICAgICAgc3RhdGljIHZv
aWQqIGdldFJlbG9jYXRlZEFkZHJlc3Modm9pZCogY29kZSwgQXNzZW1ibGVyTGFiZWwgbGFiZWwp
CkBAIC04MjAsMTMgKzkxNywyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBIYW5k
bGUgaW1tZWRpYXRlcwogCisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1Xb3JkIGlt
bSk7CisKKyAgICAgICAgLy8gRmFzdCBjYXNlIGlmIGltbSBpcyBrbm93biB0byBiZSBiZXR3ZWVu
IDAgYW5kIDB4ZmYKICAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0T3AyQnl0ZShBUk1Xb3JkIGlt
bSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGltbSA8PSAweGZmKTsKLSAgICAgICAg
ICAgIHJldHVybiBPUDJfSU1NaCB8IChpbW0gJiAweDBmKSB8ICgoaW1tICYgMHhmMCkgPDwgNCkg
OworICAgICAgICAgICAgcmV0dXJuIE9QMl9JTU0gfCBpbW07CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgQVJNV29yZCBnZXRPcDIoQVJNV29yZCBpbW0pOworICAgICAgICBzdGF0aWMgQVJN
V29yZCBnZXRPcDJIYWxmKEFSTVdvcmQgaW1tKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoaW1tIDw9IDB4ZmYpOworICAgICAgICAgICAgcmV0dXJuIE9QMl9JTU1fSEFMRiB8IChpbW0g
JiAweDBmKSB8ICgoaW1tICYgMHhmMCkgPDwgNCkgOworICAgICAgICB9CiAKICNpZiBXVEZfQVJN
X0FSQ0hfQVRfTEVBU1QoNykKICAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0SW1tMTZPcDIoQVJN
V29yZCBpbW0pCkBAIC04NDAsMjAgKzk0NCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBtb3ZlSW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCk7CiAgICAgICAgIEFSTVdvcmQgZW5j
b2RlQ29tcGxleEltbShBUk1Xb3JkIGltbSwgaW50IGRlc3QpOwogCi0gICAgICAgIEFSTVdvcmQg
Z2V0T2Zmc2V0Rm9ySGFsZndvcmREYXRhVHJhbnNmZXIoQVJNV29yZCBpbW0sIGludCB0bXBSZWcp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEVuY29kZSBpbW1lZGlhdGUgZGF0YSBpbiB0aGUg
aW5zdHJ1Y3Rpb24gaWYgaXQgaXMgcG9zc2libGUKLSAgICAgICAgICAgIGlmIChpbW0gPD0gMHhm
ZikKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0T3AyQnl0ZShpbW0pOwotICAgICAgICAgICAg
Ly8gT3RoZXJ3aXNlLCBzdG9yZSB0aGUgZGF0YSBpbiBhIHRlbXBvcmFyeSByZWdpc3RlcgotICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZUNvbXBsZXhJbW0oaW1tLCB0bXBSZWcpOwotICAgICAgICB9
Ci0KICAgICAgICAgLy8gTWVtb3J5IGxvYWQvc3RvcmUgaGVscGVycwogCi0gICAgICAgIHZvaWQg
ZGF0YVRyYW5zZmVyMzIoYm9vbCBpc0xvYWQsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklE
IGJhc2UsIGludDMyX3Qgb2Zmc2V0LCBib29sIGJ5dGVzID0gZmFsc2UpOwotICAgICAgICB2b2lk
IGJhc2VJbmRleFRyYW5zZmVyMzIoYm9vbCBpc0xvYWQsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQs
IGJvb2wgYnl0ZXMgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgZG91YmxlVHJhbnNmZXIoYm9vbCBp
c0xvYWQsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZz
ZXQpOworICAgICAgICB2b2lkIGRhdGFUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGUxIHR5cGUs
IFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KTsKKyAg
ICAgICAgdm9pZCBiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGUxIHR5cGUsIFJl
Z2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGRhdGFUcmFuc2ZlcjE2KERhdGFU
cmFuc2ZlclR5cGUyIHR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGlu
dDMyX3Qgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBiYXNlSW5kZXhUcmFuc2ZlcjE2KERhdGFUcmFu
c2ZlclR5cGUyIHR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGRh
dGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBGUFJlZ2lzdGVySUQg
c3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBi
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBGUFJlZ2lz
dGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgaW50MzJfdCBvZmZzZXQpOwogCiAgICAgICAgIC8vIENvbnN0YW50IHBvb2wgaG5hZGxlcnMK
IApAQCAtOTAxLDI1ICs5OTksMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIEFSTVdvcmQgUk0oaW50IHJlZykKKyAgICAgICAgc3RhdGljIEFSTVdv
cmQgUk0oaW50IHJlZykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1S
ZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIHJldHVybiByZWc7CiAgICAgICAgIH0KIAotICAg
ICAgICBBUk1Xb3JkIFJTKGludCByZWcpCisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJTKGludCBy
ZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpw
Yyk7CiAgICAgICAgICAgICByZXR1cm4gcmVnIDw8IDg7CiAgICAgICAgIH0KIAotICAgICAgICBB
Uk1Xb3JkIFJEKGludCByZWcpCisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJEKGludCByZWcpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAg
ICAgICAgICAgICByZXR1cm4gcmVnIDw8IDEyOwogICAgICAgICB9CiAKLSAgICAgICAgQVJNV29y
ZCBSTihpbnQgcmVnKQorICAgICAgICBzdGF0aWMgQVJNV29yZCBSTihpbnQgcmVnKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlZyA8PCAxNjsKQEAgLTkzNCw2ICsxMDMyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgQVJNQnVmZmVyIG1fYnVmZmVyOwogICAgICAgICBKdW1wcyBtX2p1bXBz
OworICAgICAgICB1aW50MzJfdCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmgK
aW5kZXggZTJlYTI2MS4uNDMwMTQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29s
LmgKQEAgLTEyNyw5ICsxMjcsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlcjo6
ZW5zdXJlU3BhY2UoaW5zblNwYWNlKTsKICAgICB9CiAKLSAgICB2b2lkIGVuc3VyZVNwYWNlRm9y
QW55T25lSW5zdHJ1Y3Rpb24oKQorICAgIHZvaWQgZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlv
bihpbnQgYW1vdW50ID0gMSkKICAgICB7Ci0gICAgICAgIGZsdXNoSWZOb1NwYWNlRm9yKG1heElu
c3RydWN0aW9uU2l6ZSwgc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIGZsdXNoSWZOb1NwYWNl
Rm9yKGFtb3VudCAqIG1heEluc3RydWN0aW9uU2l6ZSwgYW1vdW50ICogc2l6ZW9mKHVpbnQ2NF90
KSk7CiAgICAgfQogCiAgICAgYm9vbCBpc0FsaWduZWQoaW50IGFsaWdubWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAK
aW5kZXggMmRiNWRmMS4uMGFkZjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKQEAgLTc3LDE4ICs3NywxOCBAQCB2
b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJ
bmRleCBhZGRyZXNzLCBSZWdpc3RlcgogCiAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IDAgJiYg
YWRkcmVzcy5vZmZzZXQgKyAweDIgPD0gMHhmZikgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRf
cihBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkcmhfdShkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoYWRkcmVzcy5vZmZzZXQpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF91KEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZShhZGRy
ZXNzLm9mZnNldCArIDB4MikpOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX3UodHJ1ZSwgVFlQ
RV9VSCwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFk
ZHJlc3Mub2Zmc2V0KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfdSh0cnVlLCBUWVBFX1VI
LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9w
MkhhbGYoYWRkcmVzcy5vZmZzZXQgKyAweDIpKTsKICAgICB9IGVsc2UgaWYgKGFkZHJlc3Mub2Zm
c2V0IDwgMCAmJiBhZGRyZXNzLm9mZnNldCA+PSAtMHhmZikgewogICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmxkcmhfZChkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoLWFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcmhfZChB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoLWFkZHJlc3Mub2Zmc2V0IC0gMHgyKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfZCh0
cnVlLCBUWVBFX1VILCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoLWFkZHJlc3Mub2Zmc2V0KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfZCh0cnVl
LCBUWVBFX1VILCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoLWFkZHJlc3Mub2Zmc2V0IC0gMHgyKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLm9m
ZnNldCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJl
Z2lzdGVyczo6UzAsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcmhfcihkZXN0LCBhZGRy
ZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX3Io
dHJ1ZSwgVFlQRV9VSCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpT
MCwgQVJNQXNzZW1ibGVyOjpPUDJfSU1NIHwgMHgyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRy
aF9yKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfcih0cnVlLCBUWVBFX1VILCBBUk1SZWdpc3RlcnM6OlMw
LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgIH0KICAgICBtX2Fzc2VtYmxl
ci5vcnJfcihkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5sc2woQVJNUmVnaXN0ZXJzOjpTMCwgMTYp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uaAppbmRleCA4ZWEyOWUzLi5hNjI2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCkBAIC05MCw2ICs5MCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHNfcihkZXN0LCBkZXN0LCBzcmMp
OwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3Ay
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRzX3IoZGVz
dCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIEFSTVJlZ2lz
dGVyczo6UzEpOwpAQCAtMTE4LDYgKzEyMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZHNfcihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVn
aXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZv
aWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3Rl
cnM6OlMwLCB0cnVlKTsKQEAgLTEzNiwxMyArMTQ2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0LCBzcmMsIHcpOwogICAgIH0KIAotICAgIHZvaWQgbHNo
aWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lk
IGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4MWYpOwotICAgICAg
ICBBU1NFUlQodyAhPSBBUk1Bc3NlbWJsZXI6OklOVkFMSURfSU1NKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRfYW1vdW50LCB3KTsKKyAgICAgICAg
bHNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgbHNo
aWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0
ZSgweDFmKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hp
ZnRBbW91bnQsIHcpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2Vt
Ymxlci5sc2xfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc2xfcihzcmMsIEFSTVJlZ2lzdGVyczo6UzApKTsK
ICAgICB9CiAKICAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKQEAgLTE1NSwxMyArMTY5LDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
bW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzbChzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwog
ICAgIH0KIAotICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHNyYyA9PSBkZXN0KSB7Ci0gICAgICAgICAgICBt
b3ZlKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBzcmMgPSBBUk1SZWdpc3Rl
cnM6OlMwOworICAgICAgICBpZiAob3AyID09IGRlc3QpIHsKKyAgICAgICAgICAgIGlmIChvcDEg
PT0gZGVzdCkgeworICAgICAgICAgICAgICAgIG1vdmUob3AyLCBBUk1SZWdpc3RlcnM6OlMwKTsK
KyAgICAgICAgICAgICAgICBvcDIgPSBBUk1SZWdpc3RlcnM6OlMwOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTd2FwIHRoZSBvcGVyYW5kcy4KKyAgICAgICAgICAg
ICAgICBSZWdpc3RlcklEIHRtcCA9IG9wMTsKKyAgICAgICAgICAgICAgICBvcDEgPSBvcDI7Cisg
ICAgICAgICAgICAgICAgb3AyID0gdG1wOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm11bHNfcihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tdWxzX3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKworICAgIHZvaWQgbXVsMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG11bDMyKHNyYywg
ZGVzdCwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTcyLDcgKzE5OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbmVnMzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIucnNic19yKHNyY0Rlc3QsIHNyY0Rlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
KDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIucnNic19yKHNyY0Rlc3QsIHNyY0Rlc3QsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xOTUsMTUgKzIyMSwxOSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm9ycnNfcihkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCi0gICAg
dm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0X2Ftb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDIoMHgxZik7
Ci0gICAgICAgIEFTU0VSVCh3ICE9IEFSTUFzc2VtYmxlcjo6SU5WQUxJRF9JTU0pOwotICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRfcihBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdF9hbW91bnQsIHcpOwor
ICAgICAgICByc2hpZnQzMihkZXN0LCBzaGlmdEFtb3VudCwgZGVzdCk7CisgICAgfQorCisgICAg
dm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDB4MWYpOworICAgICAgICBtX2Fzc2VtYmxlci5hbmRfcihBUk1SZWdpc3RlcnM6
OlMwLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3Qs
IG1fYXNzZW1ibGVyLmFzcl9yKGRlc3QsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmFzcl9yKHNyYywgQVJNUmVnaXN0ZXJz
OjpTMCkpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgcnNoaWZ0MzIoZGVzdCwgaW1tLCBk
ZXN0KTsKQEAgLTIxMywxNiArMjQzLDIwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5hc3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4
MWYpKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9h
bW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKworICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQg
c2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9
IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4MWYpOwotICAgICAgICBBU1NFUlQodyAhPSBBUk1Bc3Nl
bWJsZXI6OklOVkFMSURfSU1NKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0
ZXJzOjpTMCwgc2hpZnRfYW1vdW50LCB3KTsKLSAgICAgICAgCi0gICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3JfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlMwKSk7
CisgICAgICAgIHVyc2hpZnQzMihkZXN0LCBzaGlmdEFtb3VudCwgZGVzdCk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRB
bW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFz
c2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJN
UmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQsIHcpOworCisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3JfcihzcmMsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAg
ICB9CisKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIu
bHNyKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwpAQCAtMjY2LDYgKzMwMCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0K
IAorICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5lb3JzX3IoZGVzdCwgb3AxLCBv
cDIpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQpAQCAtMjk1LDIy
ICszMzQsNDIgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkOChJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRy
YW5zZmVyMzIodHJ1ZSwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCwgdHJ1ZSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2
b2lkIGxvYWQ4KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKHRydWUsIGRlc3QsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRk
cmVzcy5vZmZzZXQsIHRydWUpOworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2Zl
cjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIGxvYWQ4U2lnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2
KEFSTUFzc2VtYmxlcjo6TG9hZEludDgsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgbG9hZDE2KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIxNihBUk1Bc3Nl
bWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgbG9hZDE2KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFz
c2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBz
dGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBsb2FkMTZTaWduZWQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMTYoQVJNQXNz
ZW1ibGVyOjpMb2FkSW50MTYsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3Rh
dGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAog
ICAgIHZvaWQgbG9hZDMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMih0cnVlLCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRy
YW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQzMihCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4
VHJhbnNmZXIzMih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRl
c3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAogI2lmIENQVShBUk1WNV9PUl9MT1dF
UikKQEAgLTMzMSw3ICszOTAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBEYXRhTGFiZWwz
MiBkYXRhTGFiZWwodGhpcyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVn
aXN0ZXJzOjpTMCwgMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91cih0cnVlLCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJf
dXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lz
dGVyczo6UzApOwogICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwogICAgIH0KICAgICAKQEAgLTM0
MiwzNiArNDAxLDMyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGRhdGFMYWJlbDsKICAgICB9
CiAKLSAgICB2b2lkIGxvYWQxNihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQg
c3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihB
Uk1SZWdpc3RlcnM6OlMxLCBhZGRyZXNzLmJhc2UsIG1fYXNzZW1ibGVyLmxzbChhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKSk7Ci0gICAgICAgIGxvYWQxNihBZGRyZXNzKEFSTVJlZ2lzdGVy
czo6UzEsIGFkZHJlc3Mub2Zmc2V0KSwgZGVzdCk7CisgICAgICAgIERhdGFMYWJlbDMyIGRhdGFM
YWJlbCh0aGlzKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6
OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKEFSTUFzc2VtYmxlcjo6U3RvcmVV
aW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgcmV0
dXJuIGRhdGFMYWJlbDsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkMTYoSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKworICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGlmIChhZGRyZXNzLm9m
ZnNldCA+PSAwKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaF91KGRlc3QsIGFkZHJlc3Mu
YmFzZSwgbV9hc3NlbWJsZXIuZ2V0T2Zmc2V0Rm9ySGFsZndvcmREYXRhVHJhbnNmZXIoYWRkcmVz
cy5vZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubGRyaF9kKGRlc3QsIGFkZHJlc3MuYmFzZSwgbV9hc3NlbWJsZXIuZ2V0T2Zm
c2V0Rm9ySGFsZndvcmREYXRhVHJhbnNmZXIoLWFkZHJlc3Mub2Zmc2V0LCBBUk1SZWdpc3RlcnM6
OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1i
bGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGlj
X2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAotICAg
IERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIERhdGFMYWJlbDMyIGRhdGFMYWJlbCh0aGlz
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCAwKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKGZhbHNlLCBzcmMsIGFkZHJlc3MuYmFzZSwgQVJN
UmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIHJldHVybiBkYXRhTGFiZWw7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQxNiwgc3Jj
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5z
Y2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0
ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuZGF0YVRyYW5zZmVyMzIoZmFsc2UsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9m
ZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQog
CiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoZmFsc2UsIHNyYywg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2Nh
bGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5z
ZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0
KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpCkBAIC0zODAsMTcgKzQzNSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHN0
b3JlMzIoQVJNUmVnaXN0ZXJzOjpTMSwgYWRkcmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBzdG9y
ZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bW92ZShpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5k
ZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNj
YWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmUzMihSZWdpc3Rl
cklEIHNyYywgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91
bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNz
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KGZhbHNlLCBzcmMsIEFSTVJlZ2lzdGVyczo6
UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OlN0b3JlVWlu
dDMyLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUz
MihUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdv
cmQ+KGFkZHJlc3MpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShpbW0ubV92YWx1ZSwg
QVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KGZhbHNlLCBBUk1S
ZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
ZHRyX3UoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVn
aXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBwb3AoUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtNDIyLDcgKzQ4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbW92ZShSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVz
dCwgc3JjKTsKKyAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubW92X3IoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTU2Niw2ICs2MjgsMTIgQEAgcHVibGljOgogICAg
ICAgICBsb2FkMzIoYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgfQogCisgICAgdm9p
ZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbG9h
ZDMyKEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMCwgMCksIEFSTVJlZ2lzdGVyczo6cGMpOworICAg
IH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0g
T3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQg
PT0gTm9uWmVybykpOwpAQCAtNTczLDYgKzY0MSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAg
ICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgo
Y29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8
fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAg
ICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwor
ICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29u
ZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAo
Y29uZCA9PSBOb25aZXJvKSk7CkBAIC01ODcsMjggKzY2Miw0NyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKICAgICB9
CiAKLSAgICB2b2lkIG11bGwzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKLSAgICAgICAg
aWYgKHNyYzEgPT0gZGVzdCkgewotICAgICAgICAgICAgbW92ZShzcmMxLCBBUk1SZWdpc3RlcnM6
OlMwKTsKLSAgICAgICAgICAgIHNyYzEgPSBBUk1SZWdpc3RlcnM6OlMwOworICAgICAgICBBU1NF
UlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVy
bykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBhZGQzMihpbW0sIGRlc3QpOworICAg
ICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Cisg
ICAgfQorCisgICAgdm9pZCBtdWxsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAob3AyID09IGRlc3QpIHsKKyAgICAg
ICAgICAgIGlmIChvcDEgPT0gZGVzdCkgeworICAgICAgICAgICAgICAgIG1vdmUob3AyLCBBUk1S
ZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgICAgICBvcDIgPSBBUk1SZWdpc3RlcnM6OlMwOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTd2FwIHRoZSBvcGVyYW5k
cy4KKyAgICAgICAgICAgICAgICBSZWdpc3RlcklEIHRtcCA9IG9wMTsKKyAgICAgICAgICAgICAg
ICBvcDEgPSBvcDI7CisgICAgICAgICAgICAgICAgb3AyID0gdG1wOworICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11bGxfcihBUk1SZWdpc3RlcnM6OlMxLCBk
ZXN0LCBzcmMyLCBzcmMxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsbF9yKEFSTVJlZ2lzdGVy
czo6UzEsIGRlc3QsIG9wMSwgb3AyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVn
aXN0ZXJzOjpTMSwgbV9hc3NlbWJsZXIuYXNyKGRlc3QsIDMxKSk7CiAgICAgfQogCi0gICAgSnVt
cCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8
IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgaWYgKGNvbmQg
PT0gT3ZlcmZsb3cpIHsKLSAgICAgICAgICAgIG11bGwzMihzcmMsIGRlc3QsIGRlc3QpOworICAg
ICAgICAgICAgbXVsbDMyKHNyYzEsIHNyYzIsIGRlc3QpOwogICAgICAgICAgICAgY29uZCA9IE5v
blplcm87CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgbXVsMzIoc3JjLCBk
ZXN0KTsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOwogICAgICAgICByZXR1
cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisg
ICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25k
LCBzcmMsIGRlc3QsIGRlc3QpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwpA
QCAtNjcyLDcgKzc2Niw2IEBAIHB1YmxpYzoKICAgICBDYWxsIG5lYXJDYWxsKCkKICAgICB7CiAj
aWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCi0gICAgICAgIGVuc3VyZVNwYWNlKDIgKiBzaXpl
b2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRC
cmFuY2hUYXJnZXQoQVJNUmVnaXN0ZXJzOjpTMSwgQVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChBUk1SZWdpc3RlcnM6OlMxKSwgQ2Fs
bDo6TGlua2FibGVOZWFyKTsKICNlbHNlCkBAIC02OTksMTUgKzc5MiwxNSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcF9yKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3Io
ZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3Zf
cihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDAp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9y
KGxlZnQsIG1fYXNzZW1ibGVyLmdldEltbShyaWdodC5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMw
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
KDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRP
cDIoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRl
c3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQp
KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTcy
Miw4ICs4MTUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcigwLCBy
ZWcpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3RfcihyZWcsIG1f
YXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJN
Q29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNz
ZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwg
QVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwogICAgIH0K
IAogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3Ms
IFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCkBAIC03NDYsMjUgKzgzOSwyNSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVn
aXN0ZXJzOjpTMSwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KHRydWUsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lz
dGVyczo6UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOwogICAgICAg
ICBhZGQzMihpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJf
dW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVz
cy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShmYWxzZSwgQVJNUmVnaXN0ZXJz
OjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFS
TUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6
UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1
dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1t
KEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0
cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdSh0cnVlLCBBUk1SZWdpc3RlcnM6OlMxLCBB
Uk1SZWdpc3RlcnM6OlMxLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1i
bGVyOjpMb2FkVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsK
ICAgICAgICAgc3ViMzIoaW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+
KGFkZHJlc3MubV9wdHIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoZmFsc2UsIEFSTVJl
Z2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5k
dHJfdShBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdp
c3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5f
aW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykp
OwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdSh0cnVlLCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMw
LCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMy
LCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQpCkBAIC04NjEsMjAgKzk1NCw1MiBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAg
ICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2Vt
Ymxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZG91YmxlVHJhbnNmZXIodHJ1ZSwgZGVz
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRh
dGFUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkRG91YmxlKEJhc2VJ
bmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5z
Y2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWREb3VibGUoY29u
c3Qgdm9pZCogYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIChBUk1Xb3JkKWFkZHJlc3MpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5mZHRyX3UodHJ1ZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4o
YWRkcmVzcykpLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmR0cl91
KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Cisg
ICAgfQorCisgICAgdm9pZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXJGbG9h
dChBUk1Bc3NlbWJsZXI6OlN0b3JlRmxvYXQsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CiAg
ICAgfQogCiAgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRvdWJsZVRyYW5zZmVy
KGZhbHNlLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICBtX2Fz
c2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVE
b3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVE
b3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdG9y
ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNz
KSksIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXJG
bG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDAp
OworICAgIH0KKworICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCkKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnZtb3ZfZjY0X3IoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGFk
ZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTg4MiwxNyAr
MTAwNywzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0X3IoZGVzdCwg
ZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgb3Ax
LCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZhZGRfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQg
YWRkRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGxvYWREb3VibGUoc3JjLCBBUk1SZWdpc3RlcnM6OlNEMCk7CiAgICAgICAgIGFkZERvdWJsZShB
Uk1SZWdpc3RlcnM6OlNEMCwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhZGREb3VibGUoQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZERvdWJsZShhZGRyZXNzLm1fcHRyLCBBUk1SZWdpc3RlcnM6OlNEMCk7CisgICAgICAgIGFk
ZERvdWJsZShBUk1SZWdpc3RlcnM6OlNEMCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBkaXZE
b3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci52ZGl2X2Y2NF9yKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAg
dm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52ZGl2X2Y2NF9yKGRlc3Qs
IG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8g
VW50ZXN0ZWQKQEAgLTkwNSw2ICsxMDQ2LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIudnN1Yl9mNjRfcihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViRG91
YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9mNjRfcihkZXN0LCBvcDEsIG9wMik7
CisgICAgfQorCiAgICAgdm9pZCBzdWJEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbG9hZERvdWJsZShzcmMsIEFSTVJlZ2lzdGVyczo6U0QwKTsK
QEAgLTkyMiwzOSArMTA2OCw1NSBAQCBwdWJsaWM6CiAgICAgICAgIG11bERvdWJsZShBUk1SZWdp
c3RlcnM6OlNEMCwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3Rl
cklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci52bXVsX2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAg
ICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci52c3FydF9mNjRfcihkZXN0LCBzcmMpOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKKyAg
ICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBtX2Fzc2VtYmxlci52
YWJzX2Y2NF9yKGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBuZWdhdGVEb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci52bmVnX2Y2NF9yKGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0SW50
MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci52bW92X3ZmcF9yKGRlc3QgPDwgMSwgc3JjKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIudm1vdl92ZnAzMl9yKGRlc3QgPDwgMSwgc3JjKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIudmN2dF9mNjRfczMyX3IoZGVzdCwgZGVzdCA8PCAxKTsKICAgICB9CiAKICAgICB2b2lkIGNv
bnZlcnRJbnQzMlRvRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBVbnRlc3RlZAotICAgICAgICAvLyBm
bGRzIGRvZXMgbm90IHdvcnRoIHRoZSBlZmZvcnQgaGVyZQogICAgICAgICBsb2FkMzIoc3JjLCBB
Uk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0
ZXJzOjpTMSwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShB
YnNvbHV0ZUFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBVbnRlc3RlZAotICAgICAgICAvLyBmbGRzIGRvZXMgbm90
IHdvcnRoIHRoZSBlZmZvcnQgaGVyZQotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFS
TVJlZ2lzdGVyczo6UzEsIChBUk1Xb3JkKXNyYy5tX3B0cik7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmR0cl91KHRydWUsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOworICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpTMSk7Cisg
ICAgICAgIGxvYWQzMihBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1SZWdpc3RlcnM6OlMx
KTsKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0ZXJzOjpTMSwgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mNjRf
ZjMyX3IoZHN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQgY29udmVydERvdWJsZVRvRmxvYXQo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnZjdnRfZjMyX2Y2NF9yKGRzdCwgc3JjKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5j
aERvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0
ZXJJRCByaWdodCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZjbXBfZjY0X3IobGVmdCwg
cmlnaHQpOwpAQCAtOTY4LDEyICsxMTMwLDQyIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVz
dWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAg
Ly8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxl
IGluIDMyIGJpdHMKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NSU4p
LgotICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICBlbnVtIEJyYW5jaFRydW5jYXRlVHlwZSB7IEJyYW5jaElm
VHJ1bmNhdGVGYWlsZWQsIEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNzZnVsIH07CisgICAgSnVtcCBi
cmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWls
ZWQpCiAgICAgewotICAgICAgICBVTlVTRURfUEFSQU0oc3JjKTsKLSAgICAgICAgVU5VU0VEX1BB
UkFNKGRlc3QpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IGp1bXAoKTsKKyAgICAgICAgdHJ1bmNhdGVEb3VibGVUb0ludDMyKHNyYywgZGVzdCk7CisKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgZGVzdCwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDEpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmljX3IoQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsK
KworICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDgwMDAwMDAwKTsK
KyAgICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJTlZBTElEX0lNTSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzAsIHcpOworICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVk
ID8gQVJNQXNzZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNh
dGVGYWlsZWQpCisgICAgeworICAgICAgICB0cnVuY2F0ZURvdWJsZVRvVWludDMyKHNyYywgZGVz
dCk7CisKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgZGVzdCwg
QVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmljX3Io
QVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDEpKTsKKworICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihBUk1SZWdpc3RlcnM6OlMwLCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2Vt
Ymxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gQVJNQXNzZW1i
bGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMg
dW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgor
ICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2NF9yKEFSTVJl
Z2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzJf
cihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKKyAgICB9CisKKyAgICB2b2lkIHRydW5j
YXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF91MzJfZjY0X3IoQVJNUmVnaXN0ZXJzOjpTRDAg
PDwgMSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMl9yKGRlc3QsIEFSTVJl
Z2lzdGVyczo6U0QwIDw8IDEpOwogICAgIH0KIAogICAgIC8vIENvbnZlcnQgJ3NyYycgdG8gYW4g
aW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KQEAgLTk4Myw3ICsxMTc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJl
Z2lzdGVySUQgZnBUZW1wKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0
X3IoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1v
dl9hcm1fcihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudm1vdl9hcm0zMl9yKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOwogCiAgICAgICAg
IC8vIENvbnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJhY2sgdG8gZmxvYXQgJiBjb21wYXJlIHRv
IHRoZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVhbCBvciB1bm9yZGVyZWQgKE5hTikgdGhl
biBqdW1wLgogICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9zMzJfcihBUk1SZWdpc3RlcnM6
OlNEMCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CkBAIC05OTUsMTggKzExODcsMjUgQEAgcHVi
bGljOgogCiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQ
UmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkp
OwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMwLCBzY3JhdGNo
KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbCwgcmVnLCBzY3Jh
dGNoKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZVplcm9Pck5hTihGUFJlZ2lzdGVy
SUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm1vdl9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRP
cDJCeXRlKDApKTsKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0ZXJzOjpT
MCwgc2NyYXRjaCk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVu
b3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxhdGlv
bmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KKyAg
ICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kKQorICAgIHsKKyAgICAgICAgQVNTRVJUKChzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29uZCAm
IDB4MGZmZmZmZmYpKSA9PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb25kKSA8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihBUk1Bc3NlbWJsZXI6OkFMKSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kIF4gMHgxMDAwMDAwMCk7CisgICAgfQor
CiAgICAgdm9pZCBub3AoKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBAIC0x
MDE5LDEyICsxMjE4LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBBUk1Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFM
b2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQVJNQXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTA3MywyOSAr
MTI3MiwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlmIChvZmZzZXQgPj0gMCkgewogICAgICAg
ICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikgewogICAgICAgICAgICAgICAgIHByZXBhcmVDYWxs
KCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgdGFyZ2V0UmVnLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2Vt
Ymxlcjo6TG9hZFVpbnQzMiwgdGFyZ2V0UmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZikgewogICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZF9yKHRtcFJlZywgYmFzZSwgQVJNQXNzZW1ibGVyOjpPUDJfSU1NIHwgKG9mZnNldCA+
PiAxMikgfCAoMTAgPDwgOCkpOwogICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgdGFyZ2V0UmVnLCB0bXBSZWcsIG9m
ZnNldCAmIDB4ZmZmKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3Nl
bWJsZXI6OkxvYWRVaW50MzIsIHRhcmdldFJlZywgdG1wUmVnLCBvZmZzZXQgJiAweGZmZik7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0o
b2Zmc2V0LCB0bXBSZWcpOwogICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKHRydWUsIHRhcmdldFJlZywgYmFzZSwgdG1wUmVn
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdXIoQVJNQXNzZW1ibGVyOjpMb2Fk
VWludDMyLCB0YXJnZXRSZWcsIGJhc2UsIHRtcFJlZyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSAgewogICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKICAgICAgICAgICAgIGlm
IChvZmZzZXQgPD0gMHhmZmYpIHsKICAgICAgICAgICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl9kKHRydWUsIHRhcmdldFJlZywgYmFzZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfZChBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50MzIsIHRhcmdldFJlZywgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAob2Zmc2V0IDw9IDB4ZmZmZmYpIHsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJf
cih0bXBSZWcsIGJhc2UsIEFSTUFzc2VtYmxlcjo6T1AyX0lNTSB8IChvZmZzZXQgPj4gMTIpIHwg
KDEwIDw8IDgpKTsKICAgICAgICAgICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmR0cl9kKHRydWUsIHRhcmdldFJlZywgdG1wUmVnLCBvZmZzZXQgJiAw
eGZmZik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX2QoQVJNQXNzZW1ibGVyOjpM
b2FkVWludDMyLCB0YXJnZXRSZWcsIHRtcFJlZywgb2Zmc2V0ICYgMHhmZmYpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKG9mZnNldCwg
dG1wUmVnKTsKICAgICAgICAgICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmR0cl9kcih0cnVlLCB0YXJnZXRSZWcsIGJhc2UsIHRtcFJlZyk7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX2RyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
dGFyZ2V0UmVnLCBiYXNlLCB0bXBSZWcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYg
V1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9TSDRBc3NlbWJsZXIuaAppbmRleCA1OWQwNDIyLi5kNTVkMzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKQEAgLTEyNDEsNyArMTI0
MSw3IEBAIHB1YmxpYzoKIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAg
ICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlRm9yQW55T25lSW5zdHJ1Y3Rpb24oKTsKKyAgICAgICAg
bV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlvbigpOwogICAgICAgICByZXR1cm4g
bV9idWZmZXIubGFiZWwoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGY4NmMxNWUuLmVkMzU3ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApAQCAtMTgyLDcgKzE4
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXIt
PmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBzdG9yZVB0cihU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOwogCi0jaWYgQ1BVKFg4
Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkKICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBzZWxlY3RTY3JhdGNoR1BSKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTI2MiwxMyAr
MjYyLDIxIEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSAmJiBDUFUoQVJNKQogICAg
IHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2Fk
R1BSKQogICAgIHsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgbV9hc3NlbWJsZXIudm1v
dihwYXlsb2FkR1BSLCB0YWdHUFIsIGZwcik7CisjZWxzZQorICAgICAgICBtX2Fzc2VtYmxlci52
bW92X2FybTY0X3IocGF5bG9hZEdQUiwgdGFnR1BSLCBmcHIpOworI2VuZGlmCiAgICAgfQogICAg
IHZvaWQgdW5ib3hEb3VibGUoR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIsIEZQUlJl
ZyBmcHIsIEZQUlJlZyBzY3JhdGNoRlBSKQogICAgIHsKICAgICAgICAgaml0QXNzZXJ0SXNKU0Rv
dWJsZSh0YWdHUFIpOwogICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaEZQUik7CisjaWYgQ1BV
KEFSTV9USFVNQjIpCiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZnByLCBwYXlsb2FkR1BSLCB0
YWdHUFIpOworI2Vsc2UKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl92ZnA2NF9yKGZwciwgcGF5
bG9hZEdQUiwgdGFnR1BSKTsKKyNlbmRpZgogICAgIH0KICNlbmRpZgogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKaW5kZXggYjYwMjkwOC4uZDM0OGRi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCkBAIC00
MzQsMTcgKzQzNCwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXR1cFR3b1N0dWJBcmdz
PEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxPihhcmcxLCBhcmcy
KTsKICAgICB9Ci0jZWxzZQorI2VsaWYgQ1BVKEFSTSkKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgeworI2lmIENQVShBUk1fVEhVTUIyKQog
ICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxLCBhcmcxKTsKKyNlbHNlCisgICAgICAgIGFzc2VtYmxlcigpLnZtb3ZfYXJt
NjRfcihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7
CisjZW5kaWYKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
RlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQogICAgIHsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAg
ICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgYXJnMSk7CiAgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOworI2Vsc2UKKyAgICAgICAg
YXNzZW1ibGVyKCkudm1vdl9hcm02NF9yKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxLCBhcmcxKTsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdl9hcm02NF9yKEdQ
UkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcyKTsKKyNlbmRp
ZgogICAgIH0KKyNlbHNlCisjZXJyb3IgIkRGRyBKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBs
YXRmb3JtLiIKICNlbmRpZgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEdQUlJlZyBhcmcxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
UFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCA2
YWY0NWRkLi5lODE3ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApA
QCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKLSNpZiBDUFUoQVJNX1RIVU1C
MikKKyNpZiBDUFUoQVJNKQogCiBjbGFzcyBGUFJJbmZvIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKaW5kZXggYmQ0ZmEzMi4uODlmYWVmOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTM4NCw3ICszODQsNyBAQCBwcml2YXRl
OgogCiAjZW5kaWYKIAotI2lmIENQVShBUk1fVEhVTUIyKQorI2lmIENQVShBUk0pCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNAogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTQx
MCw3ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQ
UjEgPSBBUk1SZWdpc3RlcnM6OnIxOyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
YXJndW1lbnRHUFIyID0gQVJNUmVnaXN0ZXJzOjpyMjsgLy8gcmVnVDIKICAgICAvLyBGSVhNRTog
cjMgaXMgY3VycmVudGx5IHVzZWQgYmUgdGhlIE1hY3JvQXNzZW1ibGVyIGFzIGEgdGVtcG9yYXJ5
IC0gaXQgc2VlbXMKLSAgICAvLyBUaGlzIGNvdWxkIHRocmVvcmV0aWNhbGx5IGJlIGEgcHJvYmxl
bSBpZiB0aGVpcyBpcyB1c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgorICAgIC8vIFRoaXMgY291bGQg
dGhyZW9yZXRpY2FsbHkgYmUgYSBwcm9ibGVtIGlmIHRoaXMgaXMgdXNlZCBpbiBjb2RlIGdlbmVy
YXRpb24KICAgICAvLyBiZXR3ZWVuIHRoZSBhcmd1bWVudHMgYmVpbmcgc2V0IHVwLCBhbmQgdGhl
IGNhbGwgYmVpbmcgbWFkZS4gVGhhdCBzYWlkLAogICAgIC8vIGFueSBjaGFuZ2UgaW50cm9kdWNp
bmcgYSBwcm9ibGVtIGhlcmUgaXMgbGlrZWx5IHRvIGJlIGltbWVkaWF0ZWx5IGFwcGFyZW50IQog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gQVJNUmVnaXN0ZXJzOjpyMzsg
Ly8gRklYTUUhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCA3NGIzZjE5Li41ZDY1NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTE0MCw2ICsxNDAsNjIgQEAKICAgICAgICAgImIgIiBMT0NBTF9S
RUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCiAgICAgKTsKIAor
I2VsaWYgQ09NUElMRVIoR0NDKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQorCisjZGVmaW5lIEZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FKGZ1bmN0aW9uKSBcCisgICAgYXNt
ICggXAorICAgICIudGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVu
Y3Rpb24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBJTkxJ
TkVfQVJNX0ZVTkNUSU9OKGZ1bmN0aW9uKSBcCisgICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikg
IjoiICJcbiIgXAorICAgICAgICAibW92IGEyLCBsciIgIlxuIiBcCisgICAgICAgICJiICIgTE9D
QUxfUkVGRVJFTkNFKGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICk7
CisKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShmdW5j
dGlvbikgXAorICAgIGFzbSAoIFwKKyAgICAiLnRleHQiICJcbiIgXAorICAgICIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBISURFX1NZTUJPTChmdW5jdGlvbikg
IlxuIiBcCisgICAgSU5MSU5FX0FSTV9GVU5DVElPTihmdW5jdGlvbikgXAorICAgIFNZTUJPTF9T
VFJJTkcoZnVuY3Rpb24pICI6IiAiXG4iIFwKKyAgICAgICAgIm1vdiBhNCwgbHIiICJcbiIgXAor
ICAgICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikgIldpdGhSZXR1cm5BZGRyZXNz
IiAiXG4iIFwKKyAgICApOworCisvLyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMg
YSA2NC1iaXQgaW50ZWdlci4gV2hlbiBiZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVz
dCBiZSBhbGlnbmVkIGV2ZW4tbnVtYmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KKy8v
IEFzIGEgcmVzdWx0LCByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIGF0IGEgNC1ieXRlIGZ1cnRoZXIg
bG9jYXRpb24gaW4gdGhlIGZvbGxvd2luZyBjYXNlcy4KKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhF
QUJJKSAmJiBDUFUoQVJNKQorI2RlZmluZSBJTlNUUlVDVElPTl9TVE9SRV9SRVRVUk5fQUREUkVT
U19FSkkgInN0ciBsciwgW3NwLCAjNF0iCisjZGVmaW5lIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVS
Tl9BRERSRVNTX0VKQ0kgInN0ciBsciwgW3NwLCAjOF0iCisjZWxzZQorI2RlZmluZSBJTlNUUlVD
VElPTl9TVE9SRV9SRVRVUk5fQUREUkVTU19FSkkgInN0ciBsciwgW3NwLCAjMF0iCisjZGVmaW5l
IElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNTX0VKQ0kgInN0ciBsciwgW3NwLCAjNF0i
CisjZW5kaWYKKworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1Nf
RUpJKGZ1bmN0aW9uKSBcCisgICAgYXNtICggXAorICAgICIudGV4dCIgIlxuIiBcCisgICAgIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1
bmN0aW9uKSAiXG4iIFwKKyAgICBJTkxJTkVfQVJNX0ZVTkNUSU9OKGZ1bmN0aW9uKSBcCisgICAg
U1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoiICJcbiIgXAorICAgICAgICBJTlNUUlVDVElPTl9T
VE9SRV9SRVRVUk5fQUREUkVTU19FSkkgIlxuIiBcCisgICAgICAgICJiICIgTE9DQUxfUkVGRVJF
TkNFKGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICk7CisKKyNkZWZp
bmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKQ0koZnVuY3Rpb24pIFwK
KyAgICBhc20gKCBcCisgICAgIi50ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhmdW5jdGlvbikgIlxuIiBcCisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAor
ICAgIElOTElORV9BUk1fRlVOQ1RJT04oZnVuY3Rpb24pIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1
bmN0aW9uKSAiOiIgIlxuIiBcCisgICAgICAgIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERS
RVNTX0VKQ0kgIlxuIiBcCisgICAgICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGZ1bmN0aW9uKSAi
V2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICk7CisKICNlbmRpZgogCiAjZGVmaW5lIFBf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pIFwKQEAgLTEz
MjIsNiArMTM3OCwxNyBAQCBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6
IiAiXG4iCiAgICAgIm1vdiByMCwgcjUiICJcbiIKICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgogKTsKKyNlbGlmIENQVShB
Uk1fVFJBRElUSU9OQUwpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitJTkxJTkVfQVJNX0ZVTkNUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisg
ICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJtb3YgcjAsIHI1IiAiXG4iCisgICAg
ImIgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUp
ICJcbiIKKyk7CiAjZW5kaWYKIAogZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggNjdhMjJiNy4uMTJkNGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTgwMCw3ICsxODAwLDcgQEAgcHVibGlj
OgogICAgIH0KICNlbmRpZgogICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk1f
VEhVTUIyKQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pCiAgICAgdm9pZCBwcmVw
YXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplb2Yodm9pZCopIC8gNDsgaSsrKQpAQCAtMTg2MywxMyArMTg2MywyMSBAQCBwdWJs
aWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCiAgICAg
ewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhmdW5jdGlvbik7CisjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIG1faml0LmFz
c2VtYmxlcigpLnZtb3YocmVzdWx0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIyKTsKKyNlbHNlCisgICAgICAgIG1faml0LmFzc2VtYmxlcigpLnZtb3Zf
dmZwNjRfcihyZXN1bHQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUjIpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5j
dGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAg
ICAgICAgbV9qaXQuYXNzZW1ibGVyKCkudm1vdihyZXN1bHQsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOworI2Vsc2UKKyAgICAgICAgbV9qaXQuYXNz
ZW1ibGVyKCkudm1vdl92ZnA2NF9yKHJlc3VsdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSMik7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGNhbGw7CiAg
ICAgfQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggYjVl
Zjk4YS4uNTlkYzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAg
LTYyMiwzOCArNjIyLDQ2IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoi
ICJcbiIKICNlbGlmIENPTVBJTEVSKEdDQykgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKIAogYXNt
ICgKKyIudGV4dCIgIlxuIgogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkg
IlxuIgogSElERV9TWU1CT0woY3RpVHJhbXBvbGluZSkgIlxuIgorSU5MSU5FX0FSTV9GVU5DVElP
TihjdGlUcmFtcG9saW5lKQogU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgog
ICAgICJzdG1kYiBzcCEsIHtyMS1yM30iICJcbiIKLSAgICAic3RtZGIgc3AhLCB7cjQtcjgsIGxy
fSIgIlxuIgorICAgICJzdG1kYiBzcCEsIHtyNC1yNiwgcjgtcjExLCBscn0iICJcbiIKICAgICAi
c3ViIHNwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRFI0X09GRlNFVCkgIlxu
IgotICAgICJtb3YgcjQsIHIyIiAiXG4iCi0gICAgIm1vdiByNSwgIzUxMiIgIlxuIgorICAgICJt
b3YgcjUsIHIyIiAiXG4iCisgICAgIm1vdiByNiwgIzUxMiIgIlxuIgogICAgIC8vIHIwIGNvbnRh
aW5zIHRoZSBjb2RlCi0gICAgIm1vdiBsciwgcGMiICJcbiIKLSAgICAibW92IHBjLCByMCIgIlxu
IgorICAgICJibHggcjAiICJcbiIKICAgICAiYWRkIHNwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBSRVNFUlZFRFI0X09GRlNFVCkgIlxuIgotICAgICJsZG1pYSBzcCEsIHtyNC1yOCwgbHJ9
IiAiXG4iCisgICAgImxkbWlhIHNwISwge3I0LXI2LCByOC1yMTEsIGxyfSIgIlxuIgogICAgICJh
ZGQgc3AsIHNwLCAjMTIiICJcbiIKLSAgICAibW92IHBjLCBsciIgIlxuIgorICAgICJieCBsciIg
IlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorSElE
RV9TWU1CT0woY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlUcmFtcG9s
aW5lRW5kKSAiOiIgIlxuIgogKTsKIAogYXNtICgKKyIudGV4dCIgIlxuIgogIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKIEhJREVfU1lNQk9MKGN0aVZN
VGhyb3dUcmFtcG9saW5lKSAiXG4iCitJTkxJTkVfQVJNX0ZVTkNUSU9OKGN0aVZNVGhyb3dUcmFt
cG9saW5lKQogU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKICAg
ICAibW92IHIwLCBzcCIgIlxuIgogICAgICJibCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93
KSAiXG4iCiAKIC8vIEJvdGggaGFzIHRoZSBzYW1lIHJldHVybiBzZXF1ZW5jZQorIi50ZXh0IiAi
XG4iCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBI
SURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCitJTkxJTkVfQVJNX0ZVTkNUSU9O
KGN0aU9wVGhyb3dOb3RDYXVnaHQpCiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQp
ICI6IiAiXG4iCiAgICAgImFkZCBzcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJW
RURSNF9PRkZTRVQpICJcbiIKLSAgICAibGRtaWEgc3AhLCB7cjQtcjgsIGxyfSIgIlxuIgorICAg
ICJsZG1pYSBzcCEsIHtyNC1yNiwgcjgtcjExLCBscn0iICJcbiIKICAgICAiYWRkIHNwLCBzcCwg
IzEyIiAiXG4iCi0gICAgIm1vdiBwYywgbHIiICJcbiIKKyAgICAiYnggbHIiICJcbiIKICk7CiAK
ICNlbGlmIENPTVBJTEVSKFJWQ1QpICYmIENQVShBUk1fVEhVTUIyKQpAQCAtMTA3OCw4ICsxMDg2
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgdGhyb3dFeGNlcHRpb25Gcm9tT3BD
YWxsKEpJVFN0YWNrRnJhbWUmIGppdFN0YWNrRnIKICAgICAgICAgIi5hbGlnbiAyIiAiXG4iIFwK
ICAgICAgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpXyMjb3ApICJcbiIgXAogICAgICAg
ICBISURFX1NZTUJPTChjdGlfIyNvcCkgIlxuIiAgICAgICAgICAgICBcCi0gICAgICAgICIudGh1
bWIiICJcbiIgXAotICAgICAgICAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGN0aV8j
I29wKSAiXG4iIFwKKyAgICAgICAgSU5MSU5FX0FSTV9GVU5DVElPTihjdGlfIyNvcCkgXAogICAg
ICAgICBTWU1CT0xfU1RSSU5HKGN0aV8jI29wKSAiOiIgIlxuIiBcCiAgICAgICAgICJzdHIgbHIs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCkg
Il0iICJcbiIgXAogICAgICAgICAiYmwgIiBTWU1CT0xfU1RSSU5HKEpJVFN0dWJUaHVua2VkXyMj
b3ApICJcbiIgXApAQCAtMTE1NiwxMSArMTE2MywxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgVCB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGwoSklUU3RhY2tGcmFtZSYgaml0U3RhY2tG
cgogICAgIH07IFwKICAgICBhc20gKCBcCiAgICAgICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGN0aV8jI29wKSAiXG4iIFwKKyAgICAgICAgSU5MSU5FX0FSTV9GVU5DVElPTihjdGlfIyNvcCkg
XAogICAgICAgICBTWU1CT0xfU1RSSU5HKGN0aV8jI29wKSAiOiIgIlxuIiBcCiAgICAgICAgICJz
dHIgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9BRERSRVNTX09G
RlNFVCkgIl0iICJcbiIgXAogICAgICAgICAiYmwgIiBTWU1CT0xfU1RSSU5HKEpJVFN0dWJUaHVu
a2VkXyMjb3ApICJcbiIgXAogICAgICAgICAibGRyIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAiXG4iIFwKLSAgICAgICAgIm1v
diBwYywgbHIiICJcbiIgXAorICAgICAgICAiYnggbHIiICJcbiIgXAogICAgICAgICApOyBcCiAg
ICAgcnR5cGUgSklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAppbmRleCBkMmJjMTVlLi4yMmExZGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0xOTAsOCArMTkwLDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSNDsKICAgICAgICAgdm9pZCogcHJl
c2VydmVkUjU7CiAgICAgICAgIHZvaWQqIHByZXNlcnZlZFI2OwotICAgICAgICB2b2lkKiBwcmVz
ZXJ2ZWRSNzsKICAgICAgICAgdm9pZCogcHJlc2VydmVkUjg7CisgICAgICAgIHZvaWQqIHByZXNl
cnZlZFI5OworICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSMTA7CisgICAgICAgIHZvaWQqIHByZXNl
cnZlZFIxMTsKICAgICAgICAgdm9pZCogcHJlc2VydmVkTGluazsKIAogICAgICAgICBSZWdpc3Rl
ckZpbGUqIHJlZ2lzdGVyRmlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZh
Y2VKSVQuaAppbmRleCAwNWQxY2U1Li42YjdkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC05NCw3ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBYODZSZWdpc3RlcnM6
OnhtbTE7CiAgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IFg4NlJl
Z2lzdGVyczo6eG1tMjsKICAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Qz
ID0gWDg2UmVnaXN0ZXJzOjp4bW0zOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisjZWxpZiBDUFUo
QVJNKQogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVy
ID0gQVJNUmVnaXN0ZXJzOjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2Fj
aGVkUmVzdWx0UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwpA
QCAtMTA3LDM1ICsxMDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKICAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmVnVDIgPSBBUk1SZWdpc3RlcnM6OnIyOwogICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IEFSTVJlZ2lzdGVyczo6cjQ7Ci0gICAgICAgIAorCisg
ICAgICAgIC8vIFVwZGF0ZSBjdGlUcmFtcG9saW5lIGluIEpJVFN0dWJzLmNwcCBpZiB0aGVzZSB2
YWx1ZXMgYXJlIGNoYW5nZWQhCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxG
cmFtZVJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNTsKICAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OwotICAgICAg
ICAKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gQVJNUmVnaXN0
ZXJzOjpkMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gQVJN
UmVnaXN0ZXJzOjpkMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Qy
ID0gQVJNUmVnaXN0ZXJzOjpkMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBm
cFJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpkMzsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1
bHRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAg
IAotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9
IEFSTVJlZ2lzdGVyczo6cjU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxG
cmFtZVJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNDsKLSAgICAgICAgCi0gICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEgPSBBUk1SZWdpc3RlcnM6OnIxOwotICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IEFSTVJlZ2lzdGVyczo6cjI7Ci0gICAgICAg
IC8vIENhbGxlZSBwcmVzZXJ2ZWQKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVn
VDMgPSBBUk1SZWdpc3RlcnM6OnI3OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgcmVnUzAgPSBBUk1SZWdpc3RlcnM6OlMwOwotICAgICAgICAvLyBDYWxsZWUgcHJl
c2VydmVkCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1MxID0gQVJNUmVnaXN0
ZXJzOjpTMTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1N0
YWNrUHRyID0gQVJNUmVnaXN0ZXJzOjpzcDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmVnTGluayA9IEFSTVJlZ2lzdGVyczo6bHI7Ci0gICAgICAgIAorCiAgICAgICAgIHN0YXRp
YyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IEFSTVJlZ2lzdGVyczo6ZDA7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IEFSTVJlZ2lzdGVyczo6ZDE7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IEFSTVJlZ2lzdGVyczo6
ZDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBiL1NvdXJjZS9XVEYv
d3RmL0lubGluZUFTTS5oCmluZGV4IDEwY2QxY2MuLmZhMTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0lubGluZUFTTS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oCkBA
IC04Myw0ICs4MywxMCBAQAogI2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkgIi5MIiAj
bmFtZQogI2VuZGlmCiAKKyNpZiBDUFUoQVJNX1RSQURJVElPTkFMKSAmJiAoZGVmaW5lZCh0aHVt
YjIpIHx8IGRlZmluZWQoX190aHVtYjJfXykgfHwgZGVmaW5lZChfX3RodW1iKSB8fCBkZWZpbmVk
KF9fdGh1bWJfXykpCisjZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkgIi50aHVtYiIg
IlxuIiAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKG5hbWUpICJcbiIKKyNlbHNlCisj
ZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5s
aW5lQVNNX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGQ4YmE5NDcuLjM2NDgxOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApA
QCAtOTA2LDYgKzkwNiwxMCBAQAogI2lmIENQVShBUk1fVEhVTUIyKSAmJiBQTEFURk9STShJT1Mp
CiAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgorLyogRW5hYmxlIHRoZSBERkcgSklU
IG9uIEFSTS4gKi8KKyNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQorI2RlZmluZSBFTkFCTEVfREZH
X0pJVCAxCisjZW5kaWYKICNlbmRpZgogCiAvKiBQcm9maWxpbmcgb2YgdHlwZXMgYW5kIHZhbHVl
cyB1c2VkIGJ5IEpJVCBjb2RlLiBERkdfSklUIGRlcGVuZHMgb24gaXQsIGJ1dCB5b3UKLS0gCjEu
Ny4yLjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150423</attachid>
            <date>2012-07-02 08:11:14 -0700</date>
            <delta_ts>2012-07-03 05:26:49 -0700</delta_ts>
            <desc>working patch</desc>
            <filename>0001-dfg-port.patch</filename>
            <type>text/plain</type>
            <size>78876</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA1ODE4YzljODExMjZhYTA1NjU1MDE3MjUyZjQ5NWE5MTFiODMxYjRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAd2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAyIEp1bCAyMDEyIDA4OjA3OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZGZn
LXBvcnQKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIu
Y3BwICAgfCAgIDk1ICsrKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFz
c2VtYmxlci5oICAgICB8ICAyODUgKysrKysrKysrKy0tLS0tCiAuLi4vYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAgICB8ICAgIDQgKy0KIC4uLi9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIHwgICAxMiArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oICAgfCAgMzk1ICsrKysrKysr
KysrKysrKy0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxl
ci5oICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlI
ZWxwZXJzLmggICAgIHwgICAxMCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2Fs
bEhlbHBlcnMuaCAgICAgICAgfCAgIDEzICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZQUkluZm8uaCAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR1BSSW5mby5oICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgICAgICAgfCAgIDY3ICsrKysKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCAgICAgIHwgICAxMCArLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgICAgICAgICAgICAgfCAgIDMyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggICAgICAgICAgICAgICB8ICAgIDQg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCAgICAgICAgIHwg
ICAzMiArLS0KIFNvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgNiArCiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKwogMTcgZmlsZXMgY2hhbmdlZCwgNjk4IGluc2VydGlvbnMoKyksIDI3
OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TUFzc2VtYmxlci5jcHAKaW5kZXggNzQ4MDljYS4uZDhjMGNiYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApAQCAtMjYyLDg2ICsyNjIs
MTE3IEBAIEFSTVdvcmQgQVJNQXNzZW1ibGVyOjplbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1t
LCBpbnQgZGVzdCkKIAogLy8gTWVtb3J5IGxvYWQvc3RvcmUgaGVscGVycwogCi12b2lkIEFSTUFz
c2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIoYm9vbCBpc0xvYWQsIFJlZ2lzdGVySUQgc3JjRHN0LCBS
ZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0LCBib29sIGJ5dGVzKQordm9pZCBBUk1Bc3Nl
bWJsZXI6OmRhdGFUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGUxIHR5cGUsIFJlZ2lzdGVySUQg
c3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQogewotICAgIEFSTVdvcmQg
dHJhbnNmZXJGbGFnID0gYnl0ZXMgPyBEVF9CWVRFIDogMDsKICAgICBpZiAob2Zmc2V0ID49IDAp
IHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikKLSAgICAgICAgICAgIGR0cl91KGlzTG9h
ZCwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRy
X3UodHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQpOwogICAgICAgICBlbHNlIGlmIChvZmZzZXQg
PD0gMHhmZmZmZikgewogICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwg
T1AyX0lNTSB8IChvZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cl91
KGlzTG9hZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ICYgMHhmZmYpIHwgdHJh
bnNmZXJGbGFnKTsKKyAgICAgICAgICAgIGR0cl91KHR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgKG9mZnNldCAmIDB4ZmZmKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBt
b3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBkdHJfdXIoaXNM
b2FkLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAg
ICAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAg
ICAgICAgICAgIGR0cl9kKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0IHwgdHJhbnNmZXJG
bGFnKTsKKyAgICAgICAgICAgIGR0cl9kKHR5cGUsIHNyY0RzdCwgYmFzZSwgLW9mZnNldCk7CiAg
ICAgICAgIGVsc2UgaWYgKG9mZnNldCA+PSAtMHhmZmZmZikgewogICAgICAgICAgICAgc3ViX3Io
QVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8ICgtb2Zmc2V0ID4+IDEyKSB8ICgxMCA8
PCA4KSk7Ci0gICAgICAgICAgICBkdHJfZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpT
MCwgKC1vZmZzZXQgJiAweGZmZikgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRyX2Qo
dHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAoLW9mZnNldCAmIDB4ZmZmKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpT
MCk7Ci0gICAgICAgICAgICBkdHJfdXIoaXNMb2FkLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVy
czo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwg
YmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQVJN
QXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBSZWdpc3RlcklEIHNy
Y0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMy
X3Qgb2Zmc2V0LCBib29sIGJ5dGVzKQordm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5z
ZmVyMzIoRGF0YVRyYW5zZmVyVHlwZTEgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKIHsK
LSAgICBBUk1Xb3JkIG9wMjsKLSAgICBBUk1Xb3JkIHRyYW5zZmVyRmxhZyA9IGJ5dGVzID8gRFRf
QllURSA6IDA7Ci0KICAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzKTsKLSAgICBv
cDIgPSBsc2woaW5kZXgsIHNjYWxlKTsKKyAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2Nh
bGUpOwogCi0gICAgaWYgKG9mZnNldCA+PSAwICYmIG9mZnNldCA8PSAweGZmZikgewotICAgICAg
ICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBvcDIpOwotICAgICAgICBkdHJfdShpc0xv
YWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgb2Zmc2V0IHwgdHJhbnNmZXJGbGFnKTsKKyAg
ICBpZiAob2Zmc2V0ID09IDApIHsKKyAgICAgICAgZHRyX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwg
b3AyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAob2Zmc2V0IDw9IDAgJiYgb2Zm
c2V0ID49IC0weGZmZikgewotICAgICAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBv
cDIpOwotICAgICAgICBkdHJfZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1v
ZmZzZXQgJiAweGZmZikgfCB0cmFuc2ZlckZsYWcpOworCisgICAgYWRkX3IoQVJNUmVnaXN0ZXJz
OjpTMSwgYmFzZSwgb3AyKTsKKyAgICBkYXRhVHJhbnNmZXIzMih0eXBlLCBzcmNEc3QsIEFSTVJl
Z2lzdGVyczo6UzEsIG9mZnNldCk7Cit9CisKK3ZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNm
ZXIxNihEYXRhVHJhbnNmZXJUeXBlMiB0eXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJ
RCBiYXNlLCBpbnQzMl90IG9mZnNldCkKK3sKKyAgICBpZiAob2Zmc2V0ID49IDApIHsKKyAgICAg
ICAgaWYgKG9mZnNldCA8PSAweGZmKQorICAgICAgICAgICAgZHRyaF91KHR5cGUsIHNyY0RzdCwg
YmFzZSwgZ2V0T3AySGFsZihvZmZzZXQpKTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0IDw9IDB4
ZmZmZikgeworICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lN
TSB8IChvZmZzZXQgPj4gOCkgfCAoMTIgPDwgOCkpOworICAgICAgICAgICAgZHRyaF91KHR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZihvZmZzZXQgJiAweGZmKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJz
OjpTMCk7CisgICAgICAgICAgICBkdHJoX3VyKHR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0
ZXJzOjpTMCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAob2Zmc2V0ID49
IC0weGZmKQorICAgICAgICAgICAgZHRyaF9kKHR5cGUsIHNyY0RzdCwgYmFzZSwgZ2V0T3AySGFs
Zigtb2Zmc2V0KSk7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldCA+PSAtMHhmZmZmKSB7CisgICAg
ICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKC1vZmZzZXQg
Pj4gOCkgfCAoMTIgPDwgOCkpOworICAgICAgICAgICAgZHRyaF9kKHR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOworICAg
ICAgICAgICAgZHRyaF91cih0eXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNm
ZXIxNihEYXRhVHJhbnNmZXJUeXBlMiB0eXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KQorewor
ICAgIGlmIChzY2FsZSA9PSAwICYmIG9mZnNldCA9PSAwKSB7CisgICAgICAgIGR0cmhfdXIodHlw
ZSwgc3JjRHN0LCBiYXNlLCBpbmRleCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBs
ZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIG9mZnNldCk7Ci0gICAgYWRkX3IoQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgb3AyKTsKLSAgICBkdHJfdXIoaXNMb2FkLCBzcmNE
c3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgIGFkZF9yKEFS
TVJlZ2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBkYXRhVHJhbnNm
ZXIxNih0eXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzEsIG9mZnNldCk7CiB9CiAKLXZvaWQg
QVJNQXNzZW1ibGVyOjpkb3VibGVUcmFuc2Zlcihib29sIGlzTG9hZCwgRlBSZWdpc3RlcklEIHNy
Y0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKK3ZvaWQgQVJNQXNzZW1ibGVy
OjpkYXRhVHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgRlBSZWdpc3Rl
cklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKIHsKICAgICAvLyBW
RlAgY2Fubm90IGRpcmVjdGx5IGFjY2VzcyBtZW1vcnkgdGhhdCBpcyBub3QgZm91ci1ieXRlLWFs
aWduZWQKICAgICBpZiAoIShvZmZzZXQgJiAweDMpKSB7CiAgICAgICAgIGlmIChvZmZzZXQgPD0g
MHgzZmYgJiYgb2Zmc2V0ID49IDApIHsKLSAgICAgICAgICAgIGZkdHJfdShpc0xvYWQsIHNyY0Rz
dCwgYmFzZSwgb2Zmc2V0ID4+IDIpOworICAgICAgICAgICAgZmR0cl91KHR5cGUsIHNyY0RzdCwg
YmFzZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAg
YWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQgPj4gMTApIHwg
KDExIDw8IDgpKTsKLSAgICAgICAgICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOworICAgICAgICAgICAgZmR0cl91KHR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CiAKICAg
ICAgICAgaWYgKG9mZnNldCA8PSAweDNmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAg
ZmR0cl9kKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7CisgICAgICAgICAgICBm
ZHRyX2QodHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9mZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+
PSAwKSB7CiAgICAgICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1N
IHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOwotICAgICAgICAgICAgZmR0cl9kKGlzTG9h
ZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CisgICAg
ICAgICAgICBmZHRyX2QodHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+
IDIpICYgMHhmZik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgb2Zm
c2V0ID0gLW9mZnNldDsKICAgICB9CiAKLSAgICBsZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAs
IG9mZnNldCk7CisgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgIGFk
ZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UpOwotICAgIGZkdHJf
dShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgZmR0cl91KHR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Cit9CisKK3ZvaWQgQVJNQXNzZW1ibGVyOjpi
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBGUFJlZ2lz
dGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgaW50MzJfdCBvZmZzZXQpCit7CisgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwg
bHNsKGluZGV4LCBzY2FsZSkpOworICAgIGRhdGFUcmFuc2ZlckZsb2F0KHR5cGUsIHNyY0RzdCwg
QVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIAogUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVt
b3J5SGFuZGxlPiBBUk1Bc3NlbWJsZXI6OmV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKQEAg
LTM2MSwxMCArMzkyLDEwIEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gQVJN
QXNzZW1ibGVyOjpleGVjdXRhYmxlQ29weShKU0dsb2JhbERhdGEmIGdsCiAgICAgICAgIEFSTVdv
cmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGxkckFkZHIpOwogICAgICAgICBpZiAoKmFkZHIg
IT0gSW52YWxpZEJyYW5jaFRhcmdldCkgewogICAgICAgICAgICAgaWYgKCEoaXRlci0+bV9vZmZz
ZXQgJiAxKSkgewotICAgICAgICAgICAgICAgIGludCBkaWZmID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8QVJNV29yZCo+KGRhdGEgKyAqYWRkcikgLSAobGRyQWRkciArIERlZmF1bHRQcmVmZXRjaGlu
Zyk7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgZGlmZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEFSTVdvcmQqPihkYXRhICsgKmFkZHIpIC0gKGxkckFkZHIgKyBEZWZhdWx0UHJlZmV0
Y2hpbmcpOwogCi0gICAgICAgICAgICAgICAgaWYgKChkaWZmIDw9IEJPRkZTRVRfTUFYICYmIGRp
ZmYgPj0gQk9GRlNFVF9NSU4pKSB7Ci0gICAgICAgICAgICAgICAgICAgICpsZHJBZGRyID0gQiB8
IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmYgJiBCUkFOQ0hfTUFTSyk7Cisg
ICAgICAgICAgICAgICAgaWYgKChkaWZmZXJlbmNlIDw9IEJPRkZTRVRfTUFYICYmIGRpZmZlcmVu
Y2UgPj0gQk9GRlNFVF9NSU4pKSB7CisgICAgICAgICAgICAgICAgICAgICpsZHJBZGRyID0gQiB8
IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmZlcmVuY2UgJiBCUkFOQ0hfTUFT
Syk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2Vt
Ymxlci5oCmluZGV4IDE2ZGMwY2YuLmQ0ODc4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaApAQCAtNDEsMTYgKzQxLDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcjAgPSAwLAogICAgICAgICAgICAgcjEsCiAgICAgICAgICAg
ICByMiwKLSAgICAgICAgICAgIHIzLCBTMCA9IHIzLAorICAgICAgICAgICAgcjMsIFMwID0gcjMs
IC8qIFNhbWUgYXMgdGh1bWIgYXNzZW1ibGVyLiAqLwogICAgICAgICAgICAgcjQsCiAgICAgICAg
ICAgICByNSwKICAgICAgICAgICAgIHI2LAogICAgICAgICAgICAgcjcsCi0gICAgICAgICAgICBy
OCwgUzEgPSByOCwKKyAgICAgICAgICAgIHI4LAogICAgICAgICAgICAgcjksCiAgICAgICAgICAg
ICByMTAsCiAgICAgICAgICAgICByMTEsCi0gICAgICAgICAgICByMTIsCisgICAgICAgICAgICBy
MTIsIFMxID0gcjEyLAogICAgICAgICAgICAgcjEzLCBzcCA9IHIxMywKICAgICAgICAgICAgIHIx
NCwgbHIgPSByMTQsCiAgICAgICAgICAgICByMTUsIHBjID0gcjE1CkBAIC02MCwxMSArNjAsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBkMCwKICAgICAgICAgICAgIGQxLAogICAg
ICAgICAgICAgZDIsCi0gICAgICAgICAgICBkMywgU0QwID0gZDMsCisgICAgICAgICAgICBkMywK
ICAgICAgICAgICAgIGQ0LAogICAgICAgICAgICAgZDUsCiAgICAgICAgICAgICBkNiwKLSAgICAg
ICAgICAgIGQ3LAorICAgICAgICAgICAgZDcsIFNEMCA9IGQ3LCAvKiBTYW1lIGFzIHRodW1iIGFz
c2VtYmxlci4gKi8KICAgICAgICAgICAgIGQ4LAogICAgICAgICAgICAgZDksCiAgICAgICAgICAg
ICBkMTAsCkBAIC0xMDAsNyArMTAwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBl
ZGVmIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2w8MjA0OCwgNCwgNCwgQVJNQXNzZW1i
bGVyPiBBUk1CdWZmZXI7CiAgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFzc2VtYmxl
ckxhYmVsLCA2ND4gSnVtcHM7CiAKLSAgICAgICAgQVJNQXNzZW1ibGVyKCkgeyB9CisgICAgICAg
IEFSTUFzc2VtYmxlcigpCisgICAgICAgICAgICA6IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBv
aW50KDEpCisgICAgICAgIHsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIEFSTSBjb25kaXRpb25h
bCBjb25zdGFudHMKICAgICAgICAgdHlwZWRlZiBlbnVtIHsKQEAgLTE0MSwzMyArMTQ0LDMzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTVZOID0gKDB4ZiA8PCAyMSksCiAgICAgICAg
ICAgICBNVUwgPSAweDAwMDAwMDkwLAogICAgICAgICAgICAgTVVMTCA9IDB4MDBjMDAwOTAsCisg
ICAgICAgICAgICBWTU9WX0Y2NCA9IDB4MGViMDBiNDAsCiAgICAgICAgICAgICBWQUREX0Y2NCA9
IDB4MGUzMDBiMDAsCiAgICAgICAgICAgICBWRElWX0Y2NCA9IDB4MGU4MDBiMDAsCiAgICAgICAg
ICAgICBWU1VCX0Y2NCA9IDB4MGUzMDBiNDAsCiAgICAgICAgICAgICBWTVVMX0Y2NCA9IDB4MGUy
MDBiMDAsCiAgICAgICAgICAgICBWQ01QX0Y2NCA9IDB4MGViNDBiNDAsCiAgICAgICAgICAgICBW
U1FSVF9GNjQgPSAweDBlYjEwYmMwLAotICAgICAgICAgICAgRFRSID0gMHgwNTAwMDAwMCwKLSAg
ICAgICAgICAgIExEUkggPSAweDAwMTAwMDkwLAotICAgICAgICAgICAgU1RSSCA9IDB4MDAwMDAw
OTAsCisgICAgICAgICAgICBWQUJTX0Y2NCA9IDB4MGViMDBiYzAsCisgICAgICAgICAgICBWTkVH
X0Y2NCA9IDB4MGViMTBiNDAsCiAgICAgICAgICAgICBTVE1EQiA9IDB4MDkyMDAwMDAsCiAgICAg
ICAgICAgICBMRE1JQSA9IDB4MDhiMDAwMDAsCi0gICAgICAgICAgICBGRFRSID0gMHgwZDAwMGIw
MCwKICAgICAgICAgICAgIEIgPSAweDBhMDAwMDAwLAogICAgICAgICAgICAgQkwgPSAweDBiMDAw
MDAwLAotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hf
NFRfXykKICAgICAgICAgICAgIEJYID0gMHgwMTJmZmYxMCwKLSNlbmRpZgotICAgICAgICAgICAg
Vk1PVl9WRlAgPSAweDBlMDAwYTEwLAotICAgICAgICAgICAgVk1PVl9BUk0gPSAweDBlMTAwYTEw
LAorICAgICAgICAgICAgVk1PVl9WRlA2NCA9IDB4MGM0MDBhMTAsCisgICAgICAgICAgICBWTU9W
X0FSTTY0ID0gMHgwYzUwMGExMCwKKyAgICAgICAgICAgIFZNT1ZfVkZQMzIgPSAweDBlMDAwYTEw
LAorICAgICAgICAgICAgVk1PVl9BUk0zMiA9IDB4MGUxMDBhMTAsCiAgICAgICAgICAgICBWQ1ZU
X0Y2NF9TMzIgPSAweDBlYjgwYmMwLAogICAgICAgICAgICAgVkNWVF9TMzJfRjY0ID0gMHgwZWJk
MGI0MCwKKyAgICAgICAgICAgIFZDVlRfVTMyX0Y2NCA9IDB4MGViYzBiNDAsCisgICAgICAgICAg
ICBWQ1ZUX0YzMl9GNjQgPSAweDBlYjcwYmMwLAorICAgICAgICAgICAgVkNWVF9GNjRfRjMyID0g
MHgwZWI3MGFjMCwKICAgICAgICAgICAgIFZNUlNfQVBTUiA9IDB4MGVmMWZhMTAsCi0jaWYgV1RG
X0FSTV9BUkNIX0FUX0xFQVNUKDUpCiAgICAgICAgICAgICBDTFogPSAweDAxNmYwZjEwLAogICAg
ICAgICAgICAgQktQVCA9IDB4ZTEyMDAwNzAsCiAgICAgICAgICAgICBCTFggPSAweDAxMmZmZjMw
LAotI2VuZGlmCiAjaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCiAgICAgICAgICAgICBNT1ZX
ID0gMHgwMzAwMDAwMCwKICAgICAgICAgICAgIE1PVlQgPSAweDAzNDAwMDAwLApAQCAtMTc3LDE3
ICsxODAsMzcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZW51bSB7CiAgICAgICAgICAg
ICBPUDJfSU1NID0gKDEgPDwgMjUpLAotICAgICAgICAgICAgT1AyX0lNTWggPSAoMSA8PCAyMiks
CisgICAgICAgICAgICBPUDJfSU1NX0hBTEYgPSAoMSA8PCAyMiksCiAgICAgICAgICAgICBPUDJf
SU5WX0lNTSA9ICgxIDw8IDI2KSwKICAgICAgICAgICAgIFNFVF9DQyA9ICgxIDw8IDIwKSwKICAg
ICAgICAgICAgIE9QMl9PRlNSRUcgPSAoMSA8PCAyNSksCisgICAgICAgICAgICAvLyBEYXRhIHRy
YW5zZmVyIGZsYWdzLgogICAgICAgICAgICAgRFRfVVAgPSAoMSA8PCAyMyksCi0gICAgICAgICAg
ICBEVF9CWVRFID0gKDEgPDwgMjIpLAogICAgICAgICAgICAgRFRfV0IgPSAoMSA8PCAyMSksCi0g
ICAgICAgICAgICAvLyBUaGlzIGZsYWcgaXMgaW5sY3VkZWQgaW4gTERSIGFuZCBTVFIKICAgICAg
ICAgICAgIERUX1BSRSA9ICgxIDw8IDI0KSwKLSAgICAgICAgICAgIEhEVF9VSCA9ICgxIDw8IDUp
LAogICAgICAgICAgICAgRFRfTE9BRCA9ICgxIDw8IDIwKSwKKyAgICAgICAgICAgIERUX0JZVEUg
PSAoMSA8PCAyMiksCisgICAgICAgIH07CisKKyAgICAgICAgZW51bSBEYXRhVHJhbnNmZXJUeXBl
MSB7CisgICAgICAgICAgICBMb2FkVWludDMyID0gMHgwNTAwMDAwMCB8IERUX0xPQUQsCisgICAg
ICAgICAgICBMb2FkVWludDggPSAweDA1NDAwMDAwIHwgRFRfTE9BRCwKKyAgICAgICAgICAgIFN0
b3JlVWludDMyID0gMHgwNTAwMDAwMCwKKyAgICAgICAgICAgIFN0b3JlVWludDggPSAweDA1NDAw
MDAwLAorICAgICAgICB9OworCisgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZTIgeworICAg
ICAgICAgICAgTG9hZFVpbnQxNiA9IDB4MDEwMDAwYjAgfCBEVF9MT0FELAorICAgICAgICAgICAg
TG9hZEludDE2ID0gMHgwMTAwMDBmMCB8IERUX0xPQUQsCisgICAgICAgICAgICBMb2FkSW50OCA9
IDB4MDEwMDAwZDAgfCBEVF9MT0FELAorICAgICAgICAgICAgU3RvcmVVaW50MTYgPSAweDAxMDAw
MGIwLAorICAgICAgICB9OworCisgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHsK
KyAgICAgICAgICAgIExvYWRGbG9hdCA9IDB4MGQwMDBhMDAgfCBEVF9MT0FELAorICAgICAgICAg
ICAgTG9hZERvdWJsZSA9IDB4MGQwMDBiMDAgfCBEVF9MT0FELAorICAgICAgICAgICAgU3RvcmVG
bG9hdCA9IDB4MGQwMDBhMDAsCisgICAgICAgICAgICBTdG9yZURvdWJsZSA9IDB4MGQwMDBiMDAs
CiAgICAgICAgIH07CiAKICAgICAgICAgLy8gTWFza3Mgb2YgQVJNIGluc3RydWN0aW9ucwpAQCAt
MjE4LDcgKzI0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdEluc3Qo
QVJNV29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQoKChvcDIgJiB+T1AyX0lNTSkgPD0gMHhmZmYpIHx8ICgoKG9wMiAmIH5P
UDJfSU1NaCkgPD0gMHhmZmYpKSk7CisgICAgICAgICAgICBBU1NFUlQoKChvcDIgJiB+T1AyX0lN
TSkgPD0gMHhmZmYpIHx8ICgoKG9wMiAmIH5PUDJfSU1NX0hBTEYpIDw9IDB4ZmZmKSkpOwogICAg
ICAgICAgICAgbV9idWZmZXIucHV0SW50KG9wIHwgUk4ocm4pIHwgUkQocmQpIHwgb3AyKTsKICAg
ICAgICAgfQogCkBAIC00MDcsNiArNDMwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IE1VTEwgfCBSTihy
ZGhpKSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0ocm0pKTsKICAgICAgICAgfQogCisgICAgICAg
IHZvaWQgdm1vdl9mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFS
TVdvcmQ+KGNjKSB8IFZNT1ZfRjY0LCBkZCwgMCwgZG0pOworICAgICAgICB9CisKICAgICAgICAg
dm9pZCB2YWRkX2Y2NF9yKGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFM
KQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBWQUREX0Y2NCwgZGQsIGRuLCBkbSk7CkBAIC00MzcsMTAwICs0
NjUsMTI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lv
bkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVlNRUlRfRjY0LCBkZCwgMCwgZG0pOwog
ICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB2YWJzX2Y2NF9yKGludCBkZCwgaW50IGRtLCBDb25k
aXRpb24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lv
bkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkFCU19GNjQsIGRkLCAwLCBkbSk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIHZuZWdfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRp
dGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9u
SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTkVHX0Y2NCwgZGQsIDAsIGRtKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHZvaWQgbGRyX2ltbShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0
aENvbnN0YW50SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8IERUX0xPQUQgfCBE
VF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBpbW0sIHRydWUpOworICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+
KGNjKSB8IExvYWRVaW50MzIgfCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQp
LCBpbW0sIHRydWUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBsZHJfdW5faW1tKGludCBy
ZCwgQVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2Mp
IHwgRFRSIHwgRFRfTE9BRCB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCks
IGltbSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQoc3RhdGlj
X2Nhc3Q8QVJNV29yZD4oY2MpIHwgTG9hZFVpbnQzMiB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJz
OjpwYykgfCBSRChyZCksIGltbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl91KGJv
b2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIGR0cl91KERhdGFUcmFuc2ZlclR5cGUxIHR5cGUsIGludCByZCwgaW50
IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8IChpc0xvYWQgPyBE
VF9MT0FEIDogMCkgfCBEVF9VUCwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAgZW1pdEluc3Qo
c3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHlwZSB8IERUX1VQLCByZCwgcmIsIG9wMik7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl91cihib29sIGlzTG9hZCwgaW50IHJkLCBpbnQg
cmIsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyX3VyKERhdGFU
cmFuc2ZlclR5cGUxIHR5cGUsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBEVFIgfCAoaXNMb2FkID8gRFRfTE9BRCA6IDApIHwgRFRfVVAgfCBPUDJfT0ZTUkVH
LCByZCwgcmIsIHJtKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+
KGNjKSB8IHR5cGUgfCBEVF9VUCB8IE9QMl9PRlNSRUcsIHJkLCByYiwgcm0pOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBkdHJfZChib29sIGlzTG9hZCwgaW50IHJkLCBpbnQgcmIsIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJfZChEYXRhVHJhbnNm
ZXJUeXBlMSB0eXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBEVFIgfCAoaXNMb2FkID8gRFRfTE9BRCA6IDApLCByZCwgcmIsIG9wMik7CisgICAg
ICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCB0eXBlLCByZCwgcmIs
IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9kcihib29sIGlzTG9hZCwgaW50
IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRy
X2RyKERhdGFUcmFuc2ZlclR5cGUxIHR5cGUsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRp
dGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2Fz
dDxBUk1Xb3JkPihjYykgfCBEVFIgfCAoaXNMb2FkID8gRFRfTE9BRCA6IDApIHwgT1AyX09GU1JF
RywgcmQsIHJiLCBybSk7CisgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCB0eXBlIHwgT1AyX09GU1JFRywgcmQsIHJiLCBybSk7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGxkcmhfcihpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBB
TCkKKyAgICAgICAgdm9pZCBkdHJoX3UoRGF0YVRyYW5zZmVyVHlwZTIgdHlwZSwgaW50IHJkLCBp
bnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAg
ICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTERSSCB8IEhEVF9VSCB8
IERUX1VQIHwgRFRfUFJFLCByZCwgcm4sIHJtKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRp
Y19jYXN0PEFSTVdvcmQ+KGNjKSB8IHR5cGUgfCBEVF9VUCwgcmQsIHJiLCBvcDIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBsZHJoX2QoaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJoX3VyKERhdGFUcmFuc2ZlclR5cGUy
IHR5cGUsIGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBMRFJI
IHwgSERUX1VIIHwgRFRfUFJFLCByZCwgcmIsIG9wMik7CisgICAgICAgICAgICBlbWl0SW5zdChz
dGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCB0eXBlIHwgRFRfVVAsIHJkLCBybiwgcm0pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBsZHJoX3UoaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJoX2QoRGF0YVRyYW5zZmVyVHlw
ZTIgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2Mp
IHwgTERSSCB8IEhEVF9VSCB8IERUX1VQIHwgRFRfUFJFLCByZCwgcmIsIG9wMik7CisgICAgICAg
ICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCB0eXBlLCByZCwgcmIsIG9w
Mik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHN0cmhfcihpbnQgcm4sIGludCBybSwgaW50
IHJkLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJoX2RyKERhdGFUcmFuc2Zl
clR5cGUyIHR5cGUsIGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykg
fCBTVFJIIHwgSERUX1VIIHwgRFRfVVAgfCBEVF9QUkUsIHJkLCBybiwgcm0pOworICAgICAgICAg
ICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHlwZSwgcmQsIHJuLCBybSk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZkdHJfdShib29sIGlzTG9hZCwgaW50IHJkLCBp
bnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBmZHRy
X3UoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9w
MiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvcDIg
PD0gMHhmZik7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykg
fCBGRFRSIHwgRFRfVVAgfCAoaXNMb2FkID8gRFRfTE9BRCA6IDApLCByZCwgcmIsIG9wMik7Cisg
ICAgICAgICAgICBBU1NFUlQob3AyIDw9IDB4ZmYgJiYgcmQgPD0gMTUpOworICAgICAgICAgICAg
LyogT25seSBkMC1kMTUgYW5kIHMwLCBzMiwgczQgLi4uIHMzMCBhcmUgc3VwcG9ydGVkLiAqLwor
ICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERU
X1VQIHwgdHlwZSB8IChyZCA8PCAxMikgfCBSTihyYikgfCBvcDIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBmZHRyX2QoYm9vbCBpc0xvYWQsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9w
MiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZmR0cl9kKERhdGFUcmFuc2ZlclR5
cGVGbG9hdCB0eXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQob3AyIDw9IDB4ZmYpOwotICAgICAg
ICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgRkRUUiB8IChpc0xvYWQg
PyBEVF9MT0FEIDogMCksIHJkLCByYiwgb3AyKTsKKyAgICAgICAgICAgIEFTU0VSVChvcDIgPD0g
MHhmZiAmJiByZCA8PSAxNSk7CisgICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMy
LCBzNCAuLi4gczMwIGFyZSBzdXBwb3J0ZWQuICovCisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJ
bnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHlwZSB8IChyZCA8PCAxMikgfCBSTihyYikg
fCBvcDIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBwdXNoX3IoaW50IHJlZywgQ29uZGl0
aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChBUk1Xb3JkKHJlZykg
PD0gMHhmKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChjYyB8IERUUiB8IERUX1dCIHwg
Uk4oQVJNUmVnaXN0ZXJzOjpzcCkgfCBSRChyZWcpIHwgMHg0KTsKKyAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBTdG9yZVVpbnQzMiB8IERUX1dC
IHwgUk4oQVJNUmVnaXN0ZXJzOjpzcCkgfCBSRChyZWcpIHwgMHg0KTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgcG9wX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChBUk1Xb3JkKHJlZykgPD0gMHhmKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEludChjYyB8IChEVFIgXiBEVF9QUkUpIHwgRFRfTE9BRCB8IERUX1VQIHwgUk4o
QVJNUmVnaXN0ZXJzOjpzcCkgfCBSRChyZWcpIHwgMHg0KTsKKyAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCAoTG9hZFVpbnQzMiBeIERUX1BSRSkg
fCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CiAgICAgICAg
IH0KIAogICAgICAgICBpbmxpbmUgdm9pZCBwb2tlX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGR0cl9kKGZhbHNlLCBBUk1SZWdpc3RlcnM6OnNw
LCAwLCByZWcsIGNjKTsKKyAgICAgICAgICAgIGR0cl9kKFN0b3JlVWludDMyLCBBUk1SZWdpc3Rl
cnM6OnNwLCAwLCByZWcsIGNjKTsKICAgICAgICAgfQogCiAgICAgICAgIGlubGluZSB2b2lkIHBl
ZWtfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAg
ZHRyX3UodHJ1ZSwgcmVnLCBBUk1SZWdpc3RlcnM6OnNwLCAwLCBjYyk7CisgICAgICAgICAgICBk
dHJfdShMb2FkVWludDMyLCByZWcsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIGNjKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgdm1vdl92ZnA2NF9yKGludCBzbSwgaW50IHJ0LCBpbnQgcnQyLCBD
b25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0
Mik7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2Mp
IHwgVk1PVl9WRlA2NCB8IFJOKHJ0MikgfCBSRChydCkgfCAoc20gJiAweGYpIHwgKChzbSAmIDB4
MTApIDw8ICg1IC0gNCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdm1vdl92ZnBfcihp
bnQgc24sIGludCBydCwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdm1vdl9hcm02
NF9yKGludCBydCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7CisgICAgICAgICAgICBtX2J1ZmZlci5w
dXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1PVl9BUk02NCB8IFJOKHJ0MikgfCBS
RChydCkgfCAoc20gJiAweGYpIHwgKChzbSAmIDB4MTApIDw8ICg1IC0gNCkpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgdm1vdl92ZnAzMl9yKGludCBzbiwgaW50IHJ0LCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJ0IDw9IDE1KTsKLSAgICAg
ICAgICAgIGVtaXRTaW5nbGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8
IFZNT1ZfVkZQLCBydCA8PCAxLCBzbiwgMCk7CisgICAgICAgICAgICBlbWl0U2luZ2xlUHJlY2lz
aW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX1ZGUDMyLCBydCA8PCAxLCBz
biwgMCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZtb3ZfYXJtX3IoaW50IHJ0LCBpbnQg
c24sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHZtb3ZfYXJtMzJfcihpbnQgcnQs
IGludCBzbiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChydCA8PSAxNSk7Ci0gICAgICAgICAgICBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX0FSTSwgcnQgPDwgMSwgc24sIDApOworICAgICAgICAg
ICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1P
Vl9BUk0zMiwgcnQgPDwgMSwgc24sIDApOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB2Y3Z0
X2Y2NF9zMzJfcihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCkBAIC01NDUsMjYg
KzU5NywzNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNp
b25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZDVlRfUzMyX0Y2NCwgKHNkID4+IDEp
LCAwLCBkbSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHZjdnRfdTMyX2Y2NF9yKGludCBz
ZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKCEoc2QgJiAweDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgorICAgICAgICAg
ICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkNW
VF9VMzJfRjY0LCAoc2QgPj4gMSksIDAsIGRtKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
dmN2dF9mNjRfZjMyX3IoaW50IGRkLCBpbnQgc20sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoZGQgPD0gMTUgJiYgc20gPD0gMTUpOworICAgICAgICAg
ICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkNW
VF9GNjRfRjMyLCBkZCwgMCwgc20pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2Y3Z0X2Yz
Ml9mNjRfcihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChkZCA8PSAxNSAmJiBzbSA8PSAxNSk7CisgICAgICAgICAgICBlbWl0
RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWQ1ZUX0YzMl9G
NjQsIGRkLCAwLCBzbSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHZtcnNfYXBzcihDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0
YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZNUlNfQVBTUik7CiAgICAgICAgIH0KIAotI2lmIFdU
Rl9BUk1fQVJDSF9BVF9MRUFTVCg1KQogICAgICAgICB2b2lkIGNsel9yKGludCByZCwgaW50IHJt
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IENMWiB8IFJEKHJkKSB8IFJNKHJtKSk7CiAg
ICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgYmtwdChBUk1Xb3JkIHZhbHVlKQogICAg
ICAgICB7Ci0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCiAgICAgICAgICAgICBtX2J1ZmZl
ci5wdXRJbnQoQktQVCB8ICgodmFsdWUgJiAweGZmMCkgPDwgNCkgfCAodmFsdWUgJiAweGYpKTsK
LSNlbHNlCi0gICAgICAgICAgICAvLyBDYW5ub3QgYWNjZXNzIHRvIFplcm8gbWVtb3J5IGFkZHJl
c3MKLSAgICAgICAgICAgIGR0cl9kcih0cnVlLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3Rl
cnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBub3AoKQpAQCAtNTc0LDIzICs2MzcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCBieChpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0jaWYgV1RG
X0FSTV9BUkNIX0FUX0xFQVNUKDUpIHx8IGRlZmluZWQoX19BUk1fQVJDSF80VF9fKQogICAgICAg
ICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgQlgsIDAsIDAsIFJNKHJt
KSk7Ci0jZWxzZQotICAgICAgICAgICAgbW92X3IoQVJNUmVnaXN0ZXJzOjpwYywgUk0ocm0pLCBj
Yyk7Ci0jZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIEFzc2VtYmxlckxhYmVsIGJseChpbnQg
cm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0jaWYgV1RGX0FSTV9BUkNIX0FUX0xF
QVNUKDUpCiAgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBC
TFgsIDAsIDAsIFJNKHJtKSk7Ci0jZWxzZQotICAgICAgICAgICAgQVNTRVJUKHJtICE9IDE0KTsK
LSAgICAgICAgICAgIGVuc3VyZVNwYWNlKDIgKiBzaXplb2YoQVJNV29yZCksIDApOwotICAgICAg
ICAgICAgbW92X3IoQVJNUmVnaXN0ZXJzOjpsciwgQVJNUmVnaXN0ZXJzOjpwYywgY2MpOwotICAg
ICAgICAgICAgYngocm0sIGNjKTsKLSNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG1fYnVmZmVy
LmxhYmVsKCk7CiAgICAgICAgIH0KIApAQCAtNjUzLDEyICs3MDUsMzIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuc2l6ZU9mQ29uc3RhbnRQb29sKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCisgICAgICAgIEFzc2Vt
YmxlckxhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlRm9yQW55T25lSW5zdHJ1Y3Rpb24oKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24oKTsKICAgICAgICAgICAg
IHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwogICAgICAgICB9CiAKKyAgICAgICAgQXNzZW1ibGVy
TGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9idWZm
ZXIuZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlvbihtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkg
LyBzaXplb2YoQVJNV29yZCkpOworICAgICAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0g
bV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gKG1f
aW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50IC0gbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSkK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOworICAgICAgICAgICAgbV9pbmRleE9m
VGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKKyAgICAgICAgeworICAgICAgICAgICAgQXNzZW1i
bGVyTGFiZWwgcmVzdWx0ID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgICAgICAg
ICB3aGlsZSAocmVzdWx0Lm1fb2Zmc2V0ICsgMSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBv
aW50KSB7CisgICAgICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24o
aW50IGFsaWdubWVudCkKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUgKCFtX2J1ZmZlci5p
c0FsaWduZWQoYWxpZ25tZW50KSkKQEAgLTY4OCwxNCArNzYwLDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHN0YXRpYyBBUk1Xb3JkKiBnZXRMZHJJbW1BZGRyZXNzKEFSTVdvcmQqIGlu
c24pCiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKICAgICAgICAgICAg
IC8vIENoZWNrIGZvciBjYWxsCiAgICAgICAgICAgICBpZiAoKCppbnNuICYgMHgwZjdmMDAwMCkg
IT0gMHgwNTFmMDAwMCkgewogICAgICAgICAgICAgICAgIC8vIE11c3QgYmUgQkxYCiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIDB4MDEyZmZmMzApID09IDB4MDEyZmZmMzApOwogICAg
ICAgICAgICAgICAgIGluc24tLTsKICAgICAgICAgICAgIH0KLSNlbmRpZgorCiAgICAgICAgICAg
ICAvLyBNdXN0IGJlIGFuIGxkciAuLi4sIFtwYyArLy0gaW1tXQogICAgICAgICAgICAgQVNTRVJU
KCgqaW5zbiAmIDB4MGY3ZjAwMDApID09IDB4MDUxZjAwMDApOwogCkBAIC03OTksNiArODcwLDMy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEFic29sdXRlSnVt
cEFkZHJlc3MoZnJvbSkpKSk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgICAgIHsK
KyAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1X
b3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCkgLSAxOworICAgICAgICAgICAgaW50cHRyX3QgZGlmZmVy
ZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0
PGludHB0cl90PihpbnN0cnVjdGlvbikgKyBEZWZhdWx0UHJlZmV0Y2hpbmcgKiBzaXplb2YoQVJN
V29yZCkpOworCisgICAgICAgICAgICBpZiAoIShkaWZmZXJlbmNlICYgMSkpIHsKKyAgICAgICAg
ICAgICAgICBkaWZmZXJlbmNlID4+PSAyOworICAgICAgICAgICAgICAgIGlmICgoZGlmZmVyZW5j
ZSA8PSBCT0ZGU0VUX01BWCAmJiBkaWZmZXJlbmNlID49IEJPRkZTRVRfTUlOKSkgeworICAgICAg
ICAgICAgICAgICAgICAgLy8gRGlyZWN0IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9uWzBdID0gQiB8IEFMIHwgKGRpZmZlcmVuY2UgJiBCUkFOQ0hfTUFTSyk7CisgICAg
ICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkp
OworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gTG9hZCB0YXJnZXQuCisgICAgICAgICAgICBpbnN0
cnVjdGlvblswXSA9IExvYWRVaW50MzIgfCBBTCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQo
QVJNUmVnaXN0ZXJzOjpwYykgfCA0OworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSByZWlu
dGVycHJldF9jYXN0PEFSTVdvcmQ+KHRvKTsKKyAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1
Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSAqIDIpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHNpemVvZihBUk1Xb3JkKSAqIDI7CisgICAgICAgIH0KKwogICAgICAgICAvLyBB
ZGRyZXNzIG9wZXJhdGlvbnMKIAogICAgICAgICBzdGF0aWMgdm9pZCogZ2V0UmVsb2NhdGVkQWRk
cmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKQEAgLTgyMCwxMyArOTE3LDIw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIEhhbmRsZSBpbW1lZGlhdGVzCiAKKyAg
ICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0T3AyKEFSTVdvcmQgaW1tKTsKKworICAgICAgICAvLyBG
YXN0IGNhc2UgaWYgaW1tIGlzIGtub3duIHRvIGJlIGJldHdlZW4gMCBhbmQgMHhmZgogICAgICAg
ICBzdGF0aWMgQVJNV29yZCBnZXRPcDJCeXRlKEFSTVdvcmQgaW1tKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoaW1tIDw9IDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJuIE9QMl9JTU1o
IHwgKGltbSAmIDB4MGYpIHwgKChpbW0gJiAweGYwKSA8PCA0KSA7CisgICAgICAgICAgICByZXR1
cm4gT1AyX0lNTSB8IGltbTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdl
dE9wMihBUk1Xb3JkIGltbSk7CisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMkhhbGYoQVJN
V29yZCBpbW0pCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbW0gPD0gMHhmZik7Cisg
ICAgICAgICAgICByZXR1cm4gT1AyX0lNTV9IQUxGIHwgKGltbSAmIDB4MGYpIHwgKChpbW0gJiAw
eGYwKSA8PCA0KSA7CisgICAgICAgIH0KIAogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQog
ICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRJbW0xNk9wMihBUk1Xb3JkIGltbSkKQEAgLTg0MCwy
MCArOTQ0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG1vdmVJbW0oQVJNV29y
ZCBpbW0sIGludCBkZXN0KTsKICAgICAgICAgQVJNV29yZCBlbmNvZGVDb21wbGV4SW1tKEFSTVdv
cmQgaW1tLCBpbnQgZGVzdCk7CiAKLSAgICAgICAgQVJNV29yZCBnZXRPZmZzZXRGb3JIYWxmd29y
ZERhdGFUcmFuc2ZlcihBUk1Xb3JkIGltbSwgaW50IHRtcFJlZykKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gRW5jb2RlIGltbWVkaWF0ZSBkYXRhIGluIHRoZSBpbnN0cnVjdGlvbiBpZiBpdCBp
cyBwb3NzaWJsZQotICAgICAgICAgICAgaWYgKGltbSA8PSAweGZmKQotICAgICAgICAgICAgICAg
IHJldHVybiBnZXRPcDJCeXRlKGltbSk7Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHN0b3Jl
IHRoZSBkYXRhIGluIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyCi0gICAgICAgICAgICByZXR1cm4gZW5j
b2RlQ29tcGxleEltbShpbW0sIHRtcFJlZyk7Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBNZW1v
cnkgbG9hZC9zdG9yZSBoZWxwZXJzCiAKLSAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIzMihib29s
IGlzTG9hZCwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZz
ZXQsIGJvb2wgYnl0ZXMgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXIz
Mihib29sIGlzTG9hZCwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCwgYm9vbCBieXRlcyA9IGZhbHNl
KTsKLSAgICAgICAgdm9pZCBkb3VibGVUcmFuc2Zlcihib29sIGlzTG9hZCwgRlBSZWdpc3RlcklE
IHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCk7CisgICAgICAgIHZvaWQg
ZGF0YVRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZTEgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3Qs
IFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGJhc2VJbmRl
eFRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZTEgdHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNl
dCk7CisgICAgICAgIHZvaWQgZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZTIgdHlwZSwg
UmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOworICAg
ICAgICB2b2lkIGJhc2VJbmRleFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZTIgdHlwZSwgUmVn
aXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlLCBpbnQzMl90IG9mZnNldCk7CisgICAgICAgIHZvaWQgZGF0YVRyYW5zZmVyRmxvYXQoRGF0
YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQg
YmFzZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGJhc2VJbmRleFRyYW5zZmVyRmxv
YXQoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCk7
CiAKICAgICAgICAgLy8gQ29uc3RhbnQgcG9vbCBobmFkbGVycwogCkBAIC05MDEsMjUgKzk5OSwy
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQVJN
V29yZCBSTShpbnQgcmVnKQorICAgICAgICBzdGF0aWMgQVJNV29yZCBSTShpbnQgcmVnKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwogICAg
ICAgICAgICAgcmV0dXJuIHJlZzsKICAgICAgICAgfQogCi0gICAgICAgIEFSTVdvcmQgUlMoaW50
IHJlZykKKyAgICAgICAgc3RhdGljIEFSTVdvcmQgUlMoaW50IHJlZykKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIHJl
dHVybiByZWcgPDwgODsKICAgICAgICAgfQogCi0gICAgICAgIEFSTVdvcmQgUkQoaW50IHJlZykK
KyAgICAgICAgc3RhdGljIEFSTVdvcmQgUkQoaW50IHJlZykKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIHJldHVybiBy
ZWcgPDwgMTI7CiAgICAgICAgIH0KIAotICAgICAgICBBUk1Xb3JkIFJOKGludCByZWcpCisgICAg
ICAgIHN0YXRpYyBBUk1Xb3JkIFJOKGludCByZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgICAgICAgICByZXR1cm4gcmVnIDw8
IDE2OwpAQCAtOTM0LDYgKzEwMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBBUk1C
dWZmZXIgbV9idWZmZXI7CiAgICAgICAgIEp1bXBzIG1fanVtcHM7CisgICAgICAgIHVpbnQzMl90
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaAppbmRleCBlMmVhMjYxLi40MzAx
NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaApAQCAtMTI3LDkgKzEyNyw5
IEBAIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyOjplbnN1cmVTcGFjZShpbnNuU3Bh
Y2UpOwogICAgIH0KIAotICAgIHZvaWQgZW5zdXJlU3BhY2VGb3JBbnlPbmVJbnN0cnVjdGlvbigp
CisgICAgdm9pZCBlbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9uKGludCBhbW91bnQgPSAxKQog
ICAgIHsKLSAgICAgICAgZmx1c2hJZk5vU3BhY2VGb3IobWF4SW5zdHJ1Y3Rpb25TaXplLCBzaXpl
b2YodWludDY0X3QpKTsKKyAgICAgICAgZmx1c2hJZk5vU3BhY2VGb3IoYW1vdW50ICogbWF4SW5z
dHJ1Y3Rpb25TaXplLCBhbW91bnQgKiBzaXplb2YodWludDY0X3QpKTsKICAgICB9CiAKICAgICBi
b29sIGlzQWxpZ25lZChpbnQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAppbmRleCAyZGI1ZGYxLi4wYWRm
MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmNwcApAQCAtNzcsMTggKzc3LDE4IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXJB
Uk06OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVyCiAKICAgICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0gMCAmJiBhZGRyZXNzLm9mZnNldCArIDB4
MiA8PSAweGZmKSB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAs
IGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF91KGRlc3QsIEFS
TVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZShhZGRyZXNzLm9mZnNldCkp
OwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJoX3UoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKGFkZHJlc3Mub2Zmc2V0ICsgMHgyKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfdSh0cnVlLCBUWVBFX1VILCBkZXN0LCBBUk1SZWdp
c3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoYWRkcmVzcy5vZmZzZXQpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuZHRyaF91KHRydWUsIFRZUEVfVUgsIEFSTVJlZ2lzdGVyczo6UzAs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNl
dCArIDB4MikpOwogICAgIH0gZWxzZSBpZiAoYWRkcmVzcy5vZmZzZXQgPCAwICYmIGFkZHJlc3Mu
b2Zmc2V0ID49IC0weGZmKSB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVy
czo6UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF9kKGRl
c3QsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRkcmVzcy5v
ZmZzZXQpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF9kKEFSTVJlZ2lzdGVyczo6UzAsIEFS
TVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRkcmVzcy5vZmZzZXQg
LSAweDIpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF9kKHRydWUsIFRZUEVfVUgsIGRlc3Qs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRkcmVzcy5vZmZz
ZXQpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF9kKHRydWUsIFRZUEVfVUgsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRk
cmVzcy5vZmZzZXQgLSAweDIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3Mub2Zmc2V0KTsKICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgb3AyKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF9yKGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0
ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfcih0cnVlLCBUWVBFX1VILCBkZXN0
LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6Ok9Q
Ml9JTU0gfCAweDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJoX3IoQVJNUmVnaXN0ZXJzOjpT
MCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
ZHRyaF9yKHRydWUsIFRZUEVfVUgsIEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwgQVJN
UmVnaXN0ZXJzOjpTMCk7CiAgICAgfQogICAgIG1fYXNzZW1ibGVyLm9ycl9yKGRlc3QsIGRlc3Qs
IG1fYXNzZW1ibGVyLmxzbChBUk1SZWdpc3RlcnM6OlMwLCAxNikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCmluZGV4IDhl
YTI5ZTMuLmE2MjYxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKQEAgLTkwLDYgKzkwLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkc19yKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9p
ZCBhZGQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHNfcihkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAg
ICAgewogICAgICAgICBsb2FkMzIoYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpTMSk7CkBAIC0xMTgs
NiArMTIzLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19yKGRlc3QsIGRl
c3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0
ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHNfcihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBUk1Xb3JkIHcgPSBtX2Fz
c2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAsIHRydWUpOwpAQCAt
MTM2LDEzICsxNDYsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19y
KGRlc3QsIHNyYywgdyk7CiAgICAgfQogCi0gICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNo
aWZ0X2Ftb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJ
RCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVJNV29yZCB3
ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDIoMHgxZik7Ci0gICAgICAgIEFTU0VSVCh3ICE9IEFSTUFz
c2VtYmxlcjo6SU5WQUxJRF9JTU0pOwotICAgICAgICBtX2Fzc2VtYmxlci5hbmRfcihBUk1SZWdp
c3RlcnM6OlMwLCBzaGlmdF9hbW91bnQsIHcpOworICAgICAgICBsc2hpZnQzMihkZXN0LCBzaGlm
dEFtb3VudCwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDB4MWYpOworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRfcihBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAg
ICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzbF9yKGRlc3QsIEFS
TVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNz
ZW1ibGVyLmxzbF9yKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQg
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTU1LDEzICsx
NjksMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3Nl
bWJsZXIubHNsKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7CiAgICAgfQogCi0gICAgdm9pZCBt
dWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgbXVsMzIoUmVn
aXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBpZiAoc3JjID09IGRlc3QpIHsKLSAgICAgICAgICAgIG1vdmUoc3JjLCBBUk1SZWdpc3Rl
cnM6OlMwKTsKLSAgICAgICAgICAgIHNyYyA9IEFSTVJlZ2lzdGVyczo6UzA7CisgICAgICAgIGlm
IChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7CisgICAgICAg
ICAgICAgICAgbW92ZShvcDIsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICAgICAgICAgIG9w
MiA9IEFSTVJlZ2lzdGVyczo6UzA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIFN3YXAgdGhlIG9wZXJhbmRzLgorICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQgdG1w
ID0gb3AxOworICAgICAgICAgICAgICAgIG9wMSA9IG9wMjsKKyAgICAgICAgICAgICAgICBvcDIg
PSB0bXA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIubXVs
c19yKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bHNfcihkZXN0LCBv
cDEsIG9wMik7CisgICAgfQorCisgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbXVsMzIoc3JjLCBkZXN0LCBkZXN0KTsKICAgICB9
CiAKICAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCkBAIC0xNzIsNyArMTk4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBuZWcz
MihSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5yc2JzX3Io
c3JjRGVzdCwgc3JjRGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOworICAgICAgICBtX2Fz
c2VtYmxlci5yc2JzX3Ioc3JjRGVzdCwgc3JjRGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRl
KDApKTsKICAgICB9CiAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKQEAgLTE5NSwxNSArMjIxLDE5IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
b3Jyc19yKGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKLSAgICB2b2lkIHJzaGlmdDMyKFJlZ2lz
dGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCByc2hpZnQzMihS
ZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBB
Uk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDFmKTsKLSAgICAgICAgQVNTRVJUKHcg
IT0gQVJNQXNzZW1ibGVyOjpJTlZBTElEX0lNTSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZF9y
KEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0X2Ftb3VudCwgdyk7CisgICAgICAgIHJzaGlmdDMyKGRl
c3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHJzaGlmdDMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3
KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIuYXNyX3Io
ZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVz
dCwgbV9hc3NlbWJsZXIuYXNyX3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQotICAg
IAorCiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICByc2hpZnQzMihkZXN0LCBpbW0sIGRlc3QpOwpAQCAtMjEzLDE2ICsy
NDMsMjAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3Qs
IG1fYXNzZW1ibGVyLmFzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KLSAgICAK
LSAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0X2Ftb3VudCwgUmVnaXN0ZXJJRCBk
ZXN0KQorCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRP
cDIoMHgxZik7Ci0gICAgICAgIEFTU0VSVCh3ICE9IEFSTUFzc2VtYmxlcjo6SU5WQUxJRF9JTU0p
OwotICAgICAgICBtX2Fzc2VtYmxlci5hbmRfcihBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdF9hbW91
bnQsIHcpOwotICAgICAgICAKLSAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNz
ZW1ibGVyLmxzcl9yKGRlc3QsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgdXJzaGlmdDMy
KGRlc3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHVyc2hp
ZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRl
KDB4MWYpOworICAgICAgICBtX2Fzc2VtYmxlci5hbmRfcihBUk1SZWdpc3RlcnM6OlMwLCBzaGlm
dEFtb3VudCwgdyk7CisKKyAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1i
bGVyLmxzcl9yKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgIH0KKwogICAgIHZvaWQgdXJz
aGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3IoZGVzdCwgaW1tLm1fdmFs
dWUgJiAweDFmKSk7CkBAIC0yNjYsNiArMzAwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuZW9yc19yKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihS
ZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAg
dm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCkBAIC0yOTUsMjIgKzMzNCw0MiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMih0cnVlLCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0LCB0cnVlKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuZGF0YVRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDgsIGRlc3QsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZDgoQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJh
c2VJbmRleFRyYW5zZmVyMzIodHJ1ZSwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCwgdHJ1ZSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpM
b2FkVWludDgsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8
aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
bG9hZDhTaWduZWQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpMb2Fk
SW50OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBsb2Fk
MTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwg
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBs
b2FkMTYoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRk
cmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQxNlNp
Z25lZChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQxNiwg
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJl
c3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9pZCBsb2FkMzIoSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKHRydWUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5vZmZzZXQpOworICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwogICAg
IH0KIAogICAgIHZvaWQgbG9hZDMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKHRydWUsIGRl
c3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhU
cmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9m
ZnNldCk7CiAgICAgfQogCiAjaWYgQ1BVKEFSTVY1X09SX0xPV0VSKQpAQCAtMzMxLDcgKzM5MCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGRhdGFMYWJlbCh0aGlzKTsK
ICAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCAwKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKHRydWUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVn
aXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91cihBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAg
IHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogICAgIApAQCAtMzQyLDM2ICs0MDEsMzIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwogICAgIH0KIAotICAgIHZvaWQgbG9hZDE2
KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgRGF0YUxhYmVsMzIgc3Rv
cmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVz
cykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGFk
ZHJlc3MuYmFzZSwgbV9hc3NlbWJsZXIubHNsKGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
KTsKLSAgICAgICAgbG9hZDE2KEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSwgYWRkcmVzcy5vZmZz
ZXQpLCBkZXN0KTsKKyAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOworICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBt
X2Fzc2VtYmxlci5kdHJfdXIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNz
LmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwogICAg
IH0KLSAgICAKLSAgICB2b2lkIGxvYWQxNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQorCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBh
ZGRyZXNzKQogICAgIHsKLSAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IDApCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJoX3UoZGVzdCwgYWRkcmVzcy5iYXNlLCBtX2Fzc2VtYmxlci5n
ZXRPZmZzZXRGb3JIYWxmd29yZERhdGFUcmFuc2ZlcihhZGRyZXNzLm9mZnNldCwgQVJNUmVnaXN0
ZXJzOjpTMCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJoX2Qo
ZGVzdCwgYWRkcmVzcy5iYXNlLCBtX2Fzc2VtYmxlci5nZXRPZmZzZXRGb3JIYWxmd29yZERhdGFU
cmFuc2ZlcigtYWRkcmVzcy5vZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDgsIHNy
YywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Mu
c2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCi0gICAgRGF0YUxhYmVsMzIgc3RvcmUz
MldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAg
IHsKLSAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIDApOwotICAgICAgICBtX2Fzc2VtYmxl
ci5kdHJfdXIoZmFsc2UsIHNyYywgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAg
ICAgICAgcmV0dXJuIGRhdGFMYWJlbDsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJh
bnNmZXIxNihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDE2LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZz
ZXQpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIz
MihmYWxzZSwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZGF0YVRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIo
UmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihmYWxzZSwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6
OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nh
c3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAogICAgIHZv
aWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKQEAg
LTM4MCwxNyArNDM1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihBUk1SZWdpc3RlcnM6
OlMxLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgQVJNUmVnaXN0
ZXJzOjpTMSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNz
ZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNl
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6
OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyX3UoZmFsc2UsIHNyYywgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywgQVJNUmVnaXN0
ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0s
IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFS
TVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMxKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoZmFsc2UsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJl
Z2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6
OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKICAg
ICB9CiAKICAgICB2b2lkIHBvcChSZWdpc3RlcklEIGRlc3QpCkBAIC00MjIsNyArNDgzLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBtb3ZlKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBzcmMpOworICAgICAgICBp
ZiAoc3JjICE9IGRlc3QpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBzcmMp
OwogICAgIH0KIAogICAgIHZvaWQgbW92ZShUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQpAQCAtNTY2LDYgKzYyOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGxvYWQzMihhZGRyZXNz
LCBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICB9CiAKKyAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5t
X3B0ciksIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhBUk1SZWdp
c3RlcnM6OlMwLCAwKSwgQVJNUmVnaXN0ZXJzOjpwYyk7CisgICAgfQorCiAgICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQg
PT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CkBAIC01
NzMsNiArNjQxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
am1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8
fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8p
KTsKKyAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgSnVtcCBi
cmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAo
Y29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsK
QEAgLTU4NywyOCArNjYyLDQ3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAotICAgIHZvaWQgbXVsbDMy
KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwg
QWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewotICAgICAgICBpZiAoc3JjMSA9PSBkZXN0KSB7
Ci0gICAgICAgICAgICBtb3ZlKHNyYzEsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAg
c3JjMSA9IEFSTVJlZ2lzdGVyczo6UzA7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxv
dykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7CisgICAgICAgIGFkZDMyKGltbSwgZGVzdCk7CisgICAgICAgIHJldHVybiBKdW1wKG1f
YXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKKyAgICB9CisKKyAgICB2b2lkIG11
bGwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgaWYgKG9wMSA9PSBk
ZXN0KSB7CisgICAgICAgICAgICAgICAgbW92ZShvcDIsIEFSTVJlZ2lzdGVyczo6UzApOworICAg
ICAgICAgICAgICAgIG9wMiA9IEFSTVJlZ2lzdGVyczo6UzA7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIFN3YXAgdGhlIG9wZXJhbmRzLgorICAgICAgICAgICAgICAg
IFJlZ2lzdGVySUQgdG1wID0gb3AxOworICAgICAgICAgICAgICAgIG9wMSA9IG9wMjsKKyAgICAg
ICAgICAgICAgICBvcDIgPSB0bXA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
bV9hc3NlbWJsZXIubXVsbF9yKEFSTVJlZ2lzdGVyczo6UzEsIGRlc3QsIHNyYzIsIHNyYzEpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tdWxsX3IoQVJNUmVnaXN0ZXJzOjpTMSwgZGVzdCwgb3AxLCBv
cDIpOwogICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihBUk1SZWdpc3RlcnM6OlMxLCBtX2Fzc2Vt
Ymxlci5hc3IoZGVzdCwgMzEpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1
bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVn
aXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOwogICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAg
ICAgICAgICAgbXVsbDMyKHNyYywgZGVzdCwgZGVzdCk7CisgICAgICAgICAgICBtdWxsMzIoc3Jj
MSwgc3JjMiwgZGVzdCk7CiAgICAgICAgICAgICBjb25kID0gTm9uWmVybzsKICAgICAgICAgfQog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtdWwzMihzcmMsIGRlc3QpOworICAgICAgICAgICAg
bXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVy
LmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaE11bDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYywgZGVzdCwgZGVzdCk7
CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAo
Y29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CkBAIC02NzIsNyArNzY2LDYgQEAg
cHVibGljOgogICAgIENhbGwgbmVhckNhbGwoKQogICAgIHsKICNpZiBXVEZfQVJNX0FSQ0hfQVRf
TEVBU1QoNSkKLSAgICAgICAgZW5zdXJlU3BhY2UoMiAqIHNpemVvZihBUk1Xb3JkKSwgc2l6ZW9m
KEFSTVdvcmQpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZEJyYW5jaFRhcmdldChBUk1SZWdp
c3RlcnM6OlMxLCBBUk1Bc3NlbWJsZXI6OkFMLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIENhbGwo
bV9hc3NlbWJsZXIuYmx4KEFSTVJlZ2lzdGVyczo6UzEpLCBDYWxsOjpMaW5rYWJsZU5lYXIpOwog
I2Vsc2UKQEAgLTY5OSwxNSArNzkyLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBhcmUzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdo
dCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVm
dCwgcmlnaHQpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6
OmdldE9wMigwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxl
cjo6Z2V0T3AyKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOworICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlv
bihjb25kKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgbV9hc3NlbWJsZXIu
Z2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0aW9u
KGNvbmQpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwogICAgIH0KIAogICAgIHZv
aWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0
ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtNzIyLDggKzgxNSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKDAsIHJlZyk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdF9yKHJlZywgbV9hc3NlbWJsZXIuZ2V0SW1tKG1h
c2subV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3Zf
cihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1v
dl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCiAgICAgdm9pZCB0ZXN0MzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ss
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTc0NiwyNSArODM5LDI1IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMxLCByZWludGVy
cHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV9wdHIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZHRyX3UodHJ1ZSwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0
ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CiAgICAgICAgIGFkZDMyKGltbSwgQVJNUmVn
aXN0ZXJzOjpTMSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJz
OjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmR0cl91KGZhbHNlLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6
OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpTdG9yZVVp
bnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAg
ICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMSwg
cmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmR0cl91KHRydWUsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDAp
OworICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFS
TVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOwogICAgICAgICBzdWIzMihpbW0s
IEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJl
Z2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShmYWxzZSwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVn
aXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAg
IH0KIAogICAgIHZvaWQgbG9hZDMyKGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpT
MCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmR0cl91KHRydWUsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fz
c2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIEFSTVJlZ2lzdGVy
czo6UzAsIDApOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKQEAgLTg2MSwy
MCArOTU0LDUyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50QWJzKCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZvaWQgbG9hZEZsb2F0KEJh
c2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRmxvYXQsIGRl
c3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgbG9hZERvdWJsZShJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5kb3VibGVUcmFuc2Zlcih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJN
QXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0
KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNm
ZXJGbG9hdChBUk1Bc3NlbWJsZXI6OkxvYWREb3VibGUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZz
ZXQpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZERvdWJsZShjb25zdCB2b2lkKiBhZGRyZXNzLCBG
UFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0o
QVJNUmVnaXN0ZXJzOjpTMCwgKEFSTVdvcmQpYWRkcmVzcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmZkdHJfdSh0cnVlLCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIEFSTVJlZ2lz
dGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5mZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2Fk
RG91YmxlLCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIHN0
b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3Rv
cmVGbG9hdCwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGlu
dD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIHN0
b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZG91YmxlVHJhbnNmZXIoZmFsc2UsIHNyYywgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2Zl
ckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVEb3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJ
bmRleFRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZURvdWJsZSwgc3JjLCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFk
ZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihyZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKSwgQVJNUmVnaXN0ZXJzOjpT
MCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6
U3RvcmVEb3VibGUsIHNyYywgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgfQorCisgICAgdm9p
ZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9m
NjRfcihkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtODgyLDE3ICsxMDA3LDMzIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjRfcihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0K
IAorICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIs
IEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjRf
cihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWRkcmVzcyBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZERvdWJsZShzcmMsIEFS
TVJlZ2lzdGVyczo6U0QwKTsKICAgICAgICAgYWRkRG91YmxlKEFSTVJlZ2lzdGVyczo6U0QwLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZERvdWJsZShBYnNvbHV0ZUFkZHJlc3MgYWRkcmVz
cywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3Mu
bV9wdHIsIEFSTVJlZ2lzdGVyczo6U0QwKTsKKyAgICAgICAgYWRkRG91YmxlKEFSTVJlZ2lzdGVy
czo6U0QwLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZkaXZf
ZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJsZShGUFJl
Z2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0K
KwogICAgIHZvaWQgZGl2RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBVbnRlc3RlZApAQCAtOTA1LDYg
KzEwNDYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci52c3ViX2Y2NF9yKGRlc3Qs
IGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9w
MSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci52c3ViX2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lk
IHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBsb2FkRG91YmxlKHNyYywgQVJNUmVnaXN0ZXJzOjpTRDApOwpAQCAtOTIyLDM5ICsxMDY4LDU1
IEBAIHB1YmxpYzoKICAgICAgICAgbXVsRG91YmxlKEFSTVJlZ2lzdGVyczo6U0QwLCBkZXN0KTsK
ICAgICB9CiAKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVy
SUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZt
dWxfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnZzcXJ0X2Y2NF9yKGRlc3QsIHNyYyk7CiAgICAgfQogICAgIAotICAgIHZvaWQgYWJz
RG91YmxlKEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklEKQorICAgIHZvaWQgYWJzRG91YmxlKEZQ
UmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZhYnNfZjY0X3IoZGVzdCwgc3Jj
KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZuZWdfZjY0X3IoZGVz
dCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZt
b3ZfdmZwX3IoZGVzdCA8PCAxLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bW92X3ZmcDMy
X3IoZGVzdCA8PCAxLCBzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9zMzJfcihk
ZXN0LCBkZXN0IDw8IDEpOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUo
QWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IC8vIFVudGVzdGVkCi0gICAgICAgIC8vIGZsZHMgZG9lcyBub3Qgd29ydGgg
dGhlIGVmZm9ydCBoZXJlCiAgICAgICAgIGxvYWQzMihzcmMsIEFSTVJlZ2lzdGVyczo6UzEpOwog
ICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsKICAg
ICB9CiAKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFic29sdXRlQWRkcmVzcyBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIFVudGVzdGVkCi0gICAgICAgIC8vIGZsZHMgZG9lcyBub3Qgd29ydGggdGhlIGVmZm9ydCBo
ZXJlCi0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMSwgKEFS
TVdvcmQpc3JjLm1fcHRyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgQVJNUmVn
aXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihzcmMubV9wdHIpLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgbG9hZDMyKEFkZHJl
c3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICBjb252ZXJ0
SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbnZlcnRGbG9hdFRvRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9mMzJfcihkc3QsIHNyYyk7Cisg
ICAgfQorCisgICAgdm9pZCBjb252ZXJ0RG91YmxlVG9GbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBG
UFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mMzJfZjY0
X3IoZHN0LCBzcmMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRp
dGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9mNjRfcihsZWZ0LCByaWdodCk7CkBAIC05NjgsMTIg
KzExMzAsNDIgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2Vu
dGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2gg
Zm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwogICAgIC8v
IChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5UX01JTikuCi0gICAgSnVtcCBicmFuY2hU
cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJh
bmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91Ymxl
VG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRl
VHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKICAgICB7Ci0gICAgICAg
IFVOVVNFRF9QQVJBTShzcmMpOwotICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB0
cnVuY2F0ZURvdWJsZVRvSW50MzIoc3JjLCBkZXN0KTsKKworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkp
OworICAgICAgICBtX2Fzc2VtYmxlci5iaWNfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3Rl
cnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOworCisgICAgICAgIEFSTVdvcmQg
dyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4ODAwMDAwMDApOworICAgICAgICBBU1NFUlQodyAh
PSBBUk1Bc3NlbWJsZXI6OklOVkFMSURfSU1NKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wX3Io
QVJNUmVnaXN0ZXJzOjpTMCwgdyk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVR
IDogQVJNQXNzZW1ibGVyOjpORSkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVE
b3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRy
dW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7Cisg
ICAgICAgIHRydW5jYXRlRG91YmxlVG9VaW50MzIoc3JjLCBkZXN0KTsKKworICAgICAgICBtX2Fz
c2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5iaWNfcihBUk1SZWdpc3RlcnM6OlMwLCBB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOworCisgICAgICAg
IG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgwKSk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChicmFuY2hUeXBl
ID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVRIDogQVJNQXNzZW1i
bGVyOjpORSkpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIHZh
bHVlIGlzIG91dHNpZGUgb2YgdGhlIGludGVnZXIgcmFuZ2UuCisgICAgdm9pZCB0cnVuY2F0ZURv
dWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0X3IoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwg
c3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMl9yKGRlc3QsIEFSTVJlZ2lzdGVy
czo6U0QwIDw8IDEpOworICAgIH0KKworICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci52Y3Z0X3UzMl9mNjRfcihBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOworICAgICAg
ICBtX2Fzc2VtYmxlci52bW92X2FybTMyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7
CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2Vz
IHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAtOTgzLDcgKzExNzUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCBmcFRlbXApCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjRfcihBUk1SZWdpc3RlcnM6OlNE
MCA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybV9yKGRlc3QsIEFSTVJl
Z2lzdGVyczo6U0QwIDw8IDEpOworICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyX3IoZGVz
dCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CiAKICAgICAgICAgLy8gQ29udmVydCB0aGUgaW50
ZWdlciByZXN1bHQgYmFjayB0byBmbG9hdCAmIGNvbXBhcmUgdG8gdGhlIG9yaWdpbmFsIHZhbHVl
IC0gaWYgbm90IGVxdWFsIG9yIHVub3JkZXJlZCAoTmFOKSB0aGVuIGp1bXAuCiAgICAgICAgIG1f
YXNzZW1ibGVyLnZjdnRfZjY0X3MzMl9yKEFSTVJlZ2lzdGVyczo6U0QwLCBBUk1SZWdpc3RlcnM6
OlNEMCA8PCAxKTsKQEAgLTk5NSwxOCArMTE4NywyNSBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJy
YW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1B
c3NlbWJsZXI6OmdldE9wMigwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJlZ2lz
dGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAgICAgIGNvbnZlcnRJ
bnQzMlRvRG91YmxlKEFSTVJlZ2lzdGVyczo6UzAsIHNjcmF0Y2gpOwogICAgICAgICByZXR1cm4g
YnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJ
RCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJz
OjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zf
cihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwogICAgICAg
ICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMwLCBzY3JhdGNoKTsKICAgICAg
ICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCByZWcsIHNjcmF0
Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcu
ID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgorICAgIHN0YXRpYyBSZWxhdGlvbmFs
Q29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAg
ICBBU1NFUlQoKHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb25kICYgMHgwZmZmZmZmZikpID09IDAg
JiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbmQpIDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEFS
TUFzc2VtYmxlcjo6QUwpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uYWxD
b25kaXRpb24+KGNvbmQgXiAweDEwMDAwMDAwKTsKKyAgICB9CisKICAgICB2b2lkIG5vcCgpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTEwMTksMTIgKzEyMTgsMTIgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxh
YmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAg
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEFSTUFzc2VtYmxlcjo6
cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0
aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBBUk1Bc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xMDczLDI5ICsxMjcyLDI5IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgaWYgKG9mZnNldCA+PSAwKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0IDw9
IDB4ZmZmKSB7CiAgICAgICAgICAgICAgICAgcHJlcGFyZUNhbGwoKTsKLSAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5kdHJfdSh0cnVlLCB0YXJnZXRSZWcsIGJhc2UsIG9mZnNldCk7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCB0
YXJnZXRSZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9mZnNldCA8
PSAweGZmZmZmKSB7CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IodG1wUmVnLCBi
YXNlLCBBUk1Bc3NlbWJsZXI6Ok9QMl9JTU0gfCAob2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7
CiAgICAgICAgICAgICAgICAgcHJlcGFyZUNhbGwoKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5kdHJfdSh0cnVlLCB0YXJnZXRSZWcsIHRtcFJlZywgb2Zmc2V0ICYgMHhmZmYpOworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
dGFyZ2V0UmVnLCB0bXBSZWcsIG9mZnNldCAmIDB4ZmZmKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShvZmZzZXQsIHRtcFJlZyk7CiAg
ICAgICAgICAgICAgICAgcHJlcGFyZUNhbGwoKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5kdHJfdXIodHJ1ZSwgdGFyZ2V0UmVnLCBiYXNlLCB0bXBSZWcpOworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmR0cl91cihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIHRhcmdldFJlZywg
YmFzZSwgdG1wUmVnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlICB7CiAgICAgICAg
ICAgICBvZmZzZXQgPSAtb2Zmc2V0OwogICAgICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikg
ewogICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyX2QodHJ1ZSwgdGFyZ2V0UmVnLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmR0cl9kKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgdGFyZ2V0UmVn
LCBiYXNlLCBvZmZzZXQpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZm
ZikgewogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1Yl9yKHRtcFJlZywgYmFzZSwgQVJN
QXNzZW1ibGVyOjpPUDJfSU1NIHwgKG9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwogICAgICAg
ICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRy
X2QodHJ1ZSwgdGFyZ2V0UmVnLCB0bXBSZWcsIG9mZnNldCAmIDB4ZmZmKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5kdHJfZChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIHRhcmdldFJl
ZywgdG1wUmVnLCBvZmZzZXQgJiAweGZmZik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0ob2Zmc2V0LCB0bXBSZWcpOwogICAgICAgICAg
ICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX2Ry
KHRydWUsIHRhcmdldFJlZywgYmFzZSwgdG1wUmVnKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5kdHJfZHIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCB0YXJnZXRSZWcsIGJhc2UsIHRt
cFJlZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVB
U1QoNSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5o
CmluZGV4IDU5ZDA0MjIuLmQ1NWQzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9TSDRBc3NlbWJsZXIuaApAQCAtMTI0MSw3ICsxMjQxLDcgQEAgcHVibGljOgogCiAg
ICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQogICAgIHsKLSAgICAgICAgbV9idWZmZXIuZW5zdXJl
U3BhY2VGb3JBbnlPbmVJbnN0cnVjdGlvbigpOworICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFj
ZUZvckFueUluc3RydWN0aW9uKCk7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJz
LmgKaW5kZXggZjg2YzE1ZS4uZWQzNTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkp
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRj
aFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RI
VU1CMikKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKQogICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaCA9IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpAQCAtMjYyLDEzICsyNjIsMjEgQEAgcHVibGljOgog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpICYmIENQVShBUk0pCiAgICAgdm9pZCBib3hEb3VibGUoRlBS
UmVnIGZwciwgR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCiAgICAgeworI2lmIENQ
VShBUk1fVEhVTUIyKQogICAgICAgICBtX2Fzc2VtYmxlci52bW92KHBheWxvYWRHUFIsIHRhZ0dQ
UiwgZnByKTsKKyNlbHNlCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtNjRfcihwYXlsb2Fk
R1BSLCB0YWdHUFIsIGZwcik7CisjZW5kaWYKICAgICB9CiAgICAgdm9pZCB1bmJveERvdWJsZShH
UFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUiwgRlBSUmVnIGZwciwgRlBSUmVnIHNjcmF0
Y2hGUFIpCiAgICAgewogICAgICAgICBqaXRBc3NlcnRJc0pTRG91YmxlKHRhZ0dQUik7CiAgICAg
ICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoRlBSKTsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAg
ICAgbV9hc3NlbWJsZXIudm1vdihmcHIsIHBheWxvYWRHUFIsIHRhZ0dQUik7CisjZWxzZQorICAg
ICAgICBtX2Fzc2VtYmxlci52bW92X3ZmcDY0X3IoZnByLCBwYXlsb2FkR1BSLCB0YWdHUFIpOwor
I2VuZGlmCiAgICAgfQogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDQ2FsbEhlbHBlcnMuaAppbmRleCBiNjAyOTA4Li5kMzQ4ZGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKQEAgLTQzNCwxNyArNDM0LDI4IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8RlBSSW5mbzo6YXJndW1lbnRG
UFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+KGFyZzEsIGFyZzIpOwogICAgIH0KLSNlbHNlCisj
ZWxpZiBDUFUoQVJNKQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJS
ZWcgYXJnMSkKICAgICB7CisjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGFzc2VtYmxlcigp
LnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEp
OworI2Vsc2UKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdl9hcm02NF9yKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVn
IGFyZzIpCiAgICAgeworI2lmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBhc3NlbWJsZXIoKS52
bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsK
ICAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMywgYXJnMik7CisjZWxzZQorICAgICAgICBhc3NlbWJsZXIoKS52bW92X2Fy
bTY0X3IoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEp
OworICAgICAgICBhc3NlbWJsZXIoKS52bW92X2FybTY0X3IoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOworI2VuZGlmCiAgICAgfQorI2Vsc2UKKyNl
cnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCmluZGV4IDZhZjQ1ZGQuLmU4MTdlZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCkBAIC0xMDIsNyArMTAyLDcgQEAg
cHVibGljOgogCiAjZW5kaWYKIAotI2lmIENQVShBUk1fVEhVTUIyKQorI2lmIENQVShBUk0pCiAK
IGNsYXNzIEZQUkluZm8gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUklu
Zm8uaAppbmRleCBiZDRmYTMyLi44OWZhZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dQUkluZm8uaApAQCAtMzg0LDcgKzM4NCw3IEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0jaWYg
Q1BVKEFSTV9USFVNQjIpCisjaWYgQ1BVKEFSTSkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyA0CiAKIGNsYXNzIEdQUkluZm8gewpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IEFSTVJlZ2lzdGVyczo6
cjE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBBUk1S
ZWdpc3RlcnM6OnIyOyAvLyByZWdUMgogICAgIC8vIEZJWE1FOiByMyBpcyBjdXJyZW50bHkgdXNl
ZCBiZSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgYSB0ZW1wb3JhcnkgLSBpdCBzZWVtcwotICAgIC8v
IFRoaXMgY291bGQgdGhyZW9yZXRpY2FsbHkgYmUgYSBwcm9ibGVtIGlmIHRoZWlzIGlzIHVzZWQg
aW4gY29kZSBnZW5lcmF0aW9uCisgICAgLy8gVGhpcyBjb3VsZCB0aHJlb3JldGljYWxseSBiZSBh
IHByb2JsZW0gaWYgdGhpcyBpcyB1c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgogICAgIC8vIGJldHdl
ZW4gdGhlIGFyZ3VtZW50cyBiZWluZyBzZXQgdXAsIGFuZCB0aGUgY2FsbCBiZWluZyBtYWRlLiBU
aGF0IHNhaWQsCiAgICAgLy8gYW55IGNoYW5nZSBpbnRyb2R1Y2luZyBhIHByb2JsZW0gaGVyZSBp
cyBsaWtlbHkgdG8gYmUgaW1tZWRpYXRlbHkgYXBwYXJlbnQhCiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBhcmd1bWVudEdQUjMgPSBBUk1SZWdpc3RlcnM6OnIzOyAvLyBGSVhNRSEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDc0YjNmMTkuLjVkNjU3
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
MTQwLDYgKzE0MCw2MiBAQAogICAgICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikg
IldpdGhSZXR1cm5BZGRyZXNzIiAiXG4iIFwKICAgICApOwogCisjZWxpZiBDT01QSUxFUihHQ0Mp
ICYmIENQVShBUk1fVFJBRElUSU9OQUwpCisKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRI
X1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pIFwKKyAgICBhc20gKCBcCisgICAgIi50ZXh0IiAi
XG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIlxuIiBcCisgICAg
SElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAorICAgIElOTElORV9BUk1fRlVOQ1RJT04oZnVu
Y3Rpb24pIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiOiIgIlxuIiBcCisgICAgICAg
ICJtb3YgYTIsIGxyIiAiXG4iIFwKKyAgICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rp
b24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCisgICAgKTsKKworI2RlZmluZSBGVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUNJKGZ1bmN0aW9uKSBcCisgICAgYXNtICgg
XAorICAgICIudGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rp
b24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBJTkxJTkVf
QVJNX0ZVTkNUSU9OKGZ1bmN0aW9uKSBcCisgICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoi
ICJcbiIgXAorICAgICAgICAibW92IGE0LCBsciIgIlxuIiBcCisgICAgICAgICJiICIgTE9DQUxf
UkVGRVJFTkNFKGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICk7CisK
Ky8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBX
aGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJlIGFsaWduZWQgZXZlbi1u
dW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgorLy8gQXMgYSByZXN1bHQsIHJldHVy
biBhZGRyZXNzIHdpbGwgYmUgYXQgYSA0LWJ5dGUgZnVydGhlciBsb2NhdGlvbiBpbiB0aGUgZm9s
bG93aW5nIGNhc2VzLgorI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0pCisj
ZGVmaW5lIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNTX0VKSSAic3RyIGxyLCBbc3As
ICM0XSIKKyNkZWZpbmUgSU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FERFJFU1NfRUpDSSAic3Ry
IGxyLCBbc3AsICM4XSIKKyNlbHNlCisjZGVmaW5lIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9B
RERSRVNTX0VKSSAic3RyIGxyLCBbc3AsICMwXSIKKyNkZWZpbmUgSU5TVFJVQ1RJT05fU1RPUkVf
UkVUVVJOX0FERFJFU1NfRUpDSSAic3RyIGxyLCBbc3AsICM0XSIKKyNlbmRpZgorCisjZGVmaW5l
IEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkkoZnVuY3Rpb24pIFwKKyAg
ICBhc20gKCBcCisgICAgIi50ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhmdW5jdGlvbikgIlxuIiBcCisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAorICAg
IElOTElORV9BUk1fRlVOQ1RJT04oZnVuY3Rpb24pIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0
aW9uKSAiOiIgIlxuIiBcCisgICAgICAgIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNT
X0VKSSAiXG4iIFwKKyAgICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRo
UmV0dXJuQWRkcmVzcyIgIlxuIiBcCisgICAgKTsKKworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVS
X1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDSShmdW5jdGlvbikgXAorICAgIGFzbSAoIFwKKyAgICAi
LnRleHQiICJcbiIgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiXG4i
IFwKKyAgICBISURFX1NZTUJPTChmdW5jdGlvbikgIlxuIiBcCisgICAgSU5MSU5FX0FSTV9GVU5D
VElPTihmdW5jdGlvbikgXAorICAgIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICI6IiAiXG4iIFwK
KyAgICAgICAgSU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FERFJFU1NfRUpDSSAiXG4iIFwKKyAg
ICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIg
IlxuIiBcCisgICAgKTsKKwogI2VuZGlmCiAKICNkZWZpbmUgUF9GVU5DVElPTl9XUkFQUEVSX1dJ
VEhfUkVUVVJOX0FERFJFU1NfRShmdW5jdGlvbikgXApAQCAtMTMyMiw2ICsxMzc4LDE3IEBAIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKICAgICAibW92IHIw
LCByNSIgIlxuIgogICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCiApOworI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKK2Fz
bSAoCisiLnRleHQiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
K0lOTElORV9BUk1fRlVOQ1RJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkKK1NZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMt
NDBdIiAiXG4iCisgICAgIm1vdiByMCwgcjUiICJcbiIKKyAgICAiYiAiIExPQ0FMX1JFRkVSRU5D
RShnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKICNlbmRpZgog
CiBleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9O
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2N2Ey
MmI3Li4xMmQ0Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0xODAwLDcgKzE4MDAsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAg
ICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTV9USFVNQjIpCisjaWYgIWRlZmlu
ZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkKICAgICB2b2lkIHByZXBhcmVGb3JFeHRlcm5hbENhbGwo
KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZih2b2lkKikg
LyA0OyBpKyspCkBAIC0xODYzLDEzICsxODYzLDIxIEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0
aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsK
KyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkudm1vdihyZXN1
bHQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwor
I2Vsc2UKKyAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkudm1vdl92ZnA2NF9yKHJlc3VsdCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVu
ZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0
KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENh
bGwoZnVuY3Rpb24pOworI2lmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBtX2ppdC5hc3NlbWJs
ZXIoKS52bW92KHJlc3VsdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVy
blZhbHVlR1BSMik7CisjZWxzZQorICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92X3ZmcDY0
X3IocmVzdWx0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIyKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCBiNWVmOThhLi41OWRjNWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtNjIyLDM4ICs2MjIsNDYgQEAg
U1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgogI2VsaWYgQ09NUElM
RVIoR0NDKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQogCiBhc20gKAorIi50ZXh0IiAiXG4iCiAi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiXG4iCiBISURFX1NZTUJPTChj
dGlUcmFtcG9saW5lKSAiXG4iCitJTkxJTkVfQVJNX0ZVTkNUSU9OKGN0aVRyYW1wb2xpbmUpCiBT
WU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCiAgICAgInN0bWRiIHNwISwge3Ix
LXIzfSIgIlxuIgotICAgICJzdG1kYiBzcCEsIHtyNC1yOCwgbHJ9IiAiXG4iCisgICAgInN0bWRi
IHNwISwge3I0LXI2LCByOC1yMTEsIGxyfSIgIlxuIgogICAgICJzdWIgc3AsIHNwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEUjRfT0ZGU0VUKSAiXG4iCi0gICAgIm1vdiByNCwgcjIi
ICJcbiIKLSAgICAibW92IHI1LCAjNTEyIiAiXG4iCisgICAgIm1vdiByNSwgcjIiICJcbiIKKyAg
ICAibW92IHI2LCAjNTEyIiAiXG4iCiAgICAgLy8gcjAgY29udGFpbnMgdGhlIGNvZGUKLSAgICAi
bW92IGxyLCBwYyIgIlxuIgotICAgICJtb3YgcGMsIHIwIiAiXG4iCisgICAgImJseCByMCIgIlxu
IgogICAgICJhZGQgc3AsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEUjRfT0ZG
U0VUKSAiXG4iCi0gICAgImxkbWlhIHNwISwge3I0LXI4LCBscn0iICJcbiIKKyAgICAibGRtaWEg
c3AhLCB7cjQtcjYsIHI4LXIxMSwgbHJ9IiAiXG4iCiAgICAgImFkZCBzcCwgc3AsICMxMiIgIlxu
IgotICAgICJtb3YgcGMsIGxyIiAiXG4iCisgICAgImJ4IGxyIiAiXG4iCisiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhjdGlUcmFtcG9saW5lRW5kKSAiXG4iCitISURFX1NZTUJPTChjdGlUcmFtcG9s
aW5lRW5kKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmVFbmQpICI6IiAiXG4iCiAp
OwogCiBhc20gKAorIi50ZXh0IiAiXG4iCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRo
cm93VHJhbXBvbGluZSkgIlxuIgogSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJc
biIKK0lOTElORV9BUk1fRlVOQ1RJT04oY3RpVk1UaHJvd1RyYW1wb2xpbmUpCiBTWU1CT0xfU1RS
SU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgogICAgICJtb3YgcjAsIHNwIiAiXG4i
CiAgICAgImJsICIgU1lNQk9MX1NUUklORyhjdGlfdm1fdGhyb3cpICJcbiIKIAogLy8gQm90aCBo
YXMgdGhlIHNhbWUgcmV0dXJuIHNlcXVlbmNlCisiLnRleHQiICJcbiIKICIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIEhJREVfU1lNQk9MKGN0aU9wVGhy
b3dOb3RDYXVnaHQpICJcbiIKK0lOTElORV9BUk1fRlVOQ1RJT04oY3RpT3BUaHJvd05vdENhdWdo
dCkKIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKICAgICAiYWRk
IHNwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRFI0X09GRlNFVCkgIlxuIgot
ICAgICJsZG1pYSBzcCEsIHtyNC1yOCwgbHJ9IiAiXG4iCisgICAgImxkbWlhIHNwISwge3I0LXI2
LCByOC1yMTEsIGxyfSIgIlxuIgogICAgICJhZGQgc3AsIHNwLCAjMTIiICJcbiIKLSAgICAibW92
IHBjLCBsciIgIlxuIgorICAgICJieCBsciIgIlxuIgogKTsKIAogI2VsaWYgQ09NUElMRVIoUlZD
VCkgJiYgQ1BVKEFSTV9USFVNQjIpCkBAIC0xMDc4LDggKzEwODYsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgVCB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGwoSklUU3RhY2tGcmFtZSYg
aml0U3RhY2tGcgogICAgICAgICAiLmFsaWduIDIiICJcbiIgXAogICAgICAgICAiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhjdGlfIyNvcCkgIlxuIiBcCiAgICAgICAgIEhJREVfU1lNQk9MKGN0aV8j
I29wKSAiXG4iICAgICAgICAgICAgIFwKLSAgICAgICAgIi50aHVtYiIgIlxuIiBcCi0gICAgICAg
ICIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oY3RpXyMjb3ApICJcbiIgXAorICAgICAg
ICBJTkxJTkVfQVJNX0ZVTkNUSU9OKGN0aV8jI29wKSBcCiAgICAgICAgIFNZTUJPTF9TVFJJTkco
Y3RpXyMjb3ApICI6IiAiXG4iIFwKICAgICAgICAgInN0ciBsciwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoVEhVTktfUkVUVVJOX0FERFJFU1NfT0ZGU0VUKSAiXSIgIlxuIiBcCiAgICAgICAg
ICJibCAiIFNZTUJPTF9TVFJJTkcoSklUU3R1YlRodW5rZWRfIyNvcCkgIlxuIiBcCkBAIC0xMTU2
LDExICsxMTYzLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIHRocm93RXhjZXB0
aW9uRnJvbU9wQ2FsbChKSVRTdGFja0ZyYW1lJiBqaXRTdGFja0ZyCiAgICAgfTsgXAogICAgIGFz
bSAoIFwKICAgICAgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpXyMjb3ApICJcbiIgXAor
ICAgICAgICBJTkxJTkVfQVJNX0ZVTkNUSU9OKGN0aV8jI29wKSBcCiAgICAgICAgIFNZTUJPTF9T
VFJJTkcoY3RpXyMjb3ApICI6IiAiXG4iIFwKICAgICAgICAgInN0ciBsciwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoVEhVTktfUkVUVVJOX0FERFJFU1NfT0ZGU0VUKSAiXSIgIlxuIiBcCiAg
ICAgICAgICJibCAiIFNZTUJPTF9TVFJJTkcoSklUU3R1YlRodW5rZWRfIyNvcCkgIlxuIiBcCiAg
ICAgICAgICJsZHIgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9B
RERSRVNTX09GRlNFVCkgIl0iICJcbiIgXAotICAgICAgICAibW92IHBjLCBsciIgIlxuIiBcCisg
ICAgICAgICJieCBsciIgIlxuIiBcCiAgICAgICAgICk7IFwKICAgICBydHlwZSBKSVRTdHViVGh1
bmtlZF8jI29wKFNUVUJfQVJHU19ERUNMQVJBVElPTikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5oCmluZGV4IGQyYmMxNWUuLjIyYTFkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmgKQEAgLTE5MCw4ICsxOTAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQqIHByZXNlcnZlZFI0OwogICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSNTsKICAgICAgICAg
dm9pZCogcHJlc2VydmVkUjY7Ci0gICAgICAgIHZvaWQqIHByZXNlcnZlZFI3OwogICAgICAgICB2
b2lkKiBwcmVzZXJ2ZWRSODsKKyAgICAgICAgdm9pZCogcHJlc2VydmVkUjk7CisgICAgICAgIHZv
aWQqIHByZXNlcnZlZFIxMDsKKyAgICAgICAgdm9pZCogcHJlc2VydmVkUjExOwogICAgICAgICB2
b2lkKiBwcmVzZXJ2ZWRMaW5rOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCmluZGV4IDA1ZDFj
ZTUuLjZiN2RkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRl
cmZhY2VKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgKQEAgLTk0LDcgKzk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsKICAgICAgICAgc3Rh
dGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOwogICAg
ICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDMgPSBYODZSZWdpc3RlcnM6Onht
bTM7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKKyNlbGlmIENQVShBUk0pCiAgICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIw
OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9
IEFSTVJlZ2lzdGVyczo6cjA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0
QXJndW1lbnRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CkBAIC0xMDcsMzUgKzEwNywxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEg
PSBBUk1SZWdpc3RlcnM6OnIxOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdU
MiA9IEFSTVJlZ2lzdGVyczo6cjI7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJl
Z1QzID0gQVJNUmVnaXN0ZXJzOjpyNDsKLSAgICAgICAgCisKKyAgICAgICAgLy8gVXBkYXRlIGN0
aVRyYW1wb2xpbmUgaW4gSklUU3R1YnMuY3BwIGlmIHRoZXNlIHZhbHVlcyBhcmUgY2hhbmdlZCEK
ICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OnI1OwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0aW1lb3V0Q2hl
Y2tSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMg
Y29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDAgPSBBUk1SZWdpc3RlcnM6OmQwOwotICAgICAgICBz
dGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBBUk1SZWdpc3RlcnM6OmQxOwotICAg
ICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBBUk1SZWdpc3RlcnM6OmQy
OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDMgPSBBUk1SZWdpc3Rl
cnM6OmQzOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gQVJNUmVn
aXN0ZXJzOjpyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVu
dFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHRpbWVvdXRDaGVja1JlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OnI0OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmVnVDAgPSBBUk1SZWdpc3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCByZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKLSAgICAgICAgLy8gQ2FsbGVlIHByZXNlcnZl
ZAotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IEFSTVJlZ2lzdGVyczo6
cjc7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdTMCA9IEFS
TVJlZ2lzdGVyczo6UzA7Ci0gICAgICAgIC8vIENhbGxlZSBwcmVzZXJ2ZWQKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnUzEgPSBBUk1SZWdpc3RlcnM6OlMxOwotICAgICAgICAK
LSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnU3RhY2tQdHIgPSBBUk1SZWdpc3Rl
cnM6OnNwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdMaW5rID0gQVJNUmVn
aXN0ZXJzOjpscjsKLSAgICAgICAgCisKICAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJ
RCBmcFJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpkMDsKICAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVn
aXN0ZXJJRCBmcFJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpkMTsKICAgICAgICAgc3RhdGljIGNvbnN0
IEZQUmVnaXN0ZXJJRCBmcFJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpkMjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0lubGluZUFTTS5oIGIvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgKaW5k
ZXggMTBjZDFjYy4uZmExMDRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW5saW5lQVNN
LmgKKysrIGIvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgKQEAgLTgzLDQgKzgzLDEwIEBACiAj
ZGVmaW5lIExPQ0FMX0xBQkVMX1NUUklORyhuYW1lKSAiLkwiICNuYW1lCiAjZW5kaWYKIAorI2lm
IENQVShBUk1fVFJBRElUSU9OQUwpICYmIChkZWZpbmVkKHRodW1iMikgfHwgZGVmaW5lZChfX3Ro
dW1iMl9fKSB8fCBkZWZpbmVkKF9fdGh1bWIpIHx8IGRlZmluZWQoX190aHVtYl9fKSkKKyNkZWZp
bmUgSU5MSU5FX0FSTV9GVU5DVElPTihuYW1lKSAiLnRodW1iIiAiXG4iICIudGh1bWJfZnVuYyAi
IFRIVU1CX0ZVTkNfUEFSQU0obmFtZSkgIlxuIgorI2Vsc2UKKyNkZWZpbmUgSU5MSU5FX0FSTV9G
VU5DVElPTihuYW1lKQorI2VuZGlmCisKICNlbmRpZiAvLyBJbmxpbmVBU01faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
aW5kZXggZDhiYTk0Ny4uMzY0ODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MDYsNiArOTA2LDEwIEBA
CiAjaWYgQ1BVKEFSTV9USFVNQjIpICYmIFBMQVRGT1JNKElPUykKICNkZWZpbmUgRU5BQkxFX0RG
R19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNLiAqLworI2lmIENQ
VShBUk1fVFJBRElUSU9OQUwpCisjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKKyNlbmRpZgogI2Vu
ZGlmCiAKIC8qIFByb2ZpbGluZyBvZiB0eXBlcyBhbmQgdmFsdWVzIHVzZWQgYnkgSklUIGNvZGUu
IERGR19KSVQgZGVwZW5kcyBvbiBpdCwgYnV0IHlvdQotLSAKMS43LjIuNQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150590</attachid>
            <date>2012-07-03 05:26:49 -0700</date>
            <delta_ts>2012-07-04 01:20:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-dfg-port.patch</filename>
            <type>text/plain</type>
            <size>87660</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA2NWI3YzhhNmQwMjkwMzVlMGNmMjBhYzg0ZjgzOWZhMzFlZmJjNzZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAd2Via2l0Lm9yZz4K
RGF0ZTogVHVlLCAzIEp1bCAyMDEyIDA1OjI1OjAwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZGZn
LWppdAoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8ICAxNTUgKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1B
c3NlbWJsZXIuY3BwICAgfCAgIDk1ICsrKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5oICAgICB8ICAyODYgKysrKysrKysrLS0tLQogLi4uL2Fzc2VtYmxl
ci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggICAgfCAgICA0ICstCiAuLi4vSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcCB8ICAgMTQgKy0KIC4u
Li9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaCAgIHwgIDQ0NSAr
KysrKysrKysrKysrLS0tLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRB
c3NlbWJsZXIuaCAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oICAgICB8ICAgMTAgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0NhbGxIZWxwZXJzLmggICAgICAgIHwgICAxMyArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGUFJJbmZvLmggICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dQUkluZm8uaCAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgICAgICAgIHwgICA2NyArKysKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCAgICAgIHwgICAxMCArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgICAgICAgICAgICAgfCAgIDMy
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggICAgICAgICAgICAgICB8
ICAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCAgICAg
ICAgIHwgICAzMiArLS0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxMiArCiBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDYgKwogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIDE5IGZpbGVzIGNoYW5nZWQsIDg2MyBpbnNlcnRp
b25zKCspLCAzMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmFk
ODc0ZC4uNjQ3MDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU4IEBA
CisyMDEyLTA3LTAzICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUG9ydCBERkcgSklUIHRvIHRyYWRpdGlvbmFsIEFSTQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxOTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNvbnRhaW5zIHRoZSBtYWNy
byBhc3NlbWJsZXIgcGFydCBvZiB0aGUKKyAgICAgICAgREZHIEpJVCBzdXBwb3J0IG9uIEFSTSBz
eXN0ZW1zIHdpdGggZml4ZWQgMzIgYml0IGluc3RydWN0aW9uCisgICAgICAgIHdpZHRoLiBBIGxh
cmdlIGFtb3VudCBvZiBvbGQgY29kZSB3YXMgcmVmYWN0b3JlZCwgYW5kIHRoZSBBUk12NAorICAg
ICAgICBvciBsb3dlciBzdXBwb3J0IGlzIHJlbW92ZWQgZnJvbSB0aGUgbWFjcm8gYXNzZW1ibGVy
LgorCisgICAgICAgIFN1bnNwaWRlciBpcyBpbXByb3ZlZCBieSA4JS4KKworICAgICAgICAqIGFz
c2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRh
dGFUcmFuc2ZlcjMyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFu
c2ZlcjMyKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZGF0
YVRyYW5zZmVyMTYpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5z
ZmVyMTYpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlckZsb2F0KToK
KyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlckZsb2F0KToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpleGVjdXRhYmxlQ29weSk6CisgICAgICAgICogYXNz
ZW1ibGVyL0FSTUFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OkFSTUFz
c2VtYmxlcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW1pdEluc3QpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZtb3ZfZjY0X3IpOgorICAgICAgICAoQVJNQXNzZW1ibGVy
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2YWJzX2Y2NF9yKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjp2bmVnX2Y2NF9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVy
OjpsZHJfaW1tKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsZHJfdW5faW1tKToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJfdSk6CisgICAgICAgIChKU0M6OkFSTUFzc2Vt
Ymxlcjo6ZHRyX3VyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJfZCk6CisgICAg
ICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZHRyX2RyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkdHJoX3UpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0cmhfdXIpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0cmhfZCk6CisgICAgICAgIChKU0M6OkFSTUFzc2Vt
Ymxlcjo6ZHRyaF9kcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZmR0cl91KToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpmZHRyX2QpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnB1c2hfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cG9wX3IpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnBva2Vfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2Vt
Ymxlcjo6cGVla19yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3ZmcDY0X3Ip
OgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZtb3ZfYXJtNjRfcik6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6dm1vdl92ZnAzMl9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjp2bW92X2FybTMyX3IpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjdnRfdTMy
X2Y2NF9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2Y3Z0X2Y2NF9mMzJfcik6Cisg
ICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dmN2dF9mMzJfZjY0X3IpOgorICAgICAgICAoSlND
OjpBUk1Bc3NlbWJsZXI6OmNsel9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpia3B0
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpieCk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6Ymx4KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hw
b2ludCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlND
OjpBUk1Bc3NlbWJsZXI6OmdldExkckltbUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bWF4
SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZik6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6Uk0pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OlJT
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpSRCk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6Uk4pOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29u
c3RhbnRQb29sLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBv
b2w6OmVuc3VyZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTS5jcHA6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjps
b2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZDMyKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxzaGlmdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om11bDMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06Om5lZzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OnJzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnVyc2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp4b3IzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpsb2FkOFNpZ25lZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
Ojpsb2FkMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDE2U2lnbmVk
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBh
dGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN0b3JlOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZTE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6
bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpqdW1wKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaEFkZDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om11bGwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
OjpicmFuY2hNdWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpuZWFyQ2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb21wYXJlMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6dGVzdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNh
bGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZEZsb2F0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTo6c3RvcmVGbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpzdG9yZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpt
b3ZlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZERvdWJsZSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpkaXZEb3VibGUpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6c3ViRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06Om11bERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
OjphYnNEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bmVnYXRlRG91
YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbnZlcnRJbnQzMlRvRG91
YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbnZlcnRGbG9hdFRvRG91
YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbnZlcnREb3VibGVUb0Zs
b2F0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hUcnVu
Y2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRy
dW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0
cnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmludmVydCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpyZXBsYWNl
V2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjYWxsMzIpOgor
ICAgICAgICAqIGFzc2VtYmxlci9TSDRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6U0g0QXNz
ZW1ibGVyOjpsYWJlbCk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6
QXNzZW1ibHlIZWxwZXJzOjp1bmJveERvdWJsZSk6CisgICAgICAgICogZGZnL0RGR0NDYWxsSGVs
cGVycy5oOgorICAgICAgICAoQ0NhbGxIZWxwZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2Fs
bEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgor
ICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5oOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoK
KyAgICAgICAgKEpJVFN0YWNrRnJhbWUpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5o
OgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorCiAyMDEyLTA3LTAyICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIE9TUiBleGl0IHZhbHVlIHJlY292ZXJp
ZXMgc2hvdWxkIGJlIGNvbXB1dGVkIGxhemlseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCmluZGV4IDc0ODA5Y2EuLjM3MGE0YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKQEAg
LTI2Miw4NiArMjYyLDExNyBAQCBBUk1Xb3JkIEFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29tcGxleElt
bShBUk1Xb3JkIGltbSwgaW50IGRlc3QpCiAKIC8vIE1lbW9yeSBsb2FkL3N0b3JlIGhlbHBlcnMK
IAotdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBSZWdpc3Rl
cklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCwgYm9vbCBieXRlcykK
K3ZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIzMihEYXRhVHJhbnNmZXJUeXBlQSB0cmFu
c2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zm
c2V0KQogewotICAgIEFSTVdvcmQgdHJhbnNmZXJGbGFnID0gYnl0ZXMgPyBEVF9CWVRFIDogMDsK
ICAgICBpZiAob2Zmc2V0ID49IDApIHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikKLSAg
ICAgICAgICAgIGR0cl91KGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgfCB0cmFuc2ZlckZs
YWcpOworICAgICAgICAgICAgZHRyX3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNl
dCk7CiAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmZmKSB7CiAgICAgICAgICAgICBh
ZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKG9mZnNldCA+PiAxMikgfCAo
MTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyX3UoaXNMb2FkLCBzcmNEc3QsIEFSTVJlZ2lzdGVy
czo6UzAsIChvZmZzZXQgJiAweGZmZikgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRy
X3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgJiAweGZm
ZikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyX3VyKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBB
Uk1SZWdpc3RlcnM6OlMwIHwgdHJhbnNmZXJGbGFnKTsKKyAgICAgICAgICAgIGR0cl91cih0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0
cl9kKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0IHwgdHJhbnNmZXJGbGFnKTsKKyAgICAg
ICAgICAgIGR0cl9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0KTsKICAgICAg
ICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZmZmZmKSB7CiAgICAgICAgICAgICBzdWJfcihBUk1S
ZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKC1vZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgp
KTsKLSAgICAgICAgICAgIGR0cl9kKGlzTG9hZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAo
LW9mZnNldCAmIDB4ZmZmKSB8IHRyYW5zZmVyRmxhZyk7CisgICAgICAgICAgICBkdHJfZCh0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVy
czo6UzApOwotICAgICAgICAgICAgZHRyX3VyKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBBUk1SZWdp
c3RlcnM6OlMwIHwgdHJhbnNmZXJGbGFnKTsKKyAgICAgICAgICAgIGR0cl91cih0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLXZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBS
ZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUsIGludDMyX3Qgb2Zmc2V0LCBib29sIGJ5dGVzKQordm9pZCBBUk1Bc3NlbWJsZXI6OmJh
c2VJbmRleFRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBSZWdpc3Rl
cklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUs
IGludDMyX3Qgb2Zmc2V0KQogewotICAgIEFSTVdvcmQgb3AyOwotICAgIEFSTVdvcmQgdHJhbnNm
ZXJGbGFnID0gYnl0ZXMgPyBEVF9CWVRFIDogMDsKLQogICAgIEFTU0VSVChzY2FsZSA+PSAwICYm
IHNjYWxlIDw9IDMpOwotICAgIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOworICAgIEFSTVdvcmQg
b3AyID0gbHNsKGluZGV4LCBzY2FsZSk7CiAKLSAgICBpZiAob2Zmc2V0ID49IDAgJiYgb2Zmc2V0
IDw9IDB4ZmZmKSB7Ci0gICAgICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7
Ci0gICAgICAgIGR0cl91KGlzTG9hZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQg
fCB0cmFuc2ZlckZsYWcpOworICAgIGlmIChvZmZzZXQgPT0gMCkgeworICAgICAgICBkdHJfdXIo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9wMik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKG9mZnNldCA8PSAwICYmIG9mZnNldCA+PSAtMHhmZmYpIHsKLSAgICAgICAgYWRk
X3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgb3AyKTsKLSAgICAgICAgZHRyX2QoaXNMb2FkLCBz
cmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsICgtb2Zmc2V0ICYgMHhmZmYpIHwgdHJhbnNmZXJGbGFn
KTsKKworICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGJhc2UsIG9wMik7CisgICAgZGF0YVRy
YW5zZmVyMzIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzEsIG9mZnNldCk7
Cit9CisKK3ZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBl
QiB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMy
X3Qgb2Zmc2V0KQoreworICAgIGlmIChvZmZzZXQgPj0gMCkgeworICAgICAgICBpZiAob2Zmc2V0
IDw9IDB4ZmYpCisgICAgICAgICAgICBkdHJoX3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2Us
IGdldE9wMkhhbGYob2Zmc2V0KSk7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmYp
IHsKKyAgICAgICAgICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9QMl9JTU0gfCAo
b2Zmc2V0ID4+IDgpIHwgKDEyIDw8IDgpKTsKKyAgICAgICAgICAgIGR0cmhfdSh0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZihvZmZzZXQgJiAweGZmKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0
ZXJzOjpTMCk7CisgICAgICAgICAgICBkdHJoX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNl
LCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlm
IChvZmZzZXQgPj0gLTB4ZmYpCisgICAgICAgICAgICBkdHJoX2QodHJhbnNmZXJUeXBlLCBzcmNE
c3QsIGJhc2UsIGdldE9wMkhhbGYoLW9mZnNldCkpOworICAgICAgICBlbHNlIGlmIChvZmZzZXQg
Pj0gLTB4ZmZmZikgeworICAgICAgICAgICAgc3ViX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwg
T1AyX0lNTSB8ICgtb2Zmc2V0ID4+IDgpIHwgKDEyIDw8IDgpKTsKKyAgICAgICAgICAgIGR0cmhf
ZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zm
c2V0ICYgMHhmZikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbW92ZUltbShvZmZz
ZXQsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICAgICAgZHRyaF91cih0cmFuc2ZlclR5cGUs
IHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjE2KERhdGFUcmFuc2ZlclR5cGVC
IHRyYW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKK3sKKyAgICBpZiAoc2NhbGUg
PT0gMCAmJiBvZmZzZXQgPT0gMCkgeworICAgICAgICBkdHJoX3VyKHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBiYXNlLCBpbmRleCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBsZHJfdW5f
aW1tKEFSTVJlZ2lzdGVyczo6UzAsIG9mZnNldCk7Ci0gICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpT
MCwgQVJNUmVnaXN0ZXJzOjpTMCwgb3AyKTsKLSAgICBkdHJfdXIoaXNMb2FkLCBzcmNEc3QsIGJh
c2UsIEFSTVJlZ2lzdGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgIGFkZF9yKEFSTVJlZ2lz
dGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBkYXRhVHJhbnNmZXIxNih0
cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIAotdm9p
ZCBBUk1Bc3NlbWJsZXI6OmRvdWJsZVRyYW5zZmVyKGJvb2wgaXNMb2FkLCBGUFJlZ2lzdGVySUQg
c3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQordm9pZCBBUk1Bc3NlbWJs
ZXI6OmRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUs
IEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCiB7
CiAgICAgLy8gVkZQIGNhbm5vdCBkaXJlY3RseSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMgbm90IGZv
dXItYnl0ZS1hbGlnbmVkCiAgICAgaWYgKCEob2Zmc2V0ICYgMHgzKSkgewogICAgICAgICBpZiAo
b2Zmc2V0IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBmZHRyX3UoaXNM
b2FkLCBzcmNEc3QsIGJhc2UsIG9mZnNldCA+PiAyKTsKKyAgICAgICAgICAgIGZkdHJfdSh0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0g
MCkgewogICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8
IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKLSAgICAgICAgICAgIGZkdHJfdShpc0xvYWQs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOworICAgICAg
ICAgICAgZmR0cl91KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zm
c2V0ID4+IDIpICYgMHhmZik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgb2Zmc2V0ID0gLW9mZnNldDsKIAogICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9m
ZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBmZHRyX2QoaXNMb2FkLCBzcmNEc3QsIGJhc2UsIG9m
ZnNldCA+PiAyKTsKKyAgICAgICAgICAgIGZkdHJfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFz
ZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAgc3Vi
X3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQgPj4gMTApIHwgKDEx
IDw8IDgpKTsKLSAgICAgICAgICAgIGZkdHJfZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOworICAgICAgICAgICAgZmR0cl9kKHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsK
ICAgICB9CiAKLSAgICBsZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIG9mZnNldCk7CisgICAg
bW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgIGFkZF9yKEFSTVJlZ2lzdGVy
czo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UpOwotICAgIGZkdHJfdShpc0xvYWQsIHNyY0Rz
dCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgZmR0cl91KHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKK30KKwordm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJbmRl
eFRyYW5zZmVyRmxvYXQoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHRyYW5zZmVyVHlwZSwgRlBSZWdp
c3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUsIGludDMyX3Qgb2Zmc2V0KQoreworICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGJhc2Us
IGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBkYXRhVHJhbnNmZXJGbG9hdCh0cmFuc2ZlclR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIAogUGFzc1JlZlB0cjxFeGVj
dXRhYmxlTWVtb3J5SGFuZGxlPiBBUk1Bc3NlbWJsZXI6OmV4ZWN1dGFibGVDb3B5KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVm
Zm9ydCkKQEAgLTM2MSwxMCArMzkyLDEwIEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhh
bmRsZT4gQVJNQXNzZW1ibGVyOjpleGVjdXRhYmxlQ29weShKU0dsb2JhbERhdGEmIGdsCiAgICAg
ICAgIEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGxkckFkZHIpOwogICAgICAgICBp
ZiAoKmFkZHIgIT0gSW52YWxpZEJyYW5jaFRhcmdldCkgewogICAgICAgICAgICAgaWYgKCEoaXRl
ci0+bV9vZmZzZXQgJiAxKSkgewotICAgICAgICAgICAgICAgIGludCBkaWZmID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8QVJNV29yZCo+KGRhdGEgKyAqYWRkcikgLSAobGRyQWRkciArIERlZmF1bHRQ
cmVmZXRjaGluZyk7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgZGlmZmVyZW5jZSA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPEFSTVdvcmQqPihkYXRhICsgKmFkZHIpIC0gKGxkckFkZHIgKyBEZWZh
dWx0UHJlZmV0Y2hpbmcpOwogCi0gICAgICAgICAgICAgICAgaWYgKChkaWZmIDw9IEJPRkZTRVRf
TUFYICYmIGRpZmYgPj0gQk9GRlNFVF9NSU4pKSB7Ci0gICAgICAgICAgICAgICAgICAgICpsZHJB
ZGRyID0gQiB8IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmYgJiBCUkFOQ0hf
TUFTSyk7CisgICAgICAgICAgICAgICAgaWYgKChkaWZmZXJlbmNlIDw9IEJPRkZTRVRfTUFYICYm
IGRpZmZlcmVuY2UgPj0gQk9GRlNFVF9NSU4pKSB7CisgICAgICAgICAgICAgICAgICAgICpsZHJB
ZGRyID0gQiB8IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmZlcmVuY2UgJiBC
UkFOQ0hfTUFTSyk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTUFzc2VtYmxlci5oCmluZGV4IDE2ZGMwY2YuLjk5OTM1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaApAQCAtNDEsMTYgKzQxLDE2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcjAgPSAwLAogICAgICAgICAgICAgcjEsCiAg
ICAgICAgICAgICByMiwKLSAgICAgICAgICAgIHIzLCBTMCA9IHIzLAorICAgICAgICAgICAgcjMs
IFMwID0gcjMsIC8qIFNhbWUgYXMgdGh1bWIgYXNzZW1ibGVyLiAqLwogICAgICAgICAgICAgcjQs
CiAgICAgICAgICAgICByNSwKICAgICAgICAgICAgIHI2LAogICAgICAgICAgICAgcjcsCi0gICAg
ICAgICAgICByOCwgUzEgPSByOCwKKyAgICAgICAgICAgIHI4LAogICAgICAgICAgICAgcjksCiAg
ICAgICAgICAgICByMTAsCiAgICAgICAgICAgICByMTEsCi0gICAgICAgICAgICByMTIsCisgICAg
ICAgICAgICByMTIsIFMxID0gcjEyLAogICAgICAgICAgICAgcjEzLCBzcCA9IHIxMywKICAgICAg
ICAgICAgIHIxNCwgbHIgPSByMTQsCiAgICAgICAgICAgICByMTUsIHBjID0gcjE1CkBAIC02MCwx
MSArNjAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBkMCwKICAgICAgICAgICAg
IGQxLAogICAgICAgICAgICAgZDIsCi0gICAgICAgICAgICBkMywgU0QwID0gZDMsCisgICAgICAg
ICAgICBkMywKICAgICAgICAgICAgIGQ0LAogICAgICAgICAgICAgZDUsCiAgICAgICAgICAgICBk
NiwKLSAgICAgICAgICAgIGQ3LAorICAgICAgICAgICAgZDcsIFNEMCA9IGQ3LCAvKiBTYW1lIGFz
IHRodW1iIGFzc2VtYmxlci4gKi8KICAgICAgICAgICAgIGQ4LAogICAgICAgICAgICAgZDksCiAg
ICAgICAgICAgICBkMTAsCkBAIC0xMDAsNyArMTAwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB0eXBlZGVmIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2w8MjA0OCwgNCwgNCwg
QVJNQXNzZW1ibGVyPiBBUk1CdWZmZXI7CiAgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9y
PEFzc2VtYmxlckxhYmVsLCA2ND4gSnVtcHM7CiAKLSAgICAgICAgQVJNQXNzZW1ibGVyKCkgeyB9
CisgICAgICAgIEFSTUFzc2VtYmxlcigpCisgICAgICAgICAgICA6IG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50KDEpCisgICAgICAgIHsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIEFSTSBj
b25kaXRpb25hbCBjb25zdGFudHMKICAgICAgICAgdHlwZWRlZiBlbnVtIHsKQEAgLTE0MSwzMyAr
MTQ0LDMzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTVZOID0gKDB4ZiA8PCAyMSks
CiAgICAgICAgICAgICBNVUwgPSAweDAwMDAwMDkwLAogICAgICAgICAgICAgTVVMTCA9IDB4MDBj
MDAwOTAsCisgICAgICAgICAgICBWTU9WX0Y2NCA9IDB4MGViMDBiNDAsCiAgICAgICAgICAgICBW
QUREX0Y2NCA9IDB4MGUzMDBiMDAsCiAgICAgICAgICAgICBWRElWX0Y2NCA9IDB4MGU4MDBiMDAs
CiAgICAgICAgICAgICBWU1VCX0Y2NCA9IDB4MGUzMDBiNDAsCiAgICAgICAgICAgICBWTVVMX0Y2
NCA9IDB4MGUyMDBiMDAsCiAgICAgICAgICAgICBWQ01QX0Y2NCA9IDB4MGViNDBiNDAsCiAgICAg
ICAgICAgICBWU1FSVF9GNjQgPSAweDBlYjEwYmMwLAotICAgICAgICAgICAgRFRSID0gMHgwNTAw
MDAwMCwKLSAgICAgICAgICAgIExEUkggPSAweDAwMTAwMDkwLAotICAgICAgICAgICAgU1RSSCA9
IDB4MDAwMDAwOTAsCisgICAgICAgICAgICBWQUJTX0Y2NCA9IDB4MGViMDBiYzAsCisgICAgICAg
ICAgICBWTkVHX0Y2NCA9IDB4MGViMTBiNDAsCiAgICAgICAgICAgICBTVE1EQiA9IDB4MDkyMDAw
MDAsCiAgICAgICAgICAgICBMRE1JQSA9IDB4MDhiMDAwMDAsCi0gICAgICAgICAgICBGRFRSID0g
MHgwZDAwMGIwMCwKICAgICAgICAgICAgIEIgPSAweDBhMDAwMDAwLAogICAgICAgICAgICAgQkwg
PSAweDBiMDAwMDAwLAotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KSB8fCBkZWZpbmVkKF9f
QVJNX0FSQ0hfNFRfXykKICAgICAgICAgICAgIEJYID0gMHgwMTJmZmYxMCwKLSNlbmRpZgotICAg
ICAgICAgICAgVk1PVl9WRlAgPSAweDBlMDAwYTEwLAotICAgICAgICAgICAgVk1PVl9BUk0gPSAw
eDBlMTAwYTEwLAorICAgICAgICAgICAgVk1PVl9WRlA2NCA9IDB4MGM0MDBhMTAsCisgICAgICAg
ICAgICBWTU9WX0FSTTY0ID0gMHgwYzUwMGExMCwKKyAgICAgICAgICAgIFZNT1ZfVkZQMzIgPSAw
eDBlMDAwYTEwLAorICAgICAgICAgICAgVk1PVl9BUk0zMiA9IDB4MGUxMDBhMTAsCiAgICAgICAg
ICAgICBWQ1ZUX0Y2NF9TMzIgPSAweDBlYjgwYmMwLAogICAgICAgICAgICAgVkNWVF9TMzJfRjY0
ID0gMHgwZWJkMGI0MCwKKyAgICAgICAgICAgIFZDVlRfVTMyX0Y2NCA9IDB4MGViYzBiNDAsCisg
ICAgICAgICAgICBWQ1ZUX0YzMl9GNjQgPSAweDBlYjcwYmMwLAorICAgICAgICAgICAgVkNWVF9G
NjRfRjMyID0gMHgwZWI3MGFjMCwKICAgICAgICAgICAgIFZNUlNfQVBTUiA9IDB4MGVmMWZhMTAs
Ci0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCiAgICAgICAgICAgICBDTFogPSAweDAxNmYw
ZjEwLAogICAgICAgICAgICAgQktQVCA9IDB4ZTEyMDAwNzAsCiAgICAgICAgICAgICBCTFggPSAw
eDAxMmZmZjMwLAotI2VuZGlmCiAjaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCiAgICAgICAg
ICAgICBNT1ZXID0gMHgwMzAwMDAwMCwKICAgICAgICAgICAgIE1PVlQgPSAweDAzNDAwMDAwLApA
QCAtMTc3LDE3ICsxODAsMzcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZW51bSB7CiAg
ICAgICAgICAgICBPUDJfSU1NID0gKDEgPDwgMjUpLAotICAgICAgICAgICAgT1AyX0lNTWggPSAo
MSA8PCAyMiksCisgICAgICAgICAgICBPUDJfSU1NX0hBTEYgPSAoMSA8PCAyMiksCiAgICAgICAg
ICAgICBPUDJfSU5WX0lNTSA9ICgxIDw8IDI2KSwKICAgICAgICAgICAgIFNFVF9DQyA9ICgxIDw8
IDIwKSwKICAgICAgICAgICAgIE9QMl9PRlNSRUcgPSAoMSA8PCAyNSksCisgICAgICAgICAgICAv
LyBEYXRhIHRyYW5zZmVyIGZsYWdzLgogICAgICAgICAgICAgRFRfVVAgPSAoMSA8PCAyMyksCi0g
ICAgICAgICAgICBEVF9CWVRFID0gKDEgPDwgMjIpLAogICAgICAgICAgICAgRFRfV0IgPSAoMSA8
PCAyMSksCi0gICAgICAgICAgICAvLyBUaGlzIGZsYWcgaXMgaW5sY3VkZWQgaW4gTERSIGFuZCBT
VFIKICAgICAgICAgICAgIERUX1BSRSA9ICgxIDw8IDI0KSwKLSAgICAgICAgICAgIEhEVF9VSCA9
ICgxIDw8IDUpLAogICAgICAgICAgICAgRFRfTE9BRCA9ICgxIDw8IDIwKSwKKyAgICAgICAgICAg
IERUX0JZVEUgPSAoMSA8PCAyMiksCisgICAgICAgIH07CisKKyAgICAgICAgZW51bSBEYXRhVHJh
bnNmZXJUeXBlQSB7CisgICAgICAgICAgICBMb2FkVWludDMyID0gMHgwNTAwMDAwMCB8IERUX0xP
QUQsCisgICAgICAgICAgICBMb2FkVWludDggPSAweDA1NDAwMDAwIHwgRFRfTE9BRCwKKyAgICAg
ICAgICAgIFN0b3JlVWludDMyID0gMHgwNTAwMDAwMCwKKyAgICAgICAgICAgIFN0b3JlVWludDgg
PSAweDA1NDAwMDAwLAorICAgICAgICB9OworCisgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlw
ZUIgeworICAgICAgICAgICAgTG9hZFVpbnQxNiA9IDB4MDEwMDAwYjAgfCBEVF9MT0FELAorICAg
ICAgICAgICAgTG9hZEludDE2ID0gMHgwMTAwMDBmMCB8IERUX0xPQUQsCisgICAgICAgICAgICBM
b2FkSW50OCA9IDB4MDEwMDAwZDAgfCBEVF9MT0FELAorICAgICAgICAgICAgU3RvcmVVaW50MTYg
PSAweDAxMDAwMGIwLAorICAgICAgICB9OworCisgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlw
ZUZsb2F0IHsKKyAgICAgICAgICAgIExvYWRGbG9hdCA9IDB4MGQwMDBhMDAgfCBEVF9MT0FELAor
ICAgICAgICAgICAgTG9hZERvdWJsZSA9IDB4MGQwMDBiMDAgfCBEVF9MT0FELAorICAgICAgICAg
ICAgU3RvcmVGbG9hdCA9IDB4MGQwMDBhMDAsCisgICAgICAgICAgICBTdG9yZURvdWJsZSA9IDB4
MGQwMDBiMDAsCiAgICAgICAgIH07CiAKICAgICAgICAgLy8gTWFza3Mgb2YgQVJNIGluc3RydWN0
aW9ucwpAQCAtMjE4LDcgKzI0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQg
ZW1pdEluc3QoQVJNV29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoKChvcDIgJiB+T1AyX0lNTSkgPD0gMHhmZmYpIHx8ICgo
KG9wMiAmIH5PUDJfSU1NaCkgPD0gMHhmZmYpKSk7CisgICAgICAgICAgICBBU1NFUlQoKChvcDIg
JiB+T1AyX0lNTSkgPD0gMHhmZmYpIHx8ICgoKG9wMiAmIH5PUDJfSU1NX0hBTEYpIDw9IDB4ZmZm
KSkpOwogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KG9wIHwgUk4ocm4pIHwgUkQocmQpIHwg
b3AyKTsKICAgICAgICAgfQogCkBAIC00MDcsNiArNDMwLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IE1V
TEwgfCBSTihyZGhpKSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0ocm0pKTsKICAgICAgICAgfQog
CisgICAgICAgIHZvaWQgdm1vdl9mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0YXRp
Y19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZNT1ZfRjY0LCBkZCwgMCwgZG0pOworICAgICAgICB9CisK
ICAgICAgICAgdm9pZCB2YWRkX2Y2NF9yKGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlv
biBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5z
dChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWQUREX0Y2NCwgZGQsIGRuLCBkbSk7CkBAIC00
MzcsMTAwICs0NjUsMTI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdERvdWJs
ZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVlNRUlRfRjY0LCBkZCwg
MCwgZG0pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB2YWJzX2Y2NF9yKGludCBkZCwgaW50
IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgZW1pdERvdWJs
ZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkFCU19GNjQsIGRkLCAw
LCBkbSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHZuZWdfZjY0X3IoaW50IGRkLCBpbnQg
ZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBlbWl0RG91Ymxl
UHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTkVHX0Y2NCwgZGQsIDAs
IGRtKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgbGRyX2ltbShpbnQgcmQsIEFSTVdvcmQg
aW1tLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50V2l0aENvbnN0YW50SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8IERU
X0xPQUQgfCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBpbW0sIHRydWUp
OworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHN0YXRpY19jYXN0
PEFSTVdvcmQ+KGNjKSB8IExvYWRVaW50MzIgfCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMp
IHwgUkQocmQpLCBpbW0sIHRydWUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBsZHJfdW5f
aW1tKGludCByZCwgQVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQoc3RhdGljX2Nhc3Q8QVJN
V29yZD4oY2MpIHwgRFRSIHwgRFRfTE9BRCB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykg
fCBSRChyZCksIGltbSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJ
bnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTG9hZFVpbnQzMiB8IERUX1VQIHwgUk4oQVJN
UmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IGR0cl91KGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0cl91KERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVy
VHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwg
RFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSB8IERUX1VQLCByZCwgcmIsIG9wMik7CisgICAg
ICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCB0cmFuc2ZlclR5cGUg
fCBEVF9VUCwgcmQsIHJiLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJfdXIo
Ym9vbCBpc0xvYWQsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIGR0cl91cihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCBy
ZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBEVFIgfCAoaXNMb2FkID8g
RFRfTE9BRCA6IDApIHwgRFRfVVAgfCBPUDJfT0ZTUkVHLCByZCwgcmIsIHJtKTsKKyAgICAgICAg
ICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHRyYW5zZmVyVHlwZSB8IERU
X1VQIHwgT1AyX09GU1JFRywgcmQsIHJiLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IGR0cl9kKGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0cl9kKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVy
VHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwg
RFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAg
ZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHJhbnNmZXJUeXBlLCByZCwgcmIs
IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9kcihib29sIGlzTG9hZCwgaW50
IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRy
X2RyKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIGludCBy
bSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0KHN0
YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8IChpc0xvYWQgPyBEVF9MT0FEIDogMCkgfCBP
UDJfT0ZTUkVHLCByZCwgcmIsIHJtKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0
PEFSTVdvcmQ+KGNjKSB8IHRyYW5zZmVyVHlwZSB8IE9QMl9PRlNSRUcsIHJkLCByYiwgcm0pOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBsZHJoX3IoaW50IHJkLCBpbnQgcm4sIGludCBybSwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyaF91KERhdGFUcmFuc2ZlclR5cGVC
IHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29y
ZD4oY2MpIHwgTERSSCB8IEhEVF9VSCB8IERUX1VQIHwgRFRfUFJFLCByZCwgcm4sIHJtKTsKKyAg
ICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHRyYW5zZmVyVHlw
ZSB8IERUX1VQLCByZCwgcmIsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGxkcmhf
ZChpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB2b2lkIGR0cmhfdXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGlu
dCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTERSSCB8IEhEVF9VSCB8IERUX1BS
RSwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29y
ZD4oY2MpIHwgdHJhbnNmZXJUeXBlIHwgRFRfVVAsIHJkLCBybiwgcm0pOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBsZHJoX3UoaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJoX2QoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNm
ZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykg
fCBMRFJIIHwgSERUX1VIIHwgRFRfVVAgfCBEVF9QUkUsIHJkLCByYiwgb3AyKTsKKyAgICAgICAg
ICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHRyYW5zZmVyVHlwZSwgcmQs
IHJiLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzdHJoX3IoaW50IHJuLCBpbnQg
cm0sIGludCByZCwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyaF9kcihEYXRh
VHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRp
dGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2Fz
dDxBUk1Xb3JkPihjYykgfCBTVFJIIHwgSERUX1VIIHwgRFRfVVAgfCBEVF9QUkUsIHJkLCBybiwg
cm0pOworICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHJh
bnNmZXJUeXBlLCByZCwgcm4sIHJtKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZmR0cl91
KGJvb2wgaXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQorICAgICAgICB2b2lkIGZkdHJfdShEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50
IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmKTsKLSAgICAgICAgICAgIGVtaXRJbnN0KHN0
YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IEZEVFIgfCBEVF9VUCB8IChpc0xvYWQgPyBEVF9MT0FE
IDogMCksIHJkLCByYiwgb3AyKTsKKyAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhmZiAmJiBy
ZCA8PSAxNSk7CisgICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMyLCBzNCAuLi4g
czMwIGFyZSBzdXBwb3J0ZWQuICovCisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGlj
X2Nhc3Q8QVJNV29yZD4oY2MpIHwgRFRfVVAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8
IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZkdHJfZChib29sIGlzTG9hZCwgaW50
IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9p
ZCBmZHRyX2QoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChvcDIgPD0gMHhmZik7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBGRFRSIHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSwgcmQsIHJiLCBvcDIpOworICAg
ICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1KTsKKyAgICAgICAgICAgIC8q
IE9ubHkgZDAtZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRlZC4gKi8KKyAg
ICAgICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCB0eXBl
IHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IHB1c2hfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50KGNjIHwgRFRSIHwgRFRfV0IgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAw
eDQpOworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNj
KSB8IFN0b3JlVWludDMyIHwgRFRfV0IgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykg
fCAweDQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBwb3BfcihpbnQgcmVnLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8
PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KGNjIHwgKERUUiBeIERUX1BSRSkg
fCBEVF9MT0FEIHwgRFRfVVAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQp
OworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8
IChMb2FkVWludDMyIF4gRFRfUFJFKSB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJzOjpzcCkgfCBS
RChyZWcpIHwgMHg0KTsKICAgICAgICAgfQogCiAgICAgICAgIGlubGluZSB2b2lkIHBva2Vfcihp
bnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZHRyX2Qo
ZmFsc2UsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOworICAgICAgICAgICAgZHRyX2Qo
U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOwogICAgICAgICB9CiAK
ICAgICAgICAgaW5saW5lIHZvaWQgcGVla19yKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBkdHJfdSh0cnVlLCByZWcsIEFSTVJlZ2lzdGVyczo6c3As
IDAsIGNjKTsKKyAgICAgICAgICAgIGR0cl91KExvYWRVaW50MzIsIHJlZywgQVJNUmVnaXN0ZXJz
OjpzcCwgMCwgY2MpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2bW92X3ZmcDY0X3IoaW50
IHNtLCBpbnQgcnQsIGludCBydDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQocnQgIT0gcnQyKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChz
dGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8
IChzbSAmIDB4ZikgfCAoKHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCB2bW92X3ZmcF9yKGludCBzbiwgaW50IHJ0LCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCB2bW92X2FybTY0X3IoaW50IHJ0LCBpbnQgcnQyLCBpbnQgc20sIENvbmRp
dGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocnQgIT0gcnQyKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBW
TU9WX0FSTTY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAoKHNtICYgMHgxMCkg
PDwgKDUgLSA0KSkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2bW92X3ZmcDMyX3IoaW50
IHNuLCBpbnQgcnQsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3Qoc3Rh
dGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1PVl9WRlAsIHJ0IDw8IDEsIHNuLCAwKTsKKyAgICAg
ICAgICAgIGVtaXRTaW5nbGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8
IFZNT1ZfVkZQMzIsIHJ0IDw8IDEsIHNuLCAwKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
dm1vdl9hcm1fcihpbnQgcnQsIGludCBzbiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZv
aWQgdm1vdl9hcm0zMl9yKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKHJ0IDw9IDE1KTsKLSAgICAgICAgICAgIGVtaXRTaW5n
bGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZNT1ZfQVJNLCBydCA8
PCAxLCBzbiwgMCk7CisgICAgICAgICAgICBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwgMCk7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIHZjdnRfZjY0X3MzMl9yKGludCBkZCwgaW50IHNtLCBDb25kaXRp
b24gY2MgPSBBTCkKQEAgLTU0NSwyNiArNTk3LDM3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwg
VkNWVF9TMzJfRjY0LCAoc2QgPj4gMSksIDAsIGRtKTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdmN2dF91MzJfZjY0X3IoaW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRp
dmlzaWJsZSBieSAyCisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBWQ1ZUX1UzMl9GNjQsIChzZCA+PiAxKSwgMCwgZG0pOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCB2Y3Z0X2Y2NF9mMzJfcihpbnQgZGQsIGludCBzbSwgQ29u
ZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChkZCA8PSAxNSAm
JiBzbSA8PSAxNSk7CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNf
Y2FzdDxBUk1Xb3JkPihjYykgfCBWQ1ZUX0Y2NF9GMzIsIGRkLCAwLCBzbSk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIHZjdnRfZjMyX2Y2NF9yKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9
IDE1KTsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFS
TVdvcmQ+KGNjKSB8IFZDVlRfRjMyX0Y2NCwgZGQsIDAsIHNtKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIHZvaWQgdm1yc19hcHNyKENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1SU19BUFNS
KTsKICAgICAgICAgfQogCi0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCiAgICAgICAgIHZv
aWQgY2x6X3IoaW50IHJkLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgQ0xa
IHwgUkQocmQpIHwgUk0ocm0pKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBi
a3B0KEFSTVdvcmQgdmFsdWUpCiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1Qo
NSkKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChCS1BUIHwgKCh2YWx1ZSAmIDB4ZmYwKSA8
PCA0KSB8ICh2YWx1ZSAmIDB4ZikpOwotI2Vsc2UKLSAgICAgICAgICAgIC8vIENhbm5vdCBhY2Nl
c3MgdG8gWmVybyBtZW1vcnkgYWRkcmVzcwotICAgICAgICAgICAgZHRyX2RyKHRydWUsIEFSTVJl
Z2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzApOwotI2VuZGlm
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG5vcCgpCkBAIC01NzQsMjMgKzYzNywxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGJ4KGludCBybSwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkgfHwgZGVmaW5lZChf
X0FSTV9BUkNIXzRUX18pCiAgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBCWCwgMCwgMCwgUk0ocm0pKTsKLSNlbHNlCi0gICAgICAgICAgICBtb3ZfcihBUk1S
ZWdpc3RlcnM6OnBjLCBSTShybSksIGNjKTsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAg
QXNzZW1ibGVyTGFiZWwgYmx4KGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
LSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKICAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRp
Y19jYXN0PEFSTVdvcmQ+KGNjKSB8IEJMWCwgMCwgMCwgUk0ocm0pKTsKLSNlbHNlCi0gICAgICAg
ICAgICBBU1NFUlQocm0gIT0gMTQpOwotICAgICAgICAgICAgZW5zdXJlU3BhY2UoMiAqIHNpemVv
ZihBUk1Xb3JkKSwgMCk7Ci0gICAgICAgICAgICBtb3ZfcihBUk1SZWdpc3RlcnM6OmxyLCBBUk1S
ZWdpc3RlcnM6OnBjLCBjYyk7Ci0gICAgICAgICAgICBieChybSwgY2MpOwotI2VuZGlmCiAgICAg
ICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICAgICAgfQogCkBAIC02NTMsMTIg
KzcwNSwzMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlci5z
aXplT2ZDb25zdGFudFBvb2woKTsKICAgICAgICAgfQogCi0gICAgICAgIEFzc2VtYmxlckxhYmVs
IGxhYmVsKCkKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRz
KCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlPbmVJ
bnN0cnVjdGlvbigpOworICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlJbnN0
cnVjdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAgICAg
IH0KIAorICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9uKG1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKSAvIHNpemVvZihBUk1Xb3JkKSk7CisgICAgICAgICAgICBB
c3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICAgICAgaWYg
KHJlc3VsdC5tX29mZnNldCAhPSAobV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgLSBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7
CisgICAgICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29m
ZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBsYWJl
bCgpOworICAgICAgICB9CisKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQorICAgICAg
ICB7CisgICAgICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBsYWJlbElnbm9yaW5nV2F0
Y2hwb2ludHMoKTsKKyAgICAgICAgICAgIHdoaWxlIChyZXN1bHQubV9vZmZzZXQgKyAxIDwgbV9p
bmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpIHsKKyAgICAgICAgICAgICAgICBub3AoKTsKKyAg
ICAgICAgICAgICAgICAvLyBUaGUgYXZhaWxhYmxlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgYXJl
IGVuc3VyZWQgYnkgbGFiZWxGb3JXYXRjaHBvaW50LgorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdu
bWVudCkKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUgKCFtX2J1ZmZlci5pc0FsaWduZWQo
YWxpZ25tZW50KSkKQEAgLTY4OCwxNCArNzYxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBBUk1Xb3JkKiBnZXRMZHJJbW1BZGRyZXNzKEFSTVdvcmQqIGluc24pCiAgICAg
ICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKICAgICAgICAgICAgIC8vIENoZWNr
IGZvciBjYWxsCiAgICAgICAgICAgICBpZiAoKCppbnNuICYgMHgwZjdmMDAwMCkgIT0gMHgwNTFm
MDAwMCkgewogICAgICAgICAgICAgICAgIC8vIE11c3QgYmUgQkxYCiAgICAgICAgICAgICAgICAg
QVNTRVJUKCgqaW5zbiAmIDB4MDEyZmZmMzApID09IDB4MDEyZmZmMzApOwogICAgICAgICAgICAg
ICAgIGluc24tLTsKICAgICAgICAgICAgIH0KLSNlbmRpZgorCiAgICAgICAgICAgICAvLyBNdXN0
IGJlIGFuIGxkciAuLi4sIFtwYyArLy0gaW1tXQogICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAm
IDB4MGY3ZjAwMDApID09IDB4MDUxZjAwMDApOwogCkBAIC03OTksNiArODcxLDMyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
YWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3Mo
ZnJvbSkpKSk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1
bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5z
dHJ1Y3Rpb25TdGFydCkgLSAxOworICAgICAgICAgICAgaW50cHRyX3QgZGlmZmVyZW5jZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90
PihpbnN0cnVjdGlvbikgKyBEZWZhdWx0UHJlZmV0Y2hpbmcgKiBzaXplb2YoQVJNV29yZCkpOwor
CisgICAgICAgICAgICBpZiAoIShkaWZmZXJlbmNlICYgMSkpIHsKKyAgICAgICAgICAgICAgICBk
aWZmZXJlbmNlID4+PSAyOworICAgICAgICAgICAgICAgIGlmICgoZGlmZmVyZW5jZSA8PSBCT0ZG
U0VUX01BWCAmJiBkaWZmZXJlbmNlID49IEJPRkZTRVRfTUlOKSkgeworICAgICAgICAgICAgICAg
ICAgICAgLy8gRGlyZWN0IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
WzBdID0gQiB8IEFMIHwgKGRpZmZlcmVuY2UgJiBCUkFOQ0hfTUFTSyk7CisgICAgICAgICAgICAg
ICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOworICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gTG9hZCB0YXJnZXQuCisgICAgICAgICAgICBpbnN0cnVjdGlvblsw
XSA9IExvYWRVaW50MzIgfCBBTCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQoQVJNUmVnaXN0
ZXJzOjpwYykgfCA0OworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSByZWludGVycHJldF9j
YXN0PEFSTVdvcmQ+KHRvKTsKKyAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNp
emVvZihBUk1Xb3JkKSAqIDIpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHNpemVvZihBUk1Xb3JkKSAqIDI7CisgICAgICAgIH0KKwogICAgICAgICAvLyBBZGRyZXNzIG9w
ZXJhdGlvbnMKIAogICAgICAgICBzdGF0aWMgdm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVzcyh2b2lk
KiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKQEAgLTgyMCwxMyArOTE4LDIwIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIC8vIEhhbmRsZSBpbW1lZGlhdGVzCiAKKyAgICAgICAgc3Rh
dGljIEFSTVdvcmQgZ2V0T3AyKEFSTVdvcmQgaW1tKTsKKworICAgICAgICAvLyBGYXN0IGNhc2Ug
aWYgaW1tIGlzIGtub3duIHRvIGJlIGJldHdlZW4gMCBhbmQgMHhmZgogICAgICAgICBzdGF0aWMg
QVJNV29yZCBnZXRPcDJCeXRlKEFSTVdvcmQgaW1tKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoaW1tIDw9IDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJuIE9QMl9JTU1oIHwgKGltbSAm
IDB4MGYpIHwgKChpbW0gJiAweGYwKSA8PCA0KSA7CisgICAgICAgICAgICByZXR1cm4gT1AyX0lN
TSB8IGltbTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1X
b3JkIGltbSk7CisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMkhhbGYoQVJNV29yZCBpbW0p
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbW0gPD0gMHhmZik7CisgICAgICAgICAg
ICByZXR1cm4gT1AyX0lNTV9IQUxGIHwgKGltbSAmIDB4MGYpIHwgKChpbW0gJiAweGYwKSA8PCA0
KSA7CisgICAgICAgIH0KIAogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQogICAgICAgICBz
dGF0aWMgQVJNV29yZCBnZXRJbW0xNk9wMihBUk1Xb3JkIGltbSkKQEAgLTg0MCwyMCArOTQ1LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG1vdmVJbW0oQVJNV29yZCBpbW0sIGlu
dCBkZXN0KTsKICAgICAgICAgQVJNV29yZCBlbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBp
bnQgZGVzdCk7CiAKLSAgICAgICAgQVJNV29yZCBnZXRPZmZzZXRGb3JIYWxmd29yZERhdGFUcmFu
c2ZlcihBUk1Xb3JkIGltbSwgaW50IHRtcFJlZykKLSAgICAgICAgewotICAgICAgICAgICAgLy8g
RW5jb2RlIGltbWVkaWF0ZSBkYXRhIGluIHRoZSBpbnN0cnVjdGlvbiBpZiBpdCBpcyBwb3NzaWJs
ZQotICAgICAgICAgICAgaWYgKGltbSA8PSAweGZmKQotICAgICAgICAgICAgICAgIHJldHVybiBn
ZXRPcDJCeXRlKGltbSk7Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHN0b3JlIHRoZSBkYXRh
IGluIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlQ29tcGxl
eEltbShpbW0sIHRtcFJlZyk7Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBNZW1vcnkgbG9hZC9z
dG9yZSBoZWxwZXJzCiAKLSAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIzMihib29sIGlzTG9hZCwg
UmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQsIGJvb2wg
Ynl0ZXMgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXIzMihib29sIGlz
TG9hZCwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCwgYm9vbCBieXRlcyA9IGZhbHNlKTsKLSAgICAg
ICAgdm9pZCBkb3VibGVUcmFuc2Zlcihib29sIGlzTG9hZCwgRlBSZWdpc3RlcklEIHNyY0RzdCwg
UmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCk7CisgICAgICAgIHZvaWQgZGF0YVRyYW5z
ZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJh
c2UsIGludDMyX3Qgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBiYXNlSW5kZXhUcmFuc2ZlcjMyKERh
dGFUcmFuc2ZlclR5cGVBLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBk
YXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lz
dGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGJhc2VJbmRleFRyYW5z
ZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAg
ICB2b2lkIGRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCwgRlBSZWdpc3Rl
cklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCk7CisgICAgICAgIHZv
aWQgYmFzZUluZGV4VHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBlRmxvYXQsIEZQUmVnaXN0
ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBpbnQzMl90IG9mZnNldCk7CiAKICAgICAgICAgLy8gQ29uc3RhbnQgcG9vbCBobmFkbGVycwog
CkBAIC05MDEsMjUgKzEwMDAsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIEFSTVdvcmQgUk0oaW50IHJlZykKKyAgICAgICAgc3RhdGljIEFSTVdv
cmQgUk0oaW50IHJlZykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1S
ZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIHJldHVybiByZWc7CiAgICAgICAgIH0KIAotICAg
ICAgICBBUk1Xb3JkIFJTKGludCByZWcpCisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJTKGludCBy
ZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpw
Yyk7CiAgICAgICAgICAgICByZXR1cm4gcmVnIDw8IDg7CiAgICAgICAgIH0KIAotICAgICAgICBB
Uk1Xb3JkIFJEKGludCByZWcpCisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJEKGludCByZWcpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAg
ICAgICAgICAgICByZXR1cm4gcmVnIDw8IDEyOwogICAgICAgICB9CiAKLSAgICAgICAgQVJNV29y
ZCBSTihpbnQgcmVnKQorICAgICAgICBzdGF0aWMgQVJNV29yZCBSTihpbnQgcmVnKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlZyA8PCAxNjsKQEAgLTkzNCw2ICsxMDMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgQVJNQnVmZmVyIG1fYnVmZmVyOwogICAgICAgICBKdW1wcyBtX2p1bXBz
OworICAgICAgICB1aW50MzJfdCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmgK
aW5kZXggZTJlYTI2MS4uNDMwMTQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29s
LmgKQEAgLTEyNyw5ICsxMjcsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlcjo6
ZW5zdXJlU3BhY2UoaW5zblNwYWNlKTsKICAgICB9CiAKLSAgICB2b2lkIGVuc3VyZVNwYWNlRm9y
QW55T25lSW5zdHJ1Y3Rpb24oKQorICAgIHZvaWQgZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlv
bihpbnQgYW1vdW50ID0gMSkKICAgICB7Ci0gICAgICAgIGZsdXNoSWZOb1NwYWNlRm9yKG1heElu
c3RydWN0aW9uU2l6ZSwgc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIGZsdXNoSWZOb1NwYWNl
Rm9yKGFtb3VudCAqIG1heEluc3RydWN0aW9uU2l6ZSwgYW1vdW50ICogc2l6ZW9mKHVpbnQ2NF90
KSk7CiAgICAgfQogCiAgICAgYm9vbCBpc0FsaWduZWQoaW50IGFsaWdubWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAK
aW5kZXggMmRiNWRmMS4uMGI4MjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKQEAgLTc3LDE4ICs3NywxOCBAQCB2
b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJ
bmRleCBhZGRyZXNzLCBSZWdpc3RlcgogCiAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IDAgJiYg
YWRkcmVzcy5vZmZzZXQgKyAweDIgPD0gMHhmZikgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRf
cihBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkcmhfdShkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoYWRkcmVzcy5vZmZzZXQpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF91KEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZShhZGRy
ZXNzLm9mZnNldCArIDB4MikpOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX3UoTG9hZFVpbnQx
NiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJl
c3Mub2Zmc2V0KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfdShMb2FkVWludDE2LCBBUk1S
ZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYo
YWRkcmVzcy5vZmZzZXQgKyAweDIpKTsKICAgICB9IGVsc2UgaWYgKGFkZHJlc3Mub2Zmc2V0IDwg
MCAmJiBhZGRyZXNzLm9mZnNldCA+PSAtMHhmZikgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRf
cihBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkcmhfZChkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoLWFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcmhfZChBUk1SZWdp
c3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoLWFk
ZHJlc3Mub2Zmc2V0IC0gMHgyKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfZChMb2FkVWlu
dDE2LCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoLWFk
ZHJlc3Mub2Zmc2V0KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfZChMb2FkVWludDE2LCBB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoLWFkZHJlc3Mub2Zmc2V0IC0gMHgyKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLm9mZnNldCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0oYWRkcmVzcy5vZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzAp
OwogICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3Rl
cnM6OlMwLCBvcDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJoX3IoZGVzdCwgYWRkcmVzcy5i
YXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF9yKHRydWUs
IFRZUEVfVUgsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFS
TUFzc2VtYmxlcjo6T1AyX0lNTSB8IDB4Mik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcmhfcihB
Uk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAg
ICBtX2Fzc2VtYmxlci5kdHJoX3IodHJ1ZSwgVFlQRV9VSCwgQVJNUmVnaXN0ZXJzOjpTMCwgYWRk
cmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICB9CiAgICAgbV9hc3NlbWJsZXIub3Jy
X3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNLmgKaW5kZXggOGVhMjllMy4uNGM2YzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtOTAsNiArOTAsMTEgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRzX3IoZGVzdCwgZGVzdCwgc3JjKTsKICAg
ICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkc19yKGRlc3QsIG9w
MSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6
OlMxKTsKQEAgLTExOCw2ICsxMjMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5h
bmRzX3IoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVy
SUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYW5kc19yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFu
ZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFS
TVdvcmQgdyA9IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpT
MCwgdHJ1ZSk7CkBAIC0xMzYsMTMgKzE0NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5hbmRzX3IoZGVzdCwgc3JjLCB3KTsKICAgICB9CiAKLSAgICB2b2lkIGxzaGlmdDMy
KFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBsc2hp
ZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDFmKTsKLSAgICAgICAgQVNT
RVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJTlZBTElEX0lNTSk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0X2Ftb3VudCwgdyk7CisgICAgICAgIGxzaGlm
dDMyKGRlc3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgx
Zik7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1v
dW50LCB3KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIu
bHNsX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zz
X3IoZGVzdCwgbV9hc3NlbWJsZXIubHNsX3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAg
fQogCiAgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CkBAIC0xNTUsMTMgKzE2OSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNf
cihkZXN0LCBtX2Fzc2VtYmxlci5sc2woc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKICAgICB9
CiAKLSAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
dm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIGlmIChzcmMgPT0gZGVzdCkgewotICAgICAgICAgICAgbW92ZShz
cmMsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgc3JjID0gQVJNUmVnaXN0ZXJzOjpT
MDsKKyAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAgICBpZiAob3AxID09IGRl
c3QpIHsKKyAgICAgICAgICAgICAgICBtb3ZlKG9wMiwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAg
ICAgICAgICAgICAgb3AyID0gQVJNUmVnaXN0ZXJzOjpTMDsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gU3dhcCB0aGUgb3BlcmFuZHMuCisgICAgICAgICAgICAgICAg
UmVnaXN0ZXJJRCB0bXAgPSBvcDE7CisgICAgICAgICAgICAgICAgb3AxID0gb3AyOworICAgICAg
ICAgICAgICAgIG9wMiA9IHRtcDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBt
X2Fzc2VtYmxlci5tdWxzX3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bXVsc19yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtdWwzMihzcmMsIGRlc3Qs
IGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE3Miw3ICsxOTgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnJzYnNfcihzcmNEZXN0LCBzcmNEZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnJzYnNfcihzcmNEZXN0LCBzcmNEZXN0LCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoMCkpOwogICAgIH0KIAogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTk1LDE1ICsyMjEsMTkgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5vcnJzX3IoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAotICAgIHZvaWQg
cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2
b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4MWYpOwotICAg
ICAgICBBU1NFUlQodyAhPSBBUk1Bc3NlbWJsZXI6OklOVkFMSURfSU1NKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRfYW1vdW50LCB3KTsKKyAgICAg
ICAgcnNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQg
cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgweDFmKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwg
c2hpZnRBbW91bnQsIHcpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fz
c2VtYmxlci5hc3JfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5hc3JfcihzcmMsIEFSTVJlZ2lzdGVyczo6UzAp
KTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIHJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHJzaGlmdDMyKGRlc3QsIGltbSwgZGVzdCk7
CkBAIC0yMTMsMTYgKzI0MywyMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIuYXNyKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7
CiAgICAgfQotICAgIAotICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50
LCBSZWdpc3RlcklEIGRlc3QpCisKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0
QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1B
c3NlbWJsZXI6OmdldE9wMigweDFmKTsKLSAgICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVy
OjpJTlZBTElEX0lNTSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6
UzAsIHNoaWZ0X2Ftb3VudCwgdyk7Ci0gICAgICAgIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3Zz
X3IoZGVzdCwgbV9hc3NlbWJsZXIubHNyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAg
ICAgICB1cnNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3QpOwogICAgIH0KLSAgICAKKwor
ICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoMHgxZik7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lz
dGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3KTsKKworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3Io
ZGVzdCwgbV9hc3NlbWJsZXIubHNyX3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgfQor
CiAgICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzcihk
ZXN0LCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKQEAgLTI2Niw2ICszMDAsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5lb3JzX3IoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAg
ICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9yc19yKGRlc3QsIG9wMSwgb3AyKTsK
KyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKQEAgLTI5NSwyMiArMzM0
LDQyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZDgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2Zl
cjMyKHRydWUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQsIHRydWUpOworICAg
ICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwg
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9pZCBs
b2FkOChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mu
b2Zmc2V0LCB0cnVlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihB
Uk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAg
fQorCisgICAgdm9pZCBsb2FkOFNpZ25lZChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1B
c3NlbWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0
YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIGxvYWQxNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMTYoQVJNQXNzZW1ibGVy
OjpMb2FkVWludDE2LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGxvYWQxNihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGlj
X2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgbG9hZDE2U2lnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxl
cjo6TG9hZEludDE2LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19j
YXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2
b2lkIGxvYWQzMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMzIodHJ1ZSwgZGVzdCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2Zl
cjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
Lm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9pZCBsb2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5z
ZmVyMzIodHJ1ZSwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2Fz
dDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2Fs
ZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICNpZiBDUFUoQVJNVjVfT1JfTE9XRVIpCkBA
IC0zMzEsNyArMzkwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgRGF0YUxhYmVsMzIgZGF0
YUxhYmVsKHRoaXMpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVy
czo6UzAsIDApOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdXIodHJ1ZSwgZGVzdCwgYWRkcmVz
cy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKEFS
TUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6
OlMwKTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJlbDsKICAgICB9CiAgICAgCkBAIC0zNDIsMzYg
KzQwMSwzMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogCi0g
ICAgdm9pZCBsb2FkMTYoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBE
YXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVn
aXN0ZXJzOjpTMSwgYWRkcmVzcy5iYXNlLCBtX2Fzc2VtYmxlci5sc2woYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSkpOwotICAgICAgICBsb2FkMTYoQWRkcmVzcyhBUk1SZWdpc3RlcnM6OlMx
LCBhZGRyZXNzLm9mZnNldCksIGRlc3QpOworICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwo
dGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91cihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMy
LCBzcmMsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIHJldHVybiBk
YXRhTGFiZWw7CiAgICAgfQotICAgIAotICAgIHZvaWQgbG9hZDE2KEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQg
Pj0gMCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmhfdShkZXN0LCBhZGRyZXNzLmJhc2Us
IG1fYXNzZW1ibGVyLmdldE9mZnNldEZvckhhbGZ3b3JkRGF0YVRyYW5zZmVyKGFkZHJlc3Mub2Zm
c2V0LCBBUk1SZWdpc3RlcnM6OlMwKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcmhfZChkZXN0LCBhZGRyZXNzLmJhc2UsIG1fYXNzZW1ibGVyLmdldE9mZnNldEZv
ckhhbGZ3b3JkRGF0YVRyYW5zZmVyKC1hZGRyZXNzLm9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50OCwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0
PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKLSAgICBEYXRh
TGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGFkZHJlc3MpCiAgICAgewotICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmR0cl91cihmYWxzZSwgc3JjLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lz
dGVyczo6UzApOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOworICAgICAgICBtX2Fzc2VtYmxl
ci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUp
LCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQg
c3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmRhdGFUcmFuc2ZlcjMyKGZhbHNlLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQp
OworICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OlN0b3Jl
VWludDMyLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAogICAg
IHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKGZhbHNlLCBzcmMsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwg
YWRkcmVzcy5vZmZzZXQpOworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMy
KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CiAg
ICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzKQpAQCAtMzgwLDE3ICs0MzUsMjMgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMy
KEFSTVJlZ2lzdGVyczo6UzEsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmUzMihU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUo
aW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJh
bnNmZXIzMihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSks
IGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBz
cmMsIHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1t
KEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShmYWxzZSwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwLCAw
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwg
c3JjLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIoVHJ1
c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihh
ZGRyZXNzKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0oaW1tLm1fdmFsdWUsIEFSTVJl
Z2lzdGVyczo6UzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShmYWxzZSwgQVJNUmVnaXN0
ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91
KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVy
czo6UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKQEAgLTQy
Miw3ICs0ODMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmUoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIHNy
Yyk7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dl9yKGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW1QdHIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCkBAIC01NjYsNiArNjI4LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
bG9hZDMyKGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6cGMpOwogICAgIH0KIAorICAgIHZvaWQganVt
cChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIGxvYWQzMihB
ZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzAsIDApLCBBUk1SZWdpc3RlcnM6OnBjKTsKKyAgICB9CisK
ICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJm
bG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKQEAgLTU3Myw2ICs2NDEsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVt
cChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVt
cCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lz
dGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQg
PT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNv
bmQgPT0gTm9uWmVybykpOworICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0g
T3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQg
PT0gTm9uWmVybykpOwpAQCAtNTg3LDI4ICs2NjIsNDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCi0g
ICAgdm9pZCBtdWxsMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVz
dGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGFkZDMyKGltbSwgZGVzdCk7CisgICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKKyAg
ICB9CisKKyAgICB2b2lkIG11bGwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGlmIChzcmMxID09IGRlc3QpIHsKLSAgICAg
ICAgICAgIG1vdmUoc3JjMSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBzcmMxID0g
QVJNUmVnaXN0ZXJzOjpTMDsKKyAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAg
ICBpZiAob3AxID09IGRlc3QpIHsKKyAgICAgICAgICAgICAgICBtb3ZlKG9wMiwgQVJNUmVnaXN0
ZXJzOjpTMCk7CisgICAgICAgICAgICAgICAgb3AyID0gQVJNUmVnaXN0ZXJzOjpTMDsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gU3dhcCB0aGUgb3BlcmFuZHMuCisg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBvcDE7CisgICAgICAgICAgICAgICAgb3Ax
ID0gb3AyOworICAgICAgICAgICAgICAgIG9wMiA9IHRtcDsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5tdWxsX3IoQVJNUmVnaXN0ZXJzOjpTMSwgZGVzdCwg
c3JjMiwgc3JjMSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bGxfcihBUk1SZWdpc3RlcnM6OlMx
LCBkZXN0LCBvcDEsIG9wMik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVy
czo6UzEsIG1fYXNzZW1ibGVyLmFzcihkZXN0LCAzMSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJh
bmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIGlmIChjb25kID09IE92
ZXJmbG93KSB7Ci0gICAgICAgICAgICBtdWxsMzIoc3JjLCBkZXN0LCBkZXN0KTsKKyAgICAgICAg
ICAgIG11bGwzMihzcmMxLCBzcmMyLCBkZXN0KTsKICAgICAgICAgICAgIGNvbmQgPSBOb25aZXJv
OwogICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG11bDMyKHNyYywgZGVzdCk7
CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIEp1
bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAorICAgIEp1
bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc3Jj
LCBkZXN0LCBkZXN0KTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9
PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTY3
MSwxNCArNzY1LDggQEAgcHVibGljOgogCiAgICAgQ2FsbCBuZWFyQ2FsbCgpCiAgICAgewotI2lm
IFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQotICAgICAgICBlbnN1cmVTcGFjZSgyICogc2l6ZW9m
KEFSTVdvcmQpLCBzaXplb2YoQVJNV29yZCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQnJh
bmNoVGFyZ2V0KEFSTVJlZ2lzdGVyczo6UzEsIEFSTUFzc2VtYmxlcjo6QUwsIHRydWUpOwogICAg
ICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoQVJNUmVnaXN0ZXJzOjpTMSksIENhbGw6
OkxpbmthYmxlTmVhcik7Ci0jZWxzZQotICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICBy
ZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5qbXAoQVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSksIENhbGw6
OkxpbmthYmxlTmVhcik7Ci0jZW5kaWYKICAgICB9CiAKICAgICBDYWxsIGNhbGwoUmVnaXN0ZXJJ
RCB0YXJnZXQpCkBAIC02OTksMTUgKzc4NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21wYXJl
MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9y
KGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1i
bGVyOjpnZXRPcDIoMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3Nl
bWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25k
aXRpb24oY29uZCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKGxlZnQsIG1fYXNzZW1i
bGVyLmdldEltbShyaWdodC5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMSksIEFSTUNvbmRp
dGlvbihjb25kKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxl
cjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKICAgICB9CiAKICAg
ICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTcyMiw4ICs4MTAsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcigwLCByZWcpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3RfcihyZWcsIG1fYXNzZW1ibGVyLmdldElt
bShtYXNrLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0aW9uKGNvbmQp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwogICAgIH0KIAogICAgIHZvaWQgdGVz
dDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrLCBSZWdpc3RlcklEIGRlc3QpCkBAIC03NDYsMjUgKzgzNCwyNSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMSwgcmVp
bnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmR0cl91KHRydWUsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOwor
ICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJl
Z2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOwogICAgICAgICBhZGQzMihpbW0sIEFS
TVJlZ2lzdGVyczo6UzEpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lz
dGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5kdHJfdShmYWxzZSwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0
ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6U3Rv
cmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0K
IAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6
UzEsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOwotICAgICAgICBt
X2Fzc2VtYmxlci5kdHJfdSh0cnVlLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMx
LCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMy
LCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKICAgICAgICAgc3ViMzIo
aW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShB
Uk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV9wdHIp
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoZmFsc2UsIEFSTVJlZ2lzdGVyczo6UzEsIEFS
TVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJs
ZXI6OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsK
ICAgICB9CiAKICAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVy
czo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOwotICAgICAgICBtX2Fz
c2VtYmxlci5kdHJfdSh0cnVlLCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBBUk1SZWdp
c3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBAIC03
OTAsMTQgKzg3OCw5IEBAIHB1YmxpYzoKIAogICAgIENhbGwgY2FsbCgpCiAgICAgewotI2lmIFdU
Rl9BUk1fQVJDSF9BVF9MRUFTVCg1KQogICAgICAgICBlbnN1cmVTcGFjZSgyICogc2l6ZW9mKEFS
TVdvcmQpLCBzaXplb2YoQVJNV29yZCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQnJhbmNo
VGFyZ2V0KEFSTVJlZ2lzdGVyczo6UzEsIEFSTUFzc2VtYmxlcjo6QUwsIHRydWUpOwogICAgICAg
ICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoQVJNUmVnaXN0ZXJzOjpTMSksIENhbGw6Okxp
bmthYmxlKTsKLSNlbHNlCi0gICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgIHJldHVybiBD
YWxsKG1fYXNzZW1ibGVyLmptcChBUk1Bc3NlbWJsZXI6OkFMLCB0cnVlKSwgQ2FsbDo6TGlua2Fi
bGUpOwotI2VuZGlmCiAgICAgfQogCiAgICAgQ2FsbCB0YWlsUmVjdXJzaXZlQ2FsbCgpCkBAIC04
NjEsMjAgKzk0NCw1MiBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
RmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2b2lkIGxvYWRGbG9h
dChCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRk
cmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGxvYWREb3Vi
bGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuZG91YmxlVHJhbnNmZXIodHJ1ZSwgZGVzdCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlckZsb2F0
KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9m
ZnNldCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkRG91YmxlKEJhc2VJbmRleCBhZGRyZXNzLCBG
UFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRy
YW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mu
b2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWREb3VibGUoY29uc3Qgdm9pZCogYWRkcmVz
cywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5f
aW1tKEFSTVJlZ2lzdGVyczo6UzAsIChBUk1Xb3JkKWFkZHJlc3MpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5mZHRyX3UodHJ1ZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpLCBBUk1S
ZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmR0cl91KEFSTUFzc2VtYmxlcjo6
TG9hZERvdWJsZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgfQorCisgICAgdm9p
ZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6
OlN0b3JlRmxvYXQsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2Fz
dDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9p
ZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykK
ICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRvdWJsZVRyYW5zZmVyKGZhbHNlLCBzcmMsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJh
bnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5i
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVEb3VibGUsIHNyYywgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUp
LCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lz
dGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIEFSTVJlZ2lzdGVy
czo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJs
ZXI6OlN0b3JlRG91YmxlLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgIH0KKworICAg
IHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZt
b3ZfZjY0X3IoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTg4MiwxNyArOTk3LDMzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjRfcihkZXN0LCBkZXN0LCBzcmMpOwogICAg
IH0KIAorICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBv
cDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9m
NjRfcihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWRkcmVz
cyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZERvdWJsZShzcmMs
IEFSTVJlZ2lzdGVyczo6U0QwKTsKICAgICAgICAgYWRkRG91YmxlKEFSTVJlZ2lzdGVyczo6U0Qw
LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZERvdWJsZShBYnNvbHV0ZUFkZHJlc3MgYWRk
cmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkRG91YmxlKGFkZHJl
c3MubV9wdHIsIEFSTVJlZ2lzdGVyczo6U0QwKTsKKyAgICAgICAgYWRkRG91YmxlKEFSTVJlZ2lz
dGVyczo6U0QwLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZk
aXZfZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJsZShG
UFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAg
IH0KKwogICAgIHZvaWQgZGl2RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBVbnRlc3RlZApAQCAtOTA1
LDYgKzEwMzYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci52c3ViX2Y2NF9yKGRl
c3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklE
IG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci52c3ViX2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2
b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBsb2FkRG91YmxlKHNyYywgQVJNUmVnaXN0ZXJzOjpTRDApOwpAQCAtOTIyLDM5ICsxMDU4
LDU1IEBAIHB1YmxpYzoKICAgICAgICAgbXVsRG91YmxlKEFSTVJlZ2lzdGVyczo6U0QwLCBkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lz
dGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnZtdWxfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnZzcXJ0X2Y2NF9yKGRlc3QsIHNyYyk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
YWJzRG91YmxlKEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklEKQorICAgIHZvaWQgYWJzRG91Ymxl
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZhYnNfZjY0X3IoZGVzdCwg
c3JjKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZuZWdfZjY0X3Io
ZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnZtb3ZfdmZwX3IoZGVzdCA8PCAxLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bW92X3Zm
cDMyX3IoZGVzdCA8PCAxLCBzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9zMzJf
cihkZXN0LCBkZXN0IDw8IDEpOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3Vi
bGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IC8vIFVudGVzdGVkCi0gICAgICAgIC8vIGZsZHMgZG9lcyBub3Qgd29y
dGggdGhlIGVmZm9ydCBoZXJlCiAgICAgICAgIGxvYWQzMihzcmMsIEFSTVJlZ2lzdGVyczo6UzEp
OwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsK
ICAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFic29sdXRlQWRkcmVzcyBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IC8vIFVudGVzdGVkCi0gICAgICAgIC8vIGZsZHMgZG9lcyBub3Qgd29ydGggdGhlIGVmZm9y
dCBoZXJlCi0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMSwg
KEFSTVdvcmQpc3JjLm1fcHRyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgQVJN
UmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihzcmMubV9wdHIpLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgbG9hZDMyKEFk
ZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICBjb252
ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsKICAgICB9CiAKKyAgICB2
b2lkIGNvbnZlcnRGbG9hdFRvRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9mMzJfcihkc3QsIHNyYyk7
CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0RG91YmxlVG9GbG9hdChGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mMzJf
ZjY0X3IoZHN0LCBzcmMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNv
bmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9mNjRfcihsZWZ0LCByaWdodCk7CkBAIC05Njgs
MTIgKzExMjAsNDIgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJl
c2VudGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFu
Y2ggZm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwogICAg
IC8vIChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5UX01JTikuCi0gICAgSnVtcCBicmFu
Y2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwg
QnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5j
YXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKICAgICB7Ci0gICAg
ICAgIFVOVVNFRF9QQVJBTShzcmMpOwotICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAg
ICB0cnVuY2F0ZURvdWJsZVRvSW50MzIoc3JjLCBkZXN0KTsKKworICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MSkpOworICAgICAgICBtX2Fzc2VtYmxlci5iaWNfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdp
c3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOworCisgICAgICAgIEFSTVdv
cmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4ODAwMDAwMDApOworICAgICAgICBBU1NFUlQo
dyAhPSBBUk1Bc3NlbWJsZXI6OklOVkFMSURfSU1NKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21w
X3IoQVJNUmVnaXN0ZXJzOjpTMCwgdyk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVy
LmptcChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6
OkVRIDogQVJNQXNzZW1ibGVyOjpORSkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVHJ1bmNh
dGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5j
aFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7
CisgICAgICAgIHRydW5jYXRlRG91YmxlVG9VaW50MzIoc3JjLCBkZXN0KTsKKworICAgICAgICBt
X2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5iaWNfcihBUk1SZWdpc3RlcnM6OlMw
LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOworCisgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgwKSk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChicmFuY2hU
eXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVRIDogQVJNQXNz
ZW1ibGVyOjpORSkpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhl
IHZhbHVlIGlzIG91dHNpZGUgb2YgdGhlIGludGVnZXIgcmFuZ2UuCisgICAgdm9pZCB0cnVuY2F0
ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0X3IoQVJNUmVnaXN0ZXJzOjpTRDAgPDwg
MSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMl9yKGRlc3QsIEFSTVJlZ2lz
dGVyczo6U0QwIDw8IDEpOworICAgIH0KKworICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQz
MihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci52Y3Z0X3UzMl9mNjRfcihBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOworICAg
ICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwg
MSk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxh
Y2VzIHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAtOTgzLDcgKzExNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEZQUmVnaXN0ZXJJRCBmcFRlbXAp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjRfcihBUk1SZWdpc3RlcnM6
OlNEMCA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybV9yKGRlc3QsIEFS
TVJlZ2lzdGVyczo6U0QwIDw8IDEpOworICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyX3Io
ZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CiAKICAgICAgICAgLy8gQ29udmVydCB0aGUg
aW50ZWdlciByZXN1bHQgYmFjayB0byBmbG9hdCAmIGNvbXBhcmUgdG8gdGhlIG9yaWdpbmFsIHZh
bHVlIC0gaWYgbm90IGVxdWFsIG9yIHVub3JkZXJlZCAoTmFOKSB0aGVuIGp1bXAuCiAgICAgICAg
IG1fYXNzZW1ibGVyLnZjdnRfZjY0X3MzMl9yKEFSTVJlZ2lzdGVyczo6U0QwLCBBUk1SZWdpc3Rl
cnM6OlNEMCA8PCAxKTsKQEAgLTk5NSwxOCArMTE3NywyNSBAQCBwdWJsaWM6CiAKICAgICBKdW1w
IGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0
Y2gpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJl
Z2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAgICAgIGNvbnZl
cnRJbnQzMlRvRG91YmxlKEFSTVJlZ2lzdGVyczo6UzAsIHNjcmF0Y2gpOwogICAgICAgICByZXR1
cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0
ZXJJRCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwogICAg
ICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMwLCBzY3JhdGNoKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCByZWcsIHNj
cmF0Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBl
LmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgorICAgIHN0YXRpYyBSZWxhdGlv
bmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAg
ICAgICBBU1NFUlQoKHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb25kICYgMHgwZmZmZmZmZikpID09
IDAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbmQpIDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEFSTUFzc2VtYmxlcjo6QUwpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9u
YWxDb25kaXRpb24+KGNvbmQgXiAweDEwMDAwMDAwKTsKKyAgICB9CisKICAgICB2b2lkIG5vcCgp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTEwMTksMTIgKzEyMDgsMTIg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEFSTUFzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3Rp
bmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBBUk1Bc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xMDQ5LDU4ICsxMjM4LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIG1fYXNzZW1ibGVyLnNpemVPZkNvbnN0YW50UG9vbCgpOwog
ICAgIH0KIAotICAgIHZvaWQgcHJlcGFyZUNhbGwoKQotICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hf
VkVSU0lPTiA8IDUKLSAgICAgICAgZW5zdXJlU3BhY2UoMiAqIHNpemVvZihBUk1Xb3JkKSwgc2l6
ZW9mKEFSTVdvcmQpKTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihsaW5rUmVnaXN0ZXIs
IEFSTVJlZ2lzdGVyczo6cGMpOwotI2VuZGlmCi0gICAgfQotCiAgICAgdm9pZCBjYWxsMzIoUmVn
aXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKICAgICB7Ci0jaWYgV1RGX0FSTV9BUkNIX0FU
X0xFQVNUKDUpCi0gICAgICAgIGludCB0YXJnZXRSZWcgPSBBUk1SZWdpc3RlcnM6OlMxOwotI2Vs
c2UKLSAgICAgICAgaW50IHRhcmdldFJlZyA9IEFSTVJlZ2lzdGVyczo6cGM7Ci0jZW5kaWYKLSAg
ICAgICAgaW50IHRtcFJlZyA9IEFSTVJlZ2lzdGVyczo6UzE7Ci0KLSAgICAgICAgaWYgKGJhc2Ug
PT0gQVJNUmVnaXN0ZXJzOjpzcCkKLSAgICAgICAgICAgIG9mZnNldCArPSA0OwotCi0gICAgICAg
IGlmIChvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikgewot
ICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuZHRyX3UodHJ1ZSwgdGFyZ2V0UmVnLCBiYXNlLCBvZmZzZXQpOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZikgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZF9yKHRtcFJlZywgYmFzZSwgQVJNQXNzZW1ibGVyOjpPUDJfSU1NIHwgKG9mZnNldCA+PiAx
MikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgdGFyZ2V0UmVnLCB0bXBSZWcsIG9mZnNl
dCAmIDB4ZmZmKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92ZUltbShvZmZzZXQsIHRtcFJlZyk7Ci0gICAgICAgICAgICAgICAgcHJlcGFyZUNh
bGwoKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdXIodHJ1ZSwgdGFyZ2V0UmVn
LCBiYXNlLCB0bXBSZWcpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgIHsKLSAgICAg
ICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0gICAgICAgICAgICBpZiAob2Zmc2V0IDw9IDB4ZmZm
KSB7Ci0gICAgICAgICAgICAgICAgcHJlcGFyZUNhbGwoKTsKLSAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5kdHJfZCh0cnVlLCB0YXJnZXRSZWcsIGJhc2UsIG9mZnNldCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmZmKSB7Ci0gICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViX3IodG1wUmVnLCBiYXNlLCBBUk1Bc3NlbWJsZXI6Ok9QMl9JTU0gfCAob2Zmc2V0
ID4+IDEyKSB8ICgxMCA8PCA4KSk7Ci0gICAgICAgICAgICAgICAgcHJlcGFyZUNhbGwoKTsKLSAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfZCh0cnVlLCB0YXJnZXRSZWcsIHRtcFJlZywg
b2Zmc2V0ICYgMHhmZmYpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZlSW1tKG9mZnNldCwgdG1wUmVnKTsKLSAgICAgICAgICAgICAgICBwcmVw
YXJlQ2FsbCgpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl9kcih0cnVlLCB0YXJn
ZXRSZWcsIGJhc2UsIHRtcFJlZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNpZiBXVEZf
QVJNX0FSQ0hfQVRfTEVBU1QoNSkKLSAgICAgICAgbV9hc3NlbWJsZXIuYmx4KHRhcmdldFJlZyk7
Ci0jZW5kaWYKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgb2Zmc2V0KSwgQVJNUmVnaXN0
ZXJzOjpTMSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJseChBUk1SZWdpc3RlcnM6OlMxKTsKICAg
ICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1NINEFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRB
c3NlbWJsZXIuaAppbmRleCA1OWQwNDIyLi5kNTVkMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKQEAgLTEyNDEsNyArMTI0MSw3IEBAIHB1
YmxpYzoKIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIG1fYnVm
ZmVyLmVuc3VyZVNwYWNlRm9yQW55T25lSW5zdHJ1Y3Rpb24oKTsKKyAgICAgICAgbV9idWZmZXIu
ZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlvbigpOwogICAgICAgICByZXR1cm4gbV9idWZmZXIu
bGFiZWwoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2Vt
Ymx5SGVscGVycy5oCmluZGV4IGY4NmMxNWUuLmVkMzU3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxl
bmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1t
UHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTV9USFVNQjIpCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBzZWxlY3RTY3JhdGNoR1BSKEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTI2MiwxMyArMjYyLDIxIEBA
IHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTMyXzY0KSAmJiBDUFUoQVJNKQogICAgIHZvaWQgYm94
RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSKQogICAg
IHsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihwYXlsb2Fk
R1BSLCB0YWdHUFIsIGZwcik7CisjZWxzZQorICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTY0
X3IocGF5bG9hZEdQUiwgdGFnR1BSLCBmcHIpOworI2VuZGlmCiAgICAgfQogICAgIHZvaWQgdW5i
b3hEb3VibGUoR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIsIEZQUlJlZyBmcHIsIEZQ
UlJlZyBzY3JhdGNoRlBSKQogICAgIHsKICAgICAgICAgaml0QXNzZXJ0SXNKU0RvdWJsZSh0YWdH
UFIpOwogICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaEZQUik7CisjaWYgQ1BVKEFSTV9USFVN
QjIpCiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZnByLCBwYXlsb2FkR1BSLCB0YWdHUFIpOwor
I2Vsc2UKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl92ZnA2NF9yKGZwciwgcGF5bG9hZEdQUiwg
dGFnR1BSKTsKKyNlbmRpZgogICAgIH0KICNlbmRpZgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKaW5kZXggYjYwMjkwOC4uZDM0OGRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCkBAIC00MzQsMTcgKzQz
NCwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEZQUkluZm86
OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxPihhcmcxLCBhcmcyKTsKICAgICB9
Ci0jZWxzZQorI2VsaWYgQ1BVKEFSTSkKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgeworI2lmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBh
c3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBhcmcxKTsKKyNlbHNlCisgICAgICAgIGFzc2VtYmxlcigpLnZtb3ZfYXJtNjRfcihHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7CisjZW5kaWYK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFy
ZzEsIEZQUlJlZyBhcmcyKQogICAgIHsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgYXNz
ZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgYXJnMSk7CiAgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOworI2Vsc2UKKyAgICAgICAgYXNzZW1ibGVy
KCkudm1vdl9hcm02NF9yKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBhcmcxKTsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdl9hcm02NF9yKEdQUkluZm86OmFy
Z3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcyKTsKKyNlbmRpZgogICAgIH0K
KyNlbHNlCisjZXJyb3IgIkRGRyBKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIK
ICNlbmRpZgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBh
cmcxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCA2YWY0NWRkLi5l
ODE3ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTAyLDcg
KzEwMiw3IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKLSNpZiBDUFUoQVJNX1RIVU1CMikKKyNpZiBD
UFUoQVJNKQogCiBjbGFzcyBGUFJJbmZvIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHUFJJbmZvLmgKaW5kZXggYmQ0ZmEzMi4uODlmYWVmOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTM4NCw3ICszODQsNyBAQCBwcml2YXRlOgogCiAjZW5k
aWYKIAotI2lmIENQVShBUk1fVEhVTUIyKQorI2lmIENQVShBUk0pCiAjZGVmaW5lIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgNAogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTQxMCw3ICs0MTAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBBUk1S
ZWdpc3RlcnM6OnIxOyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRH
UFIyID0gQVJNUmVnaXN0ZXJzOjpyMjsgLy8gcmVnVDIKICAgICAvLyBGSVhNRTogcjMgaXMgY3Vy
cmVudGx5IHVzZWQgYmUgdGhlIE1hY3JvQXNzZW1ibGVyIGFzIGEgdGVtcG9yYXJ5IC0gaXQgc2Vl
bXMKLSAgICAvLyBUaGlzIGNvdWxkIHRocmVvcmV0aWNhbGx5IGJlIGEgcHJvYmxlbSBpZiB0aGVp
cyBpcyB1c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgorICAgIC8vIFRoaXMgY291bGQgdGhyZW9yZXRp
Y2FsbHkgYmUgYSBwcm9ibGVtIGlmIHRoaXMgaXMgdXNlZCBpbiBjb2RlIGdlbmVyYXRpb24KICAg
ICAvLyBiZXR3ZWVuIHRoZSBhcmd1bWVudHMgYmVpbmcgc2V0IHVwLCBhbmQgdGhlIGNhbGwgYmVp
bmcgbWFkZS4gVGhhdCBzYWlkLAogICAgIC8vIGFueSBjaGFuZ2UgaW50cm9kdWNpbmcgYSBwcm9i
bGVtIGhlcmUgaXMgbGlrZWx5IHRvIGJlIGltbWVkaWF0ZWx5IGFwcGFyZW50IQogICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gQVJNUmVnaXN0ZXJzOjpyMzsgLy8gRklYTUUh
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA3NGIz
ZjE5Li41ZDY1NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTE0MCw2ICsxNDAsNjIgQEAKICAgICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0Uo
ZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCiAgICAgKTsKIAorI2VsaWYgQ09N
UElMRVIoR0NDKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQorCisjZGVmaW5lIEZVTkNUSU9OX1dS
QVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FKGZ1bmN0aW9uKSBcCisgICAgYXNtICggXAorICAg
ICIudGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICJc
biIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBJTkxJTkVfQVJNX0ZV
TkNUSU9OKGZ1bmN0aW9uKSBcCisgICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoiICJcbiIg
XAorICAgICAgICAibW92IGEyLCBsciIgIlxuIiBcCisgICAgICAgICJiICIgTE9DQUxfUkVGRVJF
TkNFKGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICk7CisKKyNkZWZp
bmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShmdW5jdGlvbikgXAor
ICAgIGFzbSAoIFwKKyAgICAiLnRleHQiICJcbiIgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBISURFX1NZTUJPTChmdW5jdGlvbikgIlxuIiBcCisg
ICAgSU5MSU5FX0FSTV9GVU5DVElPTihmdW5jdGlvbikgXAorICAgIFNZTUJPTF9TVFJJTkcoZnVu
Y3Rpb24pICI6IiAiXG4iIFwKKyAgICAgICAgIm1vdiBhNCwgbHIiICJcbiIgXAorICAgICAgICAi
YiAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikgIldpdGhSZXR1cm5BZGRyZXNzIiAiXG4iIFwK
KyAgICApOworCisvLyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQg
aW50ZWdlci4gV2hlbiBiZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGln
bmVkIGV2ZW4tbnVtYmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KKy8vIEFzIGEgcmVz
dWx0LCByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIGF0IGEgNC1ieXRlIGZ1cnRoZXIgbG9jYXRpb24g
aW4gdGhlIGZvbGxvd2luZyBjYXNlcy4KKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBD
UFUoQVJNKQorI2RlZmluZSBJTlNUUlVDVElPTl9TVE9SRV9SRVRVUk5fQUREUkVTU19FSkkgInN0
ciBsciwgW3NwLCAjNF0iCisjZGVmaW5lIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNT
X0VKQ0kgInN0ciBsciwgW3NwLCAjOF0iCisjZWxzZQorI2RlZmluZSBJTlNUUlVDVElPTl9TVE9S
RV9SRVRVUk5fQUREUkVTU19FSkkgInN0ciBsciwgW3NwLCAjMF0iCisjZGVmaW5lIElOU1RSVUNU
SU9OX1NUT1JFX1JFVFVSTl9BRERSRVNTX0VKQ0kgInN0ciBsciwgW3NwLCAjNF0iCisjZW5kaWYK
KworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpJKGZ1bmN0
aW9uKSBcCisgICAgYXNtICggXAorICAgICIudGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZnVuY3Rpb24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAi
XG4iIFwKKyAgICBJTkxJTkVfQVJNX0ZVTkNUSU9OKGZ1bmN0aW9uKSBcCisgICAgU1lNQk9MX1NU
UklORyhmdW5jdGlvbikgIjoiICJcbiIgXAorICAgICAgICBJTlNUUlVDVElPTl9TVE9SRV9SRVRV
Uk5fQUREUkVTU19FSkkgIlxuIiBcCisgICAgICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGZ1bmN0
aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICk7CisKKyNkZWZpbmUgRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKQ0koZnVuY3Rpb24pIFwKKyAgICBhc20g
KCBcCisgICAgIi50ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhmdW5j
dGlvbikgIlxuIiBcCisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAorICAgIElOTElO
RV9BUk1fRlVOQ1RJT04oZnVuY3Rpb24pIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAi
OiIgIlxuIiBcCisgICAgICAgIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNTX0VKQ0kg
IlxuIiBcCisgICAgICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGZ1bmN0aW9uKSAiV2l0aFJldHVy
bkFkZHJlc3MiICJcbiIgXAorICAgICk7CisKICNlbmRpZgogCiAjZGVmaW5lIFBfRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pIFwKQEAgLTEzMjIsNiArMTM3
OCwxNyBAQCBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCiAg
ICAgIm1vdiByMCwgcjUiICJcbiIKICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgogKTsKKyNlbGlmIENQVShBUk1fVFJBRElU
SU9OQUwpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCitJTkxJTkVfQVJNX0ZVTkNUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpCitT
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciBy
NSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJtb3YgcjAsIHI1IiAiXG4iCisgICAgImIgIiBMT0NB
TF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7
CiAjZW5kaWYKIAogZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUq
IGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggODRiMzA2MS4uYWEzYjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTcyMyw3ICsxNzIzLDcgQEAgcHVibGljOgogICAgIH0K
ICNlbmRpZgogICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk1fVEhVTUIyKQor
I2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0
ZXJuYWxDYWxsKCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
b2Yodm9pZCopIC8gNDsgaSsrKQpAQCAtMTc4NiwxMyArMTc4NiwyMSBAQCBwdWJsaWM6CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChj
b25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhm
dW5jdGlvbik7CisjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIG1faml0LmFzc2VtYmxlcigp
LnZtb3YocmVzdWx0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIyKTsKKyNlbHNlCisgICAgICAgIG1faml0LmFzc2VtYmxlcigpLnZtb3ZfdmZwNjRfcihy
ZXN1bHQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OworI2VuZGlmCiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBS
UmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2pp
dC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgbV9q
aXQuYXNzZW1ibGVyKCkudm1vdihyZXN1bHQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUjIpOworI2Vsc2UKKyAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCku
dm1vdl92ZnA2NF9yKHJlc3VsdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSMik7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggYjVlZjk4YS4uNTlk
YzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTYyMiwzOCAr
NjIyLDQ2IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKICNl
bGlmIENPTVBJTEVSKEdDQykgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKIAogYXNtICgKKyIudGV4
dCIgIlxuIgogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIlxuIgogSElE
RV9TWU1CT0woY3RpVHJhbXBvbGluZSkgIlxuIgorSU5MSU5FX0FSTV9GVU5DVElPTihjdGlUcmFt
cG9saW5lKQogU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgogICAgICJzdG1k
YiBzcCEsIHtyMS1yM30iICJcbiIKLSAgICAic3RtZGIgc3AhLCB7cjQtcjgsIGxyfSIgIlxuIgor
ICAgICJzdG1kYiBzcCEsIHtyNC1yNiwgcjgtcjExLCBscn0iICJcbiIKICAgICAic3ViIHNwLCBz
cCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRFI0X09GRlNFVCkgIlxuIgotICAgICJt
b3YgcjQsIHIyIiAiXG4iCi0gICAgIm1vdiByNSwgIzUxMiIgIlxuIgorICAgICJtb3YgcjUsIHIy
IiAiXG4iCisgICAgIm1vdiByNiwgIzUxMiIgIlxuIgogICAgIC8vIHIwIGNvbnRhaW5zIHRoZSBj
b2RlCi0gICAgIm1vdiBsciwgcGMiICJcbiIKLSAgICAibW92IHBjLCByMCIgIlxuIgorICAgICJi
bHggcjAiICJcbiIKICAgICAiYWRkIHNwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNF
UlZFRFI0X09GRlNFVCkgIlxuIgotICAgICJsZG1pYSBzcCEsIHtyNC1yOCwgbHJ9IiAiXG4iCisg
ICAgImxkbWlhIHNwISwge3I0LXI2LCByOC1yMTEsIGxyfSIgIlxuIgogICAgICJhZGQgc3AsIHNw
LCAjMTIiICJcbiIKLSAgICAibW92IHBjLCBsciIgIlxuIgorICAgICJieCBsciIgIlxuIgorIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorSElERV9TWU1CT0wo
Y3RpVHJhbXBvbGluZUVuZCkgIlxuIgorU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lRW5kKSAi
OiIgIlxuIgogKTsKIAogYXNtICgKKyIudGV4dCIgIlxuIgogIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKIEhJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFt
cG9saW5lKSAiXG4iCitJTkxJTkVfQVJNX0ZVTkNUSU9OKGN0aVZNVGhyb3dUcmFtcG9saW5lKQog
U1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKICAgICAibW92IHIw
LCBzcCIgIlxuIgogICAgICJibCAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93KSAiXG4iCiAK
IC8vIEJvdGggaGFzIHRoZSBzYW1lIHJldHVybiBzZXF1ZW5jZQorIi50ZXh0IiAiXG4iCiAiLmds
b2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJP
TChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCitJTkxJTkVfQVJNX0ZVTkNUSU9OKGN0aU9wVGhy
b3dOb3RDYXVnaHQpCiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4i
CiAgICAgImFkZCBzcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURSNF9PRkZT
RVQpICJcbiIKLSAgICAibGRtaWEgc3AhLCB7cjQtcjgsIGxyfSIgIlxuIgorICAgICJsZG1pYSBz
cCEsIHtyNC1yNiwgcjgtcjExLCBscn0iICJcbiIKICAgICAiYWRkIHNwLCBzcCwgIzEyIiAiXG4i
Ci0gICAgIm1vdiBwYywgbHIiICJcbiIKKyAgICAiYnggbHIiICJcbiIKICk7CiAKICNlbGlmIENP
TVBJTEVSKFJWQ1QpICYmIENQVShBUk1fVEhVTUIyKQpAQCAtMTA3OCw4ICsxMDg2LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsKEpJVFN0
YWNrRnJhbWUmIGppdFN0YWNrRnIKICAgICAgICAgIi5hbGlnbiAyIiAiXG4iIFwKICAgICAgICAg
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpXyMjb3ApICJcbiIgXAogICAgICAgICBISURFX1NZ
TUJPTChjdGlfIyNvcCkgIlxuIiAgICAgICAgICAgICBcCi0gICAgICAgICIudGh1bWIiICJcbiIg
XAotICAgICAgICAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGN0aV8jI29wKSAiXG4i
IFwKKyAgICAgICAgSU5MSU5FX0FSTV9GVU5DVElPTihjdGlfIyNvcCkgXAogICAgICAgICBTWU1C
T0xfU1RSSU5HKGN0aV8jI29wKSAiOiIgIlxuIiBcCiAgICAgICAgICJzdHIgbHIsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCkgIl0iICJcbiIg
XAogICAgICAgICAiYmwgIiBTWU1CT0xfU1RSSU5HKEpJVFN0dWJUaHVua2VkXyMjb3ApICJcbiIg
XApAQCAtMTE1NiwxMSArMTE2MywxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCB0
aHJvd0V4Y2VwdGlvbkZyb21PcENhbGwoSklUU3RhY2tGcmFtZSYgaml0U3RhY2tGcgogICAgIH07
IFwKICAgICBhc20gKCBcCiAgICAgICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aV8jI29w
KSAiXG4iIFwKKyAgICAgICAgSU5MSU5FX0FSTV9GVU5DVElPTihjdGlfIyNvcCkgXAogICAgICAg
ICBTWU1CT0xfU1RSSU5HKGN0aV8jI29wKSAiOiIgIlxuIiBcCiAgICAgICAgICJzdHIgbHIsIFtz
cCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCkgIl0i
ICJcbiIgXAogICAgICAgICAiYmwgIiBTWU1CT0xfU1RSSU5HKEpJVFN0dWJUaHVua2VkXyMjb3Ap
ICJcbiIgXAogICAgICAgICAibGRyIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihUSFVO
S19SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAiXG4iIFwKLSAgICAgICAgIm1vdiBwYywgbHIi
ICJcbiIgXAorICAgICAgICAiYnggbHIiICJcbiIgXAogICAgICAgICApOyBcCiAgICAgcnR5cGUg
SklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaAppbmRleCBkMmJjMTVlLi4yMmExZGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0xOTAsOCArMTkwLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSNDsKICAgICAgICAgdm9pZCogcHJlc2VydmVkUjU7
CiAgICAgICAgIHZvaWQqIHByZXNlcnZlZFI2OwotICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSNzsK
ICAgICAgICAgdm9pZCogcHJlc2VydmVkUjg7CisgICAgICAgIHZvaWQqIHByZXNlcnZlZFI5Owor
ICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSMTA7CisgICAgICAgIHZvaWQqIHByZXNlcnZlZFIxMTsK
ICAgICAgICAgdm9pZCogcHJlc2VydmVkTGluazsKIAogICAgICAgICBSZWdpc3RlckZpbGUqIHJl
Z2lzdGVyRmlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRl
cmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApp
bmRleCAwNWQxY2U1Li42YjdkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0lu
dGVyZmFjZUpJVC5oCkBAIC05NCw3ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBYODZSZWdpc3RlcnM6OnhtbTE7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IFg4NlJlZ2lzdGVyczo6
eG1tMjsKICAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QzID0gWDg2UmVn
aXN0ZXJzOjp4bW0zOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisjZWxpZiBDUFUoQVJNKQogICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gQVJNUmVn
aXN0ZXJzOjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwpAQCAtMTA3LDM1
ICsxMDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDIgPSBBUk1SZWdpc3RlcnM6OnIyOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCByZWdUMyA9IEFSTVJlZ2lzdGVyczo6cjQ7Ci0gICAgICAgIAorCisgICAgICAgIC8v
IFVwZGF0ZSBjdGlUcmFtcG9saW5lIGluIEpJVFN0dWJzLmNwcCBpZiB0aGVzZSB2YWx1ZXMgYXJl
IGNoYW5nZWQhCiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lz
dGVyID0gQVJNUmVnaXN0ZXJzOjpyNTsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
dGltZW91dENoZWNrUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OwotICAgICAgICAKLSAgICAg
ICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpkMDsK
LSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gQVJNUmVnaXN0ZXJz
OjpkMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QyID0gQVJNUmVn
aXN0ZXJzOjpkMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QzID0g
QVJNUmVnaXN0ZXJzOjpkMzsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6
OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3Rl
ciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZp
cnN0QXJndW1lbnRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIAotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IEFSTVJlZ2lz
dGVyczo6cjU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lz
dGVyID0gQVJNUmVnaXN0ZXJzOjpyNDsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmVnVDEgPSBBUk1SZWdpc3RlcnM6OnIxOwotICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCByZWdUMiA9IEFSTVJlZ2lzdGVyczo6cjI7Ci0gICAgICAgIC8vIENhbGxl
ZSBwcmVzZXJ2ZWQKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDMgPSBBUk1S
ZWdpc3RlcnM6OnI3OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmVnUzAgPSBBUk1SZWdpc3RlcnM6OlMwOwotICAgICAgICAvLyBDYWxsZWUgcHJlc2VydmVkCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1MxID0gQVJNUmVnaXN0ZXJzOjpTMTsK
LSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1N0YWNrUHRyID0g
QVJNUmVnaXN0ZXJzOjpzcDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnTGlu
ayA9IEFSTVJlZ2lzdGVyczo6bHI7Ci0gICAgICAgIAorCiAgICAgICAgIHN0YXRpYyBjb25zdCBG
UFJlZ2lzdGVySUQgZnBSZWdUMCA9IEFSTVJlZ2lzdGVyczo6ZDA7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IEFSTVJlZ2lzdGVyczo6ZDE7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IEFSTVJlZ2lzdGVyczo6ZDI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDA5ZTVhNzcuLjNmODdiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMDMgIFpvbHRh
biBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKworICAgICAgICBQb3J0IERGRyBKSVQg
dG8gdHJhZGl0aW9uYWwgQVJNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MDE5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEVuYWJsaW5nIERGRyBKSVQgb24gQVJNIHN5c3RlbXMgd2l0aCAzMiBiaXQgaW5z
dHJ1Y3Rpb24gc2V0LgorCisgICAgICAgICogd3RmL0lubGluZUFTTS5oOgorICAgICAgICAqIHd0
Zi9QbGF0Zm9ybS5oOgorCiAyMDEyLTA2LTI5ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTU3Mi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oIGIvU291cmNlL1dURi93dGYvSW5saW5lQVNN
LmgKaW5kZXggMTBjZDFjYy4uZmExMDRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW5s
aW5lQVNNLmgKKysrIGIvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgKQEAgLTgzLDQgKzgzLDEw
IEBACiAjZGVmaW5lIExPQ0FMX0xBQkVMX1NUUklORyhuYW1lKSAiLkwiICNuYW1lCiAjZW5kaWYK
IAorI2lmIENQVShBUk1fVFJBRElUSU9OQUwpICYmIChkZWZpbmVkKHRodW1iMikgfHwgZGVmaW5l
ZChfX3RodW1iMl9fKSB8fCBkZWZpbmVkKF9fdGh1bWIpIHx8IGRlZmluZWQoX190aHVtYl9fKSkK
KyNkZWZpbmUgSU5MSU5FX0FSTV9GVU5DVElPTihuYW1lKSAiLnRodW1iIiAiXG4iICIudGh1bWJf
ZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0obmFtZSkgIlxuIgorI2Vsc2UKKyNkZWZpbmUgSU5MSU5F
X0FSTV9GVU5DVElPTihuYW1lKQorI2VuZGlmCisKICNlbmRpZiAvLyBJbmxpbmVBU01faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKaW5kZXggZDhiYTk0Ny4uMzY0ODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MDYsNiArOTA2
LDEwIEBACiAjaWYgQ1BVKEFSTV9USFVNQjIpICYmIFBMQVRGT1JNKElPUykKICNkZWZpbmUgRU5B
QkxFX0RGR19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNLiAqLwor
I2lmIENQVShBUk1fVFJBRElUSU9OQUwpCisjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKKyNlbmRp
ZgogI2VuZGlmCiAKIC8qIFByb2ZpbGluZyBvZiB0eXBlcyBhbmQgdmFsdWVzIHVzZWQgYnkgSklU
IGNvZGUuIERGR19KSVQgZGVwZW5kcyBvbiBpdCwgYnV0IHlvdQotLSAKMS43LjIuNQoK
</data>
<flag name="review"
          id="158867"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150746</attachid>
            <date>2012-07-04 02:39:27 -0700</date>
            <delta_ts>2012-07-04 02:39:27 -0700</delta_ts>
            <desc>latest patch</desc>
            <filename>0001-dfg-port.patch</filename>
            <type>text/plain</type>
            <size>86176</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBiNjVlNmFkYmY5OTE5ZjdlNDJiOTY5YjM5MzllZmUzOWVjZTA5NjVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAd2Via2l0Lm9yZz4K
RGF0ZTogV2VkLCA0IEp1bCAyMDEyIDAyOjM3OjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZGZn
LWppdAoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8ICAxNTUgKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1B
c3NlbWJsZXIuY3BwICAgfCAgIDk1ICsrKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5oICAgICB8ICAyOTcgKysrKysrKysrLS0tLQogLi4uL2Fzc2VtYmxl
ci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggICAgfCAgICA0ICstCiAuLi4vSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcCB8ICAgMTQgKy0KIC4u
Li9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaCAgIHwgIDQ0NSAr
KysrKysrKysrKysrLS0tLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRB
c3NlbWJsZXIuaCAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0NhbGxIZWxwZXJzLmggICAgICAgIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGUFJJbmZvLmggICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dQUkluZm8uaCAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgICAgICAgIHwgICA2NyArKysKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCAgICAgIHwgICAgMiArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgICAgICAgICAgICAgfCAgIDMy
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggICAgICAgICAgICAgICB8
ICAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCAgICAg
ICAgIHwgICAzMiArLS0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxMiArCiBTb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDYgKwogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIDE5IGZpbGVzIGNoYW5nZWQsIDg0OSBpbnNlcnRp
b25zKCspLCAzMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmFk
ODc0ZC4uNjQ3MDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU4IEBA
CisyMDEyLTA3LTAzICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUG9ydCBERkcgSklUIHRvIHRyYWRpdGlvbmFsIEFSTQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxOTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNvbnRhaW5zIHRoZSBtYWNy
byBhc3NlbWJsZXIgcGFydCBvZiB0aGUKKyAgICAgICAgREZHIEpJVCBzdXBwb3J0IG9uIEFSTSBz
eXN0ZW1zIHdpdGggZml4ZWQgMzIgYml0IGluc3RydWN0aW9uCisgICAgICAgIHdpZHRoLiBBIGxh
cmdlIGFtb3VudCBvZiBvbGQgY29kZSB3YXMgcmVmYWN0b3JlZCwgYW5kIHRoZSBBUk12NAorICAg
ICAgICBvciBsb3dlciBzdXBwb3J0IGlzIHJlbW92ZWQgZnJvbSB0aGUgbWFjcm8gYXNzZW1ibGVy
LgorCisgICAgICAgIFN1bnNwaWRlciBpcyBpbXByb3ZlZCBieSA4JS4KKworICAgICAgICAqIGFz
c2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRh
dGFUcmFuc2ZlcjMyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFu
c2ZlcjMyKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZGF0
YVRyYW5zZmVyMTYpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5z
ZmVyMTYpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlckZsb2F0KToK
KyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlckZsb2F0KToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpleGVjdXRhYmxlQ29weSk6CisgICAgICAgICogYXNz
ZW1ibGVyL0FSTUFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OkFSTUFz
c2VtYmxlcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW1pdEluc3QpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZtb3ZfZjY0X3IpOgorICAgICAgICAoQVJNQXNzZW1ibGVy
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2YWJzX2Y2NF9yKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjp2bmVnX2Y2NF9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVy
OjpsZHJfaW1tKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsZHJfdW5faW1tKToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJfdSk6CisgICAgICAgIChKU0M6OkFSTUFzc2Vt
Ymxlcjo6ZHRyX3VyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJfZCk6CisgICAg
ICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZHRyX2RyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkdHJoX3UpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0cmhfdXIpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0cmhfZCk6CisgICAgICAgIChKU0M6OkFSTUFzc2Vt
Ymxlcjo6ZHRyaF9kcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZmR0cl91KToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpmZHRyX2QpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnB1c2hfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cG9wX3IpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnBva2Vfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2Vt
Ymxlcjo6cGVla19yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3ZmcDY0X3Ip
OgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZtb3ZfYXJtNjRfcik6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6dm1vdl92ZnAzMl9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjp2bW92X2FybTMyX3IpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjdnRfdTMy
X2Y2NF9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2Y3Z0X2Y2NF9mMzJfcik6Cisg
ICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dmN2dF9mMzJfZjY0X3IpOgorICAgICAgICAoSlND
OjpBUk1Bc3NlbWJsZXI6OmNsel9yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpia3B0
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpieCk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6Ymx4KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hw
b2ludCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlND
OjpBUk1Bc3NlbWJsZXI6OmdldExkckltbUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bWF4
SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZik6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6Uk0pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OlJT
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpSRCk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6Uk4pOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29u
c3RhbnRQb29sLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBv
b2w6OmVuc3VyZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTS5jcHA6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjps
b2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZDMyKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxzaGlmdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om11bDMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06Om5lZzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OnJzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnVyc2hp
ZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp4b3IzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpsb2FkOFNpZ25lZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
Ojpsb2FkMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDE2U2lnbmVk
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBh
dGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN0b3JlOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZTE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6
bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpqdW1wKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaEFkZDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om11bGwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
OjpicmFuY2hNdWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpuZWFyQ2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb21wYXJlMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6dGVzdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNh
bGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZEZsb2F0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTo6c3RvcmVGbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpzdG9yZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpt
b3ZlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZERvdWJsZSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpkaXZEb3VibGUpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6c3ViRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06Om11bERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
OjphYnNEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bmVnYXRlRG91
YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbnZlcnRJbnQzMlRvRG91
YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbnZlcnRGbG9hdFRvRG91
YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbnZlcnREb3VibGVUb0Zs
b2F0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hUcnVu
Y2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRy
dW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0
cnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmludmVydCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpyZXBsYWNl
V2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjYWxsMzIpOgor
ICAgICAgICAqIGFzc2VtYmxlci9TSDRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6U0g0QXNz
ZW1ibGVyOjpsYWJlbCk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6
QXNzZW1ibHlIZWxwZXJzOjp1bmJveERvdWJsZSk6CisgICAgICAgICogZGZnL0RGR0NDYWxsSGVs
cGVycy5oOgorICAgICAgICAoQ0NhbGxIZWxwZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2Fs
bEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgor
ICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5oOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoK
KyAgICAgICAgKEpJVFN0YWNrRnJhbWUpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5o
OgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorCiAyMDEyLTA3LTAyICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIE9TUiBleGl0IHZhbHVlIHJlY292ZXJp
ZXMgc2hvdWxkIGJlIGNvbXB1dGVkIGxhemlseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCmluZGV4IDc0ODA5Y2EuLjM2MmZjYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKQEAg
LTI2Miw4NiArMjYyLDExNyBAQCBBUk1Xb3JkIEFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29tcGxleElt
bShBUk1Xb3JkIGltbSwgaW50IGRlc3QpCiAKIC8vIE1lbW9yeSBsb2FkL3N0b3JlIGhlbHBlcnMK
IAotdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBSZWdpc3Rl
cklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCwgYm9vbCBieXRlcykK
K3ZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIzMihEYXRhVHJhbnNmZXJUeXBlQSB0cmFu
c2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zm
c2V0KQogewotICAgIEFSTVdvcmQgdHJhbnNmZXJGbGFnID0gYnl0ZXMgPyBEVF9CWVRFIDogMDsK
ICAgICBpZiAob2Zmc2V0ID49IDApIHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikKLSAg
ICAgICAgICAgIGR0cl91KGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgfCB0cmFuc2ZlckZs
YWcpOworICAgICAgICAgICAgZHRyX3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNl
dCk7CiAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmZmKSB7CiAgICAgICAgICAgICBh
ZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKG9mZnNldCA+PiAxMikgfCAo
MTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyX3UoaXNMb2FkLCBzcmNEc3QsIEFSTVJlZ2lzdGVy
czo6UzAsIChvZmZzZXQgJiAweGZmZikgfCB0cmFuc2ZlckZsYWcpOworICAgICAgICAgICAgZHRy
X3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgJiAweGZm
ZikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyX3VyKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBB
Uk1SZWdpc3RlcnM6OlMwIHwgdHJhbnNmZXJGbGFnKTsKKyAgICAgICAgICAgIGR0cl91cih0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0
cl9kKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0IHwgdHJhbnNmZXJGbGFnKTsKKyAgICAg
ICAgICAgIGR0cl9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0KTsKICAgICAg
ICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZmZmZmKSB7CiAgICAgICAgICAgICBzdWJfcihBUk1S
ZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJfSU1NIHwgKC1vZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgp
KTsKLSAgICAgICAgICAgIGR0cl9kKGlzTG9hZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAo
LW9mZnNldCAmIDB4ZmZmKSB8IHRyYW5zZmVyRmxhZyk7CisgICAgICAgICAgICBkdHJfZCh0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVy
czo6UzApOwotICAgICAgICAgICAgZHRyX3VyKGlzTG9hZCwgc3JjRHN0LCBiYXNlLCBBUk1SZWdp
c3RlcnM6OlMwIHwgdHJhbnNmZXJGbGFnKTsKKyAgICAgICAgICAgIGR0cl91cih0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLXZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBS
ZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUsIGludDMyX3Qgb2Zmc2V0LCBib29sIGJ5dGVzKQordm9pZCBBUk1Bc3NlbWJsZXI6OmJh
c2VJbmRleFRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBSZWdpc3Rl
cklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUs
IGludDMyX3Qgb2Zmc2V0KQogewotICAgIEFSTVdvcmQgb3AyOwotICAgIEFSTVdvcmQgdHJhbnNm
ZXJGbGFnID0gYnl0ZXMgPyBEVF9CWVRFIDogMDsKLQogICAgIEFTU0VSVChzY2FsZSA+PSAwICYm
IHNjYWxlIDw9IDMpOwotICAgIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOworICAgIEFSTVdvcmQg
b3AyID0gbHNsKGluZGV4LCBzY2FsZSk7CiAKLSAgICBpZiAob2Zmc2V0ID49IDAgJiYgb2Zmc2V0
IDw9IDB4ZmZmKSB7Ci0gICAgICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7
Ci0gICAgICAgIGR0cl91KGlzTG9hZCwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQg
fCB0cmFuc2ZlckZsYWcpOworICAgIGlmICghb2Zmc2V0KSB7CisgICAgICAgIGR0cl91cih0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb3AyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBpZiAob2Zmc2V0IDw9IDAgJiYgb2Zmc2V0ID49IC0weGZmZikgewotICAgICAgICBhZGRfcihB
Uk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBvcDIpOwotICAgICAgICBkdHJfZChpc0xvYWQsIHNyY0Rz
dCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikgfCB0cmFuc2ZlckZsYWcpOwor
CisgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgb3AyKTsKKyAgICBkYXRhVHJhbnNm
ZXIzMih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKK30K
Kwordm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjE2KERhdGFUcmFuc2ZlclR5cGVCIHRy
YW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBv
ZmZzZXQpCit7CisgICAgaWYgKG9mZnNldCA+PSAwKSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0g
MHhmZikKKyAgICAgICAgICAgIGR0cmhfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgZ2V0
T3AySGFsZihvZmZzZXQpKTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZmZikgewor
ICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZz
ZXQgPj4gOCkgfCAoMTIgPDwgOCkpOworICAgICAgICAgICAgZHRyaF91KHRyYW5zZmVyVHlwZSwg
c3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBnZXRPcDJIYWxmKG9mZnNldCAmIDB4ZmYpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdpc3RlcnM6
OlMwKTsKKyAgICAgICAgICAgIGR0cmhfdXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFS
TVJlZ2lzdGVyczo6UzApOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG9m
ZnNldCA+PSAtMHhmZikKKyAgICAgICAgICAgIGR0cmhfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
YmFzZSwgZ2V0T3AySGFsZigtb2Zmc2V0KSk7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldCA+PSAt
MHhmZmZmKSB7CisgICAgICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPUDJf
SU1NIHwgKC1vZmZzZXQgPj4gOCkgfCAoMTIgPDwgOCkpOworICAgICAgICAgICAgZHRyaF9kKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBnZXRPcDJIYWxmKC1vZmZzZXQg
JiAweGZmKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwg
QVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgICAgICBkdHJoX3VyKHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIgdHJh
bnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KQoreworICAgIGlmICghc2NhbGUgJiYg
IW9mZnNldCkgeworICAgICAgICBkdHJoX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBp
bmRleCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBsZHJfdW5faW1tKEFSTVJlZ2lz
dGVyczo6UzAsIG9mZnNldCk7Ci0gICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0
ZXJzOjpTMCwgb3AyKTsKLSAgICBkdHJfdXIoaXNMb2FkLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lz
dGVyczo6UzAgfCB0cmFuc2ZlckZsYWcpOworICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGJh
c2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBkYXRhVHJhbnNmZXIxNih0cmFuc2ZlclR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIAotdm9pZCBBUk1Bc3NlbWJs
ZXI6OmRvdWJsZVRyYW5zZmVyKGJvb2wgaXNMb2FkLCBGUFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdp
c3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQordm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFu
c2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0ZXJJ
RCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCiB7CiAgICAgLy8gVkZQ
IGNhbm5vdCBkaXJlY3RseSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMgbm90IGZvdXItYnl0ZS1hbGln
bmVkCiAgICAgaWYgKCEob2Zmc2V0ICYgMHgzKSkgewogICAgICAgICBpZiAob2Zmc2V0IDw9IDB4
M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBmZHRyX3UoaXNMb2FkLCBzcmNEc3Qs
IGJhc2UsIG9mZnNldCA+PiAyKTsKKyAgICAgICAgICAgIGZkdHJfdSh0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewogICAgICAg
ICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQgPj4g
MTApIHwgKDExIDw8IDgpKTsKLSAgICAgICAgICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOworICAgICAgICAgICAgZmR0cl91
KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYg
MHhmZik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0g
LW9mZnNldDsKIAogICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7
Ci0gICAgICAgICAgICBmZHRyX2QoaXNMb2FkLCBzcmNEc3QsIGJhc2UsIG9mZnNldCA+PiAyKTsK
KyAgICAgICAgICAgIGZkdHJfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+
IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChvZmZzZXQg
PD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAgc3ViX3IoQVJNUmVnaXN0
ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKLSAg
ICAgICAgICAgIGZkdHJfZChpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNl
dCA+PiAyKSAmIDB4ZmYpOworICAgICAgICAgICAgZmR0cl9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKICAgICB9CiAKLSAg
ICBsZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIG9mZnNldCk7CisgICAgbW92ZUltbShvZmZz
ZXQsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJl
Z2lzdGVyczo6UzAsIGJhc2UpOwotICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgMCk7CisgICAgZmR0cl91KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3Rl
cnM6OlMwLCAwKTsKK30KKwordm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyRmxv
YXQoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHRyYW5zZmVyVHlwZSwgRlBSZWdpc3RlcklEIHNyY0Rz
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qg
b2Zmc2V0KQoreworICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwg
c2NhbGUpKTsKKyAgICBkYXRhVHJhbnNmZXJGbG9hdCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIAogUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5
SGFuZGxlPiBBUk1Bc3NlbWJsZXI6OmV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKQEAgLTM2
MSwxMCArMzkyLDEwIEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gQVJNQXNz
ZW1ibGVyOjpleGVjdXRhYmxlQ29weShKU0dsb2JhbERhdGEmIGdsCiAgICAgICAgIEFSTVdvcmQq
IGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGxkckFkZHIpOwogICAgICAgICBpZiAoKmFkZHIgIT0g
SW52YWxpZEJyYW5jaFRhcmdldCkgewogICAgICAgICAgICAgaWYgKCEoaXRlci0+bV9vZmZzZXQg
JiAxKSkgewotICAgICAgICAgICAgICAgIGludCBkaWZmID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8
QVJNV29yZCo+KGRhdGEgKyAqYWRkcikgLSAobGRyQWRkciArIERlZmF1bHRQcmVmZXRjaGluZyk7
CisgICAgICAgICAgICAgICAgaW50cHRyX3QgZGlmZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPEFSTVdvcmQqPihkYXRhICsgKmFkZHIpIC0gKGxkckFkZHIgKyBEZWZhdWx0UHJlZmV0Y2hp
bmcpOwogCi0gICAgICAgICAgICAgICAgaWYgKChkaWZmIDw9IEJPRkZTRVRfTUFYICYmIGRpZmYg
Pj0gQk9GRlNFVF9NSU4pKSB7Ci0gICAgICAgICAgICAgICAgICAgICpsZHJBZGRyID0gQiB8IGdl
dENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmYgJiBCUkFOQ0hfTUFTSyk7CisgICAg
ICAgICAgICAgICAgaWYgKChkaWZmZXJlbmNlIDw9IEJPRkZTRVRfTUFYICYmIGRpZmZlcmVuY2Ug
Pj0gQk9GRlNFVF9NSU4pKSB7CisgICAgICAgICAgICAgICAgICAgICpsZHJBZGRyID0gQiB8IGdl
dENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmZlcmVuY2UgJiBCUkFOQ0hfTUFTSyk7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxl
ci5oCmluZGV4IDE2ZGMwY2YuLjI1MWQ3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaApAQCAtNDEsMTYgKzQxLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcjAgPSAwLAogICAgICAgICAgICAgcjEsCiAgICAgICAgICAgICBy
MiwKLSAgICAgICAgICAgIHIzLCBTMCA9IHIzLAorICAgICAgICAgICAgcjMsIFMwID0gcjMsIC8q
IFNhbWUgYXMgdGh1bWIgYXNzZW1ibGVyLiAqLwogICAgICAgICAgICAgcjQsCiAgICAgICAgICAg
ICByNSwKICAgICAgICAgICAgIHI2LAogICAgICAgICAgICAgcjcsCi0gICAgICAgICAgICByOCwg
UzEgPSByOCwKKyAgICAgICAgICAgIHI4LAogICAgICAgICAgICAgcjksCiAgICAgICAgICAgICBy
MTAsCiAgICAgICAgICAgICByMTEsCi0gICAgICAgICAgICByMTIsCisgICAgICAgICAgICByMTIs
IFMxID0gcjEyLAogICAgICAgICAgICAgcjEzLCBzcCA9IHIxMywKICAgICAgICAgICAgIHIxNCwg
bHIgPSByMTQsCiAgICAgICAgICAgICByMTUsIHBjID0gcjE1CkBAIC02MCwxMSArNjAsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBkMCwKICAgICAgICAgICAgIGQxLAogICAgICAg
ICAgICAgZDIsCi0gICAgICAgICAgICBkMywgU0QwID0gZDMsCisgICAgICAgICAgICBkMywKICAg
ICAgICAgICAgIGQ0LAogICAgICAgICAgICAgZDUsCiAgICAgICAgICAgICBkNiwKLSAgICAgICAg
ICAgIGQ3LAorICAgICAgICAgICAgZDcsIFNEMCA9IGQ3LCAvKiBTYW1lIGFzIHRodW1iIGFzc2Vt
Ymxlci4gKi8KICAgICAgICAgICAgIGQ4LAogICAgICAgICAgICAgZDksCiAgICAgICAgICAgICBk
MTAsCkBAIC0xMDAsNyArMTAwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVm
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2w8MjA0OCwgNCwgNCwgQVJNQXNzZW1ibGVy
PiBBUk1CdWZmZXI7CiAgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFzc2VtYmxlckxh
YmVsLCA2ND4gSnVtcHM7CiAKLSAgICAgICAgQVJNQXNzZW1ibGVyKCkgeyB9CisgICAgICAgIEFS
TUFzc2VtYmxlcigpCisgICAgICAgICAgICA6IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
KDEpCisgICAgICAgIHsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIEFSTSBjb25kaXRpb25hbCBj
b25zdGFudHMKICAgICAgICAgdHlwZWRlZiBlbnVtIHsKQEAgLTE0MSwzMyArMTQ0LDMzIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTVZOID0gKDB4ZiA8PCAyMSksCiAgICAgICAgICAg
ICBNVUwgPSAweDAwMDAwMDkwLAogICAgICAgICAgICAgTVVMTCA9IDB4MDBjMDAwOTAsCisgICAg
ICAgICAgICBWTU9WX0Y2NCA9IDB4MGViMDBiNDAsCiAgICAgICAgICAgICBWQUREX0Y2NCA9IDB4
MGUzMDBiMDAsCiAgICAgICAgICAgICBWRElWX0Y2NCA9IDB4MGU4MDBiMDAsCiAgICAgICAgICAg
ICBWU1VCX0Y2NCA9IDB4MGUzMDBiNDAsCiAgICAgICAgICAgICBWTVVMX0Y2NCA9IDB4MGUyMDBi
MDAsCiAgICAgICAgICAgICBWQ01QX0Y2NCA9IDB4MGViNDBiNDAsCiAgICAgICAgICAgICBWU1FS
VF9GNjQgPSAweDBlYjEwYmMwLAotICAgICAgICAgICAgRFRSID0gMHgwNTAwMDAwMCwKLSAgICAg
ICAgICAgIExEUkggPSAweDAwMTAwMDkwLAotICAgICAgICAgICAgU1RSSCA9IDB4MDAwMDAwOTAs
CisgICAgICAgICAgICBWQUJTX0Y2NCA9IDB4MGViMDBiYzAsCisgICAgICAgICAgICBWTkVHX0Y2
NCA9IDB4MGViMTBiNDAsCiAgICAgICAgICAgICBTVE1EQiA9IDB4MDkyMDAwMDAsCiAgICAgICAg
ICAgICBMRE1JQSA9IDB4MDhiMDAwMDAsCi0gICAgICAgICAgICBGRFRSID0gMHgwZDAwMGIwMCwK
ICAgICAgICAgICAgIEIgPSAweDBhMDAwMDAwLAogICAgICAgICAgICAgQkwgPSAweDBiMDAwMDAw
LAotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNFRf
XykKICAgICAgICAgICAgIEJYID0gMHgwMTJmZmYxMCwKLSNlbmRpZgotICAgICAgICAgICAgVk1P
Vl9WRlAgPSAweDBlMDAwYTEwLAotICAgICAgICAgICAgVk1PVl9BUk0gPSAweDBlMTAwYTEwLAor
ICAgICAgICAgICAgVk1PVl9WRlA2NCA9IDB4MGM0MDBhMTAsCisgICAgICAgICAgICBWTU9WX0FS
TTY0ID0gMHgwYzUwMGExMCwKKyAgICAgICAgICAgIFZNT1ZfVkZQMzIgPSAweDBlMDAwYTEwLAor
ICAgICAgICAgICAgVk1PVl9BUk0zMiA9IDB4MGUxMDBhMTAsCiAgICAgICAgICAgICBWQ1ZUX0Y2
NF9TMzIgPSAweDBlYjgwYmMwLAogICAgICAgICAgICAgVkNWVF9TMzJfRjY0ID0gMHgwZWJkMGI0
MCwKKyAgICAgICAgICAgIFZDVlRfVTMyX0Y2NCA9IDB4MGViYzBiNDAsCisgICAgICAgICAgICBW
Q1ZUX0YzMl9GNjQgPSAweDBlYjcwYmMwLAorICAgICAgICAgICAgVkNWVF9GNjRfRjMyID0gMHgw
ZWI3MGFjMCwKICAgICAgICAgICAgIFZNUlNfQVBTUiA9IDB4MGVmMWZhMTAsCi0jaWYgV1RGX0FS
TV9BUkNIX0FUX0xFQVNUKDUpCiAgICAgICAgICAgICBDTFogPSAweDAxNmYwZjEwLAogICAgICAg
ICAgICAgQktQVCA9IDB4ZTEyMDAwNzAsCiAgICAgICAgICAgICBCTFggPSAweDAxMmZmZjMwLAot
I2VuZGlmCiAjaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCiAgICAgICAgICAgICBNT1ZXID0g
MHgwMzAwMDAwMCwKICAgICAgICAgICAgIE1PVlQgPSAweDAzNDAwMDAwLApAQCAtMTc3LDE3ICsx
ODAsMzcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZW51bSB7CiAgICAgICAgICAgICBP
UDJfSU1NID0gKDEgPDwgMjUpLAotICAgICAgICAgICAgT1AyX0lNTWggPSAoMSA8PCAyMiksCisg
ICAgICAgICAgICBPUDJfSU1NX0hBTEYgPSAoMSA8PCAyMiksCiAgICAgICAgICAgICBPUDJfSU5W
X0lNTSA9ICgxIDw8IDI2KSwKICAgICAgICAgICAgIFNFVF9DQyA9ICgxIDw8IDIwKSwKICAgICAg
ICAgICAgIE9QMl9PRlNSRUcgPSAoMSA8PCAyNSksCisgICAgICAgICAgICAvLyBEYXRhIHRyYW5z
ZmVyIGZsYWdzLgogICAgICAgICAgICAgRFRfVVAgPSAoMSA8PCAyMyksCi0gICAgICAgICAgICBE
VF9CWVRFID0gKDEgPDwgMjIpLAogICAgICAgICAgICAgRFRfV0IgPSAoMSA8PCAyMSksCi0gICAg
ICAgICAgICAvLyBUaGlzIGZsYWcgaXMgaW5sY3VkZWQgaW4gTERSIGFuZCBTVFIKICAgICAgICAg
ICAgIERUX1BSRSA9ICgxIDw8IDI0KSwKLSAgICAgICAgICAgIEhEVF9VSCA9ICgxIDw8IDUpLAog
ICAgICAgICAgICAgRFRfTE9BRCA9ICgxIDw8IDIwKSwKKyAgICAgICAgICAgIERUX0JZVEUgPSAo
MSA8PCAyMiksCisgICAgICAgIH07CisKKyAgICAgICAgZW51bSBEYXRhVHJhbnNmZXJUeXBlQSB7
CisgICAgICAgICAgICBMb2FkVWludDMyID0gMHgwNTAwMDAwMCB8IERUX0xPQUQsCisgICAgICAg
ICAgICBMb2FkVWludDggPSAweDA1NDAwMDAwIHwgRFRfTE9BRCwKKyAgICAgICAgICAgIFN0b3Jl
VWludDMyID0gMHgwNTAwMDAwMCwKKyAgICAgICAgICAgIFN0b3JlVWludDggPSAweDA1NDAwMDAw
LAorICAgICAgICB9OworCisgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUIgeworICAgICAg
ICAgICAgTG9hZFVpbnQxNiA9IDB4MDEwMDAwYjAgfCBEVF9MT0FELAorICAgICAgICAgICAgTG9h
ZEludDE2ID0gMHgwMTAwMDBmMCB8IERUX0xPQUQsCisgICAgICAgICAgICBMb2FkSW50OCA9IDB4
MDEwMDAwZDAgfCBEVF9MT0FELAorICAgICAgICAgICAgU3RvcmVVaW50MTYgPSAweDAxMDAwMGIw
LAorICAgICAgICB9OworCisgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHsKKyAg
ICAgICAgICAgIExvYWRGbG9hdCA9IDB4MGQwMDBhMDAgfCBEVF9MT0FELAorICAgICAgICAgICAg
TG9hZERvdWJsZSA9IDB4MGQwMDBiMDAgfCBEVF9MT0FELAorICAgICAgICAgICAgU3RvcmVGbG9h
dCA9IDB4MGQwMDBhMDAsCisgICAgICAgICAgICBTdG9yZURvdWJsZSA9IDB4MGQwMDBiMDAsCiAg
ICAgICAgIH07CiAKICAgICAgICAgLy8gTWFza3Mgb2YgQVJNIGluc3RydWN0aW9ucwpAQCAtMjE4
LDcgKzI0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdEluc3QoQVJN
V29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoKChvcDIgJiB+T1AyX0lNTSkgPD0gMHhmZmYpIHx8ICgoKG9wMiAmIH5PUDJf
SU1NaCkgPD0gMHhmZmYpKSk7CisgICAgICAgICAgICBBU1NFUlQoKChvcDIgJiB+T1AyX0lNTSkg
PD0gMHhmZmYpIHx8ICgoKG9wMiAmIH5PUDJfSU1NX0hBTEYpIDw9IDB4ZmZmKSkpOwogICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50KG9wIHwgUk4ocm4pIHwgUkQocmQpIHwgb3AyKTsKICAgICAg
ICAgfQogCkBAIC00MDcsNiArNDMwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IE1VTEwgfCBSTihyZGhp
KSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0ocm0pKTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdm1vdl9mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdv
cmQ+KGNjKSB8IFZNT1ZfRjY0LCBkZCwgMCwgZG0pOworICAgICAgICB9CisKICAgICAgICAgdm9p
ZCB2YWRkX2Y2NF9yKGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2Fz
dDxBUk1Xb3JkPihjYykgfCBWQUREX0Y2NCwgZGQsIGRuLCBkbSk7CkBAIC00MzcsMTAwICs0NjUs
MTI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbklu
c3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVlNRUlRfRjY0LCBkZCwgMCwgZG0pOwogICAg
ICAgICB9CiAKKyAgICAgICAgdm9pZCB2YWJzX2Y2NF9yKGludCBkZCwgaW50IGRtLCBDb25kaXRp
b24gY2MgPSBBTCkKKyAgICAgICAgeworICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbklu
c3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkFCU19GNjQsIGRkLCAwLCBkbSk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIHZuZWdfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5z
dChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTkVHX0Y2NCwgZGQsIDAsIGRtKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgbGRyX2ltbShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0aENv
bnN0YW50SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IERUUiB8IERUX0xPQUQgfCBEVF9V
UCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBpbW0sIHRydWUpOworICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNj
KSB8IExvYWRVaW50MzIgfCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBp
bW0sIHRydWUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBsZHJfdW5faW1tKGludCByZCwg
QVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwg
RFRSIHwgRFRfTE9BRCB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGlt
bSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQoc3RhdGljX2Nh
c3Q8QVJNV29yZD4oY2MpIHwgTG9hZFVpbnQzMiB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJzOjpw
YykgfCBSRChyZCksIGltbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl91KGJvb2wg
aXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIGR0cl91KERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJk
LCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgRFRSIHwgKGlzTG9h
ZCA/IERUX0xPQUQgOiAwKSB8IERUX1VQLCByZCwgcmIsIG9wMik7CisgICAgICAgICAgICBlbWl0
SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCB0cmFuc2ZlclR5cGUgfCBEVF9VUCwgcmQs
IHJiLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJfdXIoYm9vbCBpc0xvYWQs
IGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lk
IGR0cl91cihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBp
bnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5z
dChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBEVFIgfCAoaXNMb2FkID8gRFRfTE9BRCA6IDAp
IHwgRFRfVVAgfCBPUDJfT0ZTUkVHLCByZCwgcmIsIHJtKTsKKyAgICAgICAgICAgIGVtaXRJbnN0
KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHRyYW5zZmVyVHlwZSB8IERUX1VQIHwgT1AyX09G
U1JFRywgcmQsIHJiLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9kKGJvb2wg
aXNMb2FkLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIGR0cl9kKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJk
LCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgRFRSIHwgKGlzTG9h
ZCA/IERUX0xPQUQgOiAwKSwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAgZW1pdEluc3Qoc3Rh
dGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHJhbnNmZXJUeXBlLCByZCwgcmIsIG9wMik7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9kcihib29sIGlzTG9hZCwgaW50IHJkLCBpbnQgcmIs
IGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyX2RyKERhdGFUcmFu
c2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFS
TVdvcmQ+KGNjKSB8IERUUiB8IChpc0xvYWQgPyBEVF9MT0FEIDogMCkgfCBPUDJfT0ZTUkVHLCBy
ZCwgcmIsIHJtKTsKKyAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNj
KSB8IHRyYW5zZmVyVHlwZSB8IE9QMl9PRlNSRUcsIHJkLCByYiwgcm0pOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBsZHJoX3IoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNj
ID0gQUwpCisgICAgICAgIHZvaWQgZHRyaF91KERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlw
ZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTERS
SCB8IEhEVF9VSCB8IERUX1VQIHwgRFRfUFJFLCByZCwgcm4sIHJtKTsKKyAgICAgICAgICAgIGVt
aXRJbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHRyYW5zZmVyVHlwZSB8IERUX1VQLCBy
ZCwgcmIsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGxkcmhfZChpbnQgcmQsIGlu
dCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0cmhf
dXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBybiwgaW50IHJt
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Qoc3Rh
dGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgTERSSCB8IEhEVF9VSCB8IERUX1BSRSwgcmQsIHJiLCBv
cDIpOworICAgICAgICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHJh
bnNmZXJUeXBlIHwgRFRfVVAsIHJkLCBybiwgcm0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBsZHJoX3UoaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCBkdHJoX2QoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBMRFJIIHwgSERU
X1VIIHwgRFRfVVAgfCBEVF9QUkUsIHJkLCByYiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0
KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IHRyYW5zZmVyVHlwZSwgcmQsIHJiLCBvcDIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzdHJoX3IoaW50IHJuLCBpbnQgcm0sIGludCByZCwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyaF9kcihEYXRhVHJhbnNmZXJUeXBl
QiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFM
KQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihj
YykgfCBTVFJIIHwgSERUX1VIIHwgRFRfVVAgfCBEVF9QUkUsIHJkLCBybiwgcm0pOworICAgICAg
ICAgICAgZW1pdEluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgdHJhbnNmZXJUeXBlLCBy
ZCwgcm4sIHJtKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZmR0cl91KGJvb2wgaXNMb2Fk
LCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB2b2lkIGZkdHJfdShEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIs
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKG9wMiA8PSAweGZmKTsKLSAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFS
TVdvcmQ+KGNjKSB8IEZEVFIgfCBEVF9VUCB8IChpc0xvYWQgPyBEVF9MT0FEIDogMCksIHJkLCBy
Yiwgb3AyKTsKKyAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhmZiAmJiByZCA8PSAxNSk7Cisg
ICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMyLCBzNCAuLi4gczMwIGFyZSBzdXBw
b3J0ZWQuICovCisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29y
ZD4oY2MpIHwgRFRfVVAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGZkdHJfZChib29sIGlzTG9hZCwgaW50IHJkLCBpbnQgcmIs
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBmZHRyX2QoRGF0
YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhm
Zik7Ci0gICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBGRFRS
IHwgKGlzTG9hZCA/IERUX0xPQUQgOiAwKSwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAgQVNT
RVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1KTsKKyAgICAgICAgICAgIC8qIE9ubHkgZDAtZDE1
IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRlZC4gKi8KKyAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCB0eXBlIHwgKHJkIDw8IDEy
KSB8IFJOKHJiKSB8IG9wMik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHB1c2hfcihpbnQg
cmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKEFS
TVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KGNjIHwgRFRS
IHwgRFRfV0IgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQpOworICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFN0b3JlVWlu
dDMyIHwgRFRfV0IgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQpOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBwb3BfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAg
ICAgICAgICAgbV9idWZmZXIucHV0SW50KGNjIHwgKERUUiBeIERUX1BSRSkgfCBEVF9MT0FEIHwg
RFRfVVAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQpOworICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IChMb2FkVWludDMy
IF4gRFRfUFJFKSB8IERUX1VQIHwgUk4oQVJNUmVnaXN0ZXJzOjpzcCkgfCBSRChyZWcpIHwgMHg0
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlubGluZSB2b2lkIHBva2VfcihpbnQgcmVnLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZHRyX2QoZmFsc2UsIEFSTVJl
Z2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOworICAgICAgICAgICAgZHRyX2QoU3RvcmVVaW50MzIs
IEFSTVJlZ2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOwogICAgICAgICB9CiAKICAgICAgICAgaW5s
aW5lIHZvaWQgcGVla19yKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBkdHJfdSh0cnVlLCByZWcsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIGNjKTsKKyAg
ICAgICAgICAgIGR0cl91KExvYWRVaW50MzIsIHJlZywgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgY2Mp
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2bW92X3ZmcDY0X3IoaW50IHNtLCBpbnQgcnQs
IGludCBydDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQocnQgIT0gcnQyKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxB
Uk1Xb3JkPihjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8IChzbSAmIDB4Zikg
fCAoKHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2
bW92X2FybTY0X3IoaW50IHJ0LCBpbnQgcnQyLCBpbnQgc20sIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocnQgIT0gcnQyKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEludChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBWTU9WX0FSTTY0IHwgUk4o
cnQyKSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAoKHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2bW92X3ZmcF9yKGludCBzbiwgaW50IHJ0LCBDb25k
aXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bW92X3ZmcDMyX3IoaW50IHNuLCBpbnQgcnQs
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocnQgPD0g
MTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJN
V29yZD4oY2MpIHwgVk1PVl9WRlAsIHJ0IDw8IDEsIHNuLCAwKTsKKyAgICAgICAgICAgIGVtaXRT
aW5nbGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZNT1ZfVkZQMzIs
IHJ0IDw8IDEsIHNuLCAwKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdm1vdl9hcm1fcihp
bnQgcnQsIGludCBzbiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdm1vdl9hcm0z
Ml9yKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKHJ0IDw9IDE1KTsKLSAgICAgICAgICAgIGVtaXRTaW5nbGVQcmVjaXNpb25J
bnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZNT1ZfQVJNLCBydCA8PCAxLCBzbiwgMCk7
CisgICAgICAgICAgICBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwgMCk7CiAgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIHZjdnRfZjY0X3MzMl9yKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkK
QEAgLTU0NSwyNiArNTk3LDM3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdERv
dWJsZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkNWVF9TMzJfRjY0
LCAoc2QgPj4gMSksIDAsIGRtKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdmN2dF91MzJf
ZjY0X3IoaW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAy
CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBWQ1ZUX1UzMl9GNjQsIChzZCA+PiAxKSwgMCwgZG0pOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCB2Y3Z0X2Y2NF9mMzJfcihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChkZCA8PSAxNSAmJiBzbSA8PSAxNSk7
CisgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdChzdGF0aWNfY2FzdDxBUk1Xb3Jk
PihjYykgfCBWQ1ZUX0Y2NF9GMzIsIGRkLCAwLCBzbSk7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIHZjdnRfZjMyX2Y2NF9yKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKKyAgICAg
ICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8
IFZDVlRfRjMyX0Y2NCwgZGQsIDAsIHNtKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgdm1y
c19hcHNyKENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVk1SU19BUFNSKTsKICAgICAgICAg
fQogCi0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCiAgICAgICAgIHZvaWQgY2x6X3IoaW50
IHJkLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBt
X2J1ZmZlci5wdXRJbnQoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgQ0xaIHwgUkQocmQpIHwg
Uk0ocm0pKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBia3B0KEFSTVdvcmQg
dmFsdWUpCiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKICAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEludChCS1BUIHwgKCh2YWx1ZSAmIDB4ZmYwKSA8PCA0KSB8ICh2YWx1
ZSAmIDB4ZikpOwotI2Vsc2UKLSAgICAgICAgICAgIC8vIENhbm5vdCBhY2Nlc3MgdG8gWmVybyBt
ZW1vcnkgYWRkcmVzcwotICAgICAgICAgICAgZHRyX2RyKHRydWUsIEFSTVJlZ2lzdGVyczo6UzAs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzApOwotI2VuZGlmCiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIG5vcCgpCkBAIC01NzQsMjMgKzYzNywxMiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIGJ4KGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAg
IHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzRU
X18pCiAgICAgICAgICAgICBlbWl0SW5zdChzdGF0aWNfY2FzdDxBUk1Xb3JkPihjYykgfCBCWCwg
MCwgMCwgUk0ocm0pKTsKLSNlbHNlCi0gICAgICAgICAgICBtb3ZfcihBUk1SZWdpc3RlcnM6OnBj
LCBSTShybSksIGNjKTsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgYmx4KGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSNpZiBXVEZfQVJN
X0FSQ0hfQVRfTEVBU1QoNSkKICAgICAgICAgICAgIGVtaXRJbnN0KHN0YXRpY19jYXN0PEFSTVdv
cmQ+KGNjKSB8IEJMWCwgMCwgMCwgUk0ocm0pKTsKLSNlbHNlCi0gICAgICAgICAgICBBU1NFUlQo
cm0gIT0gMTQpOwotICAgICAgICAgICAgZW5zdXJlU3BhY2UoMiAqIHNpemVvZihBUk1Xb3JkKSwg
MCk7Ci0gICAgICAgICAgICBtb3ZfcihBUk1SZWdpc3RlcnM6OmxyLCBBUk1SZWdpc3RlcnM6OnBj
LCBjYyk7Ci0gICAgICAgICAgICBieChybSwgY2MpOwotI2VuZGlmCiAgICAgICAgICAgICByZXR1
cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICAgICAgfQogCkBAIC02NTMsMTIgKzcwNSwzMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlci5zaXplT2ZDb25zdGFu
dFBvb2woKTsKICAgICAgICAgfQogCi0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKKyAg
ICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlPbmVJbnN0cnVjdGlvbigp
OworICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlvbigpOwog
ICAgICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAgICAgIH0KIAorICAgICAg
ICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9uKG1heEp1bXBSZXBsYWNl
bWVudFNpemUoKSAvIHNpemVvZihBUk1Xb3JkKSk7CisgICAgICAgICAgICBBc3NlbWJsZXJMYWJl
bCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5tX29m
ZnNldCAhPSAobV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgLSBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAgICAg
ICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBsYWJlbCgpOworICAgICAg
ICB9CisKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQorICAgICAgICB7CisgICAgICAg
ICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsK
KyAgICAgICAgICAgIHdoaWxlIChyZXN1bHQubV9vZmZzZXQgKyAxIDwgbV9pbmRleE9mVGFpbE9m
TGFzdFdhdGNocG9pbnQpIHsKKyAgICAgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgICAg
ICAvLyBUaGUgYXZhaWxhYmxlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgYXJlIGVuc3VyZWQgYnkg
bGFiZWxGb3JXYXRjaHBvaW50LgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fYnVmZmVyLmxh
YmVsKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKICAgICAg
ICAgewogICAgICAgICAgICAgd2hpbGUgKCFtX2J1ZmZlci5pc0FsaWduZWQoYWxpZ25tZW50KSkK
QEAgLTY4NCwxOCArNzU3LDI4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVuc2lnbmVk
IGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQoKTsgfQogCisgICAg
ICAgIC8vIERGRyBhc3NlbWJseSBoZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFu
ZCByZWdpc3RlcnMuCisgICAgICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwgUmVnaXN0ZXJJ
RCByZDIsIEZQUmVnaXN0ZXJJRCBybikKKyAgICAgICAgeworICAgICAgICAgICAgdm1vdl9hcm02
NF9yKHJkMSwgcmQyLCBybik7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHZtb3YoRlBSZWdp
c3RlcklEIHJkLCBSZWdpc3RlcklEIHJuMSwgUmVnaXN0ZXJJRCBybjIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZtb3ZfdmZwNjRfcihyZCwgcm4xLCBybjIpOworICAgICAgICB9CisKICAgICAg
ICAgLy8gUGF0Y2hpbmcgaGVscGVycwogCiAgICAgICAgIHN0YXRpYyBBUk1Xb3JkKiBnZXRMZHJJ
bW1BZGRyZXNzKEFSTVdvcmQqIGluc24pCiAgICAgICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRf
TEVBU1QoNSkKICAgICAgICAgICAgIC8vIENoZWNrIGZvciBjYWxsCiAgICAgICAgICAgICBpZiAo
KCppbnNuICYgMHgwZjdmMDAwMCkgIT0gMHgwNTFmMDAwMCkgewogICAgICAgICAgICAgICAgIC8v
IE11c3QgYmUgQkxYCiAgICAgICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIDB4MDEyZmZmMzAp
ID09IDB4MDEyZmZmMzApOwogICAgICAgICAgICAgICAgIGluc24tLTsKICAgICAgICAgICAgIH0K
LSNlbmRpZgorCiAgICAgICAgICAgICAvLyBNdXN0IGJlIGFuIGxkciAuLi4sIFtwYyArLy0gaW1t
XQogICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIDB4MGY3ZjAwMDApID09IDB4MDUxZjAwMDAp
OwogCkBAIC03OTksNiArODgyLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3MoZnJvbSkpKSk7CiAgICAgICAgIH0KIAorICAg
ICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwg
dm9pZCogdG8pCisgICAgICAgIHsKKyAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0g
cmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCkgLSAxOworICAgICAg
ICAgICAgaW50cHRyX3QgZGlmZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRv
KSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvbikgKyBEZWZhdWx0UHJl
ZmV0Y2hpbmcgKiBzaXplb2YoQVJNV29yZCkpOworCisgICAgICAgICAgICBpZiAoIShkaWZmZXJl
bmNlICYgMSkpIHsKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID4+PSAyOworICAgICAgICAg
ICAgICAgIGlmICgoZGlmZmVyZW5jZSA8PSBCT0ZGU0VUX01BWCAmJiBkaWZmZXJlbmNlID49IEJP
RkZTRVRfTUlOKSkgeworICAgICAgICAgICAgICAgICAgICAgLy8gRGlyZWN0IGJyYW5jaC4KKyAg
ICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uWzBdID0gQiB8IEFMIHwgKGRpZmZlcmVuY2Ug
JiBCUkFOQ0hfTUFTSyk7CisgICAgICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0
aW9uLCBzaXplb2YoQVJNV29yZCkpOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTG9hZCB0YXJn
ZXQuCisgICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IExvYWRVaW50MzIgfCBBTCB8IFJOKEFS
TVJlZ2lzdGVyczo6cGMpIHwgUkQoQVJNUmVnaXN0ZXJzOjpwYykgfCA0OworICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25bMV0gPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KHRvKTsKKyAgICAgICAg
ICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSAqIDIpOworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihBUk1Xb3JkKSAqIDI7CisgICAg
ICAgIH0KKwogICAgICAgICAvLyBBZGRyZXNzIG9wZXJhdGlvbnMKIAogICAgICAgICBzdGF0aWMg
dm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJl
bCkKQEAgLTgyMCwxMyArOTI5LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIEhh
bmRsZSBpbW1lZGlhdGVzCiAKKyAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0T3AyKEFSTVdvcmQg
aW1tKTsKKworICAgICAgICAvLyBGYXN0IGNhc2UgaWYgaW1tIGlzIGtub3duIHRvIGJlIGJldHdl
ZW4gMCBhbmQgMHhmZgogICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRPcDJCeXRlKEFSTVdvcmQg
aW1tKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaW1tIDw9IDB4ZmYpOwotICAgICAg
ICAgICAgcmV0dXJuIE9QMl9JTU1oIHwgKGltbSAmIDB4MGYpIHwgKChpbW0gJiAweGYwKSA8PCA0
KSA7CisgICAgICAgICAgICByZXR1cm4gT1AyX0lNTSB8IGltbTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1Xb3JkIGltbSk7CisgICAgICAgIHN0YXRpYyBB
Uk1Xb3JkIGdldE9wMkhhbGYoQVJNV29yZCBpbW0pCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChpbW0gPD0gMHhmZik7CisgICAgICAgICAgICByZXR1cm4gT1AyX0lNTV9IQUxGIHwgKGlt
bSAmIDB4MGYpIHwgKChpbW0gJiAweGYwKSA8PCA0KTsKKyAgICAgICAgfQogCiAjaWYgV1RGX0FS
TV9BUkNIX0FUX0xFQVNUKDcpCiAgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldEltbTE2T3AyKEFS
TVdvcmQgaW1tKQpAQCAtODQwLDIwICs5NTYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgbW92ZUltbShBUk1Xb3JkIGltbSwgaW50IGRlc3QpOwogICAgICAgICBBUk1Xb3JkIGVu
Y29kZUNvbXBsZXhJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0KTsKIAotICAgICAgICBBUk1Xb3Jk
IGdldE9mZnNldEZvckhhbGZ3b3JkRGF0YVRyYW5zZmVyKEFSTVdvcmQgaW1tLCBpbnQgdG1wUmVn
KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFbmNvZGUgaW1tZWRpYXRlIGRhdGEgaW4gdGhl
IGluc3RydWN0aW9uIGlmIGl0IGlzIHBvc3NpYmxlCi0gICAgICAgICAgICBpZiAoaW1tIDw9IDB4
ZmYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldE9wMkJ5dGUoaW1tKTsKLSAgICAgICAgICAg
IC8vIE90aGVyd2lzZSwgc3RvcmUgdGhlIGRhdGEgaW4gYSB0ZW1wb3JhcnkgcmVnaXN0ZXIKLSAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVDb21wbGV4SW1tKGltbSwgdG1wUmVnKTsKLSAgICAgICAg
fQotCiAgICAgICAgIC8vIE1lbW9yeSBsb2FkL3N0b3JlIGhlbHBlcnMKIAotICAgICAgICB2b2lk
IGRhdGFUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJ
RCBiYXNlLCBpbnQzMl90IG9mZnNldCwgYm9vbCBieXRlcyA9IGZhbHNlKTsKLSAgICAgICAgdm9p
ZCBiYXNlSW5kZXhUcmFuc2ZlcjMyKGJvb2wgaXNMb2FkLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0
LCBib29sIGJ5dGVzID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRvdWJsZVRyYW5zZmVyKGJvb2wg
aXNMb2FkLCBGUFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zm
c2V0KTsKKyAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIzMihEYXRhVHJhbnNmZXJUeXBlQSwgUmVn
aXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOworICAgICAg
ICB2b2lkIGJhc2VJbmRleFRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEsIFJlZ2lzdGVySUQg
c3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50
MzJfdCBvZmZzZXQpOworICAgICAgICB2b2lkIGRhdGFUcmFuc2ZlcjE2KERhdGFUcmFuc2ZlclR5
cGVCLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCk7
CisgICAgICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiwgUmVn
aXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlLCBpbnQzMl90IG9mZnNldCk7CisgICAgICAgIHZvaWQgZGF0YVRyYW5zZmVyRmxvYXQoRGF0
YVRyYW5zZmVyVHlwZUZsb2F0LCBGUFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2Us
IGludDMyX3Qgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBiYXNlSW5kZXhUcmFuc2ZlckZsb2F0KERh
dGFUcmFuc2ZlclR5cGVGbG9hdCwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KTsKIAogICAgICAg
ICAvLyBDb25zdGFudCBwb29sIGhuYWRsZXJzCiAKQEAgLTkwMSwyNSArMTAxMSwyNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQVJNV29yZCBSTShp
bnQgcmVnKQorICAgICAgICBzdGF0aWMgQVJNV29yZCBSTShpbnQgcmVnKQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwogICAgICAgICAgICAg
cmV0dXJuIHJlZzsKICAgICAgICAgfQogCi0gICAgICAgIEFSTVdvcmQgUlMoaW50IHJlZykKKyAg
ICAgICAgc3RhdGljIEFSTVdvcmQgUlMoaW50IHJlZykKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIHJldHVybiByZWcg
PDwgODsKICAgICAgICAgfQogCi0gICAgICAgIEFSTVdvcmQgUkQoaW50IHJlZykKKyAgICAgICAg
c3RhdGljIEFSTVdvcmQgUkQoaW50IHJlZykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIHJldHVybiByZWcgPDwgMTI7
CiAgICAgICAgIH0KIAotICAgICAgICBBUk1Xb3JkIFJOKGludCByZWcpCisgICAgICAgIHN0YXRp
YyBBUk1Xb3JkIFJOKGludCByZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZWcg
PD0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgICAgICAgICByZXR1cm4gcmVnIDw8IDE2OwpAQCAt
OTM0LDYgKzEwNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBBUk1CdWZmZXIgbV9i
dWZmZXI7CiAgICAgICAgIEp1bXBzIG1fanVtcHM7CisgICAgICAgIHVpbnQzMl90IG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJX
aXRoQ29uc3RhbnRQb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaAppbmRleCBlMmVhMjYxLi40MzAxNDcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlcldp
dGhDb25zdGFudFBvb2wuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fz
c2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaApAQCAtMTI3LDkgKzEyNyw5IEBAIHB1Ymxp
YzoKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyOjplbnN1cmVTcGFjZShpbnNuU3BhY2UpOwogICAg
IH0KIAotICAgIHZvaWQgZW5zdXJlU3BhY2VGb3JBbnlPbmVJbnN0cnVjdGlvbigpCisgICAgdm9p
ZCBlbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9uKGludCBhbW91bnQgPSAxKQogICAgIHsKLSAg
ICAgICAgZmx1c2hJZk5vU3BhY2VGb3IobWF4SW5zdHJ1Y3Rpb25TaXplLCBzaXplb2YodWludDY0
X3QpKTsKKyAgICAgICAgZmx1c2hJZk5vU3BhY2VGb3IoYW1vdW50ICogbWF4SW5zdHJ1Y3Rpb25T
aXplLCBhbW91bnQgKiBzaXplb2YodWludDY0X3QpKTsKICAgICB9CiAKICAgICBib29sIGlzQWxp
Z25lZChpbnQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAppbmRleCAyZGI1ZGYxLi4wYjgyNmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNLmNwcApAQCAtNzcsMTggKzc3LDE4IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQz
MldpdGhVbmFsaWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVyCiAKICAg
ICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0gMCAmJiBhZGRyZXNzLm9mZnNldCArIDB4MiA8PSAweGZm
KSB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3Mu
YmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF91KGRlc3QsIEFSTVJlZ2lzdGVy
czo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZShhZGRyZXNzLm9mZnNldCkpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJoX3UoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwg
QVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKGFkZHJlc3Mub2Zmc2V0ICsgMHgyKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmR0cmhfdShMb2FkVWludDE2LCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoYWRkcmVzcy5vZmZzZXQpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyaF91KExvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6
UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCArIDB4MikpOwogICAg
IH0gZWxzZSBpZiAoYWRkcmVzcy5vZmZzZXQgPCAwICYmIGFkZHJlc3Mub2Zmc2V0ID49IC0weGZm
KSB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3Mu
YmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF9kKGRlc3QsIEFSTVJlZ2lzdGVy
czo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRkcmVzcy5vZmZzZXQpKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubGRyaF9kKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAs
IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyaF9kKExvYWRVaW50MTYsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAs
IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRkcmVzcy5vZmZzZXQpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZHRyaF9kKExvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVy
czo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVy
czo6UzAsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShhZGRy
ZXNzLm9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9y
KEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIG9wMik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxkcmhfcihkZXN0LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAg
ICAgICBtX2Fzc2VtYmxlci5kdHJoX3IodHJ1ZSwgVFlQRV9VSCwgZGVzdCwgYWRkcmVzcy5iYXNl
LCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpPUDJfSU1NIHwgMHgyKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubGRyaF9yKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFz
ZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfcih0cnVlLCBU
WVBFX1VILCBBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzAp
OwogICAgIH0KICAgICBtX2Fzc2VtYmxlci5vcnJfcihkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5s
c2woQVJNUmVnaXN0ZXJzOjpTMCwgMTYpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAppbmRleCA4ZWEyOWUzLi40YzZjMWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5oCkBAIC05MCw2ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZHNfcihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0
ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRzX3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQg
YWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAg
bG9hZDMyKGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwpAQCAtMTE4LDYgKzEyMywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0LCBkZXN0LCBzcmMpOwogICAg
IH0KIAorICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwgb3Ax
LCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1t
KGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwLCB0cnVlKTsKQEAgLTEzNiwxMyArMTQ2LDE3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0LCBzcmMsIHcp
OwogICAgIH0KIAotICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxl
cjo6Z2V0T3AyKDB4MWYpOwotICAgICAgICBBU1NFUlQodyAhPSBBUk1Bc3NlbWJsZXI6OklOVkFM
SURfSU1NKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hp
ZnRfYW1vdW50LCB3KTsKKyAgICAgICAgbHNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3Qp
OworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
c2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFSTVdvcmQgdyA9
IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
X3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQsIHcpOwogCi0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc2xfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlMw
KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc2xfcihz
cmMsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAgICB2b2lkIGxzaGlmdDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1NSwxMyArMTY5LDI1IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzbChzcmMs
IGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KIAotICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHNyYyA9
PSBkZXN0KSB7Ci0gICAgICAgICAgICBtb3ZlKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAg
ICAgICAgICBzcmMgPSBBUk1SZWdpc3RlcnM6OlMwOworICAgICAgICBpZiAob3AyID09IGRlc3Qp
IHsKKyAgICAgICAgICAgIGlmIChvcDEgPT0gZGVzdCkgeworICAgICAgICAgICAgICAgIG1vdmUo
b3AyLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgICAgICBvcDIgPSBBUk1SZWdpc3Rl
cnM6OlMwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTd2FwIHRo
ZSBvcGVyYW5kcy4KKyAgICAgICAgICAgICAgICBSZWdpc3RlcklEIHRtcCA9IG9wMTsKKyAgICAg
ICAgICAgICAgICBvcDEgPSBvcDI7CisgICAgICAgICAgICAgICAgb3AyID0gdG1wOworICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11bHNfcihkZXN0LCBkZXN0
LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tdWxzX3IoZGVzdCwgb3AxLCBvcDIpOworICAg
IH0KKworICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG11bDMyKHNyYywgZGVzdCwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBt
dWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTcyLDcgKzE5OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbmVnMzIoUmVnaXN0ZXJJRCBz
cmNEZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucnNic19yKHNyY0Rlc3QsIHNyY0Rl
c3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIucnNic19y
KHNyY0Rlc3QsIHNyY0Rlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAgfQog
CiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xOTUs
MTUgKzIyMSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycnNfcihkZXN0LCBv
cDEsIG9wMik7CiAgICAgfQogCi0gICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0X2Ft
b3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlm
dEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVJNV29yZCB3ID0gQVJN
QXNzZW1ibGVyOjpnZXRPcDIoMHgxZik7Ci0gICAgICAgIEFTU0VSVCh3ICE9IEFSTUFzc2VtYmxl
cjo6SU5WQUxJRF9JTU0pOwotICAgICAgICBtX2Fzc2VtYmxlci5hbmRfcihBUk1SZWdpc3RlcnM6
OlMwLCBzaGlmdF9hbW91bnQsIHcpOworICAgICAgICByc2hpZnQzMihkZXN0LCBzaGlmdEFtb3Vu
dCwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVJN
V29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDB4MWYpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRfcihBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmFzcl9yKGRlc3QsIEFSTVJlZ2lz
dGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVy
LmFzcl9yKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQg
cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgcnNoaWZ0MzIoZGVzdCwgaW1tLCBkZXN0KTsKQEAgLTIxMywxNiArMjQzLDIwIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5h
c3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCB1cnNo
aWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKworICAgIHZv
aWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDB4MWYpOwotICAg
ICAgICBBU1NFUlQodyAhPSBBUk1Bc3NlbWJsZXI6OklOVkFMSURfSU1NKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRfYW1vdW50LCB3KTsKLSAgICAg
ICAgCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3Jfcihk
ZXN0LCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIHVyc2hpZnQzMihkZXN0LCBzaGlmdEFt
b3VudCwgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQsIHcpOwor
CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3JfcihzcmMs
IEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICB9CisKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIubHNyKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwpA
QCAtMjY2LDYgKzMwMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihk
ZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEs
IFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5lb3JzX3IoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5t
X3ZhbHVlID09IC0xKQpAQCAtMjk1LDIyICszMzQsNDIgQEAgcHVibGljOgogCiAgICAgdm9pZCBs
b2FkOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMzIodHJ1ZSwgZGVzdCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLm9mZnNldCwgdHJ1ZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2Zl
cjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
b2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2Zl
cjMyKHRydWUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8
aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQsIHRydWUpOworICAgICAgICBtX2Fz
c2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQ4LCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5z
Y2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQ4U2lnbmVkKEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6TG9hZEludDgsIGRlc3QsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxl
KSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbG9hZDE2KEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5kYXRhVHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbG9hZDE2KEJhc2VJbmRl
eCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5i
YXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBh
ZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkMTZTaWduZWQoQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJh
c2VJbmRleFRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpMb2FkSW50MTYsIGRlc3QsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRk
cmVzcy5vZmZzZXQpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZDMyKEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRh
VHJhbnNmZXIzMih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMy
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lk
IGxvYWQzMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMih0cnVlLCBkZXN0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJl
c3Mub2Zmc2V0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1B
c3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
c3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0K
IAogI2lmIENQVShBUk1WNV9PUl9MT1dFUikKQEAgLTMzMSw3ICszOTAsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmR0cl91cih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwor
ICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0
LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICByZXR1cm4gZGF0YUxh
YmVsOwogICAgIH0KICAgICAKQEAgLTM0MiwzNiArNDAxLDMyIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGRhdGFMYWJlbDsKICAgICB9CiAKLSAgICB2b2lkIGxvYWQxNihCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVz
c09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMxLCBhZGRyZXNzLmJhc2UsIG1f
YXNzZW1ibGVyLmxzbChhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKSk7Ci0gICAgICAgIGxv
YWQxNihBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEsIGFkZHJlc3Mub2Zmc2V0KSwgZGVzdCk7Cisg
ICAgICAgIERhdGFMYWJlbDMyIGRhdGFMYWJlbCh0aGlzKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRy
X3VyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBBUk1SZWdp
c3RlcnM6OlMwKTsKKyAgICAgICAgcmV0dXJuIGRhdGFMYWJlbDsKICAgICB9Ci0gICAgCi0gICAg
dm9pZCBsb2FkMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKwor
ICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAwKQotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubGRyaF91KGRlc3QsIGFkZHJlc3MuYmFzZSwgbV9hc3NlbWJsZXIuZ2V0T2Zmc2V0Rm9ySGFs
ZndvcmREYXRhVHJhbnNmZXIoYWRkcmVzcy5vZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaF9kKGRlc3QsIGFkZHJlc3Mu
YmFzZSwgbV9hc3NlbWJsZXIuZ2V0T2Zmc2V0Rm9ySGFsZndvcmREYXRhVHJhbnNmZXIoLWFkZHJl
c3Mub2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJ
bmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVz
cy5vZmZzZXQpOwogICAgIH0KIAotICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09m
ZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgdm9pZCBzdG9y
ZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIERh
dGFMYWJlbDMyIGRhdGFMYWJlbCh0aGlzKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2lt
bShBUk1SZWdpc3RlcnM6OlMwLCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKGZhbHNl
LCBzcmMsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIHJldHVybiBk
YXRhTGFiZWw7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMTYoQVJNQXNz
ZW1ibGVyOjpTdG9yZVVpbnQxNiwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0
YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAK
ICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMzIoZmFsc2UsIHNyYywg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFU
cmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLm9mZnNldCk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRl
eFRyYW5zZmVyMzIoZmFsc2UsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0
aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwg
c3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVz
cy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIoVHJ1
c3RlZEltbTMyIGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCkBAIC0zODAsMTcgKzQzNSwy
MyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoQVJNUmVnaXN0ZXJzOjpTMSwgYWRkcmVzcyk7
CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOworICAg
ICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVV
aW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3Rh
dGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOworICAgIH0KKwog
ICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnBy
ZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KGZh
bHNlLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJf
dShBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwog
ICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMw
LCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIubW92ZUltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmR0cl91KGZhbHNlLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAw
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwg
QVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9p
ZCBwb3AoUmVnaXN0ZXJJRCBkZXN0KQpAQCAtNDIyLDcgKzQ4Myw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbW92ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgaWYgKHNyYyAhPSBkZXN0
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgc3JjKTsKICAgICB9CiAKICAg
ICB2b2lkIG1vdmUoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTU2Niw2
ICs2MjgsMTIgQEAgcHVibGljOgogICAgICAgICBsb2FkMzIoYWRkcmVzcywgQVJNUmVnaXN0ZXJz
OjpwYyk7CiAgICAgfQogCisgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBBUk1SZWdp
c3RlcnM6OlMwKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMCwgMCks
IEFSTVJlZ2lzdGVyczo6cGMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwg
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwpAQCAtNTczLDYgKzY0MSwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRp
b24oY29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2ln
bmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGFk
ZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1w
KEFSTUNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVk
KSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CkBAIC01ODcsMjggKzY2
Miw0NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1D
b25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICB2b2lkIG11bGwzMihSZWdpc3RlcklEIHNy
YzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQWRk
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29u
ZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAg
ICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
am1wKEFSTUNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKworICAgIHZvaWQgbXVsbDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgaWYgKHNyYzEgPT0gZGVzdCkgewotICAgICAgICAgICAgbW92ZShzcmMxLCBBUk1SZWdpc3Rl
cnM6OlMwKTsKLSAgICAgICAgICAgIHNyYzEgPSBBUk1SZWdpc3RlcnM6OlMwOworICAgICAgICBp
ZiAob3AyID09IGRlc3QpIHsKKyAgICAgICAgICAgIGlmIChvcDEgPT0gZGVzdCkgeworICAgICAg
ICAgICAgICAgIG1vdmUob3AyLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgICAgICBv
cDIgPSBBUk1SZWdpc3RlcnM6OlMwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBTd2FwIHRoZSBvcGVyYW5kcy4KKyAgICAgICAgICAgICAgICBSZWdpc3RlcklEIHRt
cCA9IG9wMTsKKyAgICAgICAgICAgICAgICBvcDEgPSBvcDI7CisgICAgICAgICAgICAgICAgb3Ay
ID0gdG1wOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11
bGxfcihBUk1SZWdpc3RlcnM6OlMxLCBkZXN0LCBzcmMyLCBzcmMxKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubXVsbF9yKEFSTVJlZ2lzdGVyczo6UzEsIGRlc3QsIG9wMSwgb3AyKTsKICAgICAgICAg
bV9hc3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJzOjpTMSwgbV9hc3NlbWJsZXIuYXNyKGRlc3Qs
IDMxKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaE11bDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93
KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKTsKICAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKLSAgICAgICAgICAgIG11bGwz
MihzcmMsIGRlc3QsIGRlc3QpOworICAgICAgICAgICAgbXVsbDMyKHNyYzEsIHNyYzIsIGRlc3Qp
OwogICAgICAgICAgICAgY29uZCA9IE5vblplcm87CiAgICAgICAgIH0KICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbXVsMzIoc3JjLCBkZXN0KTsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNy
YzIsIGRlc3QpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0
aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hNdWwzMihjb25kLCBzcmMsIGRlc3QsIGRlc3QpOworICAgIH0KKwogICAg
IEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQo
KGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykg
fHwgKGNvbmQgPT0gTm9uWmVybykpOwpAQCAtNjcxLDE0ICs3NjUsOCBAQCBwdWJsaWM6CiAKICAg
ICBDYWxsIG5lYXJDYWxsKCkKICAgICB7Ci0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCi0g
ICAgICAgIGVuc3VyZVNwYWNlKDIgKiBzaXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoQVJNUmVnaXN0ZXJzOjpTMSwg
QVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVy
LmJseChBUk1SZWdpc3RlcnM6OlMxKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKLSNlbHNlCi0gICAg
ICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmptcChB
Uk1Bc3NlbWJsZXI6OkFMLCB0cnVlKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKLSNlbmRpZgogICAg
IH0KIAogICAgIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldCkKQEAgLTY5OSwxNSArNzg3LDE1
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgcmlnaHQpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDEpLCBBUk1Db25kaXRp
b24oY29uZCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6
OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3Nl
bWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCiAgICAg
dm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIuY21wX3IobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIEFS
TVJlZ2lzdGVyczo6UzApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNz
ZW1ibGVyOjpnZXRPcDIoMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1B
c3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1D
b25kaXRpb24oY29uZCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJ
RCBkZXN0KQpAQCAtNzIyLDggKzgxMCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmNtcF9yKDAsIHJlZyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnRzdF9yKHJlZywgbV9hc3NlbWJsZXIuZ2V0SW1tKG1hc2subV92YWx1ZSwgQVJNUmVnaXN0ZXJz
OjpTMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMigwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6
Z2V0T3AyKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zf
cihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihj
b25kKSk7CiAgICAgfQogCiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTc0
NiwyNSArODM0LDI1IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubGRy
X3VuX2ltbShBUk1SZWdpc3RlcnM6OlMxLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJl
c3MubV9wdHIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgQVJNUmVnaXN0ZXJz
OjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFS
TUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpT
MSwgMCk7CiAgICAgICAgIGFkZDMyKGltbSwgQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxB
Uk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KGZhbHNl
LCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwg
QVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1t
MzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMSwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3Jk
PihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KHRydWUsIEFSTVJl
Z2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5k
dHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lz
dGVyczo6UzEsIDApOwogICAgICAgICBzdWIzMihpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0
X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJf
dShmYWxzZSwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVy
czo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgbG9hZDMyKGNv
bnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1X
b3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KHRydWUsIGRlc3QsIEFS
TVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50MzIsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3Mg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKQEAgLTc5MCwxNCArODc4LDkgQEAgcHVibGljOgogCiAg
ICAgQ2FsbCBjYWxsKCkKICAgICB7Ci0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCiAgICAg
ICAgIGVuc3VyZVNwYWNlKDIgKiBzaXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoQVJNUmVnaXN0ZXJzOjpTMSwgQVJN
QXNzZW1ibGVyOjpBTCwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJs
eChBUk1SZWdpc3RlcnM6OlMxKSwgQ2FsbDo6TGlua2FibGUpOwotI2Vsc2UKLSAgICAgICAgcHJl
cGFyZUNhbGwoKTsKLSAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuam1wKEFSTUFzc2Vt
Ymxlcjo6QUwsIHRydWUpLCBDYWxsOjpMaW5rYWJsZSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBD
YWxsIHRhaWxSZWN1cnNpdmVDYWxsKCkKQEAgLTg2MSwyMCArOTQ0LDUyIEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIHZvaWQgbG9hZEZsb2F0KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVy
RmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRmxvYXQsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgbG9hZERvdWJsZShJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kb3VibGVUcmFu
c2Zlcih0cnVlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBk
ZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGxv
YWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6Okxv
YWREb3VibGUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8
aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAogICAgIHZvaWQg
bG9hZERvdWJsZShjb25zdCB2b2lkKiBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgKEFSTVdv
cmQpYWRkcmVzcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZkdHJfdSh0cnVlLCBkZXN0LCBBUk1S
ZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fz
c2VtYmxlci5mZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBBUk1SZWdpc3Rl
cnM6OlMwLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5k
ZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVGbG9hdCwgc3JjLCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJl
c3Mub2Zmc2V0KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZG91YmxlVHJhbnNmZXIoZmFsc2UsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3Rv
cmVEb3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNz
ZW1ibGVyOjpTdG9yZURvdWJsZSwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0
YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PEFS
TVdvcmQ+KGFkZHJlc3MpKSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmRhdGFUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVEb3VibGUsIHNyYywgQVJNUmVn
aXN0ZXJzOjpTMCwgMCk7CisgICAgfQorCisgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNyYyAhPSBkZXN0
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9mNjRfcihkZXN0LCBzcmMpOwogICAgIH0K
IAogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0
KQpAQCAtODgyLDE3ICs5OTcsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci52YWRk
X2Y2NF9yKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhZGREb3VibGUoRlBS
ZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci52YWRkX2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBsb2FkRG91YmxlKHNyYywgQVJNUmVnaXN0ZXJzOjpTRDApOwogICAgICAg
ICBhZGREb3VibGUoQVJNUmVnaXN0ZXJzOjpTRDAsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkRG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGxvYWREb3VibGUoYWRkcmVzcy5tX3B0ciwgQVJNUmVnaXN0ZXJzOjpTRDAp
OworICAgICAgICBhZGREb3VibGUoQVJNUmVnaXN0ZXJzOjpTRDAsIGRlc3QpOworICAgIH0KKwog
ICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudmRpdl9mNjRfcihkZXN0LCBkZXN0LCBzcmMpOwog
ICAgIH0KIAorICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJ
RCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmRp
dl9mNjRfcihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoQWRk
cmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIFVudGVzdGVkCkBAIC05MDUsNiArMTAzNiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAg
ICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0X3IoZGVz
dCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViRG91YmxlKEFkZHJlc3Mgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGxvYWREb3VibGUoc3JjLCBBUk1SZWdp
c3RlcnM6OlNEMCk7CkBAIC05MjIsMzkgKzEwNTgsNTUgQEAgcHVibGljOgogICAgICAgICBtdWxE
b3VibGUoQVJNUmVnaXN0ZXJzOjpTRDAsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRG91
YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjRfcihkZXN0LCBvcDEsIG9wMik7
CisgICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudnNxcnRfZjY0X3IoZGVzdCwg
c3JjKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhYnNEb3VibGUoRlBSZWdpc3RlcklELCBGUFJl
Z2lzdGVySUQpCisgICAgdm9pZCBhYnNEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIudmFic19mNjRfcihkZXN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQgbmVn
YXRlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIudm5lZ19mNjRfcihkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZv
aWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl92ZnBfcihkZXN0IDw8IDEsIHNyYyk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfdmZwMzJfcihkZXN0IDw8IDEsIHNyYyk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnZjdnRfZjY0X3MzMl9yKGRlc3QsIGRlc3QgPDwgMSk7CiAgICAgfQog
CiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVW50ZXN0ZWQK
LSAgICAgICAgLy8gZmxkcyBkb2VzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IGhlcmUKICAgICAgICAg
bG9hZDMyKHNyYywgQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlKEFSTVJlZ2lzdGVyczo6UzEsIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydElu
dDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVW50ZXN0ZWQKLSAgICAgICAgLy8g
ZmxkcyBkb2VzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IGhlcmUKLSAgICAgICAgbV9hc3NlbWJsZXIu
bGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMxLCAoQVJNV29yZClzcmMubV9wdHIpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5kdHJfdSh0cnVlLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6
OlMxLCAwKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNyYy5tX3B0ciksIEFSTVJlZ2lz
dGVyczo6UzEpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhBUk1SZWdpc3RlcnM6OlMxKSwgQVJN
UmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFSTVJlZ2lzdGVy
czo6UzEsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydEZsb2F0VG9Eb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnZjdnRfZjY0X2YzMl9yKGRzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbnZlcnRE
b3VibGVUb0Zsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2YzMl9mNjRfcihkc3QsIHNyYyk7CisgICAgfQorCiAg
ICAgSnVtcCBicmFuY2hEb3VibGUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBs
ZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52Y21w
X2Y2NF9yKGxlZnQsIHJpZ2h0KTsKQEAgLTk2OCwxMiArMTEyMCw0MiBAQCBwdWJsaWM6CiAgICAg
Ly8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwg
YnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUg
cmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBj
YXNlLCBJTlRfTUlOKS4KLSAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5
cGUgeyBCcmFuY2hJZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9
OworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJ
ZlRydW5jYXRlRmFpbGVkKQogICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHNyYyk7Ci0gICAg
ICAgIFVOVVNFRF9QQVJBTShkZXN0KTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMs
IGRlc3QpOworCisgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGRl
c3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJp
Y19yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgxKSk7CisKKyAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDIo
MHg4MDAwMDAwMCk7CisgICAgICAgIEFTU0VSVCh3ICE9IEFSTUFzc2VtYmxlcjo6SU5WQUxJRF9J
TU0pOworICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihBUk1SZWdpc3RlcnM6OlMwLCB3KTsKKyAg
ICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZU
cnVuY2F0ZUZhaWxlZCA/IEFSTUFzc2VtYmxlcjo6RVEgOiBBUk1Bc3NlbWJsZXI6Ok5FKSk7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBC
cmFuY2hJZlRydW5jYXRlRmFpbGVkKQorICAgIHsKKyAgICAgICAgdHJ1bmNhdGVEb3VibGVUb1Vp
bnQzMihzcmMsIGRlc3QpOworCisgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVy
czo6UzAsIGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJpY19yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgxKSk7CisKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuam1wKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxl
ZCA/IEFSTUFzc2VtYmxlcjo6RVEgOiBBUk1Bc3NlbWJsZXI6Ok5FKSk7CisgICAgfQorCisgICAg
Ly8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgdmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUgaW50
ZWdlciByYW5nZS4KKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3Mz
Ml9mNjRfcihBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxl
ci52bW92X2FybTMyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CisgICAgfQorCisg
ICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfdTMyX2Y2NF9yKEFSTVJl
Z2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzJf
cihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKICAgICB9CiAKICAgICAvLyBDb252ZXJ0
ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCkBA
IC05ODMsNyArMTE2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVU
b0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1
cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnZjdnRfczMyX2Y2NF9yKEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnZtb3ZfYXJtX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzJfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAx
KTsKIAogICAgICAgICAvLyBDb252ZXJ0IHRoZSBpbnRlZ2VyIHJlc3VsdCBiYWNrIHRvIGZsb2F0
ICYgY29tcGFyZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgLSBpZiBub3QgZXF1YWwgb3IgdW5vcmRl
cmVkIChOYU4pIHRoZW4ganVtcC4KICAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mNjRfczMyX3Io
QVJNUmVnaXN0ZXJzOjpTRDAsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOwpAQCAtOTk1LDE4ICsx
MTc3LDI1IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRG91YmxlTm9uWmVybyhGUFJlZ2lz
dGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdl9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDApKTsKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0ZXJz
OjpTMCwgc2NyYXRjaCk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1
YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JO
YU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9w
MigwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFS
TVJlZ2lzdGVyczo6UzAsIHNjcmF0Y2gpOwogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERv
dWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCisgICAgLy8gSW52
ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVz
ID49LCBldGMuCisgICAgc3RhdGljIFJlbGF0aW9uYWxDb25kaXRpb24gaW52ZXJ0KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGNvbmQgJiAweDBmZmZmZmZmKSkgPT0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Y29uZCkgPCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQVJNQXNzZW1ibGVyOjpBTCkpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCBeIDB4MTAwMDAw
MDApOworICAgIH0KKwogICAgIHZvaWQgbm9wKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vcCgpOwpAQCAtMTAxOSwxMiArMTIwOCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgQVJNQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rp
b25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOwogICAg
IH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEFSTUFzc2VtYmxl
cjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
QEAgLTEwNDksNTggKzEyMzgsMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9hc3Nl
bWJsZXIuc2l6ZU9mQ29uc3RhbnRQb29sKCk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlQ2Fs
bCgpCi0gICAgewotI2lmIFdURl9BUk1fQVJDSF9WRVJTSU9OIDwgNQotICAgICAgICBlbnN1cmVT
cGFjZSgyICogc2l6ZW9mKEFSTVdvcmQpLCBzaXplb2YoQVJNV29yZCkpOwotCi0gICAgICAgIG1f
YXNzZW1ibGVyLm1vdl9yKGxpbmtSZWdpc3RlciwgQVJNUmVnaXN0ZXJzOjpwYyk7Ci0jZW5kaWYK
LSAgICB9Ci0KICAgICB2b2lkIGNhbGwzMihSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0
KQogICAgIHsKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKLSAgICAgICAgaW50IHRhcmdl
dFJlZyA9IEFSTVJlZ2lzdGVyczo6UzE7Ci0jZWxzZQotICAgICAgICBpbnQgdGFyZ2V0UmVnID0g
QVJNUmVnaXN0ZXJzOjpwYzsKLSNlbmRpZgotICAgICAgICBpbnQgdG1wUmVnID0gQVJNUmVnaXN0
ZXJzOjpTMTsKLQotICAgICAgICBpZiAoYmFzZSA9PSBBUk1SZWdpc3RlcnM6OnNwKQotICAgICAg
ICAgICAgb2Zmc2V0ICs9IDQ7Ci0KLSAgICAgICAgaWYgKG9mZnNldCA+PSAwKSB7Ci0gICAgICAg
ICAgICBpZiAob2Zmc2V0IDw9IDB4ZmZmKSB7Ci0gICAgICAgICAgICAgICAgcHJlcGFyZUNhbGwo
KTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdSh0cnVlLCB0YXJnZXRSZWcsIGJh
c2UsIG9mZnNldCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmZmKSB7
Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IodG1wUmVnLCBiYXNlLCBBUk1Bc3Nl
bWJsZXI6Ok9QMl9JTU0gfCAob2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7Ci0gICAgICAgICAg
ICAgICAgcHJlcGFyZUNhbGwoKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdSh0
cnVlLCB0YXJnZXRSZWcsIHRtcFJlZywgb2Zmc2V0ICYgMHhmZmYpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKG9mZnNldCwgdG1wUmVn
KTsKLSAgICAgICAgICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmR0cl91cih0cnVlLCB0YXJnZXRSZWcsIGJhc2UsIHRtcFJlZyk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSAgewotICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKLSAg
ICAgICAgICAgIGlmIChvZmZzZXQgPD0gMHhmZmYpIHsKLSAgICAgICAgICAgICAgICBwcmVwYXJl
Q2FsbCgpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl9kKHRydWUsIHRhcmdldFJl
ZywgYmFzZSwgb2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZm
ZmYpIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJfcih0bXBSZWcsIGJhc2UsIEFS
TUFzc2VtYmxlcjo6T1AyX0lNTSB8IChvZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgpKTsKLSAgICAg
ICAgICAgICAgICBwcmVwYXJlQ2FsbCgpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0
cl9kKHRydWUsIHRhcmdldFJlZywgdG1wUmVnLCBvZmZzZXQgJiAweGZmZik7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0ob2Zmc2V0LCB0
bXBSZWcpOwotICAgICAgICAgICAgICAgIHByZXBhcmVDYWxsKCk7Ci0gICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuZHRyX2RyKHRydWUsIHRhcmdldFJlZywgYmFzZSwgdG1wUmVnKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQotICAgICAg
ICBtX2Fzc2VtYmxlci5ibHgodGFyZ2V0UmVnKTsKLSNlbmRpZgorICAgICAgICBsb2FkMzIoQWRk
cmVzcyhiYXNlLCBvZmZzZXQpLCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYmx4KEFSTVJlZ2lzdGVyczo6UzEpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCmluZGV4IDU5ZDA0MjIuLmQ1
NWQzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJs
ZXIuaApAQCAtMTI0MSw3ICsxMjQxLDcgQEAgcHVibGljOgogCiAgICAgQXNzZW1ibGVyTGFiZWwg
bGFiZWwoKQogICAgIHsKLSAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlPbmVJbnN0
cnVjdGlvbigpOworICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9u
KCk7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZjg2YzE1ZS4u
NGJlYTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpy
ZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNKQogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBHUFJSZWcgc2NyYXRjaCA9
IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhl
bHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKaW5k
ZXggYjYwMjkwOC4uOWMxNzE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ND
YWxsSGVscGVycy5oCkBAIC00MzQsNyArNDM0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
c2V0dXBUd29TdHViQXJnczxGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50
RlBSMT4oYXJnMSwgYXJnMik7CiAgICAgfQotI2Vsc2UKKyNlbGlmIENQVShBUk0pCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQogICAgIHsKICAgICAg
ICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSwgYXJnMSk7CkBAIC00NDUsNiArNDQ1LDggQEAgcHVibGljOgogICAgICAgICBhc3Nl
bWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBhcmcxKTsKICAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMik7CiAgICAgfQorI2Vsc2UKKyNlcnJvciAiREZH
IEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRlBSSW5mby5oCmluZGV4IDZhZjQ1ZGQuLmU4MTdlZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
CiAjZW5kaWYKIAotI2lmIENQVShBUk1fVEhVTUIyKQorI2lmIENQVShBUk0pCiAKIGNsYXNzIEZQ
UkluZm8gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAppbmRl
eCBiZDRmYTMyLi44OWZhZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8u
aApAQCAtMzg0LDcgKzM4NCw3IEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9U
SFVNQjIpCisjaWYgQ1BVKEFSTSkKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyA0CiAKIGNsYXNzIEdQUkluZm8gewpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IEFSTVJlZ2lzdGVyczo6cjE7IC8vIHJl
Z1QxCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBBUk1SZWdpc3RlcnM6
OnIyOyAvLyByZWdUMgogICAgIC8vIEZJWE1FOiByMyBpcyBjdXJyZW50bHkgdXNlZCBiZSB0aGUg
TWFjcm9Bc3NlbWJsZXIgYXMgYSB0ZW1wb3JhcnkgLSBpdCBzZWVtcwotICAgIC8vIFRoaXMgY291
bGQgdGhyZW9yZXRpY2FsbHkgYmUgYSBwcm9ibGVtIGlmIHRoZWlzIGlzIHVzZWQgaW4gY29kZSBn
ZW5lcmF0aW9uCisgICAgLy8gVGhpcyBjb3VsZCB0aHJlb3JldGljYWxseSBiZSBhIHByb2JsZW0g
aWYgdGhpcyBpcyB1c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgogICAgIC8vIGJldHdlZW4gdGhlIGFy
Z3VtZW50cyBiZWluZyBzZXQgdXAsIGFuZCB0aGUgY2FsbCBiZWluZyBtYWRlLiBUaGF0IHNhaWQs
CiAgICAgLy8gYW55IGNoYW5nZSBpbnRyb2R1Y2luZyBhIHByb2JsZW0gaGVyZSBpcyBsaWtlbHkg
dG8gYmUgaW1tZWRpYXRlbHkgYXBwYXJlbnQhCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjMgPSBBUk1SZWdpc3RlcnM6OnIzOyAvLyBGSVhNRSEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDc0YjNmMTkuLjVkNjU3NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMTQwLDYgKzE0
MCw2MiBAQAogICAgICAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikgIldpdGhSZXR1
cm5BZGRyZXNzIiAiXG4iIFwKICAgICApOwogCisjZWxpZiBDT01QSUxFUihHQ0MpICYmIENQVShB
Uk1fVFJBRElUSU9OQUwpCisKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9B
RERSRVNTX0UoZnVuY3Rpb24pIFwKKyAgICBhc20gKCBcCisgICAgIi50ZXh0IiAiXG4iIFwKKyAg
ICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIlxuIiBcCisgICAgSElERV9TWU1C
T0woZnVuY3Rpb24pICJcbiIgXAorICAgIElOTElORV9BUk1fRlVOQ1RJT04oZnVuY3Rpb24pIFwK
KyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiOiIgIlxuIiBcCisgICAgICAgICJtb3YgYTIs
IGxyIiAiXG4iIFwKKyAgICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRo
UmV0dXJuQWRkcmVzcyIgIlxuIiBcCisgICAgKTsKKworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVS
X1dJVEhfUkVUVVJOX0FERFJFU1NfRUNJKGZ1bmN0aW9uKSBcCisgICAgYXNtICggXAorICAgICIu
dGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICJcbiIg
XAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBJTkxJTkVfQVJNX0ZVTkNU
SU9OKGZ1bmN0aW9uKSBcCisgICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoiICJcbiIgXAor
ICAgICAgICAibW92IGE0LCBsciIgIlxuIiBcCisgICAgICAgICJiICIgTE9DQUxfUkVGRVJFTkNF
KGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICk7CisKKy8vIEVuY29k
ZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5n
IGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJlIGFsaWduZWQgZXZlbi1udW1iZXJlZCBy
ZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgorLy8gQXMgYSByZXN1bHQsIHJldHVybiBhZGRyZXNz
IHdpbGwgYmUgYXQgYSA0LWJ5dGUgZnVydGhlciBsb2NhdGlvbiBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzLgorI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0pCisjZGVmaW5lIElO
U1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNTX0VKSSAic3RyIGxyLCBbc3AsICM0XSIKKyNk
ZWZpbmUgSU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FERFJFU1NfRUpDSSAic3RyIGxyLCBbc3As
ICM4XSIKKyNlbHNlCisjZGVmaW5lIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNTX0VK
SSAic3RyIGxyLCBbc3AsICMwXSIKKyNkZWZpbmUgSU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FE
RFJFU1NfRUpDSSAic3RyIGxyLCBbc3AsICM0XSIKKyNlbmRpZgorCisjZGVmaW5lIEZVTkNUSU9O
X1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkkoZnVuY3Rpb24pIFwKKyAgICBhc20gKCBc
CisgICAgIi50ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhmdW5jdGlv
bikgIlxuIiBcCisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAorICAgIElOTElORV9B
Uk1fRlVOQ1RJT04oZnVuY3Rpb24pIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiOiIg
IlxuIiBcCisgICAgICAgIElOU1RSVUNUSU9OX1NUT1JFX1JFVFVSTl9BRERSRVNTX0VKSSAiXG4i
IFwKKyAgICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRk
cmVzcyIgIlxuIiBcCisgICAgKTsKKworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVU
VVJOX0FERFJFU1NfRUpDSShmdW5jdGlvbikgXAorICAgIGFzbSAoIFwKKyAgICAiLnRleHQiICJc
biIgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBI
SURFX1NZTUJPTChmdW5jdGlvbikgIlxuIiBcCisgICAgSU5MSU5FX0FSTV9GVU5DVElPTihmdW5j
dGlvbikgXAorICAgIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICI6IiAiXG4iIFwKKyAgICAgICAg
SU5TVFJVQ1RJT05fU1RPUkVfUkVUVVJOX0FERFJFU1NfRUpDSSAiXG4iIFwKKyAgICAgICAgImIg
IiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCisg
ICAgKTsKKwogI2VuZGlmCiAKICNkZWZpbmUgUF9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJO
X0FERFJFU1NfRShmdW5jdGlvbikgXApAQCAtMTMyMiw2ICsxMzc4LDE3IEBAIFNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKICAgICAibW92IHIwLCByNSIgIlxu
IgogICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCiApOworI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKK2FzbSAoCisiLnRl
eHQiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0lOTElORV9B
Uk1fRlVOQ1RJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkKK1NZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4i
CisgICAgIm1vdiByMCwgcjUiICJcbiIKKyAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKICNlbmRpZgogCiBleHRlcm4g
IkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA4NGIzMDYxLi4xNDMx
NmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xNzIzLDcgKzE3MjMsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYg
IWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTV9USFVNQjIpCisjaWYgIWRlZmluZWQoTkRFQlVH
KSAmJiAhQ1BVKEFSTSkKICAgICB2b2lkIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKQogICAgIHsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZih2b2lkKikgLyA0OyBpKysp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGI1ZWY5OGEuLjU5ZGM1
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC02MjIsMzggKzYy
Miw0NiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCiAjZWxp
ZiBDT01QSUxFUihHQ0MpICYmIENQVShBUk1fVFJBRElUSU9OQUwpCiAKIGFzbSAoCisiLnRleHQi
ICJcbiIKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICJcbiIKIEhJREVf
U1lNQk9MKGN0aVRyYW1wb2xpbmUpICJcbiIKK0lOTElORV9BUk1fRlVOQ1RJT04oY3RpVHJhbXBv
bGluZSkKIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIjoiICJcbiIKICAgICAic3RtZGIg
c3AhLCB7cjEtcjN9IiAiXG4iCi0gICAgInN0bWRiIHNwISwge3I0LXI4LCBscn0iICJcbiIKKyAg
ICAic3RtZGIgc3AhLCB7cjQtcjYsIHI4LXIxMSwgbHJ9IiAiXG4iCiAgICAgInN1YiBzcCwgc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURSNF9PRkZTRVQpICJcbiIKLSAgICAibW92
IHI0LCByMiIgIlxuIgotICAgICJtb3YgcjUsICM1MTIiICJcbiIKKyAgICAibW92IHI1LCByMiIg
IlxuIgorICAgICJtb3YgcjYsICM1MTIiICJcbiIKICAgICAvLyByMCBjb250YWlucyB0aGUgY29k
ZQotICAgICJtb3YgbHIsIHBjIiAiXG4iCi0gICAgIm1vdiBwYywgcjAiICJcbiIKKyAgICAiYmx4
IHIwIiAiXG4iCiAgICAgImFkZCBzcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJW
RURSNF9PRkZTRVQpICJcbiIKLSAgICAibGRtaWEgc3AhLCB7cjQtcjgsIGxyfSIgIlxuIgorICAg
ICJsZG1pYSBzcCEsIHtyNC1yNiwgcjgtcjExLCBscn0iICJcbiIKICAgICAiYWRkIHNwLCBzcCwg
IzEyIiAiXG4iCi0gICAgIm1vdiBwYywgbHIiICJcbiIKKyAgICAiYnggbHIiICJcbiIKKyIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmVFbmQpICJcbiIKK0hJREVfU1lNQk9MKGN0
aVRyYW1wb2xpbmVFbmQpICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZUVuZCkgIjoi
ICJcbiIKICk7CiAKIGFzbSAoCisiLnRleHQiICJcbiIKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCiBISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBv
bGluZSkgIlxuIgorSU5MSU5FX0FSTV9GVU5DVElPTihjdGlWTVRocm93VHJhbXBvbGluZSkKIFNZ
TUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCiAgICAgIm1vdiByMCwg
c3AiICJcbiIKICAgICAiYmwgIiBTWU1CT0xfU1RSSU5HKGN0aV92bV90aHJvdykgIlxuIgogCiAv
LyBCb3RoIGhhcyB0aGUgc2FtZSByZXR1cm4gc2VxdWVuY2UKKyIudGV4dCIgIlxuIgogIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgogSElERV9TWU1CT0wo
Y3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgorSU5MSU5FX0FSTV9GVU5DVElPTihjdGlPcFRocm93
Tm90Q2F1Z2h0KQogU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgog
ICAgICJhZGQgc3AsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEUjRfT0ZGU0VU
KSAiXG4iCi0gICAgImxkbWlhIHNwISwge3I0LXI4LCBscn0iICJcbiIKKyAgICAibGRtaWEgc3Ah
LCB7cjQtcjYsIHI4LXIxMSwgbHJ9IiAiXG4iCiAgICAgImFkZCBzcCwgc3AsICMxMiIgIlxuIgot
ICAgICJtb3YgcGMsIGxyIiAiXG4iCisgICAgImJ4IGxyIiAiXG4iCiApOwogCiAjZWxpZiBDT01Q
SUxFUihSVkNUKSAmJiBDUFUoQVJNX1RIVU1CMikKQEAgLTEwNzgsOCArMTA4Niw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbChKSVRTdGFj
a0ZyYW1lJiBqaXRTdGFja0ZyCiAgICAgICAgICIuYWxpZ24gMiIgIlxuIiBcCiAgICAgICAgICIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aV8jI29wKSAiXG4iIFwKICAgICAgICAgSElERV9TWU1C
T0woY3RpXyMjb3ApICJcbiIgICAgICAgICAgICAgXAotICAgICAgICAiLnRodW1iIiAiXG4iIFwK
LSAgICAgICAgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShjdGlfIyNvcCkgIlxuIiBc
CisgICAgICAgIElOTElORV9BUk1fRlVOQ1RJT04oY3RpXyMjb3ApIFwKICAgICAgICAgU1lNQk9M
X1NUUklORyhjdGlfIyNvcCkgIjoiICJcbiIgXAogICAgICAgICAic3RyIGxyLCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAiXG4iIFwK
ICAgICAgICAgImJsICIgU1lNQk9MX1NUUklORyhKSVRTdHViVGh1bmtlZF8jI29wKSAiXG4iIFwK
QEAgLTExNTYsMTEgKzExNjMsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgdGhy
b3dFeGNlcHRpb25Gcm9tT3BDYWxsKEpJVFN0YWNrRnJhbWUmIGppdFN0YWNrRnIKICAgICB9OyBc
CiAgICAgYXNtICggXAogICAgICAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlfIyNvcCkg
IlxuIiBcCisgICAgICAgIElOTElORV9BUk1fRlVOQ1RJT04oY3RpXyMjb3ApIFwKICAgICAgICAg
U1lNQk9MX1NUUklORyhjdGlfIyNvcCkgIjoiICJcbiIgXAogICAgICAgICAic3RyIGxyLCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAi
XG4iIFwKICAgICAgICAgImJsICIgU1lNQk9MX1NUUklORyhKSVRTdHViVGh1bmtlZF8jI29wKSAi
XG4iIFwKICAgICAgICAgImxkciBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoVEhVTktf
UkVUVVJOX0FERFJFU1NfT0ZGU0VUKSAiXSIgIlxuIiBcCi0gICAgICAgICJtb3YgcGMsIGxyIiAi
XG4iIFwKKyAgICAgICAgImJ4IGxyIiAiXG4iIFwKICAgICAgICAgKTsgXAogICAgIHJ0eXBlIEpJ
VFN0dWJUaHVua2VkXyMjb3AoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmgKaW5kZXggZDJiYzE1ZS4uMjJhMWRkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaApAQCAtMTkwLDggKzE5MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCogcHJlc2VydmVkUjQ7CiAgICAgICAgIHZvaWQqIHByZXNlcnZlZFI1Owog
ICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSNjsKLSAgICAgICAgdm9pZCogcHJlc2VydmVkUjc7CiAg
ICAgICAgIHZvaWQqIHByZXNlcnZlZFI4OworICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSOTsKKyAg
ICAgICAgdm9pZCogcHJlc2VydmVkUjEwOworICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRSMTE7CiAg
ICAgICAgIHZvaWQqIHByZXNlcnZlZExpbms7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlKiByZWdp
c3RlckZpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKaW5k
ZXggMDVkMWNlNS4uNmI3ZGQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRl
cmZhY2VKSVQuaApAQCAtOTQsNyArOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gWDg2UmVnaXN0ZXJzOjp4bW0xOwogICAg
ICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBYODZSZWdpc3RlcnM6Onht
bTI7CiAgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMyA9IFg4NlJlZ2lz
dGVyczo6eG1tMzsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQorI2VsaWYgQ1BVKEFSTSkKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IEFSTVJlZ2lz
dGVyczo6cjA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJl
Z2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKQEAgLTEwNywzNSAr
MTA3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCByZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjE7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDMgPSBBUk1SZWdpc3RlcnM6OnI0OwotICAgICAgICAKKworICAgICAgICAvLyBV
cGRhdGUgY3RpVHJhbXBvbGluZSBpbiBKSVRTdHVicy5jcHAgaWYgdGhlc2UgdmFsdWVzIGFyZSBj
aGFuZ2VkIQogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3Rl
ciA9IEFSTVJlZ2lzdGVyczo6cjU7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRp
bWVvdXRDaGVja1JlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNjsKLSAgICAgICAgCi0gICAgICAg
IHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IEFSTVJlZ2lzdGVyczo6ZDA7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IEFSTVJlZ2lzdGVyczo6
ZDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IEFSTVJlZ2lz
dGVyczo6ZDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMyA9IEFS
TVJlZ2lzdGVyczo6ZDM7Ci0jZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpy
MDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIg
PSBBUk1SZWdpc3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJz
dEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwotICAgICAgICAKLSAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBBUk1SZWdpc3Rl
cnM6OnI1OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3Rl
ciA9IEFSTVJlZ2lzdGVyczo6cjQ7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCByZWdUMCA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmVnVDIgPSBBUk1SZWdpc3RlcnM6OnIyOwotICAgICAgICAvLyBDYWxsZWUg
cHJlc2VydmVkCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QzID0gQVJNUmVn
aXN0ZXJzOjpyNzsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJl
Z1MwID0gQVJNUmVnaXN0ZXJzOjpTMDsKLSAgICAgICAgLy8gQ2FsbGVlIHByZXNlcnZlZAotICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdTMSA9IEFSTVJlZ2lzdGVyczo6UzE7Ci0g
ICAgICAgIAotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdTdGFja1B0ciA9IEFS
TVJlZ2lzdGVyczo6c3A7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ0xpbmsg
PSBBUk1SZWdpc3RlcnM6OmxyOwotICAgICAgICAKKwogICAgICAgICBzdGF0aWMgY29uc3QgRlBS
ZWdpc3RlcklEIGZwUmVnVDAgPSBBUk1SZWdpc3RlcnM6OmQwOwogICAgICAgICBzdGF0aWMgY29u
c3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBBUk1SZWdpc3RlcnM6OmQxOwogICAgICAgICBzdGF0
aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBBUk1SZWdpc3RlcnM6OmQyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAw
OWU1YTc3Li4zZjg3YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTAzICBab2x0YW4g
SGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUG9ydCBERkcgSklUIHRv
IHRyYWRpdGlvbmFsIEFSTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFbmFibGluZyBERkcgSklUIG9uIEFSTSBzeXN0ZW1zIHdpdGggMzIgYml0IGluc3Ry
dWN0aW9uIHNldC4KKworICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKwogMjAxMi0wNi0yOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjE1NzIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBiL1NvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5o
CmluZGV4IDEwY2QxY2MuLmZhMTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0lubGlu
ZUFTTS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oCkBAIC04Myw0ICs4MywxMCBA
QAogI2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkgIi5MIiAjbmFtZQogI2VuZGlmCiAK
KyNpZiBDUFUoQVJNX1RSQURJVElPTkFMKSAmJiAoZGVmaW5lZCh0aHVtYjIpIHx8IGRlZmluZWQo
X190aHVtYjJfXykgfHwgZGVmaW5lZChfX3RodW1iKSB8fCBkZWZpbmVkKF9fdGh1bWJfXykpCisj
ZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkgIi50aHVtYiIgIlxuIiAiLnRodW1iX2Z1
bmMgIiBUSFVNQl9GVU5DX1BBUkFNKG5hbWUpICJcbiIKKyNlbHNlCisjZGVmaW5lIElOTElORV9B
Uk1fRlVOQ1RJT04obmFtZSkKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNNX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCmluZGV4IGQ4YmE5NDcuLjM2NDgxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtOTA2LDYgKzkwNiwx
MCBAQAogI2lmIENQVShBUk1fVEhVTUIyKSAmJiBQTEFURk9STShJT1MpCiAjZGVmaW5lIEVOQUJM
RV9ERkdfSklUIDEKICNlbmRpZgorLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIEFSTS4gKi8KKyNp
ZiBDUFUoQVJNX1RSQURJVElPTkFMKQorI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCisjZW5kaWYK
ICNlbmRpZgogCiAvKiBQcm9maWxpbmcgb2YgdHlwZXMgYW5kIHZhbHVlcyB1c2VkIGJ5IEpJVCBj
b2RlLiBERkdfSklUIGRlcGVuZHMgb24gaXQsIGJ1dCB5b3UKLS0gCjEuNy4yLjUKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>