<?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>84734</bug_id>
          
          <creation_ts>2012-04-24 09:34:52 -0700</creation_ts>
          <short_desc>Rename CSSStyleSelector class to StyleResolver.</short_desc>
          <delta_ts>2012-04-24 12:49:10 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42764</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>608759</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 09:34:52 -0700</bug_when>
    <thetext>Rename CSSStyleSelector class to StyleResolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608760</commentid>
    <comment_count>1</comment_count>
      <attachid>138580</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 09:36:24 -0700</bug_when>
    <thetext>Created attachment 138580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608766</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-24 09:43:13 -0700</bug_when>
    <thetext>Attachment 138580 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/css/CSSStyleSelector.cpp:1503:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:1574:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:1636:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:1756:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:1803:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:2159:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:2164:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:4236:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:4252:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:4260:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:4270:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:5452:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:5529:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.cpp:5749:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSStyleSelector.h:122:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/rendering/style/RenderStyle.h:130:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 73 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>608771</commentid>
    <comment_count>3</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 09:45:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 138580 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebCore/css/CSSStyleSelector.cpp:1503:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:1574:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:1636:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:1756:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:1803:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:2159:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:2164:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:4236:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:4252:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:4260:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:4270:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:5452:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:5529:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.cpp:5749:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSStyleSelector.h:122:  More than one command on the same line  [whitespace/newline] [4]
&gt; Source/WebCore/rendering/style/RenderStyle.h:130:  More than one command on the same line  [whitespace/newline] [4]
&gt; Total errors found: 16 in 73 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

I think we can ignore that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608941</commentid>
    <comment_count>4</comment_count>
      <attachid>138580</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-24 12:34:59 -0700</bug_when>
    <thetext>Comment on attachment 138580
Patch

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

rs=me, now don&apos;t go breaking my heart!

&gt;&gt; Source/WebCore/css/CSSStyleSelector.h:122
&gt;&gt; +    WTF_MAKE_NONCOPYABLE(StyleResolver);WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; More than one command on the same line  [whitespace/newline] [4]

At least put a space after the ;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608951</commentid>
    <comment_count>5</comment_count>
      <attachid>138623</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 12:41:46 -0700</bug_when>
    <thetext>Created attachment 138623
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608955</commentid>
    <comment_count>6</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 12:46:57 -0700</bug_when>
    <thetext>Committed r115097: &lt;http://trac.webkit.org/changeset/115097&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138580</attachid>
            <date>2012-04-24 09:36:24 -0700</date>
            <delta_ts>2012-04-24 12:41:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84734-20120424133606.patch</filename>
            <type>text/plain</type>
            <size>299317</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVmNjQzZDdhMWRhMDJm
MDE4NjliYzFiNDY2YzkzMzdlN2MzYWQ3OC4uNDE1OTljZjBmZWIzNzdjYzMwNzBhNGM4ZjczNjUy
ZGQzZTNlNjNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwOSBAQAorMjAxMi0wNC0yNCAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5h
bWUgQ1NTU3R5bGVTZWxlY3RvciBjbGFzcyB0byBTdHlsZVJlc29sdmVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3MzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbmFtZSBDU1NTdHlsZVNlbGVj
dG9yIGlzIGNvbmZ1c2luZyBhcyBpdCBjb25mbGljdHMgYSBiaXQgd2l0aAorICAgICAgICB0aGUg
Q1NTIGNvbmNlcHQgb2Ygc2VsZWN0b3JzLiBPbmUgY291bGQgdGhpbmsgaXQncyBhbiBlbmNhcHN1
bGF0aW9uCisgICAgICAgIG9mIHRoZSBDU1Mgc2VsZWN0b3JzIGJ1dCBpdCdzIG5vdCwgaW4gZmFj
dCB0aGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlCisgICAgICAgIG9mIGZpbmRpbmcgdGhlIFJlbmRl
clN0eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQuIFRoaXMgaXMgdGhlIGZpcnN0IHBhdGNoCisgICAg
ICAgIGFzIEkgd2lsbCBsYXRlciByZW5hbWUgdGhlIGZpbGVzLCBhbmQgdGhlbiByZW5hbWUgdGhl
IGxvY2FsIHZhcmlhYmxlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiByZW5hbWluZywgbm8g
YmVoYXZpb3IgY2hhbmdlcyBzaG91bGQgYXBwZWFyLgorCisgICAgICAgICogY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVl
Ojp0b0NhbGNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmRpc3BhdGNoSW52YWxpZGF0aW9uQ2FsbGJh
Y2tzKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VTaXplUGFyYW1ldGVyKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6
OmZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6U3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjphZGRBdXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpkZXRl
cm1pbmVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpydWxlU2V0Rm9y
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5
bGVzaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c2V0dXBTY29wZVN0
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnB1c2hTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwb3BTY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpwdXNoUGFyZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpwb3BQYXJlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OnB1c2hQYXJlbnRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OnBvcFBhcmVudFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjp+U3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpz
d2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6RmVhdHVyZXM6OkZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OkZlYXR1cmVzOjp+RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6RmVhdHVyZXM6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpGZWF0
dXJlczo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkTWF0Y2hl
ZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkRWxlbWVu
dFN0eWxlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6Om1hdGNoVXNlclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6Om1hdGNoVUFSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
Lmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKEZlYXR1cmVzKToKKyAgICAg
ICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjpldmFsKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVF1ZXJ5RXZhbHVhdG9yKToK
KyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFRdWVyeU1hdGNoZXI6OnByZXBhcmVFdmFsdWF0b3IpOgorICAgICAgICAqIGNzcy9TVkdD
U1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFw
cGx5U1ZHUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUV4cGFuZGluZzo6YXBwbHlJbmhlcml0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUV4cGFuZGluZzo6YXBwbHlJbml0aWFsVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUV4cGFuZGluZzo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U6OmFwcGx5SW5o
ZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTo6
YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURlZmF1
bHRCYXNlOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZh
dWx0OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlOdW1iZXI6
OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVN0eWxlSW1hZ2U6
OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBdXRvOjphcHBs
eUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXV0bzo6YXBw
bHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q2xpcDo6Y29udmVydFRv
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwOjphcHBseUluaGVy
aXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q2xpcDo6YXBwbHlJbml0
aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbG9yOjphcHBseUluaGVyaXRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29sb3I6OmFwcGx5SW5pdGlh
bFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb2xvcjo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29sb3I6OmFwcGx5Q29sb3JWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGlyZWN0aW9uOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMZW5ndGg6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVN0cmluZzo6YXBwbHlWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVyUmFkaXVzOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5SW5oZXJpdFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5SW5pdGlh
bFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg6OmFw
cGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnQ6OmFwcGx5SW5o
ZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250OjphcHBseUlu
aXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udDo6YXBwbHlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5SW5o
ZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6ZTo6YXBw
bHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXpl
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250V2VpZ2h0
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250VmFyaWFu
dExpZ2F0dXJlczo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6OmFwcGx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyOjph
cHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVy
SW1hZ2VNb2RpZmllcjo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjplbXB0eUZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRlcjo6YXBwbHlWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q3Vyc29yOjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q3Vyc29yOjphcHBseUluaXRpYWxWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q3Vyc29yOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0QWxpZ246OmFwcGx5VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uOjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlVbmljb2RlQmlkaTo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGluZUhlaWdodDo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6OmFwcGx5SW5oZXJpdFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6YXBwbHlJbml0
aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHls
ZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRl
eHRFbXBoYXNpc1N0eWxlOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VGV4dEVtcGhhc2lzU3R5bGU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjptYXApOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6YXBwbHlJbmhlcml0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6YXBwbHlJbml0
aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6YXBw
bHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5T3V0bGluZVN0eWxlOjph
cHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5T3V0bGlu
ZVN0eWxlOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5T3V0bGluZVN0eWxlOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlSZXNpemU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eVZlcnRpY2FsQWxpZ246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9w
ZXJ0eUFzcGVjdFJhdGlvOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6cmVzZXRFZmZlY3RpdmVab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmlzVmFsaWREaXNwbGF5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseUluaXRpYWxWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGlzcGxheTo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmxleDo6YXBwbHlJbmhlcml0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZsZXg6OmFwcGx5SW5pdGlhbFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGbGV4OjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFByb3BlcnR5SGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eUhhbmRsZXI6OmFwcGx5SW5oZXJpdFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5SGFuZGxlcjo6YXBwbHlJbml0aWFsVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlIYW5kbGVyOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlh
OjptYXRjaE1lZGl1bSk6CisgICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6c2V0TmFtZSk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjcmVhdGVTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp0ZXN0QWRkZWRTdHlsZXNoZWV0UmVxdWlyZXNTdHlsZVJlY2FsYyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzdHlsZVNlbGVjdG9ySWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnN0eWxlU2VsZWN0b3IpOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFN0eWxlU2VsZWN0b3JQYXJlbnRQdXNoZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9TaGFkb3dS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVj
YWxjU2hhZG93VHJlZVN0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVz
SW5FbGVtZW50RGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxlZ2FjeUZvbnRTaXpl
RnJvbUNTU1ZhbHVlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRQYWdlOjpyZXN0b3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzdHlsZVNlbGVjdG9y
KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgIChIVE1MQ2Fu
dmFzRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0TWF0
Y2hlZENTU1J1bGVzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojp2aXNpdGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6
OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVy
VGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjphZGp1c3RUZXh0QXJlYVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0Q2hlY2tib3hTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFJhZGlvU3R5bGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5Lmg6CisgICAgICAgIChS
ZW5kZXJUaGVtZUJsYWNrQmVycnkpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVy
VHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xp
ZGVyVGh1bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0
Q2hlY2tib3hTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0
UmFkaW9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0
dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdE1lbnVM
aXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdE1lbnVM
aXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVz
dFRleHRGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1
c3RUZXh0QXJlYVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNo
RmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmg6CisgICAgICAgIChSZW5kZXJUaGVtZUVmbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjphZGp1c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUd0azo6YWRqdXN0TWVudUxpc3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUd0azo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUd0azo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUd0azo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1JlbmRlclRoZW1lR3RrLmg6CisgICAgICAgIChSZW5kZXJUaGVtZUd0ayk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
UXQ6OmFkanVzdFRleHRGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
UXQ6OmFkanVzdFRleHRBcmVhU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6YWRqdXN0TWVudUxpc3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0
OjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lUXQ6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVRdDo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25T
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVs
ZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Jl
bmRlclRoZW1lUXQuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXRNb2JpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVRdE1vYmlsZTo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVRdE1vYmlsZTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVRdE1vYmlsZTo6YWRqdXN0TWVudUxpc3RTdHlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5oOgorICAgICAgICAoUmVuZGVyVGhlbWVR
dE1vYmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHA6CisgICAg
ICAgIChSZW5kZXJUaGVtZVd4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV3g6OmFk
anVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV3g6OmFkanVz
dFRleHRGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV3g6OmFkanVz
dE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6YWRqdXN0
TWVudUxpc3RCdXR0b25TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklucHV0U3Bl
ZWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklucHV0U3BlZWNoOjphZGp1c3RJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbnB1
dFNwZWVjaC5oOgorICAgICAgICAoUmVuZGVySW5wdXRTcGVlY2gpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRq
dXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdENoZWNrYm94
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFJhZGlvU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFRleHRBcmVhU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0TWV0ZXJTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNo
RmllbGREZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOgorICAgICAgICAoUmVuZGVyVGhlbWUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YWRqdXN0SW5uZXJTcGlu
QnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5k
cm9pZC5oOgorICAgICAgICAoUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oOgorICAgICAg
ICAoUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJv
bWl1bVNraWE6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
blN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUNocm9taXVtU2tpYTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUNocm9taXVtU2tpYTo6YWRqdXN0TWVudUxpc3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmg6CisgICAgICAgIChSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNocm9taXVtV2luOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjphZGp1c3RQcm9ncmVzc0JhclN0eWxl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oOgorICAgICAg
ICAoUmVuZGVyVGhlbWVDaHJvbWl1bVdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLmg6CisgICAgICAgIChSZW5kZXJUaGVtZU1hYyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnNl
dEZvbnRGcm9tQ29udHJvbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmFkanVzdFRleHRGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjphZGp1c3RUZXh0QXJlYVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZERlY29y
YXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lU2FmYXJpOjpzZXRGb250RnJvbUNvbnRyb2xTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFRleHRBcmVhU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNsaWRlclRo
dW1iU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNl
YXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFk
anVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lU2FmYXJpKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVXaW46OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
blN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hG
aWVsZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmg6CisgICAgICAgIChSZW5kZXJU
aGVtZVdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6YWRqdXN0QnV0dG9u
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFRleHRGaWVs
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RUZXh0QXJl
YVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRD
YW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjph
ZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRq
dXN0TWVudUxpc3RCdXR0b25TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luQ0UuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lV2luQ0UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0VGV4dEFyZWFTdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppc1N0eWxlQXZhaWxhYmxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y29tcHV0ZU5ld1NjYWxlZEZvbnRGb3JTdHlsZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmlzT3ZlcmZsb3dIaWRkZW4pOgorCiAyMDEyLTA0LTI0
ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGEgYnVuY2ggb2YgaGVhcCBwcm9maWxlciBjbGVhbnVwcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCA1ZmMzMzhmYWM1MTk5ZWRkMWJjZGVlNzcwZDFhZmM5YjRlNWEzMjI3Li5jMzJjMmU0Mzg2
Yjk5N2Q5MzQ1NDZkODhlMjAxZGE2YjIwYzgxNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDEyLTA0LTI0ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFJlbmFtZSBDU1NTdHlsZVNlbGVjdG9yIGNsYXNzIHRvIFN0eWxl
UmVzb2x2ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NDczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBuYW1lIENTU1N0eWxlU2VsZWN0b3IgaXMgY29uZnVzaW5nIGFzIGl0IGNvbmZsaWN0cyBh
IGJpdCB3aXRoCisgICAgICAgIHRoZSBDU1MgY29uY2VwdCBvZiBzZWxlY3RvcnMuIE9uZSBjb3Vs
ZCB0aGluayBpdCdzIGFuIGVuY2Fwc3VsYXRpb24KKyAgICAgICAgb2YgdGhlIENTUyBzZWxlY3Rv
cnMgYnV0IGl0J3Mgbm90LCBpbiBmYWN0IHRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUKKyAgICAg
ICAgb2YgZmluZGluZyB0aGUgUmVuZGVyU3R5bGUgZm9yIGEgZ2l2ZW4gZWxlbWVudC4gVGhpcyBp
cyB0aGUgZmlyc3QgcGF0Y2gKKyAgICAgICAgYXMgSSB3aWxsIGxhdGVyIHJlbmFtZSB0aGUgZmls
ZXMsIGFuZCB0aGVuIHJlbmFtZSB0aGUgbG9jYWwgdmFyaWFibGVzLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVRU3R5bGU6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lUVN0eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTZWFyY2hGaWVs
ZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5oOgorICAgICAgICAoUmVuZGVyVGhlbWVRU3R5
bGUpOgorCiAyMDEyLTA0LTI0ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
IAogICAgICAgICBbUXRdIE1vdmUgbm90aWZpY2F0aW9uIGljb24gZG93bmxvYWQgb3V0IG9mIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA3
ODI4YzY1NDJkM2M4MjFmMzBhNWYzOGU5NWZlNWRlZTJkYThjZWQwLi40MjM4MDA4OTk1OGRkZmM1
NTFhZTkxNTU2ZWYxNzgxZWM4ODYyYzNhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5jb21wdXRl
TGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSkpOwogICAgICAgICBjYXNlIENh
bGNQZXJjZW50OgogICAgICAgICBjYXNlIENhbGNQZXJjZW50TGVuZ3RoOgotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0aChDU1NTdHlsZVNlbGVjdG9y
Ojpjb252ZXJ0VG9GbG9hdExlbmd0aChtX3ZhbHVlLmdldCgpLCBzdHlsZSwgcm9vdFN0eWxlLCB6
b29tKSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxl
bmd0aChTdHlsZVJlc29sdmVyOjpjb252ZXJ0VG9GbG9hdExlbmd0aChtX3ZhbHVlLmdldCgpLCBz
dHlsZSwgcm9vdFN0eWxlLCB6b29tKSkpOwogICAgICAgICAvLyBPbmx5IHR5cGVzIHRoYXQgY291
bGQgYmUgcGFydCBvZiBhIExlbmd0aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0ZWQKICAgICAg
ICAgLy8gdG8gYSBDYWxjRXhwcmVzc2lvbk5vZGUuIENhbGNQZXJjZW50TnVtYmVyIG1ha2VzIG5v
IHNlbnNlIGFzIGEgTGVuZ3RoLgogICAgICAgICBjYXNlIENhbGNQZXJjZW50TnVtYmVyOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA1NzhhOGZlNzE1MzE2YzUwNDE3
OTU5MzFlMTUwNDMzNzVmMWM0NDI5Li5kOGZjOGMzZGFjNWYwY2I2NjJiOGVkMTllNzcwYzA1MDc3
MTNjMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMzMzLDcg
KzMzMyw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpkaXNwYXRjaEludmFsaWRhdGlvbkNhbGxi
YWNrcygpCiAgICAgLy8gRklYTUU6IE1ha2UgRG9jdW1lbnQgYSBGb250U2VsZWN0b3JDbGllbnQg
c28gdGhhdCBpdCBjYW4gc2ltcGx5IHJlZ2lzdGVyIGZvciBpbnZhbGlkYXRpb24gY2FsbGJhY2tz
LgogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChDU1NTdHls
ZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gbV9kb2N1bWVudC0+c3R5bGVTZWxlY3RvcklmRXhp
c3RzKCkpCisgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSBtX2RvY3VtZW50
LT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMoKSkKICAgICAgICAgc3R5bGVTZWxlY3Rvci0+aW52YWxp
ZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsKICAgICBpZiAobV9kb2N1bWVudC0+aW5QYWdl
Q2FjaGUoKSB8fCAhbV9kb2N1bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkODBiODgxM2FiNjliY2QzYWM2ODliZGE0YTkwZjcw
Y2JiNDg2N2YyLi4yY2JkNjA4NmJhYTAxMTdhYjQwYTI3NjNkMWNmOTE4ODMxZjcwZTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzAwOSw3ICszMDA5LDcgQEAgQ1NTUGFyc2VyOjpT
aXplUGFyYW1ldGVyVHlwZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRlcihDU1NWYWx1ZUxp
c3QqIHBhcnNlZFYKICAgICBjYXNlIENTU1ZhbHVlTGV0dGVyOgogICAgICAgICBpZiAocHJldlBh
cmFtVHlwZSA9PSBOb25lIHx8IHByZXZQYXJhbVR5cGUgPT0gT3JpZW50YXRpb24pIHsKICAgICAg
ICAgICAgIC8vIE5vcm1hbGl6ZSB0byBQYWdlIFNpemUgdGhlbiBPcmllbnRhdGlvbiBvcmRlciBi
eSBwcmVwZW5kaW5nLgotICAgICAgICAgICAgLy8gVGhpcyBpcyBub3Qgc3BlY2lmaWVkIGJ5IHRo
ZSBDU1MzIFBhZ2VkIE1lZGlhIHNwZWNpZmljYXRpb24sIGJ1dCBmb3Igc2ltcGxlciBwcm9jZXNz
aW5nIGxhdGVyIChDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpLgorICAg
ICAgICAgICAgLy8gVGhpcyBpcyBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBDU1MzIFBhZ2VkIE1lZGlh
IHNwZWNpZmljYXRpb24sIGJ1dCBmb3Igc2ltcGxlciBwcm9jZXNzaW5nIGxhdGVyIChTdHlsZVJl
c29sdmVyOjphcHBseVBhZ2VTaXplUHJvcGVydHkpLgogICAgICAgICAgICAgcGFyc2VkVmFsdWVz
LT5wcmVwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS0+aWQp
KTsKICAgICAgICAgICAgIHJldHVybiBQYWdlU2l6ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGQ4N2M5ZGVlZThmZjE4YTI1MzA3YjVjOWJh
M2YwNTU1OTZjNzQxZGMuLjFhZTA1MWJkMjQ1Y2MyOTg5ZjNkZjkyNzg0YTc5NDI3MmRiZGIyNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTIzNSw3ICsyMzUs
NyBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93
blB0cjxWZWN0b3I8UnVsZURhdGE+ID4gPiBBdG9tUnVsZU1hcDsKIAotICAgIHZvaWQgYWRkUnVs
ZXNGcm9tU2hlZXQoU3R5bGVTaGVldEludGVybmFsKiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYsIENTU1N0eWxlU2VsZWN0b3IqID0gMCwgY29uc3QgQ29udGFpbmVyTm9kZSogPSAwKTsKKyAg
ICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRJbnRlcm5hbCosIGNvbnN0IE1lZGlh
UXVlcnlFdmFsdWF0b3ImLCBTdHlsZVJlc29sdmVyKiA9IDAsIGNvbnN0IENvbnRhaW5lck5vZGUq
ID0gMCk7CiAKICAgICB2b2lkIGFkZFN0eWxlUnVsZShTdHlsZVJ1bGUqLCBib29sIGhhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaXNJ
blJlZ2lvblJ1bGUgPSBmYWxzZSk7CiAgICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVsZSosIENTU1Nl
bGVjdG9yKiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZhc3RD
aGVja1NlbGVjdG9yLCBib29sIGlzSW5SZWdpb25SdWxlID0gZmFsc2UpOwpAQCAtMjQ1LDcgKzI0
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAgICAgdm9pZCBkaXNhYmxl
QXV0b1Nocmlua1RvRml0KCkgeyBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQgPSBmYWxzZTsgfQog
Ci0gICAgY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6RmVhdHVyZXMmIGZlYXR1cmVzKCkgY29uc3Qg
eyByZXR1cm4gbV9mZWF0dXJlczsgfQorICAgIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OkZlYXR1cmVz
JiBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXM7IH0KIAogICAgIGNvbnN0IFZl
Y3RvcjxSdWxlRGF0YT4qIGlkUnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSBjb25zdCB7IHJl
dHVybiBtX2lkUnVsZXMuZ2V0KGtleSk7IH0KICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBj
bGFzc1J1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1J1
bGVzLmdldChrZXkpOyB9CkBAIC0yNjksNyArMjY5LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxT
dHlsZVJ1bGVQYWdlKj4gbV9wYWdlUnVsZXM7CiAgICAgdW5zaWduZWQgbV9ydWxlQ291bnQ7CiAg
ICAgYm9vbCBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQ7Ci0gICAgQ1NTU3R5bGVTZWxlY3Rvcjo6
RmVhdHVyZXMgbV9mZWF0dXJlczsKKyAgICBTdHlsZVJlc29sdmVyOjpGZWF0dXJlcyBtX2ZlYXR1
cmVzOwogCiAgICAgc3RydWN0IFJ1bGVTZXRTZWxlY3RvclBhaXIgewogICAgICAgICBSdWxlU2V0
U2VsZWN0b3JQYWlyKENTU1NlbGVjdG9yKiBzZWxlY3RvciwgUGFzc093blB0cjxSdWxlU2V0PiBy
dWxlU2V0KSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgcnVsZVNldChydWxlU2V0KSB7IH0KQEAgLTI5
Myw3ICsyOTMsNyBAQCBzdGF0aWMgU3R5bGVTaGVldEludGVybmFsKiBtYXRoTUxTdHlsZVNoZWV0
Owogc3RhdGljIFN0eWxlU2hlZXRJbnRlcm5hbCogbWVkaWFDb250cm9sc1N0eWxlU2hlZXQ7CiBz
dGF0aWMgU3R5bGVTaGVldEludGVybmFsKiBmdWxsc2NyZWVuU3R5bGVTaGVldDsKIAotUmVuZGVy
U3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CitSZW5kZXJT
dHlsZSogU3R5bGVSZXNvbHZlcjo6c19zdHlsZU5vdFlldEF2YWlsYWJsZTsKIAogc3RhdGljIHZv
aWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0
U3R5bGUoKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0eVNldCogcmln
aHRUb0xlZnREZWNsYXJhdGlvbigpCiAgICAgcmV0dXJuIHJpZ2h0VG9MZWZ0RGVjbC5nZXQoKTsK
IH0KIAotQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bWVudCogZG9jdW1l
bnQsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQorU3R5bGVSZXNvbHZlcjo6U3R5bGVS
ZXNvbHZlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVz
KQogICAgIDogbV9oYXNVQUFwcGVhcmFuY2UoZmFsc2UpCiAgICAgLCBtX2JhY2tncm91bmREYXRh
KEJhY2tncm91bmRGaWxsTGF5ZXIpCiAgICAgLCBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBZGRp
dGlvbnNTaW5jZUxhc3RTd2VlcCgwKQpAQCAtNDE4LDcgKzQxOCw3IEBAIENTU1N0eWxlU2VsZWN0
b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9y
QW5kVXNlclN0CiAgICAgYXBwZW5kQXV0aG9yU3R5bGVzaGVldHMoMCwgZG9jdW1lbnQtPnN0eWxl
U2hlZXRzKCktPnZlY3RvcigpKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRBdXRo
b3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3R5bGVTaGVldEludGVybmFsPiA+KiB1c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCit2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEF1dGhvclJ1bGVzQW5kQ29sbGVjdFVzZXJSdWxlc0Zyb21T
aGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0SW50ZXJuYWw+ID4qIHVzZXJTaGVl
dHMsIFJ1bGVTZXQmIHVzZXJTdHlsZSkKIHsKICAgICBpZiAoIXVzZXJTaGVldHMpCiAgICAgICAg
IHJldHVybjsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZEF1
dGhvclJ1bGVzQW5kQ29sbGVjdFVzZXJSdWxlc0Zyb21TaGVldHMoY29uc3QgVmVjdG9yPAogICAg
IH0KIH0KIAotc3RhdGljIFBhc3NPd25QdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVj
dG9yPENTU1N0eWxlU2VsZWN0b3I6OlJ1bGVGZWF0dXJlPiYgcnVsZXMpCitzdGF0aWMgUGFzc093
blB0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8U3R5bGVSZXNvbHZlcjo6UnVs
ZUZlYXR1cmU+JiBydWxlcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAg
ICBpZiAoIXNpemUpCkBAIC00NDQsNyArNDQ0LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8UnVsZVNl
dD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPENTU1N0eWxlU2VsZWN0b3I6OlJ1bGVGZWF0dXIK
ICAgICByZXR1cm4gcnVsZVNldC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y29sbGVjdEZlYXR1cmVzKCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdEZlYXR1cmVz
KCkKIHsKICAgICBtX2ZlYXR1cmVzLmNsZWFyKCk7CiAgICAgLy8gQ29sbGVjdCBhbGwgaWRzIGFu
ZCBydWxlcyB1c2luZyBzaWJsaW5nIHNlbGVjdG9ycyAoOmZpcnN0LWNoaWxkIGFuZCBzaW1pbGFy
KQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdEZlYXR1
cmVzKCkKIH0KIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi1jb25zdCBDb250YWluZXJOb2Rl
KiBDU1NTdHlsZVNlbGVjdG9yOjpkZXRlcm1pbmVTY29wZShjb25zdCBTdHlsZVNoZWV0SW50ZXJu
YWwqIHNoZWV0KQorY29uc3QgQ29udGFpbmVyTm9kZSogU3R5bGVSZXNvbHZlcjo6ZGV0ZXJtaW5l
U2NvcGUoY29uc3QgU3R5bGVTaGVldEludGVybmFsKiBzaGVldCkKIHsKICAgICBBU1NFUlQoc2hl
ZXQpOwogCkBAIC00ODYsNyArNDg2LDcgQEAgY29uc3QgQ29udGFpbmVyTm9kZSogQ1NTU3R5bGVT
ZWxlY3Rvcjo6ZGV0ZXJtaW5lU2NvcGUoY29uc3QgU3R5bGVTaGVldEludGVybmFsKgogICAgIHJl
dHVybiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgfHwgcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkg
PyBwYXJlbnQgOiAwOwogfQogCi1pbmxpbmUgUnVsZVNldCogQ1NTU3R5bGVTZWxlY3Rvcjo6cnVs
ZVNldEZvclNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKSBjb25zdAoraW5saW5lIFJ1
bGVTZXQqIFN0eWxlUmVzb2x2ZXI6OnJ1bGVTZXRGb3JTY29wZShjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSkgY29uc3QKIHsKICAgICBpZiAoIXNjb3BlLT5oYXNTY29wZWRIVE1MU3R5bGVDaGls
ZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBpbmxpbmUgUnVsZVNl
dCogQ1NTU3R5bGVTZWxlY3Rvcjo6cnVsZVNldEZvclNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlKSBjbwogfQogI2VuZGlmCiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwZW5kQXV0
aG9yU3R5bGVzaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVTaGVldD4gPiYgc3R5bGVzaGVldHMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhv
clN0eWxlc2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxl
U2hlZXQ+ID4mIHN0eWxlc2hlZXRzKQogewogICAgIC8vIFRoaXMgaGFuZGxlcyBzaGVldHMgYWRk
ZWQgdG8gdGhlIGVuZCBvZiB0aGUgc3R5bGVzaGVldCBsaXN0IG9ubHkuIEluIG90aGVyIGNhc2Vz
IHRoZSBzdHlsZSByZXNvbHZlcgogICAgIC8vIG5lZWRzIHRvIGJlIHJlY29uc3RydWN0ZWQuIFRv
IGhhbmRsZSBpbnNlcnRpb25zIHRvbyB0aGUgcnVsZSBvcmRlciBudW1iZXJzIHdvdWxkIG5lZWQg
dG8gYmUgdXBkYXRlZC4KQEAgLTUyNyw3ICs1MjcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8
UgogfQogCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
c2V0dXBTY29wZVN0YWNrKGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCkKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6c2V0dXBTY29wZVN0YWNrKGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCkKIHsK
ICAgICAvLyBUaGUgc2NvcGluZyBlbGVtZW50IHN0YWNrIHNob3VsZG4ndCBiZSB1c2VkIGlmIDxz
dHlsZSBzY29wZWQ+IGlzbid0IHVzZWQgYW55d2hlcmUuCiAgICAgQVNTRVJUKCFtX3Njb3BlZEF1
dGhvclN0eWxlcy5pc0VtcHR5KCkpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6c2V0dXBTY29wZVN0YWNrKGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCkKICAg
ICBtX3Njb3BlU3RhY2tQYXJlbnQgPSBwYXJlbnQ7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6cHVzaFNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZVBhcmVudCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFNjb3BlKGNvbnN0IENv
bnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCkKIHsK
ICAgICAvLyBTaG9ydGN1dDogRG9uJ3QgYm90aGVyIHdpdGggdGhlIHNjb3BpbmcgZWxlbWVudCBz
dGFjayBpZiA8c3R5bGUgc2NvcGVkPiBpc24ndCB1c2VkIGFueXdoZXJlLgogICAgIGlmIChtX3Nj
b3BlZEF1dGhvclN0eWxlcy5pc0VtcHR5KCkpIHsKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OnB1c2hTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29u
c3QgQ29udGFpbmVyTm9kZQogICAgIG1fc2NvcGVTdGFja1BhcmVudCA9IHNjb3BlOwogfQogCi12
b2lkIENTU1N0eWxlU2VsZWN0b3I6OnBvcFNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
KQordm9pZCBTdHlsZVJlc29sdmVyOjpwb3BTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZSkKIHsKICAgICAvLyBPbmx5IGJvdGhlciB0byB1cGRhdGUgdGhlIHNjb3BpbmcgZWxlbWVudCBz
dGFjayBpZiBpdCBpcyBjb25zaXN0ZW50LgogICAgIGlmIChzY29wZVN0YWNrSXNDb25zaXN0ZW50
KHNjb3BlKSkgewpAQCAtNTczLDcgKzU3Myw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cG9w
U2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB9CiAjZW5kaWYKIAotdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpwdXNoUGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCit2b2lkIFN0
eWxlUmVzb2x2ZXI6OnB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKICAgICBj
b25zdCBDb250YWluZXJOb2RlKiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RF
bGVtZW50KCk7CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnB1
c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKICAgICBwdXNoU2NvcGUocGFyZW50LCBw
YXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
cG9wUGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OnBv
cFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogewogICAgIC8vIE5vdGUgdGhhdCB3ZSBt
YXkgZ2V0IGludm9rZWQgZm9yIHNvbWUgcmFuZG9tIGVsZW1lbnRzIGluIHNvbWUgd2Fja3kgY2Fz
ZXMgZHVyaW5nIHN0eWxlIHJlc29sdmUuCiAgICAgLy8gUGF1c2UgbWFpbnRhaW5pbmcgdGhlIHN0
YWNrIGluIHRoaXMgY2FzZS4KQEAgLTU5OSwzMSArNTk5LDMxIEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6cG9wUGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCiAgICAgcG9wU2NvcGUocGFy
ZW50KTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpwdXNoUGFyZW50U2hhZG93Um9vdChj
b25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQordm9pZCBTdHlsZVJlc29sdmVyOjpwdXNoUGFy
ZW50U2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQogewogICAgIEFTU0VS
VChzaGFkb3dSb290LT5ob3N0KCkpOwogICAgIHB1c2hTY29wZShzaGFkb3dSb290LCBzaGFkb3dS
b290LT5ob3N0KCkpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OnBvcFBhcmVudFNoYWRv
d1Jvb3QoY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
cG9wUGFyZW50U2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQogewogICAg
IEFTU0VSVChzaGFkb3dSb290LT5ob3N0KCkpOwogICAgIHBvcFNjb3BlKHNoYWRvd1Jvb3QpOwog
fQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBzZXR0aW5nIGZ1bmN0aW9uIGZvciBr
ZXlmcmFtZSBzdHlsZXMKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkS2V5ZnJhbWVTdHlsZShQ
YXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
YWRkS2V5ZnJhbWVTdHlsZShQYXNzUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSkKIHsK
ICAgICBBdG9taWNTdHJpbmcgcyhydWxlLT5uYW1lKCkpOwogICAgIG1fa2V5ZnJhbWVzUnVsZU1h
cC5zZXQocy5pbXBsKCksIHJ1bGUpOwogfQogCi1DU1NTdHlsZVNlbGVjdG9yOjp+Q1NTU3R5bGVT
ZWxlY3RvcigpCitTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCiB7CiAgICAgbV9mb250
U2VsZWN0b3ItPmNsZWFyRG9jdW1lbnQoKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpz
d2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKQordm9pZCBTdHlsZVJlc29sdmVyOjpzd2VlcE1h
dGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKQogewogICAgIC8vIExvb2sgZm9yIGNhY2hlIGVudHJpZXMg
Y29udGFpbmluZyBhIHN0eWxlIGRlY2xhcmF0aW9uIHdpdGggYSBzaW5nbGUgcmVmIGFuZCByZW1v
dmUgdGhlbS4KICAgICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhbiBlbGVtZW50IGF0dHJpYnV0
ZSBtdXRhdGlvbiBjYXVzZXMgaXQgdG8gc3dhcCBvdXQgaXRzIEF0dHJpYnV0ZTo6ZGVjbCgpCkBA
IC02NDQsMTggKzY0NCwxOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnN3ZWVwTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSgpCiAgICAgICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5yZW1vdmUo
dG9SZW1vdmVbaV0pOwogfQogCi1DU1NTdHlsZVNlbGVjdG9yOjpGZWF0dXJlczo6RmVhdHVyZXMo
KQorU3R5bGVSZXNvbHZlcjo6RmVhdHVyZXM6OkZlYXR1cmVzKCkKICAgICA6IHVzZXNGaXJzdExp
bmVSdWxlcyhmYWxzZSkKICAgICAsIHVzZXNCZWZvcmVBZnRlclJ1bGVzKGZhbHNlKQogICAgICwg
dXNlc0xpbmtSdWxlcyhmYWxzZSkKIHsKIH0KIAotQ1NTU3R5bGVTZWxlY3Rvcjo6RmVhdHVyZXM6
On5GZWF0dXJlcygpCitTdHlsZVJlc29sdmVyOjpGZWF0dXJlczo6fkZlYXR1cmVzKCkKIHsKIH0K
ICAgICAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6RmVhdHVyZXM6OmFkZChjb25zdCBDU1NTdHls
ZVNlbGVjdG9yOjpGZWF0dXJlcyYgb3RoZXIpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OkZlYXR1cmVz
OjphZGQoY29uc3QgU3R5bGVSZXNvbHZlcjo6RmVhdHVyZXMmIG90aGVyKQogewogICAgIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+OjppdGVyYXRvciBlbmQgPSBvdGhlci5pZHNJblJ1bGVzLmVu
ZCgpOwogICAgIGZvciAoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj46Oml0ZXJhdG9yIGl0ID0g
b3RoZXIuaWRzSW5SdWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCkBAIC02NzAsNyArNjcw
LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpGZWF0dXJlczo6YWRkKGNvbnN0IENTU1N0eWxl
U2VsZWN0b3I6OkZlYXR1cmVzJiBvdGhlcikKICAgICB1c2VzTGlua1J1bGVzID0gdXNlc0xpbmtS
dWxlcyB8fCBvdGhlci51c2VzTGlua1J1bGVzOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6
OkZlYXR1cmVzOjpjbGVhcigpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OkZlYXR1cmVzOjpjbGVhcigp
CiB7CiAgICAgaWRzSW5SdWxlcy5jbGVhcigpOwogICAgIGF0dHJzSW5SdWxlcy5jbGVhcigpOwpA
QCAtNzkwLDcgKzc5MCw3IEBAIHN0YXRpYyB2b2lkIGVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0Zv
ckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKICAgICBBU1NFUlQobWF0aE1MU3R5bGVTaGVldCB8
fCBkZWZhdWx0U3R5bGUtPmZlYXR1cmVzKCkuc2libGluZ1J1bGVzLmlzRW1wdHkoKSk7CiB9CiAK
LXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQm
IG1hdGNoUmVzdWx0LCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqIHJ1
bGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUsIGJvb2wgaW5SZWdpb25SdWxlKQordm9pZCBTdHls
ZVJlc29sdmVyOjphZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQs
IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQg
bGlua01hdGNoVHlwZSwgYm9vbCBpblJlZ2lvblJ1bGUpCiB7CiAgICAgbWF0Y2hSZXN1bHQubWF0
Y2hlZFByb3BlcnRpZXMuZ3JvdyhtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkg
KyAxKTsKICAgICBNYXRjaGVkUHJvcGVydGllcyYgbmV3UHJvcGVydGllcyA9IG1hdGNoUmVzdWx0
Lm1hdGNoZWRQcm9wZXJ0aWVzLmxhc3QoKTsKQEAgLTgwMCw3ICs4MDAsNyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiBtYXRjaFJlc3Vs
dCwgU3R5bGVQcm9wZQogICAgIG1hdGNoUmVzdWx0Lm1hdGNoZWRSdWxlcy5hcHBlbmQocnVsZSk7
CiB9CiAKLWlubGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZEVsZW1lbnRTdHlsZVByb3Bl
cnRpZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydHlTZXQs
IGJvb2wgaXNDYWNoZWFibGUpCitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRFbGVtZW50
U3R5bGVQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIFN0eWxlUHJvcGVydHlTZXQqIHBy
b3BlcnR5U2V0LCBib29sIGlzQ2FjaGVhYmxlKQogewogICAgIGlmICghcHJvcGVydHlTZXQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTgxMiw3ICs4MTIsNyBAQCBpbmxpbmUgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIFN0
eQogICAgICAgICByZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKIH0KIAotdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiBydWxlcywgaW50JiBmaXJz
dFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmIG9wdGlv
bnMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqIHJ1
bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNo
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQocnVsZXMpOwogICAgIEFTU0VSVChtX2Vs
ZW1lbnQpOwpAQCAtODQxLDcgKzg0MSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVj
dE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsCiAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT51bml2ZXJzYWxSdWxlcygpLCBmaXJz
dFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oUnVsZVNldCogcnVsZXMsIGlu
dCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25z
JiBvcHRpb25zKQordm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJl
Z2lvbihSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUlu
ZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX3JlZ2lvbkZv
clN0eWxpbmcpCiAgICAgICAgIHJldHVybjsKQEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqIHJ1bGVz
LCBpbnQmIGZpcnN0UgogICAgIH0KIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzb3J0QW5k
VHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNv
bHZlcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiB7
CiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODg1LDcgKzg4NSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c29ydEFuZFRyYW5zZmVyTWF0
Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiAgICAgfQogfQogCi12b2lkIENTU1N0eWxl
U2VsZWN0b3I6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcykKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRo
b3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogewog
I2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgaWYgKG1fc2NvcGVkQXV0aG9yU3R5bGVzLmlz
RW1wdHkoKSkKQEAgLTkxNiw3ICs5MTYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNo
U2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRQogI2Vu
ZGlmCiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJl
c3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQordm9pZCBTdHlsZVJlc29sdmVy
OjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpCiB7CiAgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKICAgICByZXN1bHQucmFuZ2Vz
Lmxhc3RBdXRob3JSdWxlID0gcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDE7CkBA
IC05MzQsNyArOTM0LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEF1dGhvclJ1bGVz
KE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnUKICAgICBzb3J0QW5kVHJh
bnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpt
YXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
KQordm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIGlmICghbV91c2VyU3R5bGUpCiAgICAg
ICAgIHJldHVybjsKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1h
dGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZQog
ICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQogCi12b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hdGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBSdWxlU2V0KiBy
dWxlcykKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1
bHQsIFJ1bGVTZXQqIHJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CiAgICAg
CkBAIC05ODcsNyArOTg3LDcgQEAgaW5saW5lIGJvb2wgTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6Omlz
TWF0Y2hpbmdVQVJ1bGVzKCkKIAogYm9vbCBNYXRjaGluZ1VBUnVsZXNTY29wZTo6bV9tYXRjaGlu
Z1VBUnVsZXMgPSBmYWxzZTsKIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hp
bmdSdWxlc0Zvckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGludCYgZmlyc3RS
dWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25z
KQordm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3Qg
VmVjdG9yPFJ1bGVEYXRhPiogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1
bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghcnVsZXMp
CiAgICAgICAgIHJldHVybjsKQEAgLTEwNjcsMTIgKzEwNjcsMTIgQEAgc3RhdGljIGlubGluZSBi
b29sIGNvbXBhcmVSdWxlcyhjb25zdCBSdWxlRGF0YSogcjEsIGNvbnN0IFJ1bGVEYXRhKiByMikK
ICAgICByZXR1cm4gKHNwZWNpZmljaXR5MSA9PSBzcGVjaWZpY2l0eTIpID8gcjEtPnBvc2l0aW9u
KCkgPCByMi0+cG9zaXRpb24oKSA6IHNwZWNpZmljaXR5MSA8IHNwZWNpZmljaXR5MjsKIH0KIAot
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzb3J0TWF0Y2hlZFJ1bGVzKCkKK3ZvaWQgU3R5bGVSZXNv
bHZlcjo6c29ydE1hdGNoZWRSdWxlcygpCiB7CiAgICAgc3RkOjpzb3J0KG1fbWF0Y2hlZFJ1bGVz
LmJlZ2luKCksIG1fbWF0Y2hlZFJ1bGVzLmVuZCgpLCBjb21wYXJlUnVsZXMpOwogfQogCi12b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3Zv
aWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBbGxSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogewog
ICAgIG1hdGNoVUFSdWxlcyhyZXN1bHQpOwogCkBAIC0xMTE3LDcgKzExMTcsNyBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKICNlbmRp
ZgogfQogCi1pbmxpbmUgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0RWxlbWVudChFbGVtZW50
KiBlKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEVsZW1lbnQoRWxlbWVudCogZSkK
IHsKICAgICBpZiAobV9lbGVtZW50ICE9IGUpIHsKICAgICAgICAgbV9lbGVtZW50ID0gZTsKQEAg
LTExMzAsNyArMTEzMCw3IEBAIGlubGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmluaXRFbGVt
ZW50KEVsZW1lbnQqIGUpCiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
Ojppbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSwgUHNldWRvSWQgcHNldWRvSUQpCitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjppbml0Rm9y
U3R5bGVSZXNvbHZlKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgUHNldWRv
SWQgcHNldWRvSUQpCiB7CiAgICAgbV9jaGVja2VyLnNldFBzZXVkb1N0eWxlKHBzZXVkb0lEKTsK
IApAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5p
dEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW4KIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBjU3R5bGVTZWFyY2hUaHJlc2hvbGQgPSAxMDsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjU3R5bGVTZWFyY2hMZXZlbFRocmVzaG9sZCA9IDEwOwogCi1Ob2RlKiBDU1NTdHls
ZVNlbGVjdG9yOjpsb2NhdGVDb3VzaW5MaXN0KEVsZW1lbnQqIHBhcmVudCwgdW5zaWduZWQmIHZp
c2l0ZWROb2RlQ291bnQpIGNvbnN0CitOb2RlKiBTdHlsZVJlc29sdmVyOjpsb2NhdGVDb3VzaW5M
aXN0KEVsZW1lbnQqIHBhcmVudCwgdW5zaWduZWQmIHZpc2l0ZWROb2RlQ291bnQpIGNvbnN0CiB7
CiAgICAgaWYgKHZpc2l0ZWROb2RlQ291bnQgPj0gY1N0eWxlU2VhcmNoVGhyZXNob2xkICogY1N0
eWxlU2VhcmNoTGV2ZWxUaHJlc2hvbGQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTIwNCw3ICsx
MjA0LDcgQEAgTm9kZSogQ1NTU3R5bGVTZWxlY3Rvcjo6bG9jYXRlQ291c2luTGlzdChFbGVtZW50
KiBwYXJlbnQsIHVuc2lnbmVkJiB2aXNpdGVkTm9kZUMKICAgICByZXR1cm4gMDsKIH0KIAotYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaGVzUnVsZVNldChSdWxlU2V0KiBydWxlU2V0KQorYm9v
bCBTdHlsZVJlc29sdmVyOjptYXRjaGVzUnVsZVNldChSdWxlU2V0KiBydWxlU2V0KQogewogICAg
IGlmICghcnVsZVNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIxOSw3ICsxMjE5LDcg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaGVzUnVsZVNldChSdWxlU2V0KiBydWxlU2V0
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJl
U3R5bGVXaXRoQ29udHJvbChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAorYm9vbCBTdHls
ZVJlc29sdmVyOjpjYW5TaGFyZVN0eWxlV2l0aENvbnRyb2woU3R5bGVkRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiB0aGlzSW5wdXRFbGVtZW50ID0gZWxl
bWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBvdGhlcklucHV0
RWxlbWVudCA9IG1fZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKQEAgLTEyOTIsNyArMTI5Miw3
IEBAIGlubGluZSBib29sIGVsZW1lbnRIYXNEaXJlY3Rpb25BdXRvKEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgcmV0dXJuIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiB0b0hUTUxFbGVtZW50KGVs
ZW1lbnQpLT5oYXNEaXJlY3Rpb25BdXRvKCk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6
Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Citi
b29sIFN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50
KiBlbGVtZW50KSBjb25zdAogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGVsZW1lbnQtPnJl
bmRlclN0eWxlKCk7CiAKQEAgLTE0MDcsNyArMTQwNyw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBTdHlsZWRFbGVtZW50KiBDU1NTdHlsZVNl
bGVjdG9yOjpmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2RlKiBub2RlLCB1bnNpZ25lZCYg
Y291bnQpIGNvbnN0CitpbmxpbmUgU3R5bGVkRWxlbWVudCogU3R5bGVSZXNvbHZlcjo6ZmluZFNp
YmxpbmdGb3JTdHlsZVNoYXJpbmcoTm9kZSogbm9kZSwgdW5zaWduZWQmIGNvdW50KSBjb25zdAog
ewogICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAg
ICAgICAgaWYgKCFub2RlLT5pc1N0eWxlZEVsZW1lbnQoKSkKQEAgLTE0MjgsNyArMTQyOCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJlbnRTdHlsZVByZXZlbnRzU2hhcmluZyhjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUpCiAgICAgICAgIHx8IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CiB9CiAKLVJlbmRlclN0eWxlKiBDU1NTdHls
ZVNlbGVjdG9yOjpsb2NhdGVTaGFyZWRTdHlsZSgpCitSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZl
cjo6bG9jYXRlU2hhcmVkU3R5bGUoKQogewogICAgIGlmICghbV9zdHlsZWRFbGVtZW50IHx8ICFt
X3BhcmVudFN0eWxlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIFJl
bmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpsb2NhdGVTaGFyZWRTdHlsZSgpCiAgICAgcmV0
dXJuIHNoYXJlRWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjptYXRjaFVBUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZl
cjo6bWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgTWF0Y2hpbmdVQVJ1
bGVzU2NvcGUgc2NvcGU7CiAKQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiAgICAgfQogfQogCi1QYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KERv
Y3VtZW50KiBkb2N1bWVudCwgQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCitQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckRvY3VtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAKQEAgLTE1NTEsMTAgKzE1NTEsMTAgQEAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JEb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQsIEMKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZh
bWlseSgpLmFwcGVuZEZhbWlseSgwKTsKICAgICAgICAgfQogICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0S2V5d29yZFNpemUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsK
LSAgICAgICAgaW50IHNpemUgPSBDU1NTdHlsZVNlbGVjdG9yOjpmb250U2l6ZUZvcktleXdvcmQo
ZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVtLCBmYWxzZSk7CisgICAgICAgIGludCBzaXplID0gU3R5
bGVSZXNvbHZlcjo6Zm9udFNpemVGb3JLZXl3b3JkKGRvY3VtZW50LCBDU1NWYWx1ZU1lZGl1bSwg
ZmFsc2UpOwogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsK
ICAgICAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgp
OwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKENTU1N0eWxlU2VsZWN0
b3I6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKGRvY3VtZW50LCBkb2N1bWVudFN0
eWxlLmdldCgpLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgc2l6ZSwgdXNlU1ZH
Wm9vbVJ1bGVzKSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoU3R5
bGVSZXNvbHZlcjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoZG9jdW1lbnQsIGRv
Y3VtZW50U3R5bGUuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBzaXpl
LCB1c2VTVkdab29tUnVsZXMpKTsKICAgICB9CiAKICAgICBkb2N1bWVudFN0eWxlLT5zZXRGb250
RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKQEAgLTE1NzEsNyArMTU3MSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0F0U2hhZG93Qm91bmRhcnkoRWxlbWVudCogZWxlbWVudCkKICAgICBy
ZXR1cm4gcGFyZW50Tm9kZSAmJiBwYXJlbnROb2RlLT5pc1NoYWRvd1Jvb3QoKTsKIH0KIAotUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LAorUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LAogICAgIFN0eWxlU2hhcmluZ0JlaGF2aW9y
IHNoYXJpbmdCZWhhdmlvciwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwg
UmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKQogewogICAgIC8vIE9uY2UgYW4gZWxlbWVu
dCBoYXMgYSByZW5kZXJlciwgd2UgZG9uJ3QgdHJ5IHRvIGRlc3Ryb3kgaXQsIHNpbmNlIG90aGVy
d2lzZSB0aGUgcmVuZGVyZXIKQEAgLTE2MzMsNyArMTYzMyw3IEBAIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50
LCBSZW5kCiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRl
clN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlm
cmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVlKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVS
ZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxl
LCBjb25zdCBTdHlsZUtleWZyYW1lKiBrZXlmcmFtZSwgS2V5ZnJhbWVWYWx1ZSYga2V5ZnJhbWVW
YWx1ZSkKIHsKICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CiAgICAgaWYgKGtleWZyYW1lLT5wcm9w
ZXJ0aWVzKCkpCkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBD
U1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbAog
ICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHls
ZSogZWxlbWVudFN0eWxlLCBLZXlmcmFtZUxpc3QmIGxpc3QpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJlbmRlclN0eWxl
KiBlbGVtZW50U3R5bGUsIEtleWZyYW1lTGlzdCYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7
CiAKQEAgLTE3NTMsNyArMTc1Myw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6a2V5ZnJhbWVT
dHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgfQog
fQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHls
ZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLCBFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9T
dHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLCBFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUpCiB7CiAgICAgaWYgKCFlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE4MDAs
NyArMTgwMCw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnBz
ZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sCiAgICAgcmV0dXJuIG1fc3R5bGUu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9y
OjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQogewogICAgIGluaXRGb3JT
dHlsZVJlc29sdmUobV9jaGVja2VyLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKTsgLy8g
bV9yb290RWxlbWVudFN0eWxlIHdpbGwgYmUgc2V0IHRvIHRoZSBkb2N1bWVudCBzdHlsZS4KIApA
QCAtMTkxMiw3ICsxOTEyLDcgQEAgc3RhdGljIEVEaXNwbGF5IGVxdWl2YWxlbnRCbG9ja0Rpc3Bs
YXkoRURpc3BsYXkgZGlzcGxheSwgYm9vbCBpc0Zsb2F0aW5nLCBib29sIHMKICAgICByZXR1cm4g
QkxPQ0s7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVu
ZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVsZW1lbnQgKmUpCit2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFbGVtZW50ICplKQogewogICAgIC8vIENhY2hlIG91
ciBvcmlnaW5hbCBkaXNwbGF5LgogICAgIHN0eWxlLT5zZXRPcmlnaW5hbERpc3BsYXkoc3R5bGUt
PmRpc3BsYXkoKSk7CkBAIC0yMTEwLDcgKzIxMTAsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVu
dAogI2VuZGlmCiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tSZWdpb25TdHlsZShF
bGVtZW50KiByZWdpb25FbGVtZW50KQorYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1JlZ2lvblN0
eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUUgKEJVRyA3MjQ3Mik6
IFdlIGRvbid0IGFkZCBALXdlYmtpdC1yZWdpb24gcnVsZXMgb2Ygc2NvcGVkIHN0eWxlIHNoZWV0
cyBmb3IgdGhlIG1vbWVudCwKICAgICAvLyBzbyBhbGwgcmVnaW9uIHJ1bGVzIGFyZSBnbG9iYWwg
YnkgZGVmYXVsdC4gVmVyaWZ5IHdoZXRoZXIgdGhhdCBjYW4gc3RhbmQgb3IgbmVlZHMgY2hhbmdp
bmcuCkBAIC0yMTM0LDcgKzIxMzQsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrUmVn
aW9uU3R5bGUoRWxlbWVudCogcmVnaW9uRWxlbWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6dXBkYXRlRm9udCgpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OnVwZGF0ZUZvbnQoKQogewogICAgIGlmICghbV9mb250RGlydHkpCiAgICAgICAgIHJldHVybjsK
QEAgLTIxNDYsNyArMjE0Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6dXBkYXRlRm9udCgp
CiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpj
YWNoZUJvcmRlckFuZEJhY2tncm91bmQoKQordm9pZCBTdHlsZVJlc29sdmVyOjpjYWNoZUJvcmRl
ckFuZEJhY2tncm91bmQoKQogewogICAgIG1faGFzVUFBcHBlYXJhbmNlID0gbV9zdHlsZS0+aGFz
QXBwZWFyYW5jZSgpOwogICAgIGlmIChtX2hhc1VBQXBwZWFyYW5jZSkgewpAQCAtMjE1NiwxMiAr
MjE1NiwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlQm9yZGVyQW5kQmFja2dyb3Vu
ZCgpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9y
OjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVk
ZSkKK1Bhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JF
bGVtZW50KEVsZW1lbnQqIGUsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIHJldHVy
biBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlLCBOT1BTRVVETywgcnVsZXNUb0luY2x1ZGUp
OwogfQogCi1QYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5zaWdu
ZWQgcnVsZXNUb0luY2x1ZGUpCitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVy
Ojpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1ZG9J
ZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCiB7CiAgICAgaWYgKCFlIHx8ICFlLT5kb2N1bWVu
dCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTk1
LDcgKzIxOTUsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpw
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLAogICAgIHJldHVybiBtX3J1bGVM
aXN0LnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tT
ZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogewogICAgIG1fZHlu
YW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIG1fY2hlY2tlci5jbGVhckhhc1Vua25vd25Qc2V1
ZG9FbGVtZW50cygpOwpAQCAtMjIyOSw3ICsyMjI5LDcgQEAgaW5saW5lIGJvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENv
bnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1Jl
Z2lvblNlbGVjdG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWVudCogcmVnaW9u
RWxlbWVudCkKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tSZWdpb25TZWxlY3RvcihDU1NTZWxl
Y3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpCiB7CiAgICAgaWYg
KCFyZWdpb25TZWxlY3RvciB8fCAhcmVnaW9uRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjI0NCw3ICsyMjQ0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1JlZ2lv
blNlbGVjdG9yKENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWVudCoKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAgICAgCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVN0eWxl
c2hlZXRTZWxlY3RvclNjb3BlcyhTdHlsZVNoZWV0SW50ZXJuYWwqIHN0eWxlc2hlZXQsIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZFNjb3BlcywgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4mIGNsYXNzU2NvcGVzKQorYm9vbCBTdHlsZVJlc29sdmVyOjpkZXRlcm1pbmVTdHlsZXNoZWV0
U2VsZWN0b3JTY29wZXMoU3R5bGVTaGVldEludGVybmFsKiBzdHlsZXNoZWV0LCBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiYgaWRTY29wZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBj
bGFzc1Njb3BlcykKIHsKICAgICBBU1NFUlQoIXN0eWxlc2hlZXQtPmlzTG9hZGluZygpKTsKIApA
QCAtMjM1MCw3ICsyMzUwLDcgQEAgUnVsZVNldDo6UnVsZVNldCgpCiB7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoQ1NTU3R5bGVTZWxlY3Rvcjo6
RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCitzdGF0aWMg
aW5saW5lIHZvaWQgY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFN0eWxlUmVzb2x2ZXI6OkZl
YXR1cmVzJiBmZWF0dXJlcywgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIGlm
IChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpCiAgICAgICAgIGZlYXR1cmVz
Lmlkc0luUnVsZXMuYWRkKHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSk7CkBAIC0yMzczLDcgKzIz
NzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKENT
U1N0eWxlU2VsZWN0b3I6OkZlYXR1cmVzJiBmZWF0dQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQg
Y29sbGVjdEZlYXR1cmVzRnJvbVJ1bGVEYXRhKENTU1N0eWxlU2VsZWN0b3I6OkZlYXR1cmVzJiBm
ZWF0dXJlcywgY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQorc3RhdGljIHZvaWQgY29sbGVjdEZl
YXR1cmVzRnJvbVJ1bGVEYXRhKFN0eWxlUmVzb2x2ZXI6OkZlYXR1cmVzJiBmZWF0dXJlcywgY29u
c3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogewogICAgIGJvb2wgZm91bmRTaWJsaW5nU2VsZWN0b3Ig
PSBmYWxzZTsKICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHJ1bGVEYXRhLnNlbGVj
dG9yKCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKQEAg
LTIzODksOSArMjM4OSw5IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RGZWF0dXJlc0Zyb21SdWxlRGF0
YShDU1NTdHlsZVNlbGVjdG9yOjpGZWF0dXJlcyYgZmVhdHVyZXMsIGNvCiAgICAgICAgICAgICBm
b3VuZFNpYmxpbmdTZWxlY3RvciA9IHRydWU7CiAgICAgfQogICAgIGlmIChmb3VuZFNpYmxpbmdT
ZWxlY3RvcikKLSAgICAgICAgZmVhdHVyZXMuc2libGluZ1J1bGVzLmFwcGVuZChDU1NTdHlsZVNl
bGVjdG9yOjpSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9yKCks
IHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBmZWF0dXJl
cy5zaWJsaW5nUnVsZXMuYXBwZW5kKFN0eWxlUmVzb2x2ZXI6OlJ1bGVGZWF0dXJlKHJ1bGVEYXRh
LnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3IoKSwgcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbigpKSk7CiAgICAgaWYgKHJ1bGVEYXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVT
ZWxlY3RvcigpKQotICAgICAgICBmZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVu
ZChDU1NTdHlsZVNlbGVjdG9yOjpSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRh
LnNlbGVjdG9yKCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOworICAg
ICAgICBmZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChTdHlsZVJlc29sdmVy
OjpSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9yKCksIHJ1bGVE
YXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOwogfQogICAgIAogdm9pZCBSdWxlU2V0
OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBj
b25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCkBAIC0yNDcwLDcgKzI0NzAsNyBAQCB2b2lkIFJ1bGVT
ZXQ6OmFkZFJlZ2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiByZWdpb25SdWxlLCBib29sIGhhc0Rv
Y3VtZW50U2VjdXJpdAogICAgIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuYXBwZW5kKFJ1
bGVTZXRTZWxlY3RvclBhaXIocmVnaW9uUnVsZS0+c2VsZWN0b3JMaXN0KCkuZmlyc3QoKSwgcmVn
aW9uUnVsZVNldC5yZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21T
aGVldChTdHlsZVNoZWV0SW50ZXJuYWwqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9y
JiBtZWRpdW0sIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IsIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlKQordm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0
SW50ZXJuYWwqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxl
UmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogewog
ICAgIEFTU0VSVChzaGVldCk7CiAKQEAgLTI1NzcsMTggKzI1NzcsMTggQEAgdm9pZCBSdWxlU2V0
OjpzaHJpbmtUb0ZpdCgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyB0aGlz
IGlzIG1vc3RseSBib3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2VydGFpbiBydWxlIHRv
IHRoZSByZW5kZXJzdHlsZS4uLgogCi1MZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRv
SW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKK0xlbmd0
aCBTdHlsZVJlc29sdmVyOjpjb252ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUs
IGRvdWJsZSBtdWx0aXBsaWVyKQogewogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZSA/IHByaW1p
dGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNl
bnRDb252ZXJzaW9uIHwgRnJhY3Rpb25Db252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29u
dmVyc2lvbj4oc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcikgOiBMZW5ndGgoVW5kZWZpbmVk
KTsKIH0KIAotTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKK0xlbmd0aCBTdHlsZVJlc29s
dmVyOjpjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIpCiB7CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlID8gcHJpbWl0aXZlVmFsdWUt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9u
IHwgRnJhY3Rpb25Db252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVyc2lvbj4oc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcikgOiBMZW5ndGgoVW5kZWZpbmVkKTsKIH0KIAogdGVt
cGxhdGUgPGJvb2wgYXBwbHlGaXJzdD4KLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogcnVs
ZSwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpbmhlcml0ZWRPbmx5LCBib29sIGZpbHRlclJlZ2lv
blByb3BlcnRpZXMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydGllcyhjb25zdCBT
dHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqIHJ1bGUsIGJvb2wgaXNJbXBv
cnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgYm9vbCBmaWx0ZXJSZWdpb25Qcm9wZXJ0aWVzKQog
ewogICAgIEFTU0VSVCghZmlsdGVyUmVnaW9uUHJvcGVydGllcyB8fCBtX3JlZ2lvbkZvclN0eWxp
bmcpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxQcm9jZXNzUnVsZShkb2N1bWVudCgpLCBydWxlKTsKQEAg
LTI2MDcsNyArMjYwNyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0aWVz
KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlCiAgICAgICAgIH0KICAg
ICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IGN1cnJlbnQuaWQoKTsKIAotICAgICAgICBp
ZiAoZmlsdGVyUmVnaW9uUHJvcGVydGllcyAmJiAhQ1NTU3R5bGVTZWxlY3Rvcjo6aXNWYWxpZFJl
Z2lvblN0eWxlUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICBpZiAoZmlsdGVyUmVnaW9uUHJv
cGVydGllcyAmJiAhU3R5bGVSZXNvbHZlcjo6aXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkocHJv
cGVydHkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGFwcGx5Rmlyc3Qp
IHsKQEAgLTI2MzIsNyArMjYzMiw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlCiB9CiAKIHRl
bXBsYXRlIDxib29sIGFwcGx5Rmlyc3Q+Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5TWF0
Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBib29sIGlzSW1w
b3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkp
Cit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hS
ZXN1bHQmIG1hdGNoUmVzdWx0LCBib29sIGlzSW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50
IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkpCiB7CiAgICAgaWYgKHN0YXJ0SW5kZXggPT0g
LTEpCiAgICAgICAgIHJldHVybjsKQEAgLTI2NTcsMTMgKzI2NTcsMTMgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRj
aFJlc3VsdCwgYm8KICAgICB9CiB9CiAKLXVuc2lnbmVkIENTU1N0eWxlU2VsZWN0b3I6OmNvbXB1
dGVNYXRjaGVkUHJvcGVydGllc0hhc2goY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMqIHByb3BlcnRp
ZXMsIHVuc2lnbmVkIHNpemUpCit1bnNpZ25lZCBTdHlsZVJlc29sdmVyOjpjb21wdXRlTWF0Y2hl
ZFByb3BlcnRpZXNIYXNoKGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzKiBwcm9wZXJ0aWVzLCB1bnNp
Z25lZCBzaXplKQogewogICAgIAogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnko
cHJvcGVydGllcywgc2l6ZW9mKE1hdGNoZWRQcm9wZXJ0aWVzKSAqIHNpemUpOwogfQogCi1ib29s
IG9wZXJhdG9yPT0oY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSYW5nZXMmIGEsIGNvbnN0
IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoUmFuZ2VzJiBiKQorYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmFuZ2VzJiBhLCBjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRj
aFJhbmdlcyYgYikKIHsKICAgICByZXR1cm4gYS5maXJzdFVBUnVsZSA9PSBiLmZpcnN0VUFSdWxl
CiAgICAgICAgICYmIGEubGFzdFVBUnVsZSA9PSBiLmxhc3RVQVJ1bGUKQEAgLTI2NzMsMjIgKzI2
NzMsMjIgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoUmFu
Z2VzJiBhLCBjb25zdCBDU1NTdHlsZVNlbGVjdG9yOjoKICAgICAgICAgJiYgYS5sYXN0VXNlclJ1
bGUgPT0gYi5sYXN0VXNlclJ1bGU7CiB9CiAKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBDU1NTdHls
ZVNlbGVjdG9yOjpNYXRjaFJhbmdlcyYgYSwgY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hS
YW5nZXMmIGIpCitib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hSYW5n
ZXMmIGEsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmFuZ2VzJiBiKQogewogICAgIHJldHVy
biAhKGEgPT0gYik7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NTdHlsZVNlbGVjdG9y
OjpNYXRjaGVkUHJvcGVydGllcyYgYSwgY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hlZFBy
b3BlcnRpZXMmIGIpCitib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hl
ZFByb3BlcnRpZXMmIGEsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzJiBi
KQogewogICAgIHJldHVybiBhLnByb3BlcnRpZXMgPT0gYi5wcm9wZXJ0aWVzICYmIGEubGlua01h
dGNoVHlwZSA9PSBiLmxpbmtNYXRjaFR5cGU7CiB9CiAKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBD
U1NTdHlsZVNlbGVjdG9yOjpNYXRjaGVkUHJvcGVydGllcyYgYSwgY29uc3QgQ1NTU3R5bGVTZWxl
Y3Rvcjo6TWF0Y2hlZFByb3BlcnRpZXMmIGIpCitib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVS
ZXNvbHZlcjo6TWF0Y2hlZFByb3BlcnRpZXMmIGEsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNo
ZWRQcm9wZXJ0aWVzJiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLWNvbnN0IENT
U1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtKiBDU1NTdHlsZVNlbGVj
dG9yOjpmaW5kRnJvbU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUodW5zaWduZWQgaGFzaCwgY29uc3Qg
TWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0KQorY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZUl0ZW0qIFN0eWxlUmVzb2x2ZXI6OmZpbmRGcm9tTWF0Y2hlZFByb3BlcnRp
ZXNDYWNoZSh1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCiB7
CiAgICAgQVNTRVJUKGhhc2gpOwogCkBAIC0yNzA5LDcgKzI3MDksNyBAQCBjb25zdCBDU1NTdHls
ZVNlbGVjdG9yOjpNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSogQ1NTU3R5bGVTZWxlY3Rvcjo6
ZmluZEZyb21NYQogICAgIHJldHVybiAmY2FjaGVJdGVtOwogfQogCi12b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgdW5zaWduZWQgaGFzaCwgY29uc3Qg
TWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNo
ZWRQcm9wZXJ0aWVzQ2FjaGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUsIHVuc2lnbmVkIGhhc2gsIGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRj
aFJlc3VsdCkKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgbWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGVB
ZGRpdGlvbnNCZXR3ZWVuU3dlZXBzID0gMTAwOwogICAgIGlmICgrK21fbWF0Y2hlZFByb3BlcnRp
ZXNDYWNoZUFkZGl0aW9uc1NpbmNlTGFzdFN3ZWVwID49IG1hdGNoZWREZWNsYXJhdGlvbkNhY2hl
QWRkaXRpb25zQmV0d2VlblN3ZWVwcykgewpAQCAtMjcyOCw3ICsyNzI4LDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLCBjb24KICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuYWRkKGhhc2gsIGNh
Y2hlSXRlbSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW52YWxpZGF0ZU1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGUoKQordm9pZCBTdHlsZVJlc29sdmVyOjppbnZhbGlkYXRlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSgpCiB7CiAgICAgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlLmNsZWFyKCk7
CiB9CkBAIC0yNzUwLDcgKzI3NTAsNyBAQCBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUluTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBSZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5TWF0Y2hlZFByb3Bl
cnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVy
OjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkK
IHsKICAgICB1bnNpZ25lZCBjYWNoZUhhc2ggPSBtYXRjaFJlc3VsdC5pc0NhY2hlYWJsZSA/IGNv
bXB1dGVNYXRjaGVkUHJvcGVydGllc0hhc2gobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMu
ZGF0YSgpLCBtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkpIDogMDsKICAgICBi
b29sIGFwcGx5SW5oZXJpdGVkT25seSA9IGZhbHNlOwpAQCAtMjgyOSw3ICsyODI5LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGNvbXBhcmVQYWdlUnVsZXMoY29uc3QgU3R5bGVSdWxlUGFnZSogcjEs
IGNvbnN0IFN0eWxlUnVsZVBhZ2UKICAgICByZXR1cm4gcjEtPnNlbGVjdG9yKCktPnNwZWNpZmlj
aXR5KCkgPCByMi0+c2VsZWN0b3IoKS0+c3BlY2lmaWNpdHkoKTsKIH0KIAotdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBSdWxlU2V0KiBy
dWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBh
Z2VOYW1lKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFBhZ2VSdWxlcyhNYXRjaFJlc3VsdCYg
cmVzdWx0LCBSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdl
LCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQogewogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI4NDUsNyArMjg0NSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQ
YWdlUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgUnVsZVNldCogcnVsZXMsIGJvb2wKICAgICAg
ICAgYWRkTWF0Y2hlZFByb3BlcnRpZXMocmVzdWx0LCBtYXRjaGVkUGFnZVJ1bGVzW2ldLT5wcm9w
ZXJ0aWVzKCkpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVzRm9y
TGlzdChWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0IFZlY3RvcjxT
dHlsZVJ1bGVQYWdlKj4mIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2Us
IGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoUGFnZVJ1
bGVzRm9yTGlzdChWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0IFZl
Y3RvcjxTdHlsZVJ1bGVQYWdlKj4mIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJz
dFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHJ1
bGVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBA
IC0yODY5LDcgKzI4NjksNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1bGVz
Rm9yTGlzdChWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZQogICAgIH0KIH0KIAot
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjppc0xlZnRQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0Citi
b29sIFN0eWxlUmVzb2x2ZXI6OmlzTGVmdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKIHsKICAg
ICBib29sIGlzRmlyc3RQYWdlTGVmdCA9IGZhbHNlOwogICAgIGlmICghbV9yb290RWxlbWVudFN0
eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCkBAIC0yODc4LDEzICsyODc4LDEzIEBAIGJv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAogICAg
IHJldHVybiAocGFnZUluZGV4ICsgKGlzRmlyc3RQYWdlTGVmdCA/IDEgOiAwKSkgJSAyOwogfQog
Ci1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0
Citib29sIFN0eWxlUmVzb2x2ZXI6OmlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IEluIGNhc2Ugb2YgZm9yY2VkIGxlZnQvcmlnaHQgcGFnZSwgcGFnZSBh
dCBpbmRleCAxIChub3QgMCkgY2FuIGJlIHRoZSBmaXJzdCBwYWdlLgogICAgIHJldHVybiAoIXBh
Z2VJbmRleCk7CiB9CiAKLVN0cmluZyBDU1NTdHlsZVNlbGVjdG9yOjpwYWdlTmFtZShpbnQgLyog
cGFnZUluZGV4ICovKSBjb25zdAorU3RyaW5nIFN0eWxlUmVzb2x2ZXI6OnBhZ2VOYW1lKGludCAv
KiBwYWdlSW5kZXggKi8pIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBwYWdlIGlu
ZGV4IHRvIHBhZ2UgbmFtZSBtYXBwaW5nLgogICAgIHJldHVybiAiIjsKQEAgLTI5MzIsNyArMjkz
Miw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxl
KiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhCiAgICAgY29sbGVjdENTU09NV3JhcHBlcnMo
d3JhcHBlck1hcCwgc2hlZXRXcmFwcGVyU2V0LCBkb2N1bWVudC0+cGFnZVVzZXJTaGVldCgpKTsK
IH0KIAotQ1NTU3R5bGVSdWxlKiBDU1NTdHlsZVNlbGVjdG9yOjplbnN1cmVGdWxsQ1NTT01XcmFw
cGVyRm9ySW5zcGVjdG9yKFN0eWxlUnVsZSogcnVsZSkKK0NTU1N0eWxlUnVsZSogU3R5bGVSZXNv
bHZlcjo6ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1bGUp
CiB7CiAgICAgaWYgKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAs
IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQpOwpA
QCAtMjk0OCw3ICsyOTQ4LDcgQEAgQ1NTU3R5bGVSdWxlKiBDU1NTdHlsZVNlbGVjdG9yOjplbnN1
cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKFN0eWxlUnVsZSogcnUKICAgICByZXR1cm4g
bV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5nZXQocnVsZSkuZ2V0KCk7CiB9CiAKLXZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwg
Q1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGluaXRFbGVtZW50KDApOwogICAgIGluaXRGb3JT
dHlsZVJlc29sdmUoMCwgc3R5bGUpOwpAQCAtMjk1Niw3ICsyOTU2LDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5VG9TdHlsZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1
ZSogdmFsdWUsIFIKICAgICBhcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoaWQsIHZhbHVlKTsK
IH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUo
Q1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjph
cHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwgdmFsdWUp
OwpAQCAtMjk5OCw3ICsyOTk4LDcgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBpZCkKIAogLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
My1yZWdpb25zLyN0aGUtYXQtcmVnaW9uLXN0eWxlLXJ1bGUKIC8vIEZJWE1FOiBhZGQgaW5jcmVt
ZW50YWwgc3VwcG9ydCBmb3Igb3RoZXIgcmVnaW9uIHN0eWxpbmcgcHJvcGVydGllcy4KLWlubGlu
ZSBib29sIENTU1N0eWxlU2VsZWN0b3I6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5SUQgaWQpCitpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjppc1ZhbGlkUmVnaW9uU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKQogewogICAgIHN3aXRjaCAoaWQpIHsKICAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgpAQCAtMzAxOCwxNCArMzAxOCwxNCBAQCBp
bmxpbmUgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIGlkKQogLy8gd2lkdGgvaGVpZ2h0L2JvcmRlci9wYWRkaW5nLy4uLiBmcm9t
IHRoZSBSZW5kZXJTdHlsZSAtPiBmb3IgU1ZHIHRoZXNlIHZhbHVlcyB3b3VsZCBuZXZlciBzY2Fs
ZSwKIC8vIGlmIHdlJ2QgcGFzcyBhIDEuMCB6b29tIGZhY3RvciBldmVyeWh3ZXJlLiBTbyB3ZSBv
bmx5IHBhc3MgYSB6b29tIGZhY3RvciBvZiAxLjAgZm9yIHNwZWNpZmljCiAvLyBwcm9wZXJ0aWVz
IHRoYXQgYXJlIE5PVCBhbGxvd2VkIHRvIHNjYWxlIHdpdGhpbiBhIHpvb21lZCBTVkcgZG9jdW1l
bnQgKGxldHRlci93b3JkLXNwYWNpbmcvZm9udC1zaXplKS4KLWJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6dXNlU1ZHWm9vbVJ1bGVzKCkKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6dXNlU1ZHWm9vbVJ1bGVz
KCkKIHsKICAgICByZXR1cm4gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7
CiB9CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCi1zdGF0aWMgYm9vbCBjcmVhdGVH
cmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IsIExlbmd0aCYgbGVuZ3RoKQorc3RhdGljIGJvb2wgY3JlYXRl
R3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBMZW5ndGgmIGxlbmd0aCkKIHsKICAgICBMZW5ndGggd29ya2lu
Z0xlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29u
dmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVyc2lv
biB8IEF1dG9Db252ZXJzaW9uPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVt
ZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgaWYg
KHdvcmtpbmdMZW5ndGguaXNVbmRlZmluZWQoKSkKQEAgLTMwMzgsNyArMzAzOCw3IEBAIHN0YXRp
YyBib29sIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlLCBDU1NTdHlsZVNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGNy
ZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8TGVuZ3RoPiYgbGVuZ3Ro
cywgQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCitzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJh
Y2tMaXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMsIFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yKQogewogICAgIC8vIEhhbmRsZSAnbm9uZScuCiAgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKQEAgLTMwODUsNyArMzA4NSw3IEBAIHN0YXRpYyBib29s
IGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIExlbmd0aCYgcG9zaXRpb24pCiB9
CiAjZW5kaWYKIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiB7CiAgICAgYm9vbCBpc0lu
aGVyaXQgPSBtX3BhcmVudE5vZGUgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsKICAgICBi
b29sIGlzSW5pdGlhbCA9IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpIHx8ICghbV9wYXJlbnROb2Rl
ICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCkpOwpAQCAtNDE2NSw3ICs0MTY1LDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1Zh
bHVlICp2YWx1ZSkKICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0
dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBG
aWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0lu
aXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KEZpbGxMYXllcjo6
aW5pdGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkpKTsKQEAgLTQxOTEsNyArNDE5MSw3
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsCiAgICAgfQogfQogCi12b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbENsaXAoQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+
aXNJbml0aWFsVmFsdWUoKSkgewogICAgICAgICBsYXllci0+c2V0Q2xpcChGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsQ2xpcChsYXllci0+dHlwZSgpKSk7CkBAIC00MjA1LDcgKzQyMDUsNyBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciog
bGF5ZXIsIENTU1ZhbHVlKiB2YQogICAgIGxheWVyLT5zZXRDbGlwKCpwcmltaXRpdmVWYWx1ZSk7
CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENvbXBvc2l0ZShDU1NQcm9wZXJ0
eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewogICAg
ICAgICBsYXllci0+c2V0Q29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUo
bGF5ZXItPnR5cGUoKSkpOwpAQCAtNDIxOSw3ICs0MjE5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjptYXBGaWxsQ29tcG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENT
U1ZhbHUKICAgICBsYXllci0+c2V0Q29tcG9zaXRlKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLXZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbE9yaWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5
ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxP
cmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQog
ewogICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewogICAgICAgICBsYXllci0+c2V0
T3JpZ2luKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxPcmlnaW4obGF5ZXItPnR5cGUoKSkpOwpAQCAt
NDIzMyw3ICs0MjMzLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsT3JpZ2luKENT
U1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKgogICAgIGxheWVyLT5zZXRP
cmlnaW4oKnByaW1pdGl2ZVZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVl
KiB2YWx1ZSkKK1Bhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFn
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLT5pc0ltYWdlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGNhY2hlZE9yUGVuZGluZ0Zyb21W
YWx1ZShwcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHZhbHVlKSk7CkBAIC00
MjQ5LDcgKzQyNDksNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxlU2VsZWN0b3I6
OnN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVgogICAgIHJldHVybiAwOwog
fQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlZE9yUGVu
ZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVZhbHVlKiB2YWx1
ZSkKK1Bhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Y2FjaGVkT3JQZW5kaW5n
RnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0ltYWdlVmFsdWUqIHZhbHVlKQog
ewogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSA9IHZhbHVlLT5jYWNoZWRPclBlbmRpbmdJ
bWFnZSgpOwogICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKQEAgLTQy
NTcsNyArNDI1Nyw3IEBAIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6
Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQKICAgICByZXR1cm4gaW1hZ2Uu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxlU2VsZWN0b3I6
OmdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlKiB2YWx1ZSkKK1Bhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVS
ZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNQ
ZW5kaW5nKCkpIHsKICAgICAgICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0
eSk7CkBAIC00MjY3LDcgKzQyNjcsNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxl
U2VsZWN0b3I6OmdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eQogfQogCiAj
aWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxl
U2VsZWN0b3I6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBD
U1NJbWFnZVNldFZhbHVlKiB2YWx1ZSkKK1Bhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNv
bHZlcjo6c2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU0lt
YWdlU2V0VmFsdWUqIHZhbHVlKQogewogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSA9IHZh
bHVlLT5jYWNoZWRPclBlbmRpbmdJbWFnZVNldChkb2N1bWVudCgpKTsKICAgICBpZiAoaW1hZ2Ug
JiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCkBAIC00Mjc2LDcgKzQyNzYsNyBAQCBQYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxlU2VsZWN0b3I6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShD
U1NQcm9wZXJ0eUlEIHBybwogfQogI2VuZGlmCiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
RmlsbEltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIEZpbGxMYXllciogbGF5ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEltYWdlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNldEltYWdlKEZp
bGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZShsYXllci0+dHlwZSgpKSk7CkBAIC00Mjg2LDcgKzQy
ODYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBDUwogICAgIGxheWVyLT5zZXRJbWFnZShzdHls
ZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1h
cEZpbGxSZXBlYXRYKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwg
RmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJ
bml0aWFsVmFsdWUoKSkgewogICAgICAgICBsYXllci0+c2V0UmVwZWF0WChGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsUmVwZWF0WChsYXllci0+dHlwZSgpKSk7CkBAIC00MzAwLDcgKzQzMDAsNyBAQCB2
b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRYKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciogbGF5ZXIsIENTU1ZhbHVlKgogICAgIGxheWVyLT5zZXRSZXBlYXRYKCpwcmltaXRpdmVW
YWx1ZSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJv
cGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJl
c29sdmVyOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAg
ICAgICAgIGxheWVyLT5zZXRSZXBlYXRZKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZKGxh
eWVyLT50eXBlKCkpKTsKQEAgLTQzMTQsNyArNDMxNCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqCiAgICAgbGF5ZXItPnNldFJlcGVhdFkoKnByaW1pdGl2ZVZhbHVlKTsKIH0KIAotdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxTaXplKENT
U1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNldFNpemVU
eXBlKFNpemVOb25lKTsKQEAgLTQzNTksNyArNDM1OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUq
IHZhCiAgICAgbGF5ZXItPnNldFNpemVMZW5ndGgoYik7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwRmlsbFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBD
U1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxYUG9zaXRpb24oQ1NT
UHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewogICAgICAgICBsYXllci0+c2V0WFBvc2l0aW9u
KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOwpAQCAtNDM4
Niw3ICs0Mzg2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWFBvc2l0aW9uKENT
U1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHUKICAgICBsYXllci0+c2V0WFBv
c2l0aW9uKGwpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxZUG9zaXRpb24o
Q1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBT
dHlsZVJlc29sdmVyOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciog
bGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVl
KCkpIHsKICAgICAgICAgbGF5ZXItPnNldFlQb3NpdGlvbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxs
WVBvc2l0aW9uKGxheWVyLT50eXBlKCkpKTsKQEAgLTQ0MTMsNyArNDQxMyw3IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1CiAgICAgbGF5ZXItPnNldFlQb3NpdGlvbihsKTsKIH0KIAotdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EZWxheShBbmltYXRpb24qIGFuaW1hdGlvbiwg
Q1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EZWxheShB
bmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+
aXNJbml0aWFsVmFsdWUoKSkgewogICAgICAgICBhbmltYXRpb24tPnNldERlbGF5KEFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5KCkpOwpAQCAtNDQyNyw3ICs0NDI3LDcgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EZWxheShBbmltYXRpb24qIGFuaW1hdGlvbiwg
Q1NTVmFsdWUqIHZhbHVlKQogICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkocHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7CiB9CiAK
LXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiog
bGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9u
RGlyZWN0aW9uKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihB
bmltYXRpb246OmluaXRpYWxBbmltYXRpb25EaXJlY3Rpb24oKSk7CkBAIC00NDU0LDcgKzQ0NTQs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRp
b24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgfQogfQogCi12b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6Om1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1
ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0lu
aXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24oKSk7CkBAIC00NDY4LDcgKzQ0NjgsNyBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiogYW5pbWF0
aW9uLCBDU1NWYWx1ZSogdmFsdQogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24ocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7
CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0
aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmlt
YXRpb25GaWxsTW9kZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAg
aWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgIGxheWVyLT5zZXRGaWxsTW9k
ZShBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSgpKTsKQEAgLTQ0OTUsNyArNDQ5
NSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0
aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIH0KIH0KIAotdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudChBbmltYXRpb24qIGFuaW1hdGlvbiwg
Q1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25JdGVyYXRp
b25Db3VudChBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewogICAgICAgICBhbmltYXRpb24tPnNldEl0ZXJh
dGlvbkNvdW50KEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KCkpOwpA
QCAtNDUxMiw3ICs0NTEyLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25J
dGVyYXRpb25Db3VudChBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUKICAgICAgICAgYW5p
bWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgp
KTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlv
biogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0
aW9uTmFtZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgIGxheWVyLT5zZXROYW1lKEFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbk5hbWUoKSk7CkBAIC00NTI5LDcgKzQ1MjksNyBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFs
dWUqIHZhbHVlKQogICAgICAgICBsYXllci0+c2V0TmFtZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3Ry
aW5nVmFsdWUoKSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUGxh
eVN0YXRlKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNv
bHZlcjo6bWFwQW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgbGF5
ZXItPnNldFBsYXlTdGF0ZShBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25QbGF5U3RhdGUoKSk7
CkBAIC00NTQ0LDcgKzQ1NDQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlv
blBsYXlTdGF0ZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgbGF5ZXIt
PnNldFBsYXlTdGF0ZShwbGF5U3RhdGUpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1h
cEFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUp
Cit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvbiogYW5p
bWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7CiAgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFu
aW1hdGVBbGwpOwpAQCAtNDU2OCw3ICs0NTY4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpt
YXBBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHUK
ICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb24oQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmltYXRpb24s
IENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsK
ICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihBbmltYXRpb246OmluaXRpYWxB
bmltYXRpb25UaW1pbmdGdW5jdGlvbigpKTsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmlt
YXRpb24sIENTU1ZhbHVlCiAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGlu
ZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjptYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFs
dWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwTmluZVBp
ZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdWUqIHZhbHVlLCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgLy8gSWYgd2UncmUgbm90IGEgdmFsdWUgbGlzdCwgdGhl
biB3ZSBhcmUgIm5vbmUiIGFuZCBkb24ndCBuZWVkIHRvIGFsdGVyIHRoZSBlbXB0eSBpbWFnZSBh
dCBhbGwuCiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzVmFsdWVMaXN0KCkpCkBAIC00Njc2
LDcgKzQ2NzYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZQogICAgIH0KIH0KIAotdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVlKiB2YWx1ZSwg
TmluZVBpZWNlSW1hZ2UmIGltYWdlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBOaW5lUGllY2VJ
bWFnZVNsaWNlKENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQogewogICAg
IGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQogICAgICAg
ICByZXR1cm47CkBAIC00NzA5LDcgKzQ3MDksNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1h
cE5pbmVQaWVjZUltYWdlU2xpY2UoQ1NTVmFsdWUqIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaQog
ICAgIGltYWdlLnNldEZpbGwoYm9yZGVySW1hZ2VTbGljZS0+bV9maWxsKTsKIH0KIAotTGVuZ3Ro
Qm94IENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSogdmFs
dWUpCitMZW5ndGhCb3ggU3R5bGVSZXNvbHZlcjo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1Zh
bHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm4gTGVuZ3RoQm94KCk7CkBAIC00NzU0LDcgKzQ3NTQsNyBAQCBM
ZW5ndGhCb3ggQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVl
KiB2YWx1ZSkKICAgICByZXR1cm4gYm94OwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1h
cE5pbmVQaWVjZUltYWdlUmVwZWF0KENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGlt
YWdlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdChDU1NWYWx1
ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKIHsKICAgICBpZiAoIXZhbHVlIHx8ICF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CkBAIC00ODAyLDcgKzQ4
MDIsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KENT
U1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmCiAgICAgaW1hZ2Uuc2V0VmVydGljYWxSdWxl
KHZlcnRpY2FsUnVsZSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tGb3JUZXh0
U2l6ZUFkanVzdCgpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNoZWNrRm9yVGV4dFNpemVBZGp1c3Qo
KQogewogICAgIGlmIChtX3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKQogICAgICAgICByZXR1cm47
CkBAIC00ODEyLDcgKzQ4MTIsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrRm9yVGV4
dFNpemVBZGp1c3QoKQogICAgIG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihuZXdGb250RGVz
Y3JpcHRpb24pOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrRm9yWm9vbUNoYW5n
ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKK3ZvaWQgU3R5
bGVSZXNvbHZlcjo6Y2hlY2tGb3Jab29tQ2hhbmdlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIGlmIChzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpID09
IHBhcmVudFN0eWxlLT5lZmZlY3RpdmVab29tKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4MjMs
NyArNDgyMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tGb3Jab29tQ2hhbmdlKFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVuCiAgICAgc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihuZXdGb250RGVzY3JpcHRpb24pOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmNoZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y2hlY2tGb3JHZW5lcmlj
RmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
KQogewogICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgY2hpbGRGb250ID0gc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpOwogCkBAIC00ODYxLDEzICs0ODYxLDEzIEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6Y2hlY2tGb3JHZW5lcmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5CiAgICAgc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihuZXdGb250RGVzY3JpcHRpb24p
OwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldEZvbnRTaXplKEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBmbG9hdCBzaXplKQordm9pZCBTdHlsZVJlc29sdmVyOjpzZXRG
b250U2l6ZShGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSkKIHsK
ICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsKICAgICBmb250RGVz
Y3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXpl
KG1fY2hlY2tlci5kb2N1bWVudCgpLCBtX3N0eWxlLmdldCgpLCBmb250RGVzY3JpcHRpb24uaXNB
YnNvbHV0ZVNpemUoKSwgc2l6ZSwgdXNlU1ZHWm9vbVJ1bGVzKCkpKTsKIH0KIAotZmxvYXQgQ1NT
U3R5bGVTZWxlY3Rvcjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQq
IGRvY3VtZW50LCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0
IHNwZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKQorZmxvYXQgU3R5bGVSZXNvbHZl
cjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqIGRvY3VtZW50LCBS
ZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHNwZWNpZmllZFNp
emUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKQogewogICAgIGZsb2F0IHpvb21GYWN0b3IgPSAxLjBm
OwogICAgIGlmICghdXNlU1ZHWm9vbVJ1bGVzKSB7CkBAIC00ODc2LDEwICs0ODc2LDEwIEBAIGZs
b2F0IENTU1N0eWxlU2VsZWN0b3I6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKERv
Y3VtZW50KiBkb2N1bWVudCwgUmVuCiAgICAgICAgICAgICB6b29tRmFjdG9yICo9IGZyYW1lLT50
ZXh0Wm9vbUZhY3RvcigpOwogICAgIH0KIAotICAgIHJldHVybiBDU1NTdHlsZVNlbGVjdG9yOjpn
ZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShkb2N1bWVudCwgem9vbUZhY3RvciwgaXNB
YnNvbHV0ZVNpemUsIHNwZWNpZmllZFNpemUpOworICAgIHJldHVybiBTdHlsZVJlc29sdmVyOjpn
ZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShkb2N1bWVudCwgem9vbUZhY3RvciwgaXNB
YnNvbHV0ZVNpemUsIHNwZWNpZmllZFNpemUpOwogfQogCi1mbG9hdCBDU1NTdHlsZVNlbGVjdG9y
OjpnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShEb2N1bWVudCogZG9jdW1lbnQsIGZs
b2F0IHpvb21GYWN0b3IsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHNwZWNpZmllZFNpemUs
IEVTbWFydE1pbmltdW1Gb3JGb250U2l6ZSB1c2VTbWFydE1pbmltdW1Gb3JGb250U2l6ZSkKK2Zs
b2F0IFN0eWxlUmVzb2x2ZXI6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKERvY3Vt
ZW50KiBkb2N1bWVudCwgZmxvYXQgem9vbUZhY3RvciwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxv
YXQgc3BlY2lmaWVkU2l6ZSwgRVNtYXJ0TWluaW11bUZvckZvbnRTaXplIHVzZVNtYXJ0TWluaW11
bUZvckZvbnRTaXplKQogewogICAgIC8vIFRleHQgd2l0aCBhIDBweCBmb250IHNpemUgc2hvdWxk
IG5vdCBiZSB2aXNpYmxlIGFuZCB0aGVyZWZvcmUgbmVlZHMgdG8gYmUKICAgICAvLyBleGVtcHQg
ZnJvbSBtaW5pbXVtIGZvbnQgc2l6ZSBydWxlcy4gQWNpZDMgcmVsaWVzIG9uIHRoaXMgZm9yIHBp
eGVsLXBlcmZlY3QKQEAgLTQ5NjQsNyArNDk2NCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc3RyaWN0
Rm9udFNpemVUYWJsZVtmb250U2l6ZVRhYmxlTWF4IC0gZm9udFNpemVUYWJsZU1pbiArIDFdW3Rv
CiAvLyBmYWN0b3JzIGZvciBlYWNoIGtleXdvcmQgdmFsdWUuCiBzdGF0aWMgY29uc3QgZmxvYXQg
Zm9udFNpemVGYWN0b3JzW3RvdGFsS2V5d29yZHNdID0geyAwLjYwZiwgMC43NWYsIDAuODlmLCAx
LjBmLCAxLjJmLCAxLjVmLCAyLjBmLCAzLjBmIH07CiAKLWZsb2F0IENTU1N0eWxlU2VsZWN0b3I6
OmZvbnRTaXplRm9yS2V5d29yZChEb2N1bWVudCogZG9jdW1lbnQsIGludCBrZXl3b3JkLCBib29s
IHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUpCitmbG9hdCBTdHlsZVJlc29sdmVyOjpmb250U2l6
ZUZvcktleXdvcmQoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQga2V5d29yZCwgYm9vbCBzaG91bGRV
c2VGaXhlZERlZmF1bHRTaXplKQogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50
LT5zZXR0aW5ncygpOwogICAgIGlmICghc2V0dGluZ3MpCkBAIC00OTk1LDcgKzQ5OTUsNyBAQCBz
dGF0aWMgaW50IGZpbmROZWFyZXN0TGVnYWN5Rm9udFNpemUoaW50IHBpeGVsRm9udFNpemUsIGNv
bnN0IFQqIHRhYmxlLCBpbnQgbXVsdAogICAgIHJldHVybiB0b3RhbEtleXdvcmRzIC0gMTsKIH0K
IAotaW50IENTU1N0eWxlU2VsZWN0b3I6OmxlZ2FjeUZvbnRTaXplKERvY3VtZW50KiBkb2N1bWVu
dCwgaW50IHBpeGVsRm9udFNpemUsIGJvb2wgc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSkKK2lu
dCBTdHlsZVJlc29sdmVyOjpsZWdhY3lGb250U2l6ZShEb2N1bWVudCogZG9jdW1lbnQsIGludCBw
aXhlbEZvbnRTaXplLCBib29sIHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUpCiB7CiAgICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0aW5n
cykKQEAgLTUwNDgsNyArNTA0OCw3IEBAIHN0YXRpYyBDb2xvciBjb2xvckZvckNTU1ZhbHVlKGlu
dCBjc3NWYWx1ZUlkKQogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5
c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwogfQogCi1Db2xvciBDU1NTdHlsZVNlbGVjdG9yOjpjb2xv
ckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJvb2wgZm9yVmlz
aXRlZExpbmspIGNvbnN0CitDb2xvciBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJvb2wgZm9yVmlzaXRlZExpbmspIGNvbnN0
CiB7CiAgICAgaWYgKHZhbHVlLT5pc1JHQkNvbG9yKCkpCiAgICAgICAgIHJldHVybiBDb2xvcih2
YWx1ZS0+Z2V0UkdCQTMyVmFsdWUoKSk7CkBAIC01MDcyLDE3ICs1MDcyLDE3IEBAIENvbG9yIENT
U1N0eWxlU2VsZWN0b3I6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
KiB2YWx1ZSwgYm9vbCBmCiAgICAgfQogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6Omhhc1Nl
bGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyAmYXR0cm5hbWUpIGNvbnN0Citi
b29sIFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0
cmluZyAmYXR0cm5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmVhdHVyZXMuYXR0cnNJblJ1
bGVzLmNvbnRhaW5zKGF0dHJuYW1lLmltcGwoKSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YWRkVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlF
eHAqIGV4cHIsIGJvb2wgcmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjphZGRWaWV3cG9ydERl
cGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4cCogZXhwciwgYm9vbCBy
ZXN1bHQpCiB7CiAgICAgbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzLmFwcGVu
ZChhZG9wdFB0cihuZXcgTWVkaWFRdWVyeVJlc3VsdCgqZXhwciwgcmVzdWx0KSkpOwogfQogCi1i
b29sIENTU1N0eWxlU2VsZWN0b3I6OmFmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0Citi
b29sIFN0eWxlUmVzb2x2ZXI6OmFmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0CiB7CiAg
ICAgdW5zaWduZWQgcyA9IG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cy5zaXpl
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHM7IGkrKykgewpAQCAtNTEyMSw3ICs1
MTIxLDcgQEAgc3RhdGljIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBnZXRUcmFu
c2Zvcm1PcGVyYXRpb25UeXBlKFdlYktpdENTU1RyYW4KICAgICByZXR1cm4gVHJhbnNmb3JtT3Bl
cmF0aW9uOjpOT05FOwogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9y
bU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucykKK2Jv
b2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5W
YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBUcmFuc2Zv
cm1PcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKQogewogICAgIGlmICghaW5WYWx1ZSB8fCAhaW5W
YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewogICAgICAgICBvdXRPcGVyYXRpb25zLmNsZWFyKCk7CkBA
IC01NDAyLDE0ICs1NDAyLDE0IEBAIHN0YXRpYyBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5
cGUgZmlsdGVyT3BlcmF0aW9uRm9yVHlwZShXZWJLaXRDU1NGaWx0ZXJWYWx1CiB9CiAKICNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCi1TdHlsZVNoYWRlciogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVT
aGFkZXIoQ1NTVmFsdWUqIHZhbHVlKQorU3R5bGVTaGFkZXIqIFN0eWxlUmVzb2x2ZXI6OnN0eWxl
U2hhZGVyKENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzV2ViS2l0Q1NTU2hh
ZGVyVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGNhY2hlZE9yUGVuZGluZ1N0eWxlU2hhZGVyRnJv
bVZhbHVlKHN0YXRpY19jYXN0PFdlYktpdENTU1NoYWRlclZhbHVlKj4odmFsdWUpKTsKICAgICBy
ZXR1cm4gMDsKIH0KIAotU3R5bGVTaGFkZXIqIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlZE9yUGVu
ZGluZ1N0eWxlU2hhZGVyRnJvbVZhbHVlKFdlYktpdENTU1NoYWRlclZhbHVlKiB2YWx1ZSkKK1N0
eWxlU2hhZGVyKiBTdHlsZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdTdHlsZVNoYWRlckZyb21W
YWx1ZShXZWJLaXRDU1NTaGFkZXJWYWx1ZSogdmFsdWUpCiB7CiAgICAgU3R5bGVTaGFkZXIqIHNo
YWRlciA9IHZhbHVlLT5jYWNoZWRPclBlbmRpbmdTaGFkZXIoKTsKICAgICBpZiAoc2hhZGVyICYm
IHNoYWRlci0+aXNQZW5kaW5nU2hhZGVyKCkpCkBAIC01NDE3LDcgKzU0MTcsNyBAQCBTdHlsZVNo
YWRlciogQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FjaGVkT3JQZW5kaW5nU3R5bGVTaGFkZXJGcm9tVmFs
dWUoV2ViS2l0Q1NTU2hhZAogICAgIHJldHVybiBzaGFkZXI7CiB9CiAKLXZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6bG9hZFBlbmRpbmdTaGFkZXJzKCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBl
bmRpbmdTaGFkZXJzKCkKIHsKICAgICBpZiAoIW1fc3R5bGUtPmhhc0ZpbHRlcigpIHx8ICFtX2hh
c1BlbmRpbmdTaGFkZXJzKQogICAgICAgICByZXR1cm47CkBAIC01NDQ5LDcgKzU0NDksNyBAQCBz
dGF0aWMgYm9vbCBzb3J0UGFyYW1ldGVyc0J5TmFtZUNvbXBhcmF0b3IoY29uc3QgUmVmUHRyPEN1
c3RvbUZpbHRlclBhcmFtZXRlcj4mCiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmVMZXNzVGhh
bihhLT5uYW1lKCksIGItPm5hbWUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFy
YW1ldGVyPiBDU1NTdHlsZVNlbGVjdG9yOjpwYXJzZUN1c3RvbUZpbHRlck51bWJlclBhcmFtdGVy
KGNvbnN0IFN0cmluZyYgbmFtZSwgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMpCitQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJOdW1i
ZXJQYXJhbXRlcihjb25zdCBTdHJpbmcmIG5hbWUsIENTU1ZhbHVlTGlzdCogdmFsdWVzKQogewog
ICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI+IG51bWJlclBhcmFtZXRlciA9
IEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcjo6Y3JlYXRlKG5hbWUpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB2YWx1ZXMtPmxlbmd0aCgpOyArK2kpIHsKQEAgLTU0NjQsNyArNTQ2
NCw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBDU1NTdHlsZVNlbGVjdG9y
OjpwYXJzZUN1c3RvbUZpbHRlck51bWJlclBhcmFtCiAgICAgcmV0dXJuIG51bWJlclBhcmFtZXRl
ci5yZWxlYXNlKCk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFyc2VDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0KENTU1ZhbHVlKiBwYXJhbWV0ZXJzVmFsdWUsIEN1c3RvbUZpbHRlclBh
cmFtZXRlckxpc3QmIHBhcmFtZXRlckxpc3QpCitib29sIFN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyTGlzdChDU1NWYWx1ZSogcGFyYW1ldGVyc1ZhbHVlLCBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJMaXN0KQogewogICAgIEhhc2hTZXQ8U3RyaW5n
PiBrbm93blBhcmFtZXRlck5hbWVzOwogICAgIENTU1ZhbHVlTGlzdEl0ZXJhdG9yIHBhcmFtZXRl
ckl0ZXJhdG9yKHBhcmFtZXRlcnNWYWx1ZSk7CkBAIC01NTI2LDcgKzU1MjYsNyBAQCBib29sIENT
U1N0eWxlU2VsZWN0b3I6OnBhcnNlQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdChDU1NWYWx1ZSog
cGFyYW1ldGVyc1ZhbHVlLAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPEN1c3Rv
bUZpbHRlck9wZXJhdGlvbj4gQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uKFdlYktpdENTU0ZpbHRlclZhbHVlKiBmaWx0ZXJWYWx1ZSkKK1Bhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyT3BlcmF0aW9uPiBTdHlsZVJlc29sdmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJPcGVy
YXRpb24oV2ViS2l0Q1NTRmlsdGVyVmFsdWUqIGZpbHRlclZhbHVlKQogewogICAgIEFTU0VSVChm
aWx0ZXJWYWx1ZS0+bGVuZ3RoKCkpOwogCkBAIC01NjEwLDcgKzU2MTAsNyBAQCBQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlQ3VzdG9tRmls
dGVyT3BlcmF0aW9uKAogfQogI2VuZGlmCiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRl
RmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBS
ZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBGaWx0ZXJPcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKQor
Ym9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKENTU1ZhbHVlKiBpblZh
bHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIEZpbHRlck9w
ZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpCiB7CiAgICAgQVNTRVJUKG91dE9wZXJhdGlvbnMuaXNF
bXB0eSgpKTsKICAgICAKQEAgLTU3NDYsNyArNTc0Niw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUq
IHN0CiAKICNlbmRpZgogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxlU2VsZWN0b3I6
OmxvYWRQZW5kaW5nSW1hZ2UoU3R5bGVQZW5kaW5nSW1hZ2UqIHBlbmRpbmdJbWFnZSkKK1Bhc3NS
ZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZShTdHlsZVBl
bmRpbmdJbWFnZSogcGVuZGluZ0ltYWdlKQogewogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBj
YWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKIApAQCAtNTc3MSw3ICs1NzcxLDcgQEAgUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBDU1NTdHlsZVNlbGVjdG9yOjpsb2FkUGVuZGluZ0ltYWdlKFN0eWxlUGVuZGluZ0ltYWdlKiBw
ZW4KICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpsb2FkUGVuZGlu
Z0ltYWdlcygpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2VzKCkKIHsKICAg
ICBpZiAobV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggMDcwNjZhMGM0YzRmZGM0
ZmY4MzliMDQ1NTBhNDQ5MTU3ZGRmYzYxNS4uOGNiMmFlMWJlMjFhNGU0NjllMjZmMGQ3MzY3YmJh
NDE0YzgzNmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0xMTgs
MTEgKzExOCwxMSBAQCBlbnVtIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIHsKIH07CiAKIC8vIFRoaXMg
Y2xhc3Mgc2VsZWN0cyBhIFJlbmRlclN0eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24g
YSBjb2xsZWN0aW9uIG9mIHN0eWxlc2hlZXRzLgotY2xhc3MgQ1NTU3R5bGVTZWxlY3RvciB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTU3R5bGVTZWxlY3Rvcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworY2xhc3MgU3R5bGVSZXNvbHZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3R5bGVSZXNvbHZlcik7V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
Q1NTU3R5bGVTZWxlY3RvcihEb2N1bWVudCosIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVz
KTsKLSAgICB+Q1NTU3R5bGVTZWxlY3RvcigpOworICAgIFN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQq
LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyk7CisgICAgflN0eWxlUmVzb2x2ZXIoKTsK
IAogICAgIC8vIFVzaW5nIHRoZXNlIGR1cmluZyB0cmVlIHdhbGsgd2lsbCBhbGxvdyBzdHlsZSBz
ZWxlY3RvciB0byBvcHRpbWl6ZSBjaGlsZCBhbmQgZGVzY2VuZGFudCBzZWxlY3RvciBsb29rdXBz
LgogICAgIHZvaWQgcHVzaFBhcmVudEVsZW1lbnQoRWxlbWVudCopOwpAQCAtMjc0LDcgKzI3NCw3
IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgRmVhdHVyZXMgewogICAgICAgICBGZWF0dXJlcygpOwog
ICAgICAgICB+RmVhdHVyZXMoKTsKLSAgICAgICAgdm9pZCBhZGQoY29uc3QgQ1NTU3R5bGVTZWxl
Y3Rvcjo6RmVhdHVyZXMmKTsKKyAgICAgICAgdm9pZCBhZGQoY29uc3QgU3R5bGVSZXNvbHZlcjo6
RmVhdHVyZXMmKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwogICAgICAgICBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiBpZHNJblJ1bGVzOwogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiBhdHRyc0luUnVsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAKaW5kZXggNzNkMjQzZmUwNzFiMzMwNzZhYjdmMThiYmViMWFiOWIxM2VmNzI2MS4uOGU1
N2NkOTJiMDUyOGUzNjM5NWEyOGVjODA3YzllNmY5ZmNhN2ZkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBi
b29sIGFwcGx5UmVzdHJpY3RvcihNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIsIGJvb2wgdmFsdWUp
CiAgICAgcmV0dXJuIHIgPT0gTWVkaWFRdWVyeTo6Tm90ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAK
LWJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRpYVF1ZXJ5U2V0KiBxdWVy
eVNldCwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcikgY29uc3QKK2Jvb2wgTWVkaWFR
dWVyeUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRpYVF1ZXJ5U2V0KiBxdWVyeVNldCwgU3R5bGVS
ZXNvbHZlciogc3R5bGVTZWxlY3RvcikgY29uc3QKIHsKICAgICBpZiAoIXF1ZXJ5U2V0KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXZhbHVhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5o
CmluZGV4IDI2YjcyMzg5NjU0ZjI4MTk2NmUxZjk2YjdjNDkyZDRiNjgyMjhiMDguLjllZWUwZjAy
MGYyODljYzcxM2I5MzA1YThiZTdjMGEyYTdlYWVmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlFdmFsdWF0b3IuaApAQCAtMzEsMTEgKzMxLDExIEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ1NTU3R5bGVTZWxlY3Rv
cjsKIGNsYXNzIEZyYW1lOwotY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXhw
OwogY2xhc3MgTWVkaWFRdWVyeVNldDsKK2NsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU3R5bGVS
ZXNvbHZlcjsKIAogLyoqCiAgKiBDbGFzcyB0aGF0IGV2YWx1YXRlcyBjc3MgbWVkaWEgcXVlcmll
cyBhcyBkZWZpbmVkIGluCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1lZGlh
VHlwZU1hdGNoU3BlY2lmaWMoY29uc3QgY2hhciogbWVkaWFUeXBlVG9NYXRjaCkgY29uc3Q7CiAK
ICAgICAvKiogRXZhbHVhdGVzIGEgbGlzdCBvZiBtZWRpYSBxdWVyaWVzICovCi0gICAgYm9vbCBl
dmFsKGNvbnN0IE1lZGlhUXVlcnlTZXQqLCBDU1NTdHlsZVNlbGVjdG9yKiA9IDApIGNvbnN0Owor
ICAgIGJvb2wgZXZhbChjb25zdCBNZWRpYVF1ZXJ5U2V0KiwgU3R5bGVSZXNvbHZlciogPSAwKSBj
b25zdDsKIAogICAgIC8qKiBFdmFsdWF0ZXMgbWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUg
ImFuZCAobWVkaWEtZmVhdHVyZTogdmFsdWUpIiBwYXJ0ICovCiAgICAgYm9vbCBldmFsKGNvbnN0
IE1lZGlhUXVlcnlFeHAqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5TWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNo
ZXIuY3BwCmluZGV4IDM2M2JhMjFiZDFlZGMyMmY3NzdiYWE2MDAwOGUwYjgwZGVlNGU3MTYuLmVl
ZjBiOTA5MmEyNDM1OThjYTlmMTI1MDUxOGM2ODgwMjFkYTJkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcApAQCAtODQsNyArODQsNyBAQCBQYXNzT3duUHRyPE1l
ZGlhUXVlcnlFdmFsdWF0b3I+IE1lZGlhUXVlcnlNYXRjaGVyOjpwcmVwYXJlRXZhbHVhdG9yKCkg
Y29uc3QKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gbV9kb2N1bWVudC0+c3R5
bGVTZWxlY3RvcigpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSBtX2RvY3Vt
ZW50LT5zdHlsZVNlbGVjdG9yKCk7CiAgICAgaWYgKCFzdHlsZVNlbGVjdG9yKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCmluZGV4IDY4MmUzNGY0ZWI4MGI5OWU0ZjY0MzkwZDczMTc5ZTg3NmM4ODY2ODYuLmQ3YzZh
ZDYwOWMxMWEyNzI1MmIzODE5NDcyNWRjYTY5NjVkNmQ5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgQ29s
b3IgY29sb3JGcm9tU1ZHQ29sb3JDU1NWYWx1ZShTVkdDb2xvciogc3ZnQ29sb3IsIGNvbnN0IENv
bG9yJiBmZ0NvbG9yKQogICAgIHJldHVybiBjb2xvcjsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwpAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSog
dmFsdWUpCiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIElmIHlv
dSBjcmFzaCBoZXJlLCBpdCdzIGJlY2F1c2UgeW91IGFkZGVkIGEgY3NzIHByb3BlcnR5IGFuZCBh
cmUgbm90IGhhbmRsaW5nIGl0Ci0gICAgICAgICAgICAvLyBpbiBlaXRoZXIgdGhpcyBzd2l0Y2gg
c3RhdGVtZW50IG9yIHRoZSBvbmUgaW4gQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eQor
ICAgICAgICAgICAgLy8gaW4gZWl0aGVyIHRoaXMgc3dpdGNoIHN0YXRlbWVudCBvciB0aGUgb25l
IGluIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkKICAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoMCwgInVuaW1wbGVtZW50ZWQgcHJvcGVydHlJRDogJWQiLCBpZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcAppbmRleCBk
Yjc4NDVmODNmOTE0ZDdlYzMxMmM2YTU1Y2E1NTE3YjdiYTFjMjRiLi5lNDIzMWY3MTc2Y2NiOGVh
YTU5NzhiYWI2YTQ0ZjIxMmYzMjczMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNw
cApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBBcHBseVByb3BlcnR5RXhwYW5kaW5nIHsKIHB1Ymxp
YzoKIAogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgotICAgIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBz
dGF0aWMgaW5saW5lIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IpCiAgICAgewogICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBoYW5k
bGVyLmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0
aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7
CiAgICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlPG9uZT4oc2VsZWN0b3IpOwogICAgICAgICBhcHBs
eUluaGVyaXRWYWx1ZTx0d28+KHNlbGVjdG9yKTsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgotICAgIHN0YXRpYyBpbmxp
bmUgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IpCiAgICAgewogICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBo
YW5kbGVyLmFwcGx5SW5pdGlhbFZhbHVlKHNlbGVjdG9yKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAg
ICB7CiAgICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPG9uZT4oc2VsZWN0b3IpOwogICAgICAgICBh
cHBseUluaXRpYWxWYWx1ZTx0d28+KHNlbGVjdG9yKTsKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgotICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCisgICAgc3RhdGljIGlubGluZSB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChpZCA9PSBD
U1NQcm9wZXJ0eUludmFsaWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDYsNyArMTA2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgaGFuZGxlci5hcHBseVZhbHVlKHNlbGVjdG9yLCB2YWx1
ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9y
KiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IGlmICghZXhwYW5kVmFsdWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjYsOSArMTI2LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwg
U2V0dGVyVHlwZSB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9CiAg
ICAgc3RhdGljIEdldHRlclR5cGUgdmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiAo
c3R5bGUtPipnZXR0ZXJGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyBJbml0aWFsVHlwZSBpbml0
aWFsKCkgeyByZXR1cm4gKCppbml0aWFsRnVuY3Rpb24pKCk7IH0KLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikgeyBzZXRWYWx1ZShz
ZWxlY3Rvci0+c3R5bGUoKSwgdmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkpKTsgfQotICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
KSB7IHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBpbml0aWFsKCkpOyB9Ci0gICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiwgQ1NTVmFsdWUqKSB7IH0KKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikgeyBz
ZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgdmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkp
KTsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yKSB7IHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBpbml0aWFsKCkpOyB9CisgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiwgQ1NTVmFsdWUqKSB7IH0KICAg
ICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0
eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZh
bHVlKTsgfQogfTsKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBHZXR0
ZXJUeXBlLCBHZXR0ZXJUeXBlIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0
CiBjbGFzcyBBcHBseVByb3BlcnR5RGVmYXVsdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
c2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBTZXR0ZXJUeXBlIHZhbHVlKSB7IChzdHlsZS0+
KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAg
ICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTnVt
YmVyVHlwZSwgTnVtYmVyVHlwZSAoUmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBjb25z
dAogY2xhc3MgQXBwbHlQcm9wZXJ0eU51bWJlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
c2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBOdW1iZXJUeXBlIHZhbHVlKSB7IChzdHlsZS0+
KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKIHRlbXBsYXRlIDxTdHlsZUlt
YWdlKiAoUmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVy
U3R5bGU6OipzZXR0ZXJGdW5jdGlvbikoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiksIFN0eWxlSW1h
Z2UqICgqaW5pdGlhbEZ1bmN0aW9uKSgpLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PgogY2xhc3Mg
QXBwbHlQcm9wZXJ0eVN0eWxlSW1hZ2UgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc2Vs
ZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2VsZWN0b3ItPnN0eWxlSW1hZ2UocHJv
cGVydHksIHZhbHVlKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0
dGVyRnVuY3Rpb24pKHNlbGVjdG9yLT5zdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOyB9CiAg
ICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7CiAgICAgICAg
IFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFN0eWxl
SW1hZ2UqLCBnZXR0ZXJGdW5jdGlvbiwgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiwgc2V0dGVyRnVu
Y3Rpb24sIFN0eWxlSW1hZ2UqLCBpbml0aWFsRnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7CkBA
IC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGhhc0F1dG8oUmVuZGVy
U3R5bGUqIHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPipoYXNBdXRvRnVuY3Rpb24pKCk7IH0KICAg
ICBzdGF0aWMgdm9pZCBzZXRBdXRvKFJlbmRlclN0eWxlKiBzdHlsZSkgeyAoc3R5bGUtPipzZXRB
dXRvRnVuY3Rpb24pKCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZh
bHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgaWYgKGhhc0F1dG8o
c2VsZWN0b3ItPnBhcmVudFN0eWxlKCkpKQogICAgICAgICAgICAgc2V0QXV0byhzZWxlY3Rvci0+
c3R5bGUoKSk7CkBAIC0xOTgsOSArMTk4LDkgQEAgcHVibGljOgogICAgICAgICAgICAgc2V0VmFs
dWUoc2VsZWN0b3ItPnN0eWxlKCksIHZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IpIHsgc2V0QXV0byhzZWxlY3Rvci0+c3R5bGUoKSk7IH0KKyAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikgeyBzZXRBdXRv
KHNlbGVjdG9yLT5zdHlsZSgpKTsgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTIxOSwxMiArMjE5LDEyIEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9w
ZXJ0eUNsaXAgewogcHJpdmF0ZToKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChD
U1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQorICAg
IHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gdmFsdWUtPmNv
bnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24g
fCBGcmFjdGlvbkNvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oc2VsZWN0b3ItPnN0eWxlKCks
IHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCkpOwogICAgIH0KIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRW
YWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpOwogICAgICAgICBp
ZiAoIXBhcmVudFN0eWxlLT5oYXNDbGlwKCkpCkBAIC0yMzMsMTMgKzIzMywxMyBAQCBwdWJsaWM6
CiAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yKQogICAgIHsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldENsaXAoTGVuZ3Ro
KCksIExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCkpOwogICAgICAgICBzZWxlY3Rvci0+c3R5
bGUoKS0+c2V0SGFzQ2xpcChmYWxzZSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTI3MywxOSArMjczLDE5IEBAIHRlbXBsYXRlIDxDb2xvcklu
aGVyaXQgaW5oZXJpdENvbG9yRnJvbVBhcmVudCwKICAgICAgICAgICBDb2xvciAoKmluaXRpYWxG
dW5jdGlvbikoKSA9ICZkZWZhdWx0SW5pdGlhbENvbG9yPgogY2xhc3MgQXBwbHlQcm9wZXJ0eUNv
bG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIC8vIFZpc2l0ZWQgbGluayBz
dHlsZSBjYW4gbmV2ZXIgZXhwbGljaXRseSBpbmhlcml0IGZyb20gcGFyZW50IHZpc2l0ZWQgbGlu
ayBzdHlsZSBzbyBubyBzZXBhcmF0ZSBnZXR0ZXJzIGFyZSBuZWVkZWQuCiAgICAgICAgIENvbG9y
IGNvbG9yID0gKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT4qZ2V0dGVyRnVuY3Rpb24pKCk7CiAg
ICAgICAgIGFwcGx5Q29sb3JWYWx1ZShzZWxlY3RvciwgY29sb3IuaXNWYWxpZCgpID8gY29sb3Ig
OiAoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPipkZWZhdWx0RnVuY3Rpb24pKCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgYXBwbHlDb2xvclZhbHVlKHNlbGVjdG9yLCBpbml0
aWFsRnVuY3Rpb24oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTMwMSw3ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCBhcHBseUNvbG9yVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUNvbG9yVmFsdWUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7CiAgICAg
ICAgIGlmIChzZWxlY3Rvci0+YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkpCiAgICAgICAg
ICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoY29sb3IpOwpAQCAtMzE1
LDcgKzMxNSw3IEBAIHB1YmxpYzoKIHRlbXBsYXRlIDxUZXh0RGlyZWN0aW9uIChSZW5kZXJTdHls
ZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1
bmN0aW9uKShUZXh0RGlyZWN0aW9uKSwgVGV4dERpcmVjdGlvbiAoKmluaXRpYWxGdW5jdGlvbiko
KT4KIGNsYXNzIEFwcGx5UHJvcGVydHlEaXJlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1
ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdDxUZXh0
RGlyZWN0aW9uLCBnZXR0ZXJGdW5jdGlvbiwgVGV4dERpcmVjdGlvbiwgc2V0dGVyRnVuY3Rpb24s
IFRleHREaXJlY3Rpb24sIGluaXRpYWxGdW5jdGlvbj46OmFwcGx5VmFsdWUoc2VsZWN0b3IsIHZh
bHVlKTsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHNlbGVjdG9yLT5lbGVtZW50KCk7CkBA
IC0zNDYsNyArMzQ2LDcgQEAgdGVtcGxhdGUgPExlbmd0aCAoUmVuZGVyU3R5bGU6OipnZXR0ZXJG
dW5jdGlvbikoKSBjb25zdCwKIGNsYXNzIEFwcGx5UHJvcGVydHlMZW5ndGggewogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgTGVuZ3RoIHZhbHVl
KSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisg
ICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFs
dWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHRlbXBsYXRlIDxTdHJp
bmdJZGVudEJlaGF2aW9yIGlkZW50QmVoYXZpb3IsIGNvbnN0IEF0b21pY1N0cmluZyYgKFJlbmRl
clN0eWxlOjoqCiBjbGFzcyBBcHBseVByb3BlcnR5U3RyaW5nIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1
ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00MTEsNyArNDExLDcgQEAgdGVtcGxhdGUg
PExlbmd0aFNpemUgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQg
KFJlbmRlclN0eWxlOjoKIGNsYXNzIEFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXMgewogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgTGVuZ3RoU2l6
ZSB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9Ci0gICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZh
bHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3Is
IENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ4NCwxMCArNDg0LDEwIEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBULAogICAgICAgICAgIHZvaWQgKEZpbGxMYXllcjo6KnNldEZ1bmN0aW9u
KSh0eXBlbmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzPFQ+OjpTZXR0ZXIpLAogICAgICAgICAg
IHZvaWQgKEZpbGxMYXllcjo6KmNsZWFyRnVuY3Rpb24pKCksCiAgICAgICAgICAgdHlwZW5hbWUg
RmlsbExheWVyQWNjZXNzb3JUeXBlczxUPjo6R2V0dGVyICgqaW5pdGlhbEZ1bmN0aW9uKShFRmls
bExheWVyVHlwZSksCi0gICAgICAgICAgdm9pZCAoQ1NTU3R5bGVTZWxlY3Rvcjo6Km1hcEZpbGxG
dW5jdGlvbikoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKT4KKyAgICAgICAg
ICB2b2lkIChTdHlsZVJlc29sdmVyOjoqbWFwRmlsbEZ1bmN0aW9uKShDU1NQcm9wZXJ0eUlELCBG
aWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgogY2xhc3MgQXBwbHlQcm9wZXJ0eUZpbGxMYXllciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChz
ZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwogICAgICAgICBGaWxs
TGF5ZXIqIHByZXZDaGlsZCA9IDA7CkBAIC01MTEsNyArNTExLDcgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGls
ZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwogICAgICAg
ICAoY3VyckNoaWxkLT4qc2V0RnVuY3Rpb24pKCgqaW5pdGlhbEZ1bmN0aW9uKShmaWxsTGF5ZXJU
eXBlKSk7CkBAIC01MTksNyArNTE5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgKGN1cnJDaGls
ZC0+KmNsZWFyRnVuY3Rpb24pKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRp
YyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1
ZSkKICAgICB7CiAgICAgICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gKHNlbGVjdG9yLT5zdHls
ZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7CiAgICAgICAgIEZpbGxMYXllciogcHJldkNo
aWxkID0gMDsKQEAgLTU2Nyw3ICs1NjcsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKIGNsYXNz
IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBz
ZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFQgdmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVu
Y3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAg
ICAgICAvLyBub3RlOiBDU1NQcm9wZXJ0eUxldHRlci9Xb3JkU3BhY2luZyByaWdodCBub3cgc2V0
cyB0byB6ZXJvIGlmIGl0J3Mgbm90IGEgcHJpbWl0aXZlIHZhbHVlIGZvciBzb21lIHJlYXNvbi4u
LgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCkBAIC02MDUsMjEgKzYw
NSwyMSBAQCBwdWJsaWM6CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCAoRm9udERlc2NyaXB0aW9u
OjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKEZvbnREZXNjcmlwdGlvbjo6KnNldHRl
ckZ1bmN0aW9uKShUKSwgVCBpbml0aWFsVmFsdWU+CiBjbGFzcyBBcHBseVByb3BlcnR5Rm9udCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOwogICAgICAgICAoZm9udERl
c2NyaXB0aW9uLipzZXR0ZXJGdW5jdGlvbikoKHNlbGVjdG9yLT5wYXJlbnRGb250RGVzY3JpcHRp
b24oKS4qZ2V0dGVyRnVuY3Rpb24pKCkpOwogICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJ
bml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlw
dGlvbigpOwogICAgICAgICAoZm9udERlc2NyaXB0aW9uLipzZXR0ZXJGdW5jdGlvbikoaW5pdGlh
bFZhbHVlKTsKICAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAg
ICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC02NTEsNyArNjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHNpemUgLyAxLjJm
OwogICAgIH0KIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIGZsb2F0IHNpemUgPSBz
ZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgp
OwogCkBAIC02NjUsNyArNjY1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IpCiAgICAgewogICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwogICAgICAgICBmbG9hdCBz
aXplID0gc2VsZWN0b3ItPmZvbnRTaXplRm9yS2V5d29yZChzZWxlY3Rvci0+ZG9jdW1lbnQoKSwg
Q1NTVmFsdWVNZWRpdW0sIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOwpA
QCAtNjc5LDcgKzY3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1Zh
bHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NTAsNyArNzUwLDcgQEAg
cHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5Rm9udFdlaWdodCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFs
dWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc4MCw3ICs3ODAsNyBAQCBw
dWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlcyB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIHBhcmVu
dEZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5wYXJlbnRGb250RGVzY3JpcHRpb24oKTsKICAg
ICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVz
Y3JpcHRpb24oKTsKQEAgLTc5Miw3ICs3OTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNlbGVjdG9y
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikK
ICAgICB7CiAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rv
ci0+Zm9udERlc2NyaXB0aW9uKCk7CiAKQEAgLTgwMyw3ICs4MDMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgRm9udERlc2Ny
aXB0aW9uOjpMaWdhdHVyZXNTdGF0ZSBjb21tb25MaWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlw
dGlvbjo6Tm9ybWFsTGlnYXR1cmVzU3RhdGU7CiAgICAgICAgIEZvbnREZXNjcmlwdGlvbjo6TGln
YXR1cmVzU3RhdGUgZGlzY3JldGlvbmFyeUxpZ2F0dXJlc1N0YXRlID0gRm9udERlc2NyaXB0aW9u
OjpOb3JtYWxMaWdhdHVyZXNTdGF0ZTsKQEAgLTg2OSw3ICs4NjksNyBAQCB0ZW1wbGF0ZSA8Qm9y
ZGVySW1hZ2VUeXBlIGJvcmRlckltYWdlVHlwZSwKICAgICAgICAgICB2b2lkIChSZW5kZXJTdHls
ZTo6KnNldHRlckZ1bmN0aW9uKShjb25zdCBOaW5lUGllY2VJbWFnZSYpPgogY2xhc3MgQXBwbHlQ
cm9wZXJ0eUJvcmRlckltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVl
KQogICAgIHsKICAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2U7CiAgICAgICAgIGlmIChib3Jk
ZXJJbWFnZVR5cGUgPT0gTWFzaykKQEAgLTg5Miw3ICs4OTIsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBpbmxpbmUgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGdldFZhbHVlKFJlbmRlclN0eWxlKiBz
dHlsZSkgeyByZXR1cm4gdHlwZSA9PSBJbWFnZSA/IHN0eWxlLT5ib3JkZXJJbWFnZSgpIDogc3R5
bGUtPm1hc2tCb3hJbWFnZSgpOyB9CiAgICAgc3RhdGljIGlubGluZSB2b2lkIHNldFZhbHVlKFJl
bmRlclN0eWxlKiBzdHlsZSwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIHZhbHVlKSB7IHJldHVybiB0
eXBlID09IEltYWdlID8gc3R5bGUtPnNldEJvcmRlckltYWdlKHZhbHVlKSA6IHN0eWxlLT5zZXRN
YXNrQm94SW1hZ2UodmFsdWUpOyB9CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhl
cml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBw
bHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBO
aW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSkpOwogICAgICAg
ICBzd2l0Y2ggKG1vZGlmaWVyKSB7CkBAIC05MTIsNyArOTEyLDcgQEAgcHVibGljOgogICAgICAg
ICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgaW1hZ2UpOwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQog
ICAgIHsKICAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoc2VsZWN0b3ItPnN0
eWxlKCkpKTsKICAgICAgICAgc3dpdGNoIChtb2RpZmllcikgewpAQCAtOTM2LDcgKzkzNiw3IEBA
IHB1YmxpYzoKICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGltYWdlKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgTmluZVBp
ZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCkpKTsKICAgICAgICAgc3dp
dGNoIChtb2RpZmllcikgewpAQCAtOTYyLDcgKzk2Miw3IEBAIHB1YmxpYzoKIHRlbXBsYXRlIDxD
U1NQcm9wZXJ0eUlEIGlkLCBTdHlsZUltYWdlKiAoUmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlv
bikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5jdGlvbikoUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiksIFN0eWxlSW1hZ2UqICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgogY2xhc3Mg
QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUp
IHsgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKHNlbGVjdG9yLT5zdHlsZUlt
YWdlKGlkLCB2YWx1ZSkpOyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKSB7IChzZWxlY3Rvci0+c3R5bGUoKS0+KnNl
dHRlckZ1bmN0aW9uKShzZWxlY3Rvci0+c3R5bGVJbWFnZShpZCwgdmFsdWUpKTsgfQogICAgIHN0
YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAgewogICAgICAgICBQcm9w
ZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxTdHlsZUltYWdl
KiwgZ2V0dGVyRnVuY3Rpb24sIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4sIHNldHRlckZ1bmN0aW9u
LCBTdHlsZUltYWdlKiwgaW5pdGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOwpAQCAtOTc0
LDggKzk3NCw4IEBAIGVudW0gQ291bnRlckJlaGF2aW9yIHtJbmNyZW1lbnQgPSAwLCBSZXNldH07
CiB0ZW1wbGF0ZSA8Q291bnRlckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KIGNsYXNzIEFwcGx5
UHJvcGVydHlDb3VudGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBlbXB0eUZ1bmN0aW9u
KENTU1N0eWxlU2VsZWN0b3IqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBlbXB0eUZ1bmN0
aW9uKFN0eWxlUmVzb2x2ZXIqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIENvdW50ZXJEaXJlY3Rp
dmVNYXAmIG1hcCA9IHNlbGVjdG9yLT5zdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygp
OwogICAgICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBwYXJlbnRNYXAgPSBzZWxlY3Rvci0+cGFy
ZW50U3R5bGUoKS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKQEAgLTEwMDIsNyArMTAwMiw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFs
dWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNTMsMTkgKzEwNTMsMTkgQEAgcHVibGljOgog
CiBjbGFzcyBBcHBseVByb3BlcnR5Q3Vyc29yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMg
dm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAg
ICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDdXJzb3Ioc2VsZWN0b3ItPnBhcmVudFN0eWxl
KCktPmN1cnNvcigpKTsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvckxpc3Qo
c2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmN1cnNvcnMoKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAg
c3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAg
ICAgewogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+Y2xlYXJDdXJzb3JMaXN0KCk7CiAgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJz
b3IoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5jbGVhckN1cnNvckxpc3QoKTsKICAgICAgICAgaWYgKHZh
bHVlLT5pc1ZhbHVlTGlzdCgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBwdWJsaWM6CiAKIGNs
YXNzIEFwcGx5UHJvcGVydHlUZXh0QWxpZ24gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTIyLDcgKzExMjIsNyBAQCBwdWJsaWM6CiAKIGNs
YXNzIEFwcGx5UHJvcGVydHlUZXh0RGVjb3JhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVl
KQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEVUZXh0RGVjb3JhdGlvbiB0ID0gUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwogICAgICAgICBmb3IgKENTU1ZhbHVlTGlz
dEl0ZXJhdG9yIGkodmFsdWUpOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKQEAgLTExNDEs
NyArMTE0MSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVVuaWNvZGVCaWRpIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYg
KHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICBFVW5pY29kZUJpZGkgcmVuZGVy
ZXJVbmljb2RlQmlkaSA9IFJlbmRlclN0eWxlOjppbml0aWFsVW5pY29kZUJpZGkoKTsKQEAgLTEx
NzEsNyArMTE3MSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eUxpbmVIZWlnaHQg
ewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
Mjg1LDkgKzEyODUsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciopIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciopIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVl
KFN0eWxlUmVzb2x2ZXIqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsKICAgICAgICAgTGVuZ3RoIHdpZHRoOwpA
QCAtMTM1OCwyMSArMTM1OCwyMSBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlUZXh0
RW1waGFzaXNTdHlsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhl
cml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+
dGV4dEVtcGhhc2lzRmlsbCgpKTsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRF
bXBoYXNpc01hcmsoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPnRleHRFbXBoYXNpc01hcmsoKSk7
CiAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHNl
bGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBo
YXNpc0ZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkpOwogICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRFbXBoYXNpc01hcmsoKSk7CiAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRU
ZXh0RW1waGFzaXNDdXN0b21NYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3Vz
dG9tTWFyaygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsK
ICAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICBDU1NWYWx1
ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CkBAIC0xNDI1
LDcgKzE0MjUsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKICAgICAgICAgICBib29sIChBbmlt
YXRpb246Oip0ZXN0RnVuY3Rpb24pKCkgY29uc3QsCiAgICAgICAgICAgdm9pZCAoQW5pbWF0aW9u
OjoqY2xlYXJGdW5jdGlvbikoKSwKICAgICAgICAgICBUICgqaW5pdGlhbEZ1bmN0aW9uKSgpLAot
ICAgICAgICAgIHZvaWQgKENTU1N0eWxlU2VsZWN0b3I6OiptYXBGdW5jdGlvbikoQW5pbWF0aW9u
KiwgQ1NTVmFsdWUqKSwKKyAgICAgICAgICB2b2lkIChTdHlsZVJlc29sdmVyOjoqbWFwRnVuY3Rp
b24pKEFuaW1hdGlvbiosIENTU1ZhbHVlKiksCiAgICAgICAgICAgQW5pbWF0aW9uTGlzdCogKFJl
bmRlclN0eWxlOjoqYW5pbWF0aW9uR2V0dGVyRnVuY3Rpb24pKCksCiAgICAgICAgICAgY29uc3Qg
QW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyRnVu
Y3Rpb24pKCkgY29uc3Q+CiBjbGFzcyBBcHBseVByb3BlcnR5QW5pbWF0aW9uIHsKQEAgLTE0MzUs
MTEgKzE0MzUsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHRlc3QoY29uc3QgQW5pbWF0
aW9uKiBhbmltYXRpb24pIHsgcmV0dXJuIChhbmltYXRpb24tPip0ZXN0RnVuY3Rpb24pKCk7IH0K
ICAgICBzdGF0aWMgdm9pZCBjbGVhcihBbmltYXRpb24qIGFuaW1hdGlvbikgeyAoYW5pbWF0aW9u
LT4qY2xlYXJGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyBUIGluaXRpYWwoKSB7IHJldHVybiAo
KmluaXRpYWxGdW5jdGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIG1hcChDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkgeyAo
c2VsZWN0b3ItPiptYXBGdW5jdGlvbikoYW5pbWF0aW9uLCB2YWx1ZSk7IH0KKyAgICBzdGF0aWMg
dm9pZCBtYXAoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIEFuaW1hdGlvbiogYW5pbWF0aW9uLCBD
U1NWYWx1ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT4qbWFwRnVuY3Rpb24pKGFuaW1hdGlvbiwgdmFs
dWUpOyB9CiAgICAgc3RhdGljIEFuaW1hdGlvbkxpc3QqIGFjY2Vzc0FuaW1hdGlvbnMoUmVuZGVy
U3R5bGUqIHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPiphbmltYXRpb25HZXR0ZXJGdW5jdGlvbiko
KTsgfQogICAgIHN0YXRpYyBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKFJlbmRlclN0
eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyRnVu
Y3Rpb24pKCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlz
dCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOwogICAgICAgICBjb25zdCBB
bmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gYW5pbWF0aW9ucyhzZWxlY3Rvci0+cGFyZW50U3R5
bGUoKSk7CkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjbGVhcihs
aXN0LT5hbmltYXRpb24oaSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlh
bFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgQW5p
bWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOwog
ICAgICAgICBpZiAobGlzdC0+aXNFbXB0eSgpKQpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgY2xlYXIobGlzdC0+YW5pbWF0aW9uKGkpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlz
dCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOwogICAgICAgICBzaXplX3Qg
Y2hpbGRJbmRleCA9IDA7CkBAIC0xNDk1LDE5ICsxNDk1LDE5IEBAIHB1YmxpYzoKIAogY2xhc3Mg
QXBwbHlQcm9wZXJ0eU91dGxpbmVTdHlsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBw
bHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAg
ICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8T3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxl
OjpvdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6c2V0T3V0
bGluZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRs
aW5lU3R5bGVJc0F1dG8+OjphcHBseUluaGVyaXRWYWx1ZShzZWxlY3Rvcik7CiAgICAgICAgIEFw
cGx5UHJvcGVydHlEZWZhdWx0QmFzZTxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6b3V0bGlu
ZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlLCBFQm9y
ZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6YXBwbHlJbmhlcml0
VmFsdWUoc2VsZWN0b3IpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZh
bHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5p
dGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgQXBwbHlQ
cm9wZXJ0eURlZmF1bHRCYXNlPE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6b3V0bGluZVN0
eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZUlz
QXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjppbml0aWFsT3V0bGluZVN0eWxlSXNB
dXRvPjo6YXBwbHlJbml0aWFsVmFsdWUoc2VsZWN0b3IpOwogICAgICAgICBBcHBseVByb3BlcnR5
RGVmYXVsdEJhc2U8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZSwgRUJv
cmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5SW5pdGlhbFZhbHVlKHNlbGVj
dG9yKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8T3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpvdXRs
aW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0
eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRsaW5lU3R5
bGVJc0F1dG8+OjphcHBseVZhbHVlKHNlbGVjdG9yLCB2YWx1ZSk7CiAgICAgICAgIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGUsIEVC
b3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGUsIEVCb3JkZXJTdHlsZSwg
JlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+OjphcHBseVZhbHVlKHNlbGVjdG9yLCB2
YWx1ZSk7CkBAIC0xNTE4LDcgKzE1MTgsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVy
dHlSZXNpemUgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlW
ZXJ0aWNhbEFsaWduIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTU3MCw3ICsxNTcwLDcgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3Bl
cnR5QXNwZWN0UmF0aW8gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZh
bHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5o
ZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgaWYgKCFz
ZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE1NzksMTQgKzE1NzksMTQgQEAgcHVibGljOgogICAgICAgICBzZWxlY3Rvci0+
c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3Ioc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkt
PmFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAg
ICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKFJlbmRlclN0eWxlOjppbml0
aWFsSGFzQXNwZWN0UmF0aW8oKSk7CiAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWlu
YXRvcigpKTsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJh
dG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUt
PmlzQXNwZWN0UmF0aW9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+
c2V0SGFzQXNwZWN0UmF0aW8oZmFsc2UpOwpAQCAtMTYwNiwyNiArMTYwNiwyNiBAQCBwdWJsaWM6
CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlab29tIHsKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQg
cmVzZXRFZmZlY3RpdmVab29tKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRp
YyB2b2lkIHJlc2V0RWZmZWN0aXZlWm9vbShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7
CiAgICAgICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdC4gVGhpcyBhbGxvd3MgdGhlIHNl
dFpvb20gbWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29tIGluIGVmZmVjdC4K
ICAgICAgICAgc2VsZWN0b3ItPnNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3ItPnBhcmVudFN0eWxl
KCkgPyBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpIDogUmVuZGVyU3R5
bGU6OmluaXRpYWxab29tKCkpOwogICAgIH0KIAogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAg
ICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHNlbGVjdG9yKTsKICAgICAgICAgc2VsZWN0b3ItPnNl
dFpvb20oc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPnpvb20oKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3Ip
CiAgICAgewogICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwogICAgICAgICBz
ZWxlY3Rvci0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NT
VmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKTsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CkBAIC0xNjU5
LDcgKzE2NTksNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlEaXNwbGF5IHsKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWREaXNwbGF5VmFsdWUoQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IsIEVEaXNwbGF5IGRpc3BsYXlQcm9wZXJ0eVZhbHVlKQorICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBFRGlzcGxheSBkaXNwbGF5UHJvcGVydHlWYWx1ZSkKICAgICB7CiAjaWYgRU5BQkxF
KFNWRykKICAgICAgICAgaWYgKHNlbGVjdG9yLT5lbGVtZW50KCkgJiYgc2VsZWN0b3ItPmVsZW1l
bnQoKS0+aXNTVkdFbGVtZW50KCkgJiYgc2VsZWN0b3ItPnN0eWxlKCktPnN0eWxlVHlwZSgpID09
IE5PUFNFVURPKQpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJp
dFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgRURpc3BsYXkg
ZGlzcGxheSA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5kaXNwbGF5KCk7CiAgICAgICAgIGlm
ICghaXNWYWxpZERpc3BsYXlWYWx1ZShzZWxlY3RvciwgZGlzcGxheSkpCkBAIC0xNjc5LDEyICsx
Njc5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldERpc3BsYXko
ZGlzcGxheSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBzZWxlY3Rvci0+c3R5
bGUoKS0+c2V0RGlzcGxheShSZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkoKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3MDUsMjEgKzE3
MDUsMjEgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5RmxleCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IpCiAgICAgewogICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8ZmxvYXQsICZS
ZW5kZXJTdHlsZTo6cG9zaXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0eWxlOjpzZXRQb3NpdGl2
ZUZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxOZWdhdGl2ZUZsZXg+OjphcHBseUlu
aGVyaXRWYWx1ZShzZWxlY3Rvcik7CiAgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxm
bG9hdCwgJlJlbmRlclN0eWxlOjpuZWdhdGl2ZUZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6OnNl
dE5lZ2F0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBvc2l0aXZlRmxleD46
OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKICAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1
bHRCYXNlPExlbmd0aCwgJlJlbmRlclN0eWxlOjpmbGV4UHJlZmVycmVkU2l6ZSwgTGVuZ3RoLCAm
UmVuZGVyU3R5bGU6OnNldEZsZXhQcmVmZXJyZWRTaXplLCBMZW5ndGgsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbEZsZXhQcmVmZXJyZWRTaXplPjo6YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOwog
ICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFBv
c2l0aXZlRmxleChSZW5kZXJTdHlsZTo6aW5pdGlhbFBvc2l0aXZlRmxleCgpKTsKICAgICAgICAg
c2VsZWN0b3ItPnN0eWxlKCktPnNldE5lZ2F0aXZlRmxleChSZW5kZXJTdHlsZTo6aW5pdGlhbE5l
Z2F0aXZlRmxleCgpKTsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEZsZXhQcmVmZXJy
ZWRTaXplKFJlbmRlclN0eWxlOjppbml0aWFsRmxleFByZWZlcnJlZFNpemUoKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKQEAg
LTE3NzYsMTggKzE3NzYsMTggQEAgU3R5bGVCdWlsZGVyOjpTdHlsZUJ1aWxkZXIoKQogICAgICAg
ICBtX3Byb3BlcnR5TWFwW2ldID0gUHJvcGVydHlIYW5kbGVyKCk7CiAKICAgICAvLyBQbGVhc2Ug
a2VlcCBDU1MgcHJvcGVydHkgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCi0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIEFwcGx5UHJvcGVy
dHlGaWxsTGF5ZXI8RUZpbGxBdHRhY2htZW50LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2ht
ZW50LCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRM
YXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNBdHRh
Y2htZW50U2V0LCAmRmlsbExheWVyOjphdHRhY2htZW50LCAmRmlsbExheWVyOjpzZXRBdHRhY2ht
ZW50LCAmRmlsbExheWVyOjpjbGVhckF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxs
QXR0YWNobWVudCwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxBdHRhY2htZW50Pjo6Y3JlYXRl
SGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q2xpcCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ2xpcCwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3Jv
dW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6Omlz
Q2xpcFNldCwgJkZpbGxMYXllcjo6Y2xpcCwgJkZpbGxMYXllcjo6c2V0Q2xpcCwgJkZpbGxMYXll
cjo6Y2xlYXJDbGlwLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAsICZDU1NTdHlsZVNlbGVj
dG9yOjptYXBGaWxsQ2xpcD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIEFwcGx5UHJvcGVydHlGaWxsTGF5
ZXI8RUZpbGxBdHRhY2htZW50LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBCYWNr
Z3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZS
ZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNBdHRhY2htZW50U2V0
LCAmRmlsbExheWVyOjphdHRhY2htZW50LCAmRmlsbExheWVyOjpzZXRBdHRhY2htZW50LCAmRmls
bExheWVyOjpjbGVhckF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQXR0YWNobWVu
dCwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxBdHRhY2htZW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgQmFj
a2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAm
UmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQ2xpcFNldCwgJkZp
bGxMYXllcjo6Y2xpcCwgJkZpbGxMYXllcjo6c2V0Q2xpcCwgJkZpbGxMYXllcjo6Y2xlYXJDbGlw
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQ2xp
cD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBBcHBseVByb3BlcnR5Q29sb3I8Tm9Jbmhlcml0RnJvbVBhcmVudCwg
JlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0QmFja2dyb3Vu
ZENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yLCAmUmVu
ZGVyU3R5bGU6OmludmFsaWRDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPFN0eWxlSW1hZ2UqLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQmFja2dyb3VuZEZp
bGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5
bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzSW1hZ2VTZXQsICZGaWxsTGF5ZXI6
OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSwgJkZpbGxMYXllcjo6Y2xlYXJJbWFnZSwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxJbWFn
ZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
QmFja2dyb3VuZE9yaWdpbiwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywg
JkZpbGxMYXllcjo6aXNPcmlnaW5TZXQsICZGaWxsTGF5ZXI6Om9yaWdpbiwgJkZpbGxMYXllcjo6
c2V0T3JpZ2luLCAmRmlsbExheWVyOjpjbGVhck9yaWdpbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZp
bGxPcmlnaW4sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsT3JpZ2luPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2Us
IEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91
bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNJ
bWFnZVNldCwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExh
eWVyOjpjbGVhckltYWdlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlLCAmU3R5bGVSZXNv
bHZlcjo6bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEJhY2tncm91bmRGaWxsTGF5
ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpi
YWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3Jp
Z2luLCAmRmlsbExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmls
bExheWVyOjppbml0aWFsRmlsbE9yaWdpbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxPcmlnaW4+
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvbiwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRl
clN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRM
YXllcnMsICZGaWxsTGF5ZXI6OmlzWFBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp4UG9zaXRpb24s
ICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJYUG9zaXRpb24sICZG
aWxsTGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmls
bFhQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5n
dGgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgQmFja2dyb3VuZEZpbGxMYXllciwg
JlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tn
cm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzWVBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp5UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJZUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbFlQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxMZW5ndGgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQmFja2dyb3VuZEZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzWFBvc2l0aW9uU2V0LCAmRmlsbExheWVy
Ojp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJY
UG9zaXRpb24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uLCAmU3R5bGVSZXNvbHZl
cjo6bWFwRmlsbFhQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgQXBwbHlQcm9wZXJ0eUZpbGxM
YXllcjxMZW5ndGgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgQmFja2dyb3VuZEZp
bGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5
bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzWVBvc2l0aW9uU2V0LCAmRmlsbExh
eWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xl
YXJZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uLCAmU3R5bGVSZXNv
bHZlcjo6bWFwRmlsbFlQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQXBwbHlQcm9wZXJ0eUV4cGFu
ZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQXBwbHlQcm9wZXJ0eUZpbGxM
YXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQmFja2dyb3Vu
ZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WFNldCwgJkZpbGxM
YXllcjo6cmVwZWF0WCwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WCwgJkZpbGxMYXllcjo6Y2xlYXJS
ZXBlYXRYLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFgsICZDU1NTdHlsZVNlbGVjdG9y
OjptYXBGaWxsUmVwZWF0WD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8
RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIEJhY2tncm91bmRGaWxs
TGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxl
OjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFlTZXQsICZGaWxsTGF5ZXI6
OnJlcGVhdFksICZGaWxsTGF5ZXI6OnNldFJlcGVhdFksICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0
WSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
RmlsbFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEZpbGxTaXpl
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExh
eWVycywgJkZpbGxMYXllcjo6aXNTaXplU2V0LCAmRmlsbExheWVyOjpzaXplLCAmRmlsbExheWVy
OjpzZXRTaXplLCAmRmlsbExheWVyOjpjbGVhclNpemUsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxs
U2l6ZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQXBw
bHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WCwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5k
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVw
ZWF0WFNldCwgJkZpbGxMYXllcjo6cmVwZWF0WCwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WCwgJkZp
bGxMYXllcjo6Y2xlYXJSZXBlYXRYLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFgsICZT
dHlsZVJlc29sdmVyOjptYXBGaWxsUmVwZWF0WD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIEFwcGx5UHJvcGVy
dHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIEJh
Y2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywg
JlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFlTZXQs
ICZGaWxsTGF5ZXI6OnJlcGVhdFksICZGaWxsTGF5ZXI6OnNldFJlcGVhdFksICZGaWxsTGF5ZXI6
OmNsZWFyUmVwZWF0WSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZLCAmU3R5bGVSZXNv
bHZlcjo6bWFwRmlsbFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PEZpbGxTaXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBCYWNrZ3JvdW5kRmlsbExheWVy
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFj
a2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNTaXplU2V0LCAmRmlsbExheWVyOjpzaXplLCAm
RmlsbExheWVyOjpzZXRTaXplLCAmRmlsbExheWVyOjpjbGVhclNpemUsICZGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsU2l6ZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxTaXplPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXIsIEFwcGx5UHJv
cGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcj46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBB
cHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tV2lkdGg+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBBcHBseVByb3BlcnR5Q29sb3I8Tm9Jbmhlcml0
RnJvbVBhcmVudCwgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21Db2xvciwgJlJlbmRlclN0eWxl
OjpzZXRCb3JkZXJCb3R0b21Db2xvciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0JvcmRl
ckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6OmNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKQEAg
LTE4ODksMTkgKzE4ODksMTkgQEAgU3R5bGVCdWlsZGVyOjpTdHlsZUJ1aWxkZXIoKQogICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBBcHBseVByb3BlcnR5VW5p
Y29kZUJpZGk6OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5VmVydGljYWxBbGlnbiwgQXBwbHlQcm9wZXJ0eVZlcnRpY2FsQWxpZ246OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VmlzaWJpbGl0eSwg
QXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6dmlzaWJpbGl0
eSwgRVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6c2V0VmlzaWJpbGl0eSwgRVZpc2liaWxpdHks
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbFZpc2liaWxpdHk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LCBBcHBs
eVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246
OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5
LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjpt
YXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVy
U3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjxBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6ZGlyZWN0
aW9uLCAmQW5pbWF0aW9uOjpzZXREaXJlY3Rpb24sICZBbmltYXRpb246OmlzRGlyZWN0aW9uU2V0
LCAmQW5pbWF0aW9uOjpjbGVhckRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bkRpcmVjdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbiwgJlJl
bmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1h
dGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5pbWF0aW9uOjppc0R1
cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFs
QW5pbWF0aW9uRHVyYXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EdXJhdGlv
biwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlv
bnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPHVuc2lnbmVk
LCAmQW5pbWF0aW9uOjpmaWxsTW9kZSwgJkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUsICZBbmltYXRp
b246OmlzRmlsbE1vZGVTZXQsICZBbmltYXRpb246OmNsZWFyRmlsbE1vZGUsICZBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlv
bkZpbGxNb2RlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6
YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIEFwcGx5UHJvcGVydHlBbmlt
YXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjppdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6c2V0
SXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OmlzSXRlcmF0aW9uQ291bnRTZXQsICZBbmltYXRp
b246OmNsZWFySXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25JdGVy
YXRpb25Db3VudCwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9u
cz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uTmFtZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBTdHJpbmcm
LCAmQW5pbWF0aW9uOjpuYW1lLCAmQW5pbWF0aW9uOjpzZXROYW1lLCAmQW5pbWF0aW9uOjppc05h
bWVTZXQsICZBbmltYXRpb246OmNsZWFyTmFtZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bk5hbWUsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25OYW1lLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRs
ZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
UGxheVN0YXRlLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEVBbmltUGxheVN0YXRlLCAmQW5pbWF0
aW9uOjpwbGF5U3RhdGUsICZBbmltYXRpb246OnNldFBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6aXNQ
bGF5U3RhdGVTZXQsICZBbmltYXRpb246OmNsZWFyUGxheVN0YXRlLCAmQW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uUGxheVN0YXRlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUGxh
eVN0YXRlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5p
bWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRp
b248Y29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1
bmN0aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1p
bmdGdW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywg
JlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgQXBwbHlQcm9wZXJ0
eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpzZXREZWxh
eSwgJkFuaW1hdGlvbjo6aXNEZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwgJkFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5LCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9u
RGVsYXksICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmlt
YXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248QW5p
bWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb24sICZBbmltYXRpb246OmRpcmVjdGlvbiwgJkFuaW1h
dGlvbjo6c2V0RGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppc0RpcmVjdGlvblNldCwgJkFuaW1hdGlv
bjo6Y2xlYXJEaXJlY3Rpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EaXJlY3Rpb24s
ICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNj
ZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJh
dGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1cmF0aW9u
LCAmQW5pbWF0aW9uOjpzZXREdXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFu
aW1hdGlvbjo6Y2xlYXJEdXJhdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0
aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6
YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25G
aWxsTW9kZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjx1bnNpZ25lZCwgJkFuaW1hdGlvbjo6Zmls
bE1vZGUsICZBbmltYXRpb246OnNldEZpbGxNb2RlLCAmQW5pbWF0aW9uOjppc0ZpbGxNb2RlU2V0
LCAmQW5pbWF0aW9uOjpjbGVhckZpbGxNb2RlLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9u
RmlsbE1vZGUsICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25GaWxsTW9kZSwgJlJlbmRlclN0
eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1h
dGlvbjo6aXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OnNldEl0ZXJhdGlvbkNvdW50LCAmQW5p
bWF0aW9uOjppc0l0ZXJhdGlvbkNvdW50U2V0LCAmQW5pbWF0aW9uOjpjbGVhckl0ZXJhdGlvbkNv
dW50LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZTdHlsZVJl
c29sdmVyOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudCwgJlJlbmRlclN0eWxlOjphY2Nlc3NB
bmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsIEFw
cGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgU3RyaW5nJiwgJkFuaW1hdGlvbjo6bmFtZSwgJkFu
aW1hdGlvbjo6c2V0TmFtZSwgJkFuaW1hdGlvbjo6aXNOYW1lU2V0LCAmQW5pbWF0aW9uOjpjbGVh
ck5hbWUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25OYW1lLCAmU3R5bGVSZXNvbHZlcjo6
bWFwQW5pbWF0aW9uTmFtZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVy
U3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSwgQXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjxFQW5pbVBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6cGxheVN0YXRlLCAmQW5pbWF0aW9u
OjpzZXRQbGF5U3RhdGUsICZBbmltYXRpb246OmlzUGxheVN0YXRlU2V0LCAmQW5pbWF0aW9uOjpj
bGVhclBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSwgJlN0
eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblBsYXlTdGF0ZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NB
bmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1
bmN0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVu
Y3Rpb24+LCAmQW5pbWF0aW9uOjp0aW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6c2V0VGltaW5n
RnVuY3Rpb24sICZBbmltYXRpb246OmlzVGltaW5nRnVuY3Rpb25TZXQsICZBbmltYXRpb246OmNs
ZWFyVGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0
ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QXBw
ZWFyYW5jZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8Q29udHJvbFBhcnQsICZSZW5kZXJTdHlsZTo6
YXBwZWFyYW5jZSwgQ29udHJvbFBhcnQsICZSZW5kZXJTdHlsZTo6c2V0QXBwZWFyYW5jZSwgQ29u
dHJvbFBhcnQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGVhcmFuY2U+OjpjcmVhdGVIYW5kbGVy
KCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFzcGVjdFJhdGlv
LCBBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5LCBBcHBseVBy
b3BlcnR5RGVmYXVsdDxFQmFja2ZhY2VWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OmJhY2tmYWNl
VmlzaWJpbGl0eSwgRUJhY2tmYWNlVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRCYWNrZmFj
ZVZpc2liaWxpdHksIEVCYWNrZmFjZVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJh
Y2tmYWNlVmlzaWJpbGl0eT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENsaXApOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91
bmRDb21wb3NpdGUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgQmFja2dyb3VuZEZpbGxMYXllciwg
JlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tn
cm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQ29tcG9zaXRlU2V0LCAmRmlsbExheWVyOjpjb21w
b3NpdGUsICZGaWxsTGF5ZXI6OnNldENvbXBvc2l0ZSwgJkZpbGxMYXllcjo6Y2xlYXJDb21wb3Np
dGUsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgQXBwbHlQcm9wZXJ0eUZp
bGxMYXllcjxDb21wb3NpdGVPcGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29t
cG9zaXRlLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91
bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXND
b21wb3NpdGVTZXQsICZGaWxsTGF5ZXI6OmNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9z
aXRlLCAmRmlsbExheWVyOjpjbGVhckNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxD
b21wb3NpdGUsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5k
T3JpZ2luLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4pOwogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRTaXplKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJG
aXQsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJGaXQsICZSZW5kZXJTdHlsZTo6Ym9yZGVy
Rml0LCBFQm9yZGVyRml0LCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckZpdCwgRUJvcmRlckZpdCwg
JlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKQEAgLTE5
NjEsMjQgKzE5NjEsMjQgQEAgU3R5bGVCdWlsZGVyOjpTdHlsZUJ1aWxkZXIoKQogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBBcHBseVByb3BlcnR5RGVmYXVsdDxF
TWFycXVlZURpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjptYXJxdWVlRGlyZWN0aW9uLCBFTWFycXVl
ZURpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRNYXJxdWVlRGlyZWN0aW9uLCBFTWFycXVlZURp
cmVjdGlvbiwgJlJlbmRlclN0eWxlOjppbml0aWFsTWFycXVlZURpcmVjdGlvbj46OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVN0eWxlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFTWFycXVlZUJlaGF2aW9yLCAmUmVuZGVyU3R5
bGU6Om1hcnF1ZWVCZWhhdmlvciwgRU1hcnF1ZWVCZWhhdmlvciwgJlJlbmRlclN0eWxlOjpzZXRN
YXJxdWVlQmVoYXZpb3IsIEVNYXJxdWVlQmVoYXZpb3IsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1h
cnF1ZWVCZWhhdmlvcj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8
RUZpbGxBdHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBNYXNrRmls
bExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFz
a0xheWVycywgJkZpbGxMYXllcjo6aXNBdHRhY2htZW50U2V0LCAmRmlsbExheWVyOjphdHRhY2ht
ZW50LCAmRmlsbExheWVyOjpzZXRBdHRhY2htZW50LCAmRmlsbExheWVyOjpjbGVhckF0dGFjaG1l
bnQsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQXR0YWNobWVudCwgJkNTU1N0eWxlU2VsZWN0b3I6
Om1hcEZpbGxBdHRhY2htZW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgQXBwbHlQcm9wZXJ0eUZpbGxM
YXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIE1h
c2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxl
OjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0
dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0
YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50LCAmU3R5bGVSZXNvbHZl
cjo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgQXBwbHlQcm9wZXJ0eUJvcmRl
ckltYWdlPE1hc2ssIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCAmUmVuZGVyU3R5bGU6
Om1hc2tCb3hJbWFnZSwgJlJlbmRlclN0eWxlOjpzZXRNYXNrQm94SW1hZ2U+OjpjcmVhdGVIYW5k
bGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZU91dHNldCwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8TWFzaywgT3V0c2V0
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQm94SW1hZ2VSZXBlYXQsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVy
PE1hc2ssIFJlcGVhdD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU2xpY2UsIEFwcGx5UHJvcGVydHlCb3JkZXJJ
bWFnZU1vZGlmaWVyPE1hc2ssIFNsaWNlPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsIEFwcGx5UHJv
cGVydHlCb3JkZXJJbWFnZVNvdXJjZTxDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJj
ZSwgJlJlbmRlclN0eWxlOjptYXNrQm94SW1hZ2VTb3VyY2UsICZSZW5kZXJTdHlsZTo6c2V0TWFz
a0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXNrQm94SW1hZ2VTb3VyY2U+
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZVdpZHRoLCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjxN
YXNrLCBXaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gs
IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjpp
c0NsaXBTZXQsICZGaWxsTGF5ZXI6OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5
ZXI6OmNsZWFyQ2xpcCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwRmlsbENsaXA+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIEFwcGx5UHJvcGVydHlGaWxsTGF5
ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgTWFz
a0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQ29tcG9zaXRlU2V0LCAmRmlsbExheWVyOjpjb21w
b3NpdGUsICZGaWxsTGF5ZXI6OnNldENvbXBvc2l0ZSwgJkZpbGxMYXllcjo6Y2xlYXJDb21wb3Np
dGUsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPFN0
eWxlSW1hZ2UqLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgTWFza0ZpbGxMYXllciwgJlJl
bmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZG
aWxsTGF5ZXI6OmlzSW1hZ2VTZXQsICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJ
bWFnZSwgJkZpbGxMYXllcjo6Y2xlYXJJbWFnZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFn
ZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxJbWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBN
YXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHls
ZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNPcmlnaW5TZXQsICZGaWxsTGF5ZXI6Om9yaWdp
biwgJkZpbGxMYXllcjo6c2V0T3JpZ2luLCAmRmlsbExheWVyOjpjbGVhck9yaWdpbiwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxPcmlnaW4sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsT3JpZ2lu
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQ2xpcCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQ2xpcCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNr
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQ2xpcFNldCwg
JkZpbGxMYXllcjo6Y2xpcCwgJkZpbGxMYXllcjo6c2V0Q2xpcCwgJkZpbGxMYXllcjo6Y2xlYXJD
bGlwLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAsICZTdHlsZVJlc29sdmVyOjptYXBGaWxs
Q2xpcD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxDb21wb3NpdGVP
cGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBNYXNrRmlsbExheWVyLCAm
UmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywg
JkZpbGxMYXllcjo6aXNDb21wb3NpdGVTZXQsICZGaWxsTGF5ZXI6OmNvbXBvc2l0ZSwgJkZpbGxM
YXllcjo6c2V0Q29tcG9zaXRlLCAmRmlsbExheWVyOjpjbGVhckNvbXBvc2l0ZSwgJkZpbGxMYXll
cjo6aW5pdGlhbEZpbGxDb21wb3NpdGUsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRl
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrSW1hZ2UsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8U3R5bGVJbWFnZSosIENTU1By
b3BlcnR5V2Via2l0TWFza0ltYWdlLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vz
c01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNJbWFn
ZVNldCwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExheWVy
OjpjbGVhckltYWdlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlLCAmU3R5bGVSZXNvbHZl
cjo6bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVG
aWxsQm94LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIE1hc2tGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmls
bExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3JpZ2luLCAmRmlsbExheWVyOjpzZXRP
cmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmlsbExheWVyOjppbml0aWFsRmlsbE9y
aWdpbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxPcmlnaW4+OjpjcmVhdGVIYW5kbGVyKCkpOwog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgQXBw
bHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWT46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uWCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAm
UmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzWFBvc2l0aW9uU2V0LCAmRmls
bExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6
Y2xlYXJYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uLCAmQ1NTU3R5
bGVTZWxlY3Rvcjo6bWFwRmlsbFhQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgQXBwbHlQcm9w
ZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgTWFz
a0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzWVBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp5UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJZUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbFlQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxMZW5ndGgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgTWFza0ZpbGxMYXllciwg
JlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMs
ICZGaWxsTGF5ZXI6OmlzWFBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxs
TGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJYUG9zaXRpb24sICZGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFhQb3NpdGlv
bj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjph
Y2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6Omlz
WVBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3Np
dGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxs
WVBvc2l0aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFlQb3NpdGlvbj46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dCwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZPjo6Y3JlYXRlSGFuZGxl
cigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
WCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0WCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJz
LCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WFNldCwgJkZp
bGxMYXllcjo6cmVwZWF0WCwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WCwgJkZpbGxMYXllcjo6Y2xl
YXJSZXBlYXRYLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFgsICZDU1NTdHlsZVNlbGVj
dG9yOjptYXBGaWxsUmVwZWF0WD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIEFwcGx5UHJvcGVydHlGaWxsTGF5
ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIE1hc2tGaWxsTGF5
ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5
ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFlTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFksICZGaWxs
TGF5ZXI6OnNldFJlcGVhdFksICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WSwgJkZpbGxMYXllcjo6
aW5pdGlhbEZpbGxSZXBlYXRZLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJlcGVhdFk+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tTaXplLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEZpbGxTaXplLCBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tTaXplLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXll
cnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNTaXplU2V0LCAmRmls
bExheWVyOjpzaXplLCAmRmlsbExheWVyOjpzZXRTaXplLCAmRmlsbExheWVyOjpjbGVhclNpemUs
ICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6ZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxT
aXplPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0WCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxl
OjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6
OmlzUmVwZWF0WFNldCwgJkZpbGxMYXllcjo6cmVwZWF0WCwgJkZpbGxMYXllcjo6c2V0UmVwZWF0
WCwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRYLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVh
dFgsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVwZWF0WD46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIEFwcGx5
UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFksIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRl
clN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFlTZXQsICZGaWxsTGF5ZXI6
OnJlcGVhdFksICZGaWxsTGF5ZXI6OnNldFJlcGVhdFksICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0
WSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmls
bFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEZpbGxTaXplLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNT
aXplU2V0LCAmRmlsbExheWVyOjpzaXplLCAmRmlsbExheWVyOjpzZXRTaXplLCAmRmlsbExheWVy
OjpjbGVhclNpemUsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6ZSwgJlN0eWxlUmVzb2x2ZXI6
Om1hcEZpbGxTaXplPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBBcHBseVBy
b3BlcnR5RGVmYXVsdDxFTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgJlJlbmRlclN0
eWxlOjptYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBFTWF0Y2hOZWFyZXN0TWFpbEJs
b2NrcXVvdGVDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90
ZUNvbG9yLCBFTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgJlJlbmRlclN0eWxlOjpp
bml0aWFsTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIEFwcGx5
UHJvcGVydHlEZWZhdWx0PEVOQlNQTW9kZSwgJlJlbmRlclN0eWxlOjpuYnNwTW9kZSwgRU5CU1BN
b2RlLCAmUmVuZGVyU3R5bGU6OnNldE5CU1BNb2RlLCBFTkJTUE1vZGUsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbE5CU1BNb2RlPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwgQXBwbHlQcm9wZXJ0eUV4cGFu
ZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwg
Q1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk+OjpjcmVhdGVIYW5kbGVyKCkpOwpA
QCAtMjAwMywxMCArMjAwMywxMCBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigpCiAgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgQXBw
bHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblksICZSZW5kZXJT
dHlsZTo6c2V0VHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3Jt
T3JpZ2luWT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8
ZmxvYXQsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxlOjpzZXRU
cmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5aPjo6
Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1TdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVRyYW5zZm9ybVN0eWxlM0Qs
ICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtU3R5bGUzRCwgRVRyYW5zZm9ybVN0eWxlM0QsICZSZW5k
ZXJTdHlsZTo6c2V0VHJhbnNmb3JtU3R5bGUzRCwgRVRyYW5zZm9ybVN0eWxlM0QsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFRyYW5zZm9ybVN0eWxlM0Q+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSwgQXBwbHlQ
cm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpz
ZXREZWxheSwgJkFuaW1hdGlvbjo6aXNEZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwg
JkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
QW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJT
dHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgQXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJh
dGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlv
biwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rv
cjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMs
ICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQXBwbHlQ
cm9wZXJ0eUFuaW1hdGlvbjxDU1NQcm9wZXJ0eUlELCAmQW5pbWF0aW9uOjpwcm9wZXJ0eSwgJkFu
aW1hdGlvbjo6c2V0UHJvcGVydHksICZBbmltYXRpb246OmlzUHJvcGVydHlTZXQsICZBbmltYXRp
b246OmNsZWFyUHJvcGVydHksICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25Qcm9wZXJ0eSwg
JkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvblByb3BlcnR5LCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5zaXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgUGFzc1JlZlB0cjxU
aW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjpz
ZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdGdW5jdGlvblNldCwgJkFuaW1h
dGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRp
bWluZ0Z1bmN0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rp
b24sICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNp
dGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUs
ICZBbmltYXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpzZXREZWxheSwgJkFuaW1hdGlvbjo6aXNE
ZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbkRlbGF5LCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHls
ZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb25EdXJhdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246
OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlv
blNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbkR1cmF0aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5k
ZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25Qcm9wZXJ0eSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxDU1NQcm9wZXJ0eUlE
LCAmQW5pbWF0aW9uOjpwcm9wZXJ0eSwgJkFuaW1hdGlvbjo6c2V0UHJvcGVydHksICZBbmltYXRp
b246OmlzUHJvcGVydHlTZXQsICZBbmltYXRpb246OmNsZWFyUHJvcGVydHksICZBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25Qcm9wZXJ0eSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblBy
b3BlcnR5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRy
YW5zaXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmlt
YXRpb248Y29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWlu
Z0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNU
aW1pbmdGdW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFw
QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMs
ICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBBcHBseVByb3BlcnR5RGVm
YXVsdDxFVXNlckRyYWcsICZSZW5kZXJTdHlsZTo6dXNlckRyYWcsIEVVc2VyRHJhZywgJlJlbmRl
clN0eWxlOjpzZXRVc2VyRHJhZywgRVVzZXJEcmFnLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxVc2Vy
RHJhZz46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VXNlck1vZGlmeSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVVzZXJNb2RpZnksICZS
ZW5kZXJTdHlsZTo6dXNlck1vZGlmeSwgRVVzZXJNb2RpZnksICZSZW5kZXJTdHlsZTo6c2V0VXNl
ck1vZGlmeSwgRVVzZXJNb2RpZnksICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJNb2RpZnk+Ojpj
cmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJTZWxlY3QsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVVc2VyU2VsZWN0LCAmUmVuZGVyU3R5
bGU6OnVzZXJTZWxlY3QsIEVVc2VyU2VsZWN0LCAmUmVuZGVyU3R5bGU6OnNldFVzZXJTZWxlY3Qs
IEVVc2VyU2VsZWN0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyU2VsZWN0Pjo6Y3JlYXRlSGFu
ZGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaAppbmRleCA2OTJlYWI2MzJmNmU3YTY0
ZTVjMGY4NzJiOTY4NzY2ZTBiY2M3MzVjLi5iY2NlOGY0YjgxMjYzZjYxMGNmMDA3ZTQ1ZjEwODg3
NjRkNWMzNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCkBAIC0zMSwyMCArMzEsMjAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDU1NTdHlsZVNlbGVjdG9yOwogY2xh
c3MgQ1NTVmFsdWU7CiBjbGFzcyBTdHlsZUJ1aWxkZXI7CitjbGFzcyBTdHlsZVJlc29sdmVyOwog
CiBjbGFzcyBQcm9wZXJ0eUhhbmRsZXIgewogcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCAoKklu
aGVyaXRGdW5jdGlvbikoQ1NTU3R5bGVTZWxlY3RvciopOwotICAgIHR5cGVkZWYgdm9pZCAoKklu
aXRpYWxGdW5jdGlvbikoQ1NTU3R5bGVTZWxlY3RvciopOwotICAgIHR5cGVkZWYgdm9pZCAoKkFw
cGx5RnVuY3Rpb24pKENTU1N0eWxlU2VsZWN0b3IqLCBDU1NWYWx1ZSopOworICAgIHR5cGVkZWYg
dm9pZCAoKkluaGVyaXRGdW5jdGlvbikoU3R5bGVSZXNvbHZlciopOworICAgIHR5cGVkZWYgdm9p
ZCAoKkluaXRpYWxGdW5jdGlvbikoU3R5bGVSZXNvbHZlciopOworICAgIHR5cGVkZWYgdm9pZCAo
KkFwcGx5RnVuY3Rpb24pKFN0eWxlUmVzb2x2ZXIqLCBDU1NWYWx1ZSopOwogICAgIFByb3BlcnR5
SGFuZGxlcigpIDogbV9pbmhlcml0KDApLCBtX2luaXRpYWwoMCksIG1fYXBwbHkoMCkgeyB9CiAg
ICAgUHJvcGVydHlIYW5kbGVyKEluaGVyaXRGdW5jdGlvbiBpbmhlcml0LCBJbml0aWFsRnVuY3Rp
b24gaW5pdGlhbCwgQXBwbHlGdW5jdGlvbiBhcHBseSkgOiBtX2luaGVyaXQoaW5oZXJpdCksIG1f
aW5pdGlhbChpbml0aWFsKSwgbV9hcHBseShhcHBseSkgeyB9Ci0gICAgdm9pZCBhcHBseUluaGVy
aXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikgY29uc3QgeyBBU1NFUlQobV9pbmhl
cml0KTsgKCptX2luaGVyaXQpKHNlbGVjdG9yKTsgfQotICAgIHZvaWQgYXBwbHlJbml0aWFsVmFs
dWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpIGNvbnN0IHsgQVNTRVJUKG1faW5pdGlhbCk7
ICgqbV9pbml0aWFsKShzZWxlY3Rvcik7IH0KLSAgICB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QgeyBBU1NFUlQobV9hcHBs
eSk7ICgqbV9hcHBseSkoc2VsZWN0b3IsIHZhbHVlKTsgfQorICAgIHZvaWQgYXBwbHlJbmhlcml0
VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpIGNvbnN0IHsgQVNTRVJUKG1faW5oZXJpdCk7
ICgqbV9pbmhlcml0KShzZWxlY3Rvcik7IH0KKyAgICB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKSBjb25zdCB7IEFTU0VSVChtX2luaXRpYWwpOyAoKm1faW5p
dGlhbCkoc2VsZWN0b3IpOyB9CisgICAgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpIGNvbnN0IHsgQVNTRVJUKG1fYXBwbHkpOyAoKm1fYXBw
bHkpKHNlbGVjdG9yLCB2YWx1ZSk7IH0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX2luaGVyaXQgJiYgbV9pbml0aWFsICYmIG1fYXBwbHk7IH0KICAgICBJbmhlcml0RnVuY3Rp
b24gaW5oZXJpdEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0OyB9CiAgICAgSW5p
dGlhbEZ1bmN0aW9uIGluaXRpYWxGdW5jdGlvbigpIHsgcmV0dXJuIG1faW5pdGlhbDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlTWVkaWEuY3BwCmluZGV4IGJhMjY2NGRkMWNkNDEzNTllYTJlM2YyOTE1MjFj
MzFkYzFjMTkxMmIuLjFhN2MzMTIzNGU5ZjllOWI3Yzk1YTRlZjVhZmUzNjI0YzIwMjhiNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBTdHlsZU1l
ZGlhOjptYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmIHF1ZXJ5KSBjb25zdAogICAgIGlmICghZG9j
dW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NTdHlsZVNlbGVj
dG9yKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKTsKKyAgICBTdHls
ZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKTsKICAg
ICBpZiAoIXN0eWxlU2VsZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IGZhMGRjYmVhNGNi
ZDYwYzAwODUwYWJjMzliNzI0YTU2M2JhOGY4ZDcuLjgxYjA0NzU2YjZiMjA1MzNlMWQ5NTk0MGJi
MTZjMTEyZTdiNGMyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NL
ZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXZWJLaXRDU1NLZXlmcmFtZXNSdWxl
OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBtX2tleWZyYW1lc1J1bGUtPnNl
dE5hbWUobmFtZSk7CiAKLSAgICAvLyBTaW5jZSB0aGUgbmFtZSBpcyB1c2VkIGluIHRoZSBrZXlm
cmFtZSBtYXAgbGlzdCBpbiBDU1NTdHlsZVNlbGVjdG9yLCB3ZSBuZWVkCisgICAgLy8gU2luY2Ug
dGhlIG5hbWUgaXMgdXNlZCBpbiB0aGUga2V5ZnJhbWUgbWFwIGxpc3QgaW4gU3R5bGVSZXNvbHZl
ciwgd2UgbmVlZAogICAgIC8vIHRvIHJlY29tcHV0ZSB0aGUgc3R5bGUgc2hlZXQgdG8gZ2V0IHRo
ZSB1cGRhdGVkIG5hbWUuCiAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYXJl
bnRTdHlsZVNoZWV0KCkpCiAgICAgICAgIHN0eWxlU2hlZXQtPnN0eWxlU2hlZXRDaGFuZ2VkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IGFmZWJhNzFmODllOTky
OGI4ZjRlNWZhNTA0MWE2MTJjOWZkZjRkZWQuLjFlODQ3MWZmNTcxMjNkNzQxZTk3ZjE1NGNmOTlj
OTgyZDMxOTQzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRy
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBT
dHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwotICAgICAgICBpZiAoIUNT
U1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnModmFsdWUuZ2V0KCksIDAs
IDAsIG9wZXJhdGlvbnMpKSB7CisgICAgICAgIGlmICghU3R5bGVSZXNvbHZlcjo6Y3JlYXRlVHJh
bnNmb3JtT3BlcmF0aW9ucyh2YWx1ZS5nZXQoKSwgMCwgMCwgb3BlcmF0aW9ucykpIHsKICAgICAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMjk4MmQ0NWFhMjgzOTI5ZGFjM2Y2NmZmMDYwYzhi
MzY3OGU0Y2Q0ZS4uYWZhZDZiNjg1MjhjMzJiNGVkYWQ2ZDBiYmFhNzcyNjBlOTdhZWY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNzI1LDcgKzE3MjUsNyBAQCB2b2lkIERvY3VtZW50
OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIC8vIHN0eWxlIHNlbGVj
dG9yIG1heSBzZXQgdGhpcyBhZ2FpbiBkdXJpbmcgcmVjYWxjCiAgICAgICAgIG1faGFzTm9kZXNX
aXRoUGxhY2Vob2xkZXJTdHlsZSA9IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFJl
bmRlclN0eWxlPiBkb2N1bWVudFN0eWxlID0gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JEb2N1
bWVudCh0aGlzLCBtX3N0eWxlU2VsZWN0b3IgPyBtX3N0eWxlU2VsZWN0b3ItPmZvbnRTZWxlY3Rv
cigpIDogMCk7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZSA9IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRG9jdW1lbnQodGhpcywgbV9zdHlsZVNlbGVjdG9yID8gbV9z
dHlsZVNlbGVjdG9yLT5mb250U2VsZWN0b3IoKSA6IDApOwogICAgICAgICBTdHlsZUNoYW5nZSBj
aCA9IE5vZGU6OmRpZmYoZG9jdW1lbnRTdHlsZS5nZXQoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKSwg
dGhpcyk7CiAgICAgICAgIGlmIChjaCAhPSBOb0NoYW5nZSkKICAgICAgICAgICAgIHJlbmRlcmVy
KCktPnNldFN0eWxlKGRvY3VtZW50U3R5bGUucmVsZWFzZSgpKTsKQEAgLTE5NjIsNyArMTk2Miw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVN0eWxlU2VsZWN0b3IoKQogICAgIGJvb2wgbWF0Y2hB
dXRob3JBbmRVc2VyU3R5bGVzID0gdHJ1ZTsKICAgICBpZiAoU2V0dGluZ3MqIGRvY1NldHRpbmdz
ID0gc2V0dGluZ3MoKSkKICAgICAgICAgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzID0gZG9jU2V0
dGluZ3MtPmF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCk7Ci0gICAgbV9zdHlsZVNlbGVjdG9y
ID0gYWRvcHRQdHIobmV3IENTU1N0eWxlU2VsZWN0b3IodGhpcywgbWF0Y2hBdXRob3JBbmRVc2Vy
U3R5bGVzKSk7CisgICAgbV9zdHlsZVNlbGVjdG9yID0gYWRvcHRQdHIobmV3IFN0eWxlUmVzb2x2
ZXIodGhpcywgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKSk7CiAgICAgY29tYmluZUNTU0ZlYXR1
cmVGbGFncygpOwogfQogCkBAIC0zMzk4LDcgKzMzOTgsNyBAQCBib29sIERvY3VtZW50Ojp0ZXN0
QWRkZWRTdHlsZXNoZWV0UmVxdWlyZXNTdHlsZVJlY2FsYyhTdHlsZVNoZWV0SW50ZXJuYWwqIHN0
eWxlcwogICAgIC8vIFRoZW4gdGVzdCBpZiB3ZSBhY3R1YWxseSBoYXZlIGFueSBvZiB0aG9zZSBp
biB0aGUgdHJlZSBhdCB0aGUgbW9tZW50LgogICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
IGlkU2NvcGVzOyAKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBjbGFzc1Njb3BlczsK
LSAgICBpZiAoIUNTU1N0eWxlU2VsZWN0b3I6OmRldGVybWluZVN0eWxlc2hlZXRTZWxlY3RvclNj
b3BlcyhzdHlsZXNoZWV0LCBpZFNjb3BlcywgY2xhc3NTY29wZXMpKQorICAgIGlmICghU3R5bGVS
ZXNvbHZlcjo6ZGV0ZXJtaW5lU3R5bGVzaGVldFNlbGVjdG9yU2NvcGVzKHN0eWxlc2hlZXQsIGlk
U2NvcGVzLCBjbGFzc1Njb3BlcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIEludmFs
aWRhdGUgdGhlIHN1YnRyZWVzIHRoYXQgbWF0Y2ggdGhlIHNjb3Blcy4KICAgICBOb2RlKiBub2Rl
ID0gZmlyc3RDaGlsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNGUxZDM4NzY2ZWU1ZGQy
MjQxOTAzYmI1MTk0ZGY4MjI3NTliYWRmLi4xYjQyNWI1Nzc2ZTNjZDE1MjZhOGJiZjUxZTI5NTJk
MDI4MTE1MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjEsNyArNjEsNiBAQCBjbGFzcyBB
WE9iamVjdENhY2hlOwogY2xhc3MgQXR0cjsKIGNsYXNzIENEQVRBU2VjdGlvbjsKIGNsYXNzIENT
U1N0eWxlRGVjbGFyYXRpb247Ci1jbGFzcyBDU1NTdHlsZVNlbGVjdG9yOwogY2xhc3MgQ1NTU3R5
bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjsKQEAgLTEyNiw2ICsxMjUsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlZ21lbnRlZFN0cmluZzsKIGNsYXNzIFNl
dHRpbmdzOworY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBT
dHlsZVNoZWV0SW50ZXJuYWw7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKQEAgLTQ1NCwxNCArNDU0
LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTcmNkb2NEb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTcmNkb2NEb2N1bWVudDsgfQogCi0gICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVT
ZWxlY3RvcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNlbGVjdG9yLmdldCgpOyB9
CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvcklmRXhpc3RzKCkgY29uc3QgeyByZXR1
cm4gbV9zdHlsZVNlbGVjdG9yLmdldCgpOyB9CiAKICAgICBib29sIGlzVmlld1NvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNWaWV3U291cmNlOyB9CiAgICAgdm9pZCBzZXRJc1ZpZXdTb3VyY2Uo
Ym9vbCk7CiAKICAgICBib29sIHNhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoKSBjb25zdCB7
IHJldHVybiBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXM7IH0KIAotICAgIENTU1N0eWxl
U2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IoKQorICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0
b3IoKQogICAgIHsgCiAgICAgICAgIGlmICghbV9zdHlsZVNlbGVjdG9yKQogICAgICAgICAgICAg
Y3JlYXRlU3R5bGVTZWxlY3RvcigpOwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGludCBtX2d1YXJkUmVmQ291bnQ7CiAKLSAgICBPd25QdHI8Q1NTU3R5bGVTZWxlY3Rvcj4g
bV9zdHlsZVNlbGVjdG9yOworICAgIE93blB0cjxTdHlsZVJlc29sdmVyPiBtX3N0eWxlU2VsZWN0
b3I7CiAgICAgYm9vbCBtX2RpZENhbGN1bGF0ZVN0eWxlU2VsZWN0b3I7CiAgICAgYm9vbCBtX2hh
c0RpcnR5U3R5bGVTZWxlY3RvcjsKICAgICBWZWN0b3I8T3duUHRyPEZvbnREYXRhPiA+IG1fY3Vz
dG9tRm9udHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzE3NTI0MTNjN2U2NWUyNGE0ZTBm
ZmI5MWQ4YjQ3Zjg0NDM5ZTQzYi4uNzk3MWY2MjhjYzhhNDA3ODEwN2EyYzcwZmUzMTBmNmMxNzBh
ZmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBFbGVtZW50KiBtX3BhcmVudDsKLSAgICBDU1NTdHlsZVNlbGVjdG9y
KiBtX3B1c2hlZFN0eWxlU2VsZWN0b3I7CisgICAgU3R5bGVSZXNvbHZlciogbV9wdXNoZWRTdHls
ZVNlbGVjdG9yOwogfTsKIAogUGFzc1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNjk3LDcg
KzY5Nyw3IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIp
CiAgICAgICAgIHNldEhhc05hbWUoIWF0dHItPmlzTnVsbCgpKTsKIAogICAgIGlmICghbmVlZHNT
dHlsZVJlY2FsYygpICYmIGRvY3VtZW50KCktPmF0dGFjaGVkKCkpIHsKLSAgICAgICAgQ1NTU3R5
bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JJZkV4
aXN0cygpOworICAgICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQo
KS0+c3R5bGVTZWxlY3RvcklmRXhpc3RzKCk7CiAgICAgICAgIGlmICghc3R5bGVTZWxlY3RvciB8
fCBzdHlsZVNlbGVjdG9yLT5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyLT5uYW1lKCkubG9j
YWxOYW1lKCkpKQogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KQEAg
LTEzNDgsNyArMTM0OCw3IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmCiB2b2lkIEVsZW1lbnQ6
OmJlZ2luUGFyc2luZ0NoaWxkcmVuKCkKIHsKICAgICBjbGVhcklzUGFyc2luZ0NoaWxkcmVuRmlu
aXNoZWQoKTsKLSAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQo
KS0+c3R5bGVTZWxlY3RvcklmRXhpc3RzKCk7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxl
Y3RvciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JJZkV4aXN0cygpOwogICAgIGlmIChzdHls
ZVNlbGVjdG9yICYmIGF0dGFjaGVkKCkpCiAgICAgICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQYXJl
bnRFbGVtZW50KHRoaXMpOwogfQpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBFbGVtZW50Ojpm
aW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogICAgIENvbnRhaW5lck5vZGU6OmZpbmlzaFBhcnNpbmdD
aGlsZHJlbigpOwogICAgIHNldElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKTsKICAgICBjaGVj
a0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhpcywgcmVuZGVyU3R5bGUoKSwgdHJ1ZSwgbGFzdENo
aWxkKCksIDAsIDApOwotICAgIGlmIChDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0g
ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcklmRXhpc3RzKCkpCisgICAgaWYgKFN0eWxlUmVzb2x2
ZXIqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMoKSkK
ICAgICAgICAgc3R5bGVTZWxlY3Rvci0+cG9wUGFyZW50RWxlbWVudCh0aGlzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGU3NTBiYzIyYjQ0ZGI3NWE3ZWU0OTZiZTk5NDFi
YmU5Zjg0MjNlYTUuLjE5NGE1NmZlN2M0M2NhZjM4ODcxYTMyYTFmNjVhZTQ1Y2Q5OGQ4MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFNoYWRv
d1Jvb3Q6OnNldEFwcGx5QXV0aG9yU2hlZXRzKGJvb2wgdmFsdWUpCiAKIHZvaWQgU2hhZG93Um9v
dDo6YXR0YWNoKCkKIHsKLSAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gZG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0
b3IgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CiAgICAgc3R5bGVTZWxlY3Rvci0+cHVz
aFBhcmVudFNoYWRvd1Jvb3QodGhpcyk7CiAgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7
CiAgICAgc3R5bGVTZWxlY3Rvci0+cG9wUGFyZW50U2hhZG93Um9vdCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dUcmVlLmNwcAppbmRleCAxNzFjZGRiMTc2MzI3Y2VlYjNlMDFkY2FmM2U1ZGI1NWE5
MjUyZmE5Li43YTYwYjdlNTFjOTQxMTM3ZGE4OTg0NzZmYTM5ZTkyNjg3MmZmOTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1RyZWUuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTaGFkb3dUcmVl
OjpyZWNhbGNTaGFkb3dUcmVlU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIGlm
IChuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkpCiAgICAgICAgIHJlYXR0YWNo
SG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIENTU1N0eWxlU2Vs
ZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSB5b3VuZ2VzdC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rv
cigpOworICAgICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0geW91bmdlc3QtPmRv
Y3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKIAogICAgICAgICBzdHlsZVNlbGVjdG9yLT5wdXNo
UGFyZW50U2hhZG93Um9vdCh5b3VuZ2VzdCk7CiAgICAgICAgIGZvciAoTm9kZSogbiA9IHlvdW5n
ZXN0LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggOWRkM2NlNDAzMTk0Y2M0YTczMzNjNmFj
NGJkYjlhM2EzMDBiMjhiZC4uYjY5NmNmNDA0OGQ5NzJhN2NhMzMzZjNhYTg0YTQwOTE1MWM1MTAy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTA0Niw3ICsx
MDQ2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlbGUKIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJn
ZVN0eWxlRnJvbVJ1bGVzKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRS
dWxlc0ZvckVsZW1lbnQoZWxlbWVudCwKLSAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6QXV0aG9y
Q1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNTU1J1bGVzKTsKKyAgICAg
ICAgU3R5bGVSZXNvbHZlcjo6QXV0aG9yQ1NTUnVsZXMgfCBTdHlsZVJlc29sdmVyOjpDcm9zc09y
aWdpbkNTU1J1bGVzKTsKICAgICAvLyBTdHlsZXMgZnJvbSB0aGUgaW5saW5lIHN0eWxlIGRlY2xh
cmF0aW9uLCBoZWxkIGluIHRoZSB2YXJpYWJsZSAic3R5bGUiLCB0YWtlIHByZWNlZGVuY2UgCiAg
ICAgLy8gb3ZlciB0aG9zZSBmcm9tIG1hdGNoZWQgcnVsZXMuCiAgICAgaWYgKG1fbXV0YWJsZVN0
eWxlKQpAQCAtMTA5OCw3ICsxMDk4LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxl
RnJvbVJ1bGVzQW5kQ29udGV4dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBOb2RlKgogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyAxLiBSZW1vdmUgc3R5bGUgZnJvbSBtYXRjaGVkIHJ1bGVzIGJl
Y2F1c2Ugc3R5bGUgcmVtYWluIHdpdGhvdXQgcmVwZWF0aW5nIGl0IGluIGlubGluZSBzdHlsZSBk
ZWNsYXJhdGlvbgotICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZUZyb21NYXRjaGVk
UnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIENTU1N0eWxl
U2VsZWN0b3I6OkFsbEJ1dEVtcHR5Q1NTUnVsZXMpOworICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBzdHlsZUZyb21NYXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVt
ZW50KGVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6OkFsbEJ1dEVtcHR5Q1NTUnVsZXMpOwogICAgIGlm
IChzdHlsZUZyb21NYXRjaGVkUnVsZXMgJiYgIXN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+aXNFbXB0
eSgpKQogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFi
bGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5lbnN1cmVDU1NTdHlsZURlY2xh
cmF0aW9uKCkpOwogCkBAIC0xMTI3LDcgKzExMjcsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50KiBlbGVtZW50KQogICAg
IGlmICghbV9tdXRhYmxlU3R5bGUgfHwgbV9tdXRhYmxlU3R5bGUtPmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGRlZmF1bHRTdHlsZSA9
IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rv
cjo6VUFBbmRVc2VyQ1NTUnVsZXMpOworICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBkZWZh
dWx0U3R5bGUgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIFN0eWxl
UmVzb2x2ZXI6OlVBQW5kVXNlckNTU1J1bGVzKTsKIAogICAgIHJlbW92ZVByb3BlcnRpZXNJblN0
eWxlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCkpOwogfQpAQCAtMTUz
NCwxMCArMTUzNCwxMCBAQCBpbnQgbGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQq
IGRvY3VtZW50LCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJvbwogewogICAgIGlmIChpc0NT
U1ZhbHVlTGVuZ3RoKHZhbHVlKSkgewogICAgICAgICBpbnQgcGl4ZWxGb250U2l6ZSA9IHZhbHVl
LT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgaW50IGxl
Z2FjeUZvbnRTaXplID0gQ1NTU3R5bGVTZWxlY3Rvcjo6bGVnYWN5Rm9udFNpemUoZG9jdW1lbnQs
IHBpeGVsRm9udFNpemUsIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKTsKKyAgICAgICAg
aW50IGxlZ2FjeUZvbnRTaXplID0gU3R5bGVSZXNvbHZlcjo6bGVnYWN5Rm9udFNpemUoZG9jdW1l
bnQsIHBpeGVsRm9udFNpemUsIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKTsKICAgICAg
ICAgLy8gVXNlIGxlZ2FjeSBmb250IHNpemUgb25seSBpZiBwaXhlbCB2YWx1ZSBtYXRjaGVzIGV4
YWN0bHkgdG8gdGhhdCBvZiBsZWdhY3kgZm9udCBzaXplLgogICAgICAgICBpbnQgY3NzUHJpbWl0
aXZlRXF1aXZhbGVudCA9IGxlZ2FjeUZvbnRTaXplIC0gMSArIENTU1ZhbHVlWFNtYWxsOwotICAg
ICAgICBpZiAobW9kZSA9PSBBbHdheXNVc2VMZWdhY3lGb250U2l6ZSB8fCBDU1NTdHlsZVNlbGVj
dG9yOjpmb250U2l6ZUZvcktleXdvcmQoZG9jdW1lbnQsIGNzc1ByaW1pdGl2ZUVxdWl2YWxlbnQs
IHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKSA9PSBwaXhlbEZvbnRTaXplKQorICAgICAg
ICBpZiAobW9kZSA9PSBBbHdheXNVc2VMZWdhY3lGb250U2l6ZSB8fCBTdHlsZVJlc29sdmVyOjpm
b250U2l6ZUZvcktleXdvcmQoZG9jdW1lbnQsIGNzc1ByaW1pdGl2ZUVxdWl2YWxlbnQsIHNob3Vs
ZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKSA9PSBwaXhlbEZvbnRTaXplKQogICAgICAgICAgICAg
cmV0dXJuIGxlZ2FjeUZvbnRTaXplOwogCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA4MzgyM2Q1OWFkOTcwMDhhMjkzMWY1
OGYyOTQ0YTQwYThkMWJmOTIzLi4xZmEyMDJmMjY3OWI2ZDFkNDJiMzllODY4MzIwY2Q1ZDczMTU1
ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTYz
Myw3ICsxNjMzLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVD
aGFuZ2VkKCkKICAgICAvLyBVcGRhdGUgZm9yIGNhcHMgbG9jayBzdGF0ZQogICAgIG1fZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5jYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKIAotICAgIC8v
IEJlY2F1c2UgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcigpIGFuZAorICAgIC8v
IEJlY2F1c2UgU3R5bGVSZXNvbHZlcjo6Y2hlY2tPbmVTZWxlY3RvcigpIGFuZAogICAgIC8vIFJl
bmRlclRoZW1lOjppc0ZvY3VzZWQoKSBjaGVjayBpZiB0aGUgZnJhbWUgaXMgYWN0aXZlLCB3ZSBo
YXZlIHRvCiAgICAgLy8gdXBkYXRlIHN0eWxlIGFuZCB0aGVtZSBzdGF0ZSB0aGF0IGRlcGVuZGVk
IG9uIHRob3NlLgogICAgIGlmIChOb2RlKiBub2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9j
dXNlZE5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggOGJi
YTUxMTYxMTAxODRmZmVhMDAwNjljZjYxMTFhMmE4MWVhMjM3Ni4uMTllZWVhMWM1YTAyNmI4NzIw
MWVjOGI0YjI1YWQ3YTYyMWExMTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2Uu
Y3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlKiBwYWdl
KQogCiAgICAgaWYgKG1fbmVlZFN0eWxlUmVjYWxjRm9yVmlzaXRlZExpbmtzKSB7CiAgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoQ1NTU3R5bGVT
ZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9y
KCkpCisgICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IGZyYW1l
LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCkpCiAgICAgICAgICAgICAgICAgc3R5bGVTZWxl
Y3Rvci0+YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBlZDAzMzBjZTBiYjAwMDYx
NWFlMTljODYyMmQ4NTMxY2VlZDFiYmMyLi4wM2E0OTA4YzVjNzdhMmRlMWE4OWNjNzdiZDI0ZGEy
ZjFlMDU1M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApA
QCAtNDYzLDcgKzQ2Myw3IEBAIFNlY3VyaXR5T3JpZ2luKiBIVE1MQ2FudmFzRWxlbWVudDo6c2Vj
dXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpOwogfQogCi1DU1NTdHlsZVNlbGVjdG9yKiBIVE1MQ2FudmFzRWxlbWVudDo6c3R5bGVTZWxl
Y3RvcigpCitTdHlsZVJlc29sdmVyKiBIVE1MQ2FudmFzRWxlbWVudDo6c3R5bGVTZWxlY3Rvcigp
CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCA0OTZmNDAxNDBhYTRmYzAzNGY4OTcz
ODEzNDgwMTJjNGFhMWJmNjY3Li4yMGEyMjViMDcyOTVmNTllN2E3NmFhOTIxNjE5MzdjMzNmYWE4
YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMjIsNyAr
MTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3JpZ2luVGFpbnRlZCgpIHsgbV9vcmlnaW5D
bGVhbiA9IGZhbHNlOyB9CiAgICAgYm9vbCBvcmlnaW5DbGVhbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZ2luQ2xlYW47IH0KIAotICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IoKTsK
KyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yKCk7CiAKICAgICBBZmZpbmVUcmFuc2Zv
cm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggZTIyYTFlNjljYmQ4ZjU3OGU1Y2EyNmExMDgzMzVlNDJlNTNmZTgzMy4u
MGZhNGYyZDhkMzg0Zjk0ZGU5NmMxY2FmMjU0NzRmNDlkNjA0OGNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSFRNTExp
bmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgICAgICBib29sIG1lZGlhUXVlcnlNYXRjaGVzID0g
dHJ1ZTsKICAgICAgICAgaWYgKCFtX21lZGlhLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlID0gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVG
b3JEb2N1bWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
ZG9jdW1lbnRTdHlsZSA9IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRG9jdW1lbnQoZG9jdW1lbnQo
KSk7CiAgICAgICAgICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEgPSBNZWRpYVF1ZXJ5
U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOwogICAgICAgICAg
ICAgTWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmll
dygpLT5tZWRpYVR5cGUoKSwgZG9jdW1lbnQoKS0+ZnJhbWUoKSwgZG9jdW1lbnRTdHlsZS5nZXQo
KSk7CiAgICAgICAgICAgICBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IGV2YWx1YXRvci5ldmFsKG1lZGlh
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDY1NTEwZWJlYTE1OGUyZjgwOWYwODNkZTY5MzFh
NDhjZDk3NGJkYTEuLjg5OTcxNWU1NWQwNjY4MTcwNjg4MDZkMmFkYzAwNWQ0MjFkMWM2ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcApAQCAtMTk0Myw3ICsxOTQzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogICAgIG5ld1N0eWxlLT5m
b250KCkudXBkYXRlKG5ld1N0eWxlLT5mb250KCkuZm9udFNlbGVjdG9yKCkpOwogCiAgICAgLy8g
Tm93IG1hcCB0aGUgZm9udCBwcm9wZXJ0eSBsb25naGFuZHMgaW50byB0aGUgc3R5bGUuCi0gICAg
Q1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IGNhbnZhcygpLT5zdHlsZVNlbGVjdG9y
KCk7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IGNhbnZhcygpLT5zdHlsZVNl
bGVjdG9yKCk7CiAgICAgc3R5bGVTZWxlY3Rvci0+YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJv
cGVydHlGb250RmFtaWx5LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUZvbnRGYW1pbHkpLmdldCgpLCBuZXdTdHlsZS5nZXQoKSk7CiAgICAgc3R5bGVTZWxlY3Rvci0+
YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCB0ZW1wRGVj
bC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkuZ2V0KCkpOwogICAg
IHN0eWxlU2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCB0ZW1wRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50KS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCA4MTE0Mzc3NWYzYjc4YzYxYjgwZjYzYTZmMDRkMzllNDMwMDI5MGRm
Li41N2JjNWNiMWUxYTY0YzVhNWEyMWMzZjQwNWI0MjQ1YTgwODQxZjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTU3MiwxNSArNTcy
LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgcmVjYWxjU3R5bGVGb3JQc2V1ZG9T
dGF0ZUlmTmVlZGVkKGVsZW1lbnQsIGZvcmNlZFBzZXVkb0NsYXNzZXMgPyBmb3JjZWRQc2V1ZG9D
bGFzc2VzLT5nZXQoKSA6IDApOwogCiAgICAgLy8gTWF0Y2hlZCBydWxlcy4KLSAgICBDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciA9IGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxl
Y3RvcigpOwotICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gc2VsZWN0b3It
PnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIENTU1N0eWxlU2VsZWN0b3I6OkFsbENTU1J1
bGVzKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzZWxlY3RvciA9IGVsZW1lbnQtPm93bmVyRG9jdW1l
bnQoKS0+c3R5bGVTZWxlY3RvcigpOworICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1
bGVzID0gc2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIFN0eWxlUmVzb2x2
ZXI6OkFsbENTU1J1bGVzKTsKICAgICBtYXRjaGVkQ1NTUnVsZXMgPSBidWlsZEFycmF5Rm9yUnVs
ZUxpc3QobWF0Y2hlZFJ1bGVzLmdldCgpLCBzZWxlY3Rvcik7CiAKICAgICAvLyBQc2V1ZG8gZWxl
bWVudHMuCiAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNsdWRlUHNldWRvKSB7CiAgICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRS
dWxlcz4gPiBwc2V1ZG9FbGVtZW50cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpQc2V1ZG9JZFJ1bGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoUHNldWRvSWQgcHNl
dWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwgQUZURVJfTEFTVF9JTlRF
Uk5BTF9QU0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4ocHNldWRvSWQg
KyAxKSkgewotICAgICAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBz
ZWxlY3Rvci0+cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIENT
U1N0eWxlU2VsZWN0b3I6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NSdWxl
TGlzdD4gbWF0Y2hlZFJ1bGVzID0gc2VsZWN0b3ItPnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KGVsZW1lbnQsIHBzZXVkb0lkLCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAg
ICAgICBpZiAobWF0Y2hlZFJ1bGVzICYmIG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlcz4gcHNldWRv
U3R5bGVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlczo6Y3JlYXRlKCkKICAgICAg
ICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRvSWQpKQpA
QCAtNTk3LDggKzU5Nyw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eT4gPiBpbmhlcml0ZWRTdHlsZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAgICAgICBFbGVtZW50KiBwYXJl
bnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICB3aGlsZSAocGFy
ZW50RWxlbWVudCkgewotICAgICAgICAgICAgQ1NTU3R5bGVTZWxlY3RvciogcGFyZW50U2VsZWN0
b3IgPSBwYXJlbnRFbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50
U2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIENTU1N0eWxlU2Vs
ZWN0b3I6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXIqIHBhcmVudFNl
bGVjdG9yID0gcGFyZW50RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7
CisgICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBh
cmVudFNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBTdHlsZVJl
c29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gcGFyZW50U3R5bGUgPSBUeXBlQnVpbGRlcjo6Q1NTOjpJ
bmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVk
Q1NTUnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcy5nZXQoKSwg
c2VsZWN0b3IpKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5zdHlsZSgpICYmIHBh
cmVudEVsZW1lbnQtPnN0eWxlKCktPmxlbmd0aCgpKSB7CkBAIC05NDQsNyArOTQ0LDcgQEAgVHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpFbnVtIEluc3BlY3RvckNTU0FnZW50Ojpk
ZXRlY3RPcmlnaW4oQ1NTU3R5bGUKICAgICByZXR1cm4gb3JpZ2luOwogfQogCi1QYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0LCBD
U1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCwgU3R5bGVSZXNvbHZlciog
c3R5bGVTZWxlY3RvcikKIHsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+ID4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQpAQCAtOTU1
LDkgKzk1NSw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU+ID4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1CiAgICAgICAgIGlmICghcnVsZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIC8vIENTU1J1bGVzIHJldHVybmVkIGJ5
IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlUnVsZXNGb3JFbGVtZW50IGxhY2sgcGFyZW50IHBvaW50
ZXJzIHNpbmNlIHRoYXQgaW5mb21hdGlvbiBpcyBub3QgY2hlYXBseSBhdmFpbGFibGUuCisgICAg
ICAgIC8vIENTU1J1bGVzIHJldHVybmVkIGJ5IFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JF
bGVtZW50IGxhY2sgcGFyZW50IHBvaW50ZXJzIHNpbmNlIHRoYXQgaW5mb21hdGlvbiBpcyBub3Qg
Y2hlYXBseSBhdmFpbGFibGUuCiAgICAgICAgIC8vIFNpbmNlIHRoZSBpbnNwZWN0b3Igd2FudHMg
dG8gd2FsayB0aGUgcGFyZW50IGNoYWluLCB3ZSBjb25zdHJ1Y3QgdGhlIGZ1bGwgd3JhcHBlcnMg
aGVyZS4KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgZmFjdG9yZWQgYmV0dGVyLiBD
U1NTdHlsZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudCBzaG91bGQgcmV0dXJuIGEgU3R5
bGVSdWxlIHZlY3Rvciwgbm90IGEgQ1NTUnVsZUxpc3QuCisgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIGJlIGZhY3RvcmVkIGJldHRlci4gU3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVs
ZW1lbnQgc2hvdWxkIHJldHVybiBhIFN0eWxlUnVsZSB2ZWN0b3IsIG5vdCBhIENTU1J1bGVMaXN0
LgogICAgICAgICBpZiAoIXJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSkgewogICAgICAgICAgICAg
cnVsZSA9IHN0eWxlU2VsZWN0b3ItPmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3Io
cnVsZS0+c3R5bGVSdWxlKCkpOwogICAgICAgICAgICAgaWYgKCFydWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA3MTRiODZkNTM4ZGRkOGMw
Y2JiYWFjM2IwZDVkYWE2ZTFmM2E5MzM3Li4yYjU2YzgyNTRkYjM2MzQ5MGRkYjcwOGQwZTVkYTE4
MWM5YzQ4ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVl
dCogYXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpFbnVtIGRldGVjdE9yaWdpbihD
U1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwog
Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4gPiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqLCBDU1NTdHlsZVNlbGVj
dG9yKik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4gPiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqLCBTdHlsZVJl
c29sdmVyKik7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVp
bGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOwogCiAgICAgLy8gSW5zcGVjdG9y
RE9NQWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggMzcxYWY2YzhjMjJjMjFkMTNkNmFlOGJlODQ5MWE2OGI0MzA2NzA2My4uYThm
Y2NkYzkyYWVlNzg1NGExNDU2Yzc4ZWNjYzdhZjVkZTFiMzliMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtMTI4MywxMiArMTI4MywxMiBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBT
dAogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBDU1NTdHlsZVNlbGVjdG9yOjpB
dXRob3JDU1NSdWxlczsKKyAgICB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IFN0eWxlUmVzb2x2
ZXI6OkF1dGhvckNTU1J1bGVzOwogICAgIGlmICghYXV0aG9yT25seSkKLSAgICAgICAgcnVsZXNU
b0luY2x1ZGUgfD0gQ1NTU3R5bGVTZWxlY3Rvcjo6VUFBbmRVc2VyQ1NTUnVsZXM7CisgICAgICAg
IHJ1bGVzVG9JbmNsdWRlIHw9IFN0eWxlUmVzb2x2ZXI6OlVBQW5kVXNlckNTU1J1bGVzOwogICAg
IGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpKSB7CiAgICAgICAg
IGlmIChzZXR0aW5ncy0+Y3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJs
ZWQoKSkKLSAgICAgICAgICAgIHJ1bGVzVG9JbmNsdWRlIHw9IENTU1N0eWxlU2VsZWN0b3I6OkNy
b3NzT3JpZ2luQ1NTUnVsZXM7CisgICAgICAgICAgICBydWxlc1RvSW5jbHVkZSB8PSBTdHlsZVJl
c29sdmVyOjpDcm9zc09yaWdpbkNTU1J1bGVzOwogICAgIH0KICAgICAKICAgICBQc2V1ZG9JZCBw
c2V1ZG9JZCA9IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChDU1NTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9U
eXBlKHBzZXVkb0VsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGQxNWIxNmZkNWJlZTMx
Mzg4YWZiOTJhYjVkZDliM2JjMDZmOGUwMzkuLjAzMTUwNjlhMDYwYmViNDhjNDU0MjJjYTBhMDk1
M2Y4NGM0MTBiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQg
UGFnZTo6YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3VwKQogICAgICAgICBp
ZiAocGFnZS0+bV9ncm91cCAhPSBncm91cCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICAgICAgaWYgKENT
U1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVT
ZWxlY3RvcigpKQorICAgICAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3Ig
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpKQogICAgICAgICAgICAgICAgIHN0
eWxlU2VsZWN0b3ItPmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdy
b3VwKiBncm91cCwgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKQogICAgICAgICBpZiAocGFnZS0+
bV9ncm91cCAhPSBncm91cCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICAgICAgaWYgKENTU1N0eWxlU2Vs
ZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rvcigp
KQorICAgICAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpKQogICAgICAgICAgICAgICAgIHN0eWxlU2VsZWN0
b3ItPnZpc2l0ZWRTdGF0ZUNoYW5nZWQodmlzaXRlZExpbmtIYXNoKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggMGYyMzMwMWExNTMwOGFlOWIyYWMzM2Y5YzZlM2ZkMzQzMjU1NGVl
MS4uZTJmYjIxZWQyYzIzN2QwZGZlMDBhOTMxMTZjOThkZDJhYTRmMWE1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTU0Nyw3ICs1NDcsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250
cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZAogICAgIGlmIChibGVu
ZGVkU3R5bGUgIT0gbmV3U3R5bGUpIHsKICAgICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbnMvdHJh
bnNpdGlvbnMgY2hhbmdlIG9wYWNpdHkgb3IgdHJhbnNmb3JtLCB3ZSBuZWVkIHRvIHVwZGF0ZQog
ICAgICAgICAvLyB0aGUgc3R5bGUgdG8gaW1wb3NlIHRoZSBzdGFja2luZyBydWxlcy4gTm90ZSB0
aGF0IHRoaXMgaXMgYWxzbwotICAgICAgICAvLyBkb25lIGluIENTU1N0eWxlU2VsZWN0b3I6OmFk
anVzdFJlbmRlclN0eWxlKCkuCisgICAgICAgIC8vIGRvbmUgaW4gU3R5bGVSZXNvbHZlcjo6YWRq
dXN0UmVuZGVyU3R5bGUoKS4KICAgICAgICAgaWYgKGJsZW5kZWRTdHlsZS0+aGFzQXV0b1pJbmRl
eCgpICYmIChibGVuZGVkU3R5bGUtPm9wYWNpdHkoKSA8IDEuMGYgfHwgYmxlbmRlZFN0eWxlLT5o
YXNUcmFuc2Zvcm0oKSkpCiAgICAgICAgICAgICBibGVuZGVkU3R5bGUtPnNldFpJbmRleCgwKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Jl
bmRlclRoZW1lQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKaW5kZXggYzY0Yjk2ZWMwZDBjODc2ODEwOTQw
ZWEwMTBkNzViMzc2ZjBjZGFiMC4uNzBjNDM4OWI5YzUxYTI3ZWEyZGEzOWM1ZDkyOGI3ZTk3OGEy
MDQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5k
ZXJUaGVtZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcApAQCAtMjE1LDEzICsyMTUsMTMgQEAgdm9p
ZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnNldEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlKiBzdHls
ZSkgY29uc3QKICAgICBzdHlsZS0+c2V0UGFkZGluZ0JvdHRvbSh2ZXJ0UGFkZGluZyk7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBzZXRCdXR0b25TdHlsZShzdHls
ZSk7CiAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfV0VCS0lUX0dSQUIpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjphZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHNldEJ1dHRvblN0eWxlKHN0eWxl
KTsKIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFp
bnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJgogICAgIHJl
dHVybiBwYWludFRleHRGaWVsZE9yVGV4dEFyZWFPclNlYXJjaEZpZWxkKG9iamVjdCwgaW5mbywg
cmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RUZXh0RmllbGRT
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RUZXh0RmllbGRTdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBz
ZXRCdXR0b25TdHlsZShzdHlsZSk7CiB9CkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBib29sIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbwogICAgIHJldHVybiBwYWludFRleHRGaWVsZE9yVGV4dEFyZWFPclNlYXJj
aEZpZWxkKG9iamVjdCwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFk
anVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCopIGNvbnN0CiB7CiAgICAgc2V0QnV0dG9uU3R5bGUoc3R5bGUpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25z
dAogewogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUg
PSAxMzsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdENhbmNlbEJ1dHRvblNpemUgPSA5
OwpAQCAtMzIwLDcgKzMyMCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0TWVudUxpc3RC
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25z
dAogewogICAgIC8vIFRoZXNlIHNlZW0gdG8gYmUgcmVhc29uYWJsZSBwYWRkaW5nIHZhbHVlcyBm
cm9tIG9ic2VydmF0aW9uLgogICAgIGNvbnN0IGludCBwYWRkaW5nTGVmdCA9IDg7CkBAIC00NjAs
MTIgKzQ2MCwxMiBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciogY3NzLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0TWVudUxpc3RTdHlsZShT
dHlsZVJlc29sdmVyKiBjc3MsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKIHsKICAgICBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKGNzcywgc3R5bGUsIGVsZW1l
bnQpOwogfQogCi12b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0Q2hlY2tib3hTdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHNldENo
ZWNrYm94U2l6ZShzdHlsZSk7CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKQEAg
LTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0Q2hlY2ti
b3hTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqCiAgICAgc3R5bGUtPnNldEN1
cnNvcihDVVJTT1JfV0VCS0lUX0dSQUIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6YWRqdXN0UmFkaW9TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RSYWRp
b1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25z
dAogewogICAgIHNldFJhZGlvU2l6ZShzdHlsZSk7CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
UmVuZGVyVGhlbWVCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCmluZGV4IDYyY2I3MzlkODIzMDViNGVmZjZmOTU3
MjBlNDNjNmNlZWVlNjVmYWMuLmM5NzU2ODdiZmE2YTcyOGQxOTBjYzRhOThiNDQyOGU0YzI0YmNh
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVy
VGhlbWVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgdm9pZCBjYWxjdWxhdGVCdXR0b25TaXplKFJlbmRlclN0eWxlKikg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKQEAgLTU4LDIxICs1OCwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QgeyByZXR1cm4g
c3R5bGUtPmhhc0FwcGVhcmFuY2UoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1dHRv
blN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RC
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0
RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RU
ZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2Vh
cmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9v
bCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q2hlY2tib3hTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFk
anVzdFJhZGlvU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0Q2hlY2tib3hTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFJhZGlvU3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBw
YWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCBjNjcwMzU0YWM3
Njg1YjdlMTYzMzhkMjEwM2ZmZWJlMWU2OTViYjkwLi4yZDRlNWI4NjgwNmQ1YTEyYTA0OTBjZjI2
MjBlZDcyNzQ1ZjA0Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5jcHAKQEAgLTg0NCw3ICs4NDQsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpw
YWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGlu
ZgogICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIFNsaWRlclZlcnRpY2FsLCBpbmZv
LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVyVHJhY2tTdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVyVHJhY2tT
dHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1l
RWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2xpZGVy
VHJhY2tTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwpAQCAtODYxLDcgKzg2MSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIFJlbmRlclN0CiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoZGVzYy0+
bWluLmhlaWdodCgpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVyVGh1
bWJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVy
VGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJU
aHVtYlN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgYWRqdXN0U2xpZGVyVHJh
Y2tTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwpAQCAtODg4LDcgKzg4OCw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFBhaW50SW5mbyYgaW5mCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAg
ICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdl
KCktPnRoZW1lKCkpLT5hZGp1c3RDaGVja2JveFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVu
dCk7CkBAIC05MDksNyArOTA5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRDaGVja2Jv
eChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLAogICAgIHJldHVy
biBwYWludFRoZW1lUGFydChvYmplY3QsIENoZWNrQm94LCBpbmZvLCByZWN0KTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UmFkaW9TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlmICgh
bV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CiAgICAg
ICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFn
ZSgpLT50aGVtZSgpKS0+YWRqdXN0UmFkaW9TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQp
OwpAQCAtOTMwLDcgKzkzMCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50UmFkaW8oUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uCiAgICAgcmV0dXJu
IHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgUmFkaW9CdXR0b24sIGluZm8sIHJlY3QpOwogfQogCi12
b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewog
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCkt
PnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxl
bWVudCk7CkBAIC05NTMsNyArOTUzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY28KICAgICBy
ZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBCdXR0b24sIGluZm8sIHJlY3QpOwogfQogCi12
b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkp
IHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVu
dCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RNZW51TGlzdFN0eWxlKHNlbGVjdG9yLCBzdHls
ZSwgZWxlbWVudCk7CkBAIC05NzEsNyArOTcxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFp
bnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLAog
ICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIENvbWJvQm94LCBpbmZvLCByZWN0KTsK
IH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
bGVtZW50KSBjb25zdAogewogICAgIGFkanVzdE1lbnVMaXN0U3R5bGUoc2VsZWN0b3IsIHN0eWxl
LCBlbGVtZW50KTsKIH0KQEAgLTk4MSw3ICs5ODEsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpw
YWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8m
CiAgICAgcmV0dXJuIHBhaW50TWVudUxpc3Qob2JqZWN0LCBpbmZvLCByZWN0KTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3Zv
aWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkp
IHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVu
dCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RUZXh0RmllbGRTdHlsZShzZWxlY3Rvciwgc3R5
bGUsIGVsZW1lbnQpOwpAQCAtOTk5LDcgKzk5OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8s
CiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgVGV4dEZpZWxkLCBpbmZvLCByZWN0
KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50
KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAogewogICAgIGFkanVzdFRleHRGaWVsZFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVu
dCk7CiB9CkBAIC0xMDA5LDcgKzEwMDksNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRl
eHRBcmVhKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sCiAgICAg
cmV0dXJuIHBhaW50VGV4dEZpZWxkKG9iamVjdCwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHls
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
bGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZs
Kj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmll
bGREZWNvcmF0aW9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKQEAgLTEwMjUsNyAr
MTAyNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9u
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWluCiAgICAgcmV0dXJuIHBhaW50VGhlbWVQ
YXJ0KG9iamVjdCwgU2VhcmNoRmllbGREZWNvcmF0aW9uLCBpbmZvLCByZWN0KTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxl
bWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAm
JiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVu
ZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQp
OwpAQCAtMTA0MSw3ICsxMDQxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFAKICAgICByZXR1
cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24sIGluZm8s
IHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAg
IGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7
CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQo
KS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0
eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBib29s
IFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbgogICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24sIGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50
LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVF
ZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CkBAIC0xMDcz
LDcgKzEwNzMsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogICAgIHJldHVybiBwYWludFRo
ZW1lUGFydChvYmplY3QsIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uLCBpbmZvLCByZWN0KTsKIH0K
IAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAogewogICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQo
KS0+cGFnZSgpKSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRTdHlsZShz
ZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwpAQCAtMTExMiw3ICsxMTEyLDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6c3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbikgY28KIH0KIAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCi12b2lkIFJlbmRl
clRoZW1lRWZsOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lRWZsOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAg
c3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKaW5kZXggY2VmMzJiODVmNTQ3MTZhMTlhM2IzOWVkYTE5
ZTNiOGJjNTc3Y2MxNy4uZDE1ZWUwYmNlYTFjOTg2NmQ5YjIxZWQ3NGE3OGJlM2YwNWRiOWNiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKQEAgLTEx
Nyw0NiArMTE3LDQ2IEBAIHB1YmxpYzoKICAgICAvLyBTeXN0ZW0gZm9udHMuCiAgICAgdmlydHVh
bCB2b2lkIHN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q2hlY2tib3hTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdENo
ZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSYWRp
b1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmly
dHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVM
aXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlv
blN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNl
YXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVt
YlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKQEAgLTE2NSw3ICsxNjUsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdEZvbnRTaXplKGludCBmb250c2l6
ZSk7CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQ
cm9ncmVzc0JhclN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShTdHlsZVJl
c29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwogICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9y
UHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBh
bmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCA5
MjBiMDA3ZmE1YzAwOGIzYmY0OGRlYjMyMTkyNmZhOGYyOThiOWFmLi4xMThkNjY0MDFlMGI1Zjdl
ZTIwNTE1N2UyZDAyYWQzMTc5YWM3NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIHN0YXRpYyBHdGtT
dGF0ZVR5cGUgZ3RrSWNvblN0YXRlKFJlbmRlclRoZW1lKiB0aGVtZSwgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJPYmplY3QpCiAgICAgcmV0dXJuIEdUS19TVEFURV9OT1JNQUw7CiB9CiAKLXZvaWQgUmVu
ZGVyVGhlbWVHdGs6OmFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIFdlYkNvcmU6OkVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lR3RrOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBXZWJDb3JlOjpFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8v
IFNvbWUgbGF5b3V0IHRlc3RzIGNoZWNrIGV4cGxpY2l0bHkgdGhhdCBidXR0b25zIGlnbm9yZSBs
aW5lLWhlaWdodC4KICAgICBpZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBQdXNoQnV0dG9uUGFy
dCkKICAgICAgICAgc3R5bGUtPnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5l
SGVpZ2h0KCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdFN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
CiB7CiAgICAgLy8gVGhlIHRlc3RzIGNoZWNrIGV4cGxpY2l0bHkgdGhhdCBzZWxlY3QgbWVudSBi
dXR0b25zIGlnbm9yZSBsaW5lIGhlaWdodC4KICAgICBzdHlsZS0+c2V0TGluZUhlaWdodChSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUKICAgICBzdHlsZS0+cmVzZXRCb3JkZXJSYWRpdXMoKTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewog
ICAgIGFkanVzdE1lbnVMaXN0U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKIH0KQEAgLTI3Niw3
ICsyNzYsNyBAQCBzdGF0aWMgR3RrSWNvblNpemUgZ2V0SWNvblNpemVGb3JQaXhlbFNpemUoZ2lu
dCBwaXhlbFNpemUpCiAgICAgcmV0dXJuIEdUS19JQ09OX1NJWkVfRElBTE9HOwogfQogCi12b2lk
IFJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBj
b25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZSkgY29uc3QKIHsKICAgICBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKHNl
bGVjdG9yLCBzdHlsZSwgZSk7CiB9CkBAIC0zMDQsNyArMzA0LDcgQEAgc3RhdGljIHZvaWQgYWRq
dXN0U2VhcmNoRmllbGRJY29uU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHN0eWxlLT5z
ZXRIZWlnaHQoTGVuZ3RoKGhlaWdodCwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0
azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkg
Y29uc3QKIHsKICAgICBhZGp1c3RTZWFyY2hGaWVsZEljb25TdHlsZShzdHlsZSk7CiB9CkBAIC0z
NDEsNyArMzQxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBhZGp1c3RTZWFyY2hGaWVsZEljb25TdHlsZShz
dHlsZSk7CiB9CkBAIC0zNjAsNyArMzYwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY28KICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZp
ZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxk
U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZSkgY29uc3QKIHsKICAgICAvLyBXZSBjYW5ub3QgZ2l2ZSBhIHByb3BlciByZW5kZXJpbmcg
d2hlbiBib3JkZXIgcmFkaXVzIGlzIGFjdGl2ZSwgdW5mb3J0dW5hdGVseS4KICAgICBzdHlsZS0+
cmVzZXRCb3JkZXJSYWRpdXMoKTsKQEAgLTM5NywxMiArMzk3LDEyIEBAIGJvb2wgUmVuZGVyVGhl
bWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qs
IGNvbnN0IFBhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFk
anVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTbGlkZXJUcmFj
a1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25z
dAogewogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBS
ZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1l
bnQpOwogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CkBAIC02NDEsNyArNjQxLDcg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUN1cnJlbnRUaW1lKFJlbmRlck9iamVj
dCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBST0dSRVNT
X1RBRykKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lR3RrOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLT5zZXRCb3hTaGFk
b3cobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5oCmluZGV4IDlhM2QyODg0MzE5NjU2MDg2ODVhNDE1OGY5MTZlZDY3MDI3MTZlNDcuLjIz
YjA4ZmZlYWE2OTJhYjQ2YzhkM2Q4ZTQyMzViOTlkMjY4YWVkODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29u
c3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
UmFkaW9TaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBh
aW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CkBAIC0xMjUsMjggKzEyNSwyOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgLy8gVGhlIGZvcm1lciBpcyB1c2VkIHdoZW4gYSBtZW51IGxpc3QgYnV0dG9u
IGhhcyBiZWVuIHN0eWxlZC4gVGhpcyBpcyB1c2VkIHRvIGVuc3VyZQogICAgIC8vIEFxdWEgdGhl
bWVkIGNvbnRyb2xzIHdoZW5ldmVyIHBvc3NpYmxlLiBXZSBhbHdheXMgd2FudCB0byB1c2UgR1RL
KyB0aGVtaW5nLCBzbwogICAgIC8vIHdlIGRvbid0IG1haW50YWluIHRoaXMgZGlmZmVyZW50aWF0
aW9uLgotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KiBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1
bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNr
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJU
aHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKQEAgLTE3MSwxMyArMTcx
LDEzIEBAIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQogICAgIHZpcnR1YWwg
ZG91YmxlIGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jl
c3MqKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25EdXJhdGlvbkZvclByb2dy
ZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFBy
b2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludENhcHNMb2NrSW5kaWNh
dG9yKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcApp
bmRleCA1MDY3NWQxZTk0MGIzOGVmNjQ2Y2E5MDE2MzNlZmRkNWI5NzhiMjU1Li4wNjAzODNhYzFl
NGY1ZDYwOWFjMDFkMTVkMTNmYTE4N2VhZGVmYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcApAQCAtNTc0LDcgKzU3NCw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVHdGs6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmpl
Y3QsIGNvbnN0IFBhaW50SW5mCiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKIHsKICAgICBHdGtTdHlsZSogZ3RrU3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHls
ZShndGtTcGluQnV0dG9uKCkpOwogICAgIGNvbnN0IFBhbmdvRm9udERlc2NyaXB0aW9uKiBmb250
RGVzY3JpcHRpb24gPSBndGtTdHlsZS0+Zm9udF9kZXNjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcAppbmRleCAxMGRmY2NmOGNkZGExZTg0YmMz
MGIwYzUwZDM3M2NkMWJmNTkxN2M3Li41NDEzYmI3OTUzMjQ4NTNjMjBjZGQxNzdjMjdkZDU2MzAw
ODE1NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGszLmNwcApAQCAtNzc0LDcgKzc3NCw3IEBAIHN0YXRpYyBnaW50IHNwaW5CdXR0b25BcnJvd1Np
emUoR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiBhcnJvd1NpemUgLSBhcnJv
d1NpemUgJSAyOyAvLyBGb3JjZSBldmVuLgogfQogCi12b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1
c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdElubmVyU3Bp
bkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
KSBjb25zdAogewogICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCA9IGdldFN0eWxlQ29udGV4
dChHVEtfVFlQRV9TUElOX0JVVFRPTik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UmVuZGVyVGhlbWVRdC5jcHAKaW5kZXggMGNhOWE5NTFhNjQ4ZjYzMmYwYTg4MmIxOWRmZDc3NzBk
NGRjN2NlMy4uMjY4OGY5ZGZhZmNjM2Y2OWU4ZDk5YjhhYmUyN2IzODYyNmEyNWRiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTMxOSw3ICsz
MTksNyBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OnNldEJ1dHRvblNpemUoUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAogICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6
YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCopIGNvbnN0CiB7CiAgICAgLy8gUmVzZXR0aW5nIHRoZSBzdHlsZSBsaWtlIHRoaXMg
bGVhZHMgdG8gZGlmZmVyZW5jZXMgbGlrZToKICAgICAvLyAtIFJlbmRlclRleHRDb250cm9sIHtJ
TlBVVH0gYXQgKDIsMikgc2l6ZSAxNjh4MjUgW2JnY29sb3I9I0ZGRkZGRl0gYm9yZGVyOiAoMnB4
IGluc2V0ICMwMDAwMDApXQpAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6
YWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHls
ZSwKICAgICBjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVRdDo6YWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZVF0OjphZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgYWRqdXN0VGV4
dEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKIH0KQEAgLTM0Miw3ICszNDIs
NyBAQCBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludAogICAgIHJldHVybiBwYWludFRleHRGaWVsZChv
LCBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RNZW51TGlzdFN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLT5yZXNldEJvcmRl
cigpOwogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RNZW51
TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEUKICAgICBz
ZXRQb3B1cFBhZGRpbmcoc3R5bGUpOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdE1l
bnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdE1lbnVMaXN0QnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
CiB7CiAgICAgLy8gSGVpZ2h0IGlzIGxvY2tlZCB0byBhdXRvLgogICAgIHN0eWxlLT5zZXRIZWln
aHQoTGVuZ3RoKEF1dG8pKTsKQEAgLTM4MywxOCArMzgzLDE4IEBAIGRvdWJsZSBSZW5kZXJUaGVt
ZVF0OjphbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNz
KiByZW5kCiAgICAgcmV0dXJuIDAuMTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RQ
cm9ncmVzc0JhclN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RQcm9ncmVzc0JhclN0eWxl
KFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewog
ICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAjZW5kaWYKIAotdm9pZCBSZW5k
ZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1
c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
CiB7CiAgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoc2VsZWN0b3IsIHN0
eWxlLCBlbGVtZW50KTsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwpAQCAtNDA2
LDcgKzQwNiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGksCiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxk
KG8sIHBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZFN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCit2b2lk
IFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIFJlc2V0dGluZyB0aGUg
c3R5bGUgbGlrZSB0aGlzIGxlYWRzIHRvIGRpZmZlcmVuY2VzIGxpa2U6CkBAIC00MjAsNyArNDIw
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHkKICAgICBjb21wdXRlU2l6ZUJhc2VkT25TdHls
ZShzdHlsZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0
eWxlLAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCog
ZSkgY29uc3QKIHsKICAgICAvLyBMb2dpYyB0YWtlbiBmcm9tIFJlbmRlclRoZW1lQ2hyb21pdW0u
Y3BwLgpAQCAtNDcyLDcgKzQ3Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkRGVj
b3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsCit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQqIGUpIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBib29sIFJl
bmRlclRoZW1lUXQ6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUGFpbnRJbmZvJgogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6cGFpbnRTZWFyY2hGaWVs
ZERlY29yYXRpb24obywgcGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaQogfQogCiAj
aWZuZGVmIFFUX05PX1NQSU5CT1gKLXZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0SW5uZXJTcGlu
QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICAv
LyBVc2UgdGhlIHNhbWUgd2lkdGggYXMgb3VyIG5hdGl2ZSBzY3JvbGxiYXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaAppbmRleCAwM2I3MTYwN2QzYWIyN2EwODY5
ZjE3YzQ5MmY4ZWE0MTJmNDVjZDE3Li41MTg1YWZlNmQ3MTMyMWRiODJkZjhkZjM5MzdjMGJjNjY5
NmQ0ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCkBA
IC05OSwzOSArOTksMzkgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEJ1dHRv
blNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0
RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFRleHRBcmVhKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQotICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJv
Z3Jlc3NCYXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CiAgICAgLy8gUmV0dXJucyB0aGUgcmVwZWF0IGludGVydmFsIG9mIHRoZSBhbmltYXRpb24g
Zm9yIHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0
SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OwogI2VuZGlmCiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owog
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNv
cmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIHBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogCiAjaWZuZGVmIFFUX05PX1NQSU5CT1gKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJT
cGluQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Jl
bmRlclRoZW1lUXRNb2JpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVy
VGhlbWVRdE1vYmlsZS5jcHAKaW5kZXggMDY4NTIyYTNmNGYxODc0Mjg1YWZlOTM0MWY3NGYxZDQ0
ODNkZDhlNy4uYmEyMzdjMmQ2YzViZTMxOTZiMzE3NjcyNjEwYmE4NjEwODkzMzYyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5jcHAK
QEAgLTYzMCw3ICs2MzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6OmNvbXB1dGVTaXpl
QmFzZWRPblN0eWxlKFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSkgY29ucwogICAgICAgICByZW5k
ZXJTdHlsZS0+c2V0TWluSGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZVF0TW9iaWxlOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBE
aXRjaCB0aGUgYm9yZGVyLgogICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOwpAQCAtNjczLDcgKzY3
Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVRdE1vYmlsZTo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZVF0TW9iaWxlOjphZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBSZXNldHRpbmcgdGhlIHN0
eWxlIGxpa2UgdGhpcyBsZWFkcyB0byBkaWZmZXJlbmNlcyBsaWtlOgogICAgIC8vIC0gUmVuZGVy
VGV4dENvbnRyb2wge0lOUFVUfSBhdCAoMiwyKSBzaXplIDE2OHgyNSBbYmdjb2xvcj0jRkZGRkZG
XSBib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCkBAIC03MjEsNyArNzIxLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZVF0TW9iaWxlOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgaSwgY28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhl
bWVRdE1vYmlsZTo6YWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZVF0TW9iaWxlOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgUmVuZGVyVGhlbWVR
dDo6YWRqdXN0TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogICAgIHN0eWxlLT5z
ZXRQYWRkaW5nTGVmdChMZW5ndGgobWVudUxpc3RQYWRkaW5nLCBGaXhlZCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5oCmluZGV4IDFjMjQ4
MGYzNWVhMTU0YWZjMTA0MGRlYjdjMGNiY2I0NzRhODIzZjUuLjk1MmFhNGY4YTE3ODdjYTE2NjIw
NjgxMjIwNWEzYzFiYjVhZDI1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXRNb2JpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9SZW5kZXJUaGVtZVF0TW9iaWxlLmgKQEAgLTU4LDE0ICs1OCwxNCBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50
VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVz
dE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBw
YWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVu
ZGVyVGhlbWVXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4
LmNwcAppbmRleCBjOGExNzUwZWVjNDExNjNmOGFkY2I4Mzc4MWQxZmVlZjU3ODAyYWUzLi44YWM4
YTlhNjFhNzMyMjc1NTBkNTRlNTI5NTBjNGRhYzVkNjJkOTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcApAQCAtNzMsMTggKzczLDE4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmpl
Y3QqLCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShSZW5k
ZXJTdHlsZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVM
aXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBCb3JkZXJEYXRhJiwKQEAg
LTI1Nyw3ICsyNTcsNyBAQCBib29sIFJlbmRlclRoZW1lV3g6OnN1cHBvcnRzRm9jdXMoQ29udHJv
bFBhcnQgcGFydCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXeDo6YWRqdXN0
QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXeDo6YWRqdXN0QnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKIHsKICAgICBhZGRJbnRyaW5zaWNNYXJnaW5zKHN0eWxlKTsKIH0KQEAgLTMwMyw3
ICszMDMsNyBAQCBib29sIFJlbmRlclRoZW1lV3g6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBSZW5kZXJUaGVtZVd4OjphZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWVXeDo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAKIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBpbnQgUmVu
ZGVyVGhlbWVXeDo6bWluaW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0CiAgICAg
cmV0dXJuIE1JTklNVU1fTUVOVV9MSVNUX1NJWkU7IAogfQogCi12b2lkIFJlbmRlclRoZW1lV3g6
OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV3g6OmFkanVzdE1lbnVMaXN0U3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7
CiAgICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOwogCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZVd4OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhl
bWVXeDo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXeDo6YWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklucHV0U3BlZWNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbnB1dFNwZWVjaC5jcHAKaW5kZXggOTI3YTFlZTEzYjE1NGY2ODdhYzFlZTcx
ODQwYzZjOTM3ZWUyYWNjMi4uMzcwYWUwYWVjMDQ0OGNlYmUzMTg2ZjMwOTk0MjVlYzUzMDc3MTM4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklucHV0U3BlZWNo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0U3BlZWNoQnV0dG9u
U2l6ZSA9IDE2Owogc3RhdGljIGNvbnN0IGZsb2F0IG1pblNwZWVjaEJ1dHRvblNpemUgPSA4Owog
c3RhdGljIGNvbnN0IGZsb2F0IG1heFNwZWVjaEJ1dHRvblNpemUgPSA0MDsKIAotdm9pZCBSZW5k
ZXJJbnB1dFNwZWVjaDo6YWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKQordm9pZCBSZW5kZXJJbnB1
dFNwZWVjaDo6YWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKQogewogICAgIC8vIFNjYWxlIHRoZSBidXR0
b24gc2l6ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplLgogICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0
eWxlLT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklucHV0U3BlZWNoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guaAppbmRleCA2M2VmOGFlNjVjNGNj
ODYzOTczMGUxODI3MmZjZjJjODJiMTUxYmI2Li5mMzdiODM2ZjQ4OWFhNmJjNDEwZjViODQ1MWZi
Y2E4MTFjZWJmN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5wdXRTcGVlY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5wdXRT
cGVlY2guaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlcklucHV0U3BlZWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhZGp1c3RJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopOworICAgIHN0YXRpYyB2b2lkIGFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIGJv
b2wgcGFpbnRJbnB1dEZpZWxkU3BlZWNoQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCmluZGV4IGYxYmMxZmEyNTg5NTg1ZWI4Zjc5YjkwYzBjNzNhZjRiMmVlMzY5
MGUuLmFlNzU1Y2VmNmZkZGQ1YTUwZjA3ZjQyODY4MzQ2OGEwNWNmNGQ1ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNzIsNyArNzIsNyBAQCBSZW5kZXJU
aGVtZTo6UmVuZGVyVGhlbWUoKQogewogfQogCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlLAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgVUFIYXNBcHBlYXJhbmNlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIs
IGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xv
cikKIHsKICAgICAvLyBGb3JjZSBpbmxpbmUgYW5kIHRhYmxlIGRpc3BsYXkgc3R5bGVzIHRvIGJl
IGlubGluZS1ibG9jayAoZXhjZXB0IGZvciB0YWJsZS0gd2hpY2ggaXMgYmxvY2spCkBAIC04NDQs
NyArODQ0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXNEZWZhdWx0KGNvbnN0IFJlbmRlck9iamVj
dCogbykgY29uc3QKIAogI2lmICFVU0UoTkVXX1RIRU1FKQogCi12b2lkIFJlbmRlclRoZW1lOjph
ZGp1c3RDaGVja2JveFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0Q2hlY2tib3hTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAg
ICAvLyBBIHN1bW1hcnkgb2YgdGhlIHJ1bGVzIGZvciBjaGVja2JveCBkZXNpZ25lZCB0byBtYXRj
aCBXaW5JRToKICAgICAvLyB3aWR0aC9oZWlnaHQgLSBob25vcmVkIChXaW5JRSBhY3R1YWxseSBz
Y2FsZXMgaXRzIGNvbnRyb2wgZm9yIHNtYWxsIHdpZHRocywgYnV0IGxldHMgaXQgb3ZlcmZsb3cg
Zm9yIHNtYWxsIGhlaWdodHMuKQpAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6
OmFkanVzdENoZWNrYm94U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlCiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZTo6YWRqdXN0UmFkaW9TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFJhZGlvU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7
CiAgICAgLy8gQSBzdW1tYXJ5IG9mIHRoZSBydWxlcyBmb3IgY2hlY2tib3ggZGVzaWduZWQgdG8g
bWF0Y2ggV2luSUU6CiAgICAgLy8gd2lkdGgvaGVpZ2h0IC0gaG9ub3JlZCAoV2luSUUgYWN0dWFs
bHkgc2NhbGVzIGl0cyBjb250cm9sIGZvciBzbWFsbCB3aWR0aHMsIGJ1dCBsZXRzIGl0IG92ZXJm
bG93IGZvciBzbWFsbCBoZWlnaHRzLikKQEAgLTg3OCwzMiArODc4LDMyIEBAIHZvaWQgUmVuZGVy
VGhlbWU6OmFkanVzdFJhZGlvU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVuCiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZTo6YWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RC
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50Kikg
Y29uc3QKIHsKICAgICAvLyBNb3N0IHBsYXRmb3JtcyB3aWxsIGNvbXBsZXRlbHkgaG9ub3IgYWxs
IENTUywgYW5kIHNvIHdlIGhhdmUgbm8gbmVlZCB0byBhZGp1c3QgdGhlIHN0eWxlCiAgICAgLy8g
YXQgYWxsIGJ5IGRlZmF1bHQuICBXZSB3aWxsIHN0aWxsIGFsbG93IHRoZSB0aGVtZSBhIGNyYWNr
IGF0IHNldHRpbmcgdXAgYSBkZXNpcmVkIHZlcnRpY2FsIHNpemUuCiAgICAgc2V0QnV0dG9uU2l6
ZShzdHlsZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZTo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotdm9pZCBSZW5k
ZXJUaGVtZTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RUZXh0RmllbGRT
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0K
IAotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVz
dFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0CiB7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdAogewogfQogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLXZvaWQgUmVu
ZGVyVGhlbWU6OmFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgUmVuZGVySW5wdXRTcGVlY2g6OmFkanVzdElucHV0RmllbGRTcGVl
Y2hCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwogfQpAQCAtOTE1LDcgKzkx
NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRVRF
Ul9UQUcpCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RNZXRlclN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZTo6YWRqdXN0TWV0ZXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKIHsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwogfQpA
QCAtOTQ4LDcgKzk0OCw3IEBAIGRvdWJsZSBSZW5kZXJUaGVtZTo6YW5pbWF0aW9uRHVyYXRpb25G
b3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1
c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdAogewogfQogI2VuZGlmCkBAIC05NTgsMTUgKzk1OCwxNSBAQCBib29sIFJlbmRlclRo
ZW1lOjpzaG91bGRIYXZlU3BpbkJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQp
IGNvbnN0CiAgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNTdGVwcGFibGUoKSAmJiAhaW5wdXRF
bGVtZW50LT5pc1JhbmdlQ29udHJvbCgpOwogfQogCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RN
ZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFNs
aWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0CiB7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIGFkanVzdFNsaWRlclRodW1i
U2l6ZShzdHlsZSk7CiB9CkBAIC05NzUsMjMgKzk3NSwyMyBAQCB2b2lkIFJlbmRlclRoZW1lOjph
ZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqKSBjb25zdAogewogfQogCi12b2lkIFJl
bmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNo
RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QK
IHsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3Zv
aWQgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAKLXZvaWQgUmVu
ZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRq
dXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3QKIHsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCA5OGJhM2FhY2Uw
YTAzOTYyZDBjYTczNjg1YmM2OGYzNGM2Y2JmNThjLi40YmZiN2U2NWYwMjZmYTBjNDhkZDgyMWUz
OTcwNDQ1YzZhZTgxOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApA
QCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgLy8gbWV0cmljcyBhbmQgZGVmYXVsdHMgZ2l2
ZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHlsZS4gIFRoaXMgaW5jbHVkZXMgc29waGlzdGljYXRl
ZCBvcGVyYXRpb25zIGxpa2UKICAgICAvLyBzZWxlY3Rpb24gb2YgY29udHJvbCBzaXplIGJhc2Vk
IG9mZiB0aGUgZm9udCwgdGhlIGRpc2FibGluZyBvZiBhcHBlYXJhbmNlIHdoZW4gY2VydGFpbiBv
dGhlciBwcm9wZXJ0aWVzIGxpa2UKICAgICAvLyAiYm9yZGVyIiBhcmUgc2V0LCBvciBpZiB0aGUg
YXBwZWFyYW5jZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB0aGVtZS4KLSAgICB2b2lkIGFkanVz
dFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqLCAgYm9vbCBV
QUhhc0FwcGVhcmFuY2UsCisgICAgdm9pZCBhZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KiwgIGJvb2wgVUFIYXNBcHBlYXJhbmNlLAogICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIHBh
aW50IHRoZSB3aWRnZXQgYXMgYSBiYWNrZ3JvdW5kIG9mIHRoZSBSZW5kZXJPYmplY3QuICBBIHdp
ZGdldCdzIGZvcmVncm91bmQsIGUuZy4sIHRoZQpAQCAtMjM1LDY4ICsyMzUsNjggQEAgcHJvdGVj
dGVkOgogCiAjaWYgIVVTRShORVdfVEhFTUUpCiAgICAgLy8gTWV0aG9kcyBmb3IgZWFjaCBhcHBl
YXJhbmNlIHZhbHVlLgotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RDaGVja2JveFN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0Q2hlY2tib3hTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKikgY29uc3QgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmFkaW9TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFJh
ZGlvU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFk
anVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWlu
dEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRCdXR0b25TaXplKFJlbmRlclN0
eWxlKikgY29uc3QgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50
SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJl
YVN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFy
ZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRy
dWU7IH0KIAogI2lmIEVOQUJMRShNRVRFUl9UQUcpCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1l
dGVyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZXRlcihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFByb2dy
ZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludElu
cHV0RmllbGRTcGVlY2hCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJh
Y2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNs
aWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJT
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRl
clRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZp
ZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGREZWNv
cmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1
bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVj
b3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCmlu
ZGV4IDBhZGExNmNjZjRmMGU1MGExZGNjYjI3MDYyZjE5ODBmZmYwMmU5NGEuLjhiNzEyMzA4ODM2
NWRjNmJmMmI2NDU1N2YwNmM4ZTM1YmZkMjljMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmV4dHJhRGVmYXVsdFN0
eWxlU2hlZXQoKQogICAgICAgICBTdHJpbmcodGhlbWVDaHJvbWl1bUFuZHJvaWRVc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YodGhlbWVDaHJvbWl1bUFuZHJvaWRVc2VyQWdlbnRTdHlsZVNoZWV0
KSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmFkanVzdElubmVyU3Bp
bkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YWRqdXN0SW5uZXJT
cGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCopIGNvbnN0CiB7CiAgICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSkg
ewogICAgICAgICAvLyBNYXRjaCBDaHJvbWl1bSBMaW51eCBzcGluIGJ1dHRvbiBzdHlsZSBpbiBs
YXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUFuZHJvaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtQW5kcm9pZC5oCmluZGV4IDUzNDkwMTM1YzY0MzJlNzFmNGMwNTNiMTgyOTI4
Mjg2MmMwZmI0MWMuLjNkY2Q2ZGY5MzY2ZDVlNTBiNzdkZDFkY2VjNjJmNzE2NDIyOTA4ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5k
cm9pZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
QW5kcm9pZC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ29sb3Ig
c3lzdGVtQ29sb3IoaW50IGNzc1ZhbGlkSWQpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGRlbGVnYXRlc01lbnVM
aXN0UmVuZGVyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3Bw
CmluZGV4IGQ0ZWQyYTFlNzg0MmFlMGFmMjExY2Q5Mjc2ZWZmYWMxMDdiNzJkMzcuLjAxOTY5NGYw
ZDZiNjE0NDIyMTQzM2ZjZTZlOWNjN2U1NWRlNDRiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCkBAIC0zMDUsNyAr
MzA1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZGVyVGh1bWIo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsK
ICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0dG9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCmluZGV4IDMzYjZmNTQy
NTY1MzYzYzBiZTk5YWYwMzRjYTYxY2U5NmZhMmRmMjMuLjdlMzA4MDgzZjYxN2QxMTVlNzFmMTEz
ZDdkNjJjM2UxY2YzM2NkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtTGludXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTcxLDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0
dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBwb3BzTWVudUJ5U3Bh
Y2VPclJldHVybigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCmluZGV4
IGZiNzk5ZjMxMTE4NGI1Y2NlM2U3NTZjZTNlZDJhNzQxY2U0NDZiZDEuLjQwYmIwYTM5YmQzN2Nh
MGYyZTQxNGM0ZGU3ODRhNzdhNmViODg3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSog
c3R5bGUpIGNvbnN0CiAgICAgc2V0Q2hlY2tib3hTaXplKHN0eWxlKTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvcios
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lQ2hy
b21pdW1Ta2lhOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBpZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9
PSBQdXNoQnV0dG9uUGFydCkgewogICAgICAgICAvLyBJZ25vcmUgbGluZS1oZWlnaHQuCkBAIC0y
NDEsNyArMjQxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRUZXh0QXJl
YShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwKICAgICByZXR1cm4gcGFpbnRU
ZXh0RmllbGQobywgaSwgcik7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFk
anVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RT
ZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqKSBjb25zdAogewogICAgICAvLyBJZ25vcmUgbGluZS1oZWlnaHQuCiAgICAgIHN0eWxlLT5z
ZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKQEAgLTI1Miw3
ICsyNTIsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNlYXJjaEZpZWxk
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJgogICAgIHJldHVybiBwYWludFRleHRG
aWVsZChvLCBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6
OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgLy8gU2NhbGUgdGhlIGJ1dHRv
biBzaXplIGJhc2VkIG9uIHRoZSBmb250IHNpemUKICAgICBmbG9hdCBmb250U2NhbGUgPSBzdHls
ZS0+Zm9udFNpemUoKSAvIGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZTsKQEAgLTI5OSwxNCAr
Mjk5LDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2VhcmNoRmllbGRD
YW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBjYW5jZWxCCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRp
b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50Kikg
Y29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNlYXJjaEZpZWxkRGVj
b3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
KSBjb25zdAogewogICAgIEludFNpemUgZW1wdHlTaXplKDEsIDExKTsKICAgICBzdHlsZS0+c2V0
V2lkdGgoTGVuZ3RoKGVtcHR5U2l6ZS53aWR0aCgpLCBGaXhlZCkpOwogICAgIHN0eWxlLT5zZXRI
ZWlnaHQoTGVuZ3RoKGVtcHR5U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRz
RGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqKSBjb25zdAogewogICAgIC8vIFNjYWxlIHRoZSBkZWNvcmF0aW9uIHNpemUgYmFzZWQgb24g
dGhlIGZvbnQgc2l6ZQogICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8g
ZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplOwpAQCAtMzQwLDcgKzM0MCw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihS
ZW5kZXJPYmplY3QqIG1hCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewog
ICAgIC8vIFNjYWxlIHRoZSBidXR0b24gc2l6ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplCiAgICAg
ZmxvYXQgZm9udFNjYWxlID0gc3R5bGUtPmZvbnRTaXplKCkgLyBkZWZhdWx0Q29udHJvbEZvbnRQ
aXhlbFNpemU7CkBAIC00NjYsMTMgKzQ2NiwxMyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1T
a2lhOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUAog
I2VuZGlmCiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdE1lbnVMaXN0
U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgV2Vi
Q29yZTo6RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFk
anVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBz
dHlsZSwgV2ViQ29yZTo6RWxlbWVudCogZSkgY29uc3QKIHsKICAgICAvLyBIZWlnaHQgaXMgbG9j
a2VkIHRvIGF1dG8gb24gYWxsIGJyb3dzZXJzLgogICAgIHN0eWxlLT5zZXRMaW5lSGVpZ2h0KFJl
bmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNo
cm9taXVtU2tpYTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewog
ICAgIGFkanVzdE1lbnVMaXN0U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmgKaW5kZXgg
ODI4YTY0MGQ1NThhODIyZThjZWY3NmRkYjg4NjQwZDA0NjhmMzU5Ni4uYmIwMzQ3NWU0NjJiNTA0
YWY3ZmE5YTRmMDYxNGU1ZGFkYzFjMzU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmgKQEAgLTcwLDIyICs3MCwyMiBAQCBjbGFz
cyBSZW5kZXJUaGVtZUNocm9taXVtU2tpYSA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RC
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CiAKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUNvbnRyb2xzQmFja2dyb3VuZChSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CkBAIC0xMDYsOCArMTA2
LDggQEAgY2xhc3MgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEgOiBwdWJsaWMgUmVuZGVyVGhlbWUg
ewogICAgICAgICAvLyBJbiBzaG9ydCwgd2UgZWl0aGVyIGdvIGRvd24gdGhlIE1lbnVMaXN0IGNv
ZGUgcGF0aCBvciB0aGUgTWVudUxpc3RCdXR0b24KICAgICAgICAgLy8gY29kZXBhdGguIFdlIG5l
dmVyIGdvIGRvd24gYm90aC4gQW5kIGluIGJvdGggY2FzZXMsIHRoZXkgcmVuZGVyIHRoZQogICAg
ICAgICAvLyBlbnRpcmUgbWVudWxpc3QuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51
TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAjaWYgRU5BQkxFKFBST0dSRVNT
X1RBRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtV2luLmNwcAppbmRleCAxZGM0ZDNjZDJlNjllNDdhMzQ5YzExNmMyYTA5MGNmMDRlODJjYTlm
Li42MDU2NjU5NzZhMzVmMWVjY2NjZjM2MjhkZWU3YmRjYWIyMzE1MmVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCkBAIC03
MDYsNyArNzA2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludFRleHRGaWVs
ZEludGVybmFsKFJlbmRlck9iamVjdCogbywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lQ2hyb21pdW1XaW46OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIGludCB3
aWR0aCA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKTsKICAg
ICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOwpAQCAtNzYwLDcgKzc2MCw3
IEBAIGRvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtV2luOjphbmltYXRpb25EdXJhdGlvbkZvclBy
b2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKiByCiAgICAgcmV0dXJuIHByb2dyZXNzQW5pbWF0aW9u
RnJhbWVSYXRlOwogfQogCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmFkanVzdFByb2dy
ZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmFkanVzdFByb2dyZXNzQmFyU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCmlu
ZGV4IGM0N2E2NzkxMGQ4MDc4YTZlYmI3YWE1NzMyZmYzNDFhOTVlNWVlNDQuLjc4NTZkMDM5Zjlm
ODM2Y2RjNWI4ZjhjMTVkMzk4YjNkYTEyZDJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaApAQCAtODYsMTMgKzg2LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gUmVuZGVyVGhlbWVD
aHJvbWl1bVNraWE6OnNldERlZmF1bHRGb250U2l6ZSgpIHJlZ2FyZGluZyB1Z2xpbmVzcyBvZiB0
aGlzIGhhY2suCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRGb250U2l6ZShpbnQpOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVy
U3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQogICAgICAgICB2aXJ0dWFsIGRvdWJsZSBh
bmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NC
YXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFBy
b2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCmluZGV4IDY2YzhhZDQ5OTk1YzUxYjdlZWNkOTAxNjlmODhiMTk2MWE0MTg3
NmQuLmViYmIyMzUyYzU4YmM5ZWI1MDI0YWI5OGEzNTRjMzUzNGVhYTVhMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0xMDMsNDEgKzEwMyw0MSBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9ycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRU
ZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBh
aW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lk
IGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAog
I2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFByb2dyZXNz
QmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQ
cm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAg
dmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVt
YlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNl
YXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNv
cmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0
eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAjaWYgRU5BQkxFKFZJREVPKQpA
QCAtMTkwLDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaXplRnJvbUZvbnQoUmVu
ZGVyU3R5bGUqLCBjb25zdCBJbnRTaXplKiBzaXplcykgY29uc3Q7CiAgICAgSW50U2l6ZSBzaXpl
Rm9yRm9udChSZW5kZXJTdHlsZSosIGNvbnN0IEludFNpemUqIHNpemVzKSBjb25zdDsKICAgICBJ
bnRTaXplIHNpemVGb3JTeXN0ZW1Gb250KFJlbmRlclN0eWxlKiwgY29uc3QgSW50U2l6ZSogc2l6
ZXMpIGNvbnN0OwotICAgIHZvaWQgc2V0Rm9udEZyb21Db250cm9sU2l6ZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBOU0NvbnRyb2xTaXplKSBjb25zdDsKKyAgICB2b2lkIHNldEZv
bnRGcm9tQ29udHJvbFNpemUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgTlNDb250cm9s
U2l6ZSkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUNoZWNrZWRTdGF0ZShOU0NlbGwqLCBjb25z
dCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShOU0NlbGwqLCBj
b25zdCBSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQppbmRleCAwMDc1NDUyZTg5NTNiMTZlNGFlNjQ1NDFhYzk5OGIyMmIxNGQyODE3Li40
Y2JiOGFmMmY5MTgyMTVmZTQ2OGRmZjhiOTFjNDBmNjFlYTA4N2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZU1hYzo6c2V0U2l6ZUZyb21Gb250KFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
SW50U2l6ZSogc2l6ZXMpIGMKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0Rm9udEZyb21D
b250cm9sU2l6ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBOU0NvbnRy
b2xTaXplIGNvbnRyb2xTaXplKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0Rm9udEZy
b21Db250cm9sU2l6ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBOU0NvbnRy
b2xTaXplIGNvbnRyb2xTaXplKSBjb25zdAogewogICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb247CiAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUpOwpA
QCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEZpZWxkKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RUZXh0RmllbGRTdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVNYWM6OmFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdAogewogfQogCkBAIC03NDgsNyArNzQ4LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZU1h
Yzo6YWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFRleHRBcmVhU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAKQEAg
LTk1Myw3ICs5NTMsNyBAQCBkb3VibGUgUmVuZGVyVGhlbWVNYWM6OmFuaW1hdGlvbkR1cmF0aW9u
Rm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdAogICAgIHJldHVybiBwcm9ncmVz
c0FuaW1hdGlvbk51bUZyYW1lcyAqIHByb2dyZXNzQW5pbWF0aW9uRnJhbWVSYXRlOwogfQogCi12
b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZU1hYzo6
YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3QKIHsKIH0KIApAQCAtMTE5Nyw3ICsxMTk3LDcgQEAgc3RhdGljIGNvbnN0IElu
dFNpemUqIG1lbnVMaXN0QnV0dG9uU2l6ZXMoKQogICAgIHJldHVybiBzaXplczsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIE5TQ29udHJvbFNp
emUgY29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwogCkBAIC0xMjY0LDcg
KzEyNjQsNyBAQCBpbnQgUmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9t
KFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6
OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgZmxvYXQgZm9udFNjYWxlID0gc3R5bGUtPmZv
bnRTaXplKCkgLyBiYXNlRm9udFNpemU7CiAKQEAgLTEzMDYsNyArMTMwNiw3IEBAIGludCBSZW5k
ZXJUaGVtZU1hYzo6bWluaW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0
CiBjb25zdCBpbnQgdHJhY2tXaWR0aCA9IDU7CiBjb25zdCBpbnQgdHJhY2tSYWRpdXMgPSAyOwog
Ci12b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZU1hYzo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51
bGxwdHIpOwogfQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmYK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNsaWRl
clRodW1iU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNs
aWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xp
ZGVyVGh1bWJTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwogICAgIHN0eWxlLT5zZXRC
b3hTaGFkb3cobnVsbHB0cik7CkBAIC0xNDc5LDcgKzE0NzksNyBAQCB2b2lkIFJlbmRlclRoZW1l
TWFjOjpzZXRTZWFyY2hGaWVsZFNpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHNl
dFNpemVGcm9tRm9udChzdHlsZSwgc2VhcmNoRmllbGRTaXplcygpKTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgLy8gT3ZlcnJpZGUgYm9y
ZGVyLgogICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOwpAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgY29u
c3QgSW50U2l6ZSogUmVuZGVyVGhlbWVNYWM6OmNhbmNlbEJ1dHRvblNpemVzKCkgY29uc3QKICAg
ICByZXR1cm4gc2l6ZXM7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JTeXN0ZW1Gb250KHN0
eWxlLCBjYW5jZWxCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNp
emUud2lkdGgoKSwgRml4ZWQpKTsKQEAgLTE1ODIsNyArMTU4Miw3IEBAIGNvbnN0IEludFNpemUq
IFJlbmRlclRoZW1lTWFjOjpyZXN1bHRzQnV0dG9uU2l6ZXMoKSBjb25zdAogfQogCiBjb25zdCBp
bnQgZW1wdHlSZXN1bHRzT2Zmc2V0ID0gOTsKLXZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNl
YXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNo
RmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQo
c3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3Ro
KHNpemUud2lkdGgoKSAtIGVtcHR5UmVzdWx0c09mZnNldCwgRml4ZWQpKTsKQEAgLTE1OTUsNyAr
MTU5NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNv
bnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIHJlc3Vs
dHNCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgo
KSwgRml4ZWQpKTsKQEAgLTE2MjgsNyArMTYyOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
CiB9CiAKIGNvbnN0IGludCByZXN1bHRzQXJyb3dXaWR0aCA9IDU7Ci12b2lkIFJlbmRlclRoZW1l
TWFjOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVN
YWM6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIEludFNpemUgc2l6ZSA9
IHNpemVGb3JTeXN0ZW1Gb250KHN0eWxlLCByZXN1bHRzQnV0dG9uU2l6ZXMoKSk7CiAgICAgc3R5
bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCkgKyByZXN1bHRzQXJyb3dXaWR0aCwgRml4
ZWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNh
ZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3Bw
CmluZGV4IDQ2NzJlZmU0YmNlNWI5OGVlYWM5MWVlNmU4MTZmNmVmMWI5MDM0OTguLjEyYzkyNWNi
MzliN2ZiZmJhNGNlMmI3YmQyZTNjMDQzZTg5NWQxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVTYWZhcmk6OnNldFNpemVGcm9tRm9udChSZW5kZXJTdHlsZSogc3R5bGUsIGNv
bnN0IEludFNpemUqIHNpemVzCiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKHNpemUu
aGVpZ2h0KCksIEZpeGVkKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnNldEZvbnRG
cm9tQ29udHJvbFNpemUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBz
dHlsZSwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVT
YWZhcmk6OnNldEZvbnRGcm9tQ29udHJvbFNpemUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgY29uc3QKIHsKICAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwogICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lU2FmYXJpOjpzZXRCdXR0b25QYWRkaW5nRnJvbUNvbnRyb2xTaXplKFJlbmRlclN0eWxlKiBz
dHlsZSwgTlNDbwogICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCgwLCBGaXhlZCkp
OwogfQogCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RCdXR0b25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAg
ICAvLyBUaGVyZSBhcmUgdGhyZWUgYXBwZWFyYW5jZSBjb25zdGFudHMgZm9yIGJ1dHRvbnMuCiAg
ICAgLy8gKDEpIFB1c2gtYnV0dG9uIGlzIHRoZSBjb25zdGFudCBmb3IgdGhlIGRlZmF1bHQgQXF1
YSBzeXN0ZW0gYnV0dG9uLiAgUHVzaCBidXR0b25zIHdpbGwgbm90IHNjYWxlIHZlcnRpY2FsbHkg
YW5kIHdpbGwgbm90IGFsbG93CkBAIC02MTUsNyArNjE1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFk
anVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAKQEAg
LTY0Myw3ICs2NDMsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFRleHRBcmVhKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0VGV4dEFyZWFTdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVTYWZhcmk6OmFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAKQEAgLTg1OSw3ICs4NTksNyBAQCBib29sIFJl
bmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29u
c3QgUGFpbnRJbmZvJiBwYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNh
ZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpOwogCkBAIC05MjQsNyArOTI0LDcg
QEAgaW50IFJlbmRlclRoZW1lU2FmYXJpOjpwb3B1cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5k
ZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyVGhl
bWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBmbG9h
dCBmb250U2NhbGUgPSBzdHlsZS0+Zm9udFNpemUoKSAvIGJhc2VGb250U2l6ZTsKICAgICAKQEAg
LTk4OCw3ICs5ODgsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNr
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
KSBjb25zdCAKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNsaWRlclRodW1iU3R5bGUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkg
Y29uc3QgCiB7IAogICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHNlbGVj
dG9yLCBzdHlsZSwgZSk7CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsgCkBAIC0x
MDQyLDcgKzEwNDIsNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpzZXRTZWFyY2hGaWVsZFNp
emUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHNldFNpemVGcm9tRm9udChzdHlsZSwg
c2VhcmNoRmllbGRTaXplcygpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0
U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0
U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIE92ZXJyaWRlIGJvcmRlci4KICAgICBz
dHlsZS0+cmVzZXRCb3JkZXIoKTsKQEAgLTEwOTIsNyArMTA5Miw3IEBAIGNvbnN0IEludFNpemUq
IFJlbmRlclRoZW1lU2FmYXJpOjpjYW5jZWxCdXR0b25TaXplcygpIGNvbnN0CiAgICAgcmV0dXJu
IHNpemVzOwogfQogCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0g
c2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIGNhbmNlbEJ1dHRvblNpemVzKCkpOwogICAgIHN0eWxl
LT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAtMTEwNiw3ICsxMTA2
LDcgQEAgY29uc3QgSW50U2l6ZSogUmVuZGVyVGhlbWVTYWZhcmk6OnJlc3VsdHNCdXR0b25TaXpl
cygpIGNvbnN0CiB9CiAKIGNvbnN0IGludCBlbXB0eVJlc3VsdHNPZmZzZXQgPSA5Owotdm9pZCBS
ZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGUpIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUs
IHJlc3VsdHNCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUu
d2lkdGgoKSAtIGVtcHR5UmVzdWx0c09mZnNldCwgRml4ZWQpKTsKQEAgLTExMTgsNyArMTExOCw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIEludFNpemUgc2l6ZSA9IHNpemVGb3JT
eXN0ZW1Gb250KHN0eWxlLCByZXN1bHRzQnV0dG9uU2l6ZXMoKSk7CiAgICAgc3R5bGUtPnNldFdp
ZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CkBAIC0xMTQxLDcgKzExNDEsNyBAQCBi
b29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24o
UmVuZGVyT2JqZWN0KiBvLCBjb25zdAogfQogCiBjb25zdCBpbnQgcmVzdWx0c0Fycm93V2lkdGgg
PSA1Owotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZv
clN5c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0
V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSArIHJlc3VsdHNBcnJvd1dpZHRoLCBGaXhlZCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRleCA4NWRk
YjRkNTBhNDY0ZmRkNWMzZmJhNTNiNGM3MjA0YjAyZDdlYzkzLi4wNWIxZmI1ZWEzNTMyMThlMTA4
NmQ1NTU0ZDA4YTJlZDJiNzk0YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgbWluaW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsgCisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRl
clRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OyAKICAgICAKICAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0xlZnQoUmVuZGVy
U3R5bGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0
KFJlbmRlclN0eWxlKikgY29uc3Q7CkBAIC05MiwzOCArOTIsMzggQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0
eWxlKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgV2ViQ29yZTo6RWxlbWVudCopIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqLCBXZWJDb3JlOjpFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50QnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAg
dmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJl
YShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJl
YVN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RT
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxp
c3RCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVh
bCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29y
YXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVj
b3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKICAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDYXBzTG9ja0lu
ZGljYXRvcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNpemVGcm9tRm9udChS
ZW5kZXJTdHlsZSosIGNvbnN0IEludFNpemUqIHNpemVzKSBjb25zdDsKICAgICBJbnRTaXplIHNp
emVGb3JGb250KFJlbmRlclN0eWxlKiwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGNvbnN0OwogICAg
IEludFNpemUgc2l6ZUZvclN5c3RlbUZvbnQoUmVuZGVyU3R5bGUqLCBjb25zdCBJbnRTaXplKiBz
aXplcykgY29uc3Q7Ci0gICAgdm9pZCBzZXRGb250RnJvbUNvbnRyb2xTaXplKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSosIE5TQ29udHJvbFNpemUpIGNvbnN0OworICAgIHZvaWQgc2V0
Rm9udEZyb21Db250cm9sU2l6ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBOU0NvbnRy
b2xTaXplKSBjb25zdDsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGFkanVzdGluZyBhcHBlYXJhbmNl
IGFuZCBmb3IgcGFpbnRpbmcKICAgICBjb25zdCBJbnRTaXplKiBjaGVja2JveFNpemVzKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCBl
ZDM0ZWU3NzJhNGM5MWEyMjY5YTM1ZGY5MzgyYThiZDc4NmJjNjE2Li4wNGQ1NGIyOTQ3ZDNjZWU1
YTk0YmZiMjVhNjY2ZTQ3YTRhMTJhOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTY4Nyw3ICs2ODcsNyBAQCBib29sIFJlbmRlclRoZW1lV2lu
OjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3Qg
SW50UgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0
SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVz
dElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgaW50IHdpZHRoID0gOjpHZXRTeXN0
ZW1NZXRyaWNzKFNNX0NYVlNDUk9MTCk7CiAgICAgaWYgKHdpZHRoIDw9IDApCkBAIC03NTQsMTMg
Kzc1NCwxMyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbgogICAgIHJldHVybiBwYWludE1lbnVM
aXN0QnV0dG9uKG8sIGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51
TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlzdFN0
eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGUpIGNvbnN0CiB7CiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CiAgICAgYWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogfQogCi12b2lkIFJlbmRlclRoZW1l
V2luOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
V2luOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gVGhlc2UgYXJl
IHRoZSBwYWRkaW5ncyBuZWVkZWQgdG8gcGxhY2UgdGhlIHRleHQgY29ycmVjdGx5IGluIHRoZSA8
c2VsZWN0PiBib3gKICAgICBjb25zdCBpbnQgZHJvcERvd25Cb3hQYWRkaW5nVG9wICAgID0gMjsK
QEAgLTg2Miw3ICs4NjIsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxk
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdAogICAgIHJldHVybiBw
YWludFRleHRGaWVsZChvLCBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0
U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2Vh
cmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIE92ZXJyaWRlIHBhZGRpbmdTaXplIHRvIG1h
dGNoIEFwcEtpdCB0ZXh0IHBvc2l0aW9uaW5nLgogICAgIGNvbnN0IGludCBwYWRkaW5nID0gMTsK
QEAgLTg5OSw3ICs4OTksNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNoRmll
bGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIFNjYWxlIHRoZSBidXR0b24gc2l6
ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplCiAgICAgZmxvYXQgZm9udFNjYWxlID0gc3R5bGUtPmZv
bnRTaXplKCkgLyBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemU7CkBAIC05MDgsMTQgKzkwOCwx
NCBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdAogICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3Ro
KGNhbmNlbEJ1dHRvblNpemUsIEZpeGVkKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW46OmFk
anVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
V2luOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIEludFNp
emUgZW1wdHlTaXplKDEsIDExKTsKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKGVtcHR5U2l6
ZS53aWR0aCgpLCBGaXhlZCkpOwogICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGVtcHR5U2l6
ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
V2luOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAg
ICAvLyBTY2FsZSB0aGUgZGVjb3JhdGlvbiBzaXplIGJhc2VkIG9uIHRoZSBmb250IHNpemUKICAg
ICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS0+Zm9udFNpemUoKSAvIGRlZmF1bHRDb250cm9sRm9u
dFBpeGVsU2l6ZTsKQEAgLTk0OCw3ICs5NDgsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWlu
dFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW46OmFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gU2NhbGUg
dGhlIGJ1dHRvbiBzaXplIGJhc2VkIG9uIHRoZSBmb250IHNpemUKICAgICBmbG9hdCBmb250U2Nh
bGUgPSBzdHlsZS0+Zm9udFNpemUoKSAvIGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKaW5kZXggMDFhM2FkOGUwODli
NDI5MzhiNWNlNWE4YWU5YzM0ODk3ZTRmOGM0OC4uZDIzMzdjMzYxZjQzY2M3NDQyZDk4MWZjNTQ0
ZGI1YWU5OGFhYzc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHBhaW50QnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmly
dHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKQEAgLTg1LDkgKzg1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBj
b25zdCBJbnRSZWN0JiByKQogICAgIHsgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIApA
QCAtOTcsMjYgKzk3LDI2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBwb3B1cE9wdGlv
blN1cHBvcnRzVGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
ZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGREZWNvcmF0
aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KikgY29uc3Qge30KLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZp
ZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCop
IGNvbnN0IHt9Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVT
ZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0IHt9CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZp
ZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNv
bnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdCB7IH0KIAogICAgIHN0YXRp
YyB2b2lkIHNldFdlYktpdElzQmVpbmdVbmxvYWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAKaW5kZXggNGE3YmIyNTQ2NjI3OTk1OGY5OThl
YzdkNTdlYzBiY2I4YzY1MTAwYy4uNTY5MGQ1ZjdmOTdlYjA2Y2U4MzU1ZDhiNjYwMjgyNTg0ZDY0
MGQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
Q0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNw
cApAQCAtMjM1LDcgKzIzNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW5DRTo6cGFpbnRUZXh0Rmll
bGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdE1lbnVMaXN0U3R5bGUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAogewogICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOwogICAgIGFkanVzdE1lbnVMaXN0QnV0dG9u
U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFJlbmRl
clRoZW1lV2luQ0U6OmFkanVzdEJ1dHRvbklubmVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKSBj
b25zdAogICAgIHN0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgoMywgRml4ZWQpKTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAg
ICAvLyBPdmVycmlkZSBwYWRkaW5nIHNpemUgdG8gbWF0Y2ggQXBwS2l0IHRleHQgcG9zaXRpb25p
bmcuCiAgICAgY29uc3QgaW50IHBhZGRpbmcgPSAxOwpAQCAtMzkyLDIxICszOTIsMjEgQEAgYm9v
bCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUp
IGNvbnN0CiB7CiAgICAgSW50U2l6ZSBjYW5jZWxTaXplKDEzLCAxMSk7CiAgICAgc3R5bGUtPnNl
dFdpZHRoKExlbmd0aChjYW5jZWxTaXplLndpZHRoKCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNl
dEhlaWdodChMZW5ndGgoY2FuY2VsU2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBS
ZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHls
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
KSBjb25zdAogewogICAgIEludFNpemUgZW1wdHlTaXplKDEsIDExKTsKICAgICBzdHlsZS0+c2V0
V2lkdGgoTGVuZ3RoKGVtcHR5U2l6ZS53aWR0aCgpLCBGaXhlZCkpOwogICAgIHN0eWxlLT5zZXRI
ZWlnaHQoTGVuZ3RoKGVtcHR5U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkg
Y29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVj
b3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBtYWduaWZpZXJTaXplKDE1LCAxMSk7
CiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChtYWduaWZpZXJTaXplLndpZHRoKCksIEZpeGVk
KSk7CkBAIC00MTksNyArNDE5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIEludFNpemUgbWFnbmlm
aWVyU2l6ZSgxNSwgMTEpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgobWFnbmlmaWVyU2l6
ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVX
aW5DRTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFk
anVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIFRoZXNlIGFyZSB0aGUg
cGFkZGluZ3MgbmVlZGVkIHRvIHBsYWNlIHRoZSB0ZXh0IGNvcnJlY3RseSBpbiB0aGUgPHNlbGVj
dD4gYm94CiAgICAgY29uc3QgaW50IGRyb3BEb3duQm94UGFkZGluZ1RvcCAgICA9IDI7CkBAIC01
MjksNyArNTI5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNsaWRlclRodW1iKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb24KICAgICByZXR1cm4gcmM7CiB9
CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7
CiAgICAgY29uc3QgaW50IHBhZGRpbmcgPSAxOwogICAgIHN0eWxlLT5zZXRQYWRkaW5nTGVmdChM
ZW5ndGgocGFkZGluZywgRml4ZWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbkNFLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW5DRS5oCmluZGV4IGE3ZGY0ODk2N2ZhZWM2M2ZlOTgyYjcwYWJiNzA5YTk4ZmZhYWMz
ZmMuLmRlZTIzN2VhZjJlYjJkZDQ5YWE0MzljZjViOGQ4ZWI1MjhlMTQ4ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuaApAQCAtODEsOSArODEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogICAg
ICAgICB7IHJldHVybiBwYWludFRleHRGaWVsZChvLCBpLCByKTsgfQogCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51
TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAKQEAgLTkzLDI2ICs5MywyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dmlydHVhbCBib29sIHBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2Vh
cmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29y
YXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB0aGVtZUNoYW5nZWQoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
IHt9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3Qge30KLSAgICAgICAg
dmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0IHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVt
ZW50KikgY29uc3QgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdCB7IH0KIAogICAgICAgICBzdGF0
aWMgdm9pZCBzZXRXZWJLaXRJc0JlaW5nVW5sb2FkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzgzN2E3MDMyNzcwZDhiN2Zh
ODM1MjNiOWU2NDViY2NkZTdkNjMyMy4uNWQ3MWI5NjcxMjAxZWFjMzQ1YzEzYTI5ZGZmZDgwYjIw
MmUzNGJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShj
b25zdCBSZW5kZXJTdHlsZSYgbykgY29uc3QKIAogYm9vbCBSZW5kZXJTdHlsZTo6aXNTdHlsZUF2
YWlsYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXMgIT0gQ1NTU3R5bGVTZWxlY3Rvcjo6
c3R5bGVOb3RZZXRBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gdGhpcyAhPSBTdHlsZVJlc29sdmVy
OjpzdHlsZU5vdFlldEF2YWlsYWJsZSgpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBwc2V1ZG9C
aXQoUHNldWRvSWQgcHNldWRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAppbmRleCBjYjhiZGI0Y2E0MTI5ZGIyODIxODQ1NjkxZDk4NDg2NzdjZWRiMTg5
Li5lZTZlNDM1ZmEzY2Y2NTdhOWE4M2U2NWYzNjNkODAzZDE0OTQzZDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTA1LDEzICsxMDUsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgc3RkOjptYXg7CiAKIGNsYXNzIEJvcmRlckRh
dGE7Ci1jbGFzcyBDU1NTdHlsZVNlbGVjdG9yOwogY2xhc3MgQ291bnRlckNvbnRlbnQ7CiBjbGFz
cyBDdXJzb3JMaXN0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBhaXI7CiBjbGFzcyBTaGFkb3dE
YXRhOwogY2xhc3MgU3R5bGVJbWFnZTsKK2NsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKIAogY2xhc3MgQ29udGVudERhdGE7CkBAIC0xMjIsMTIgKzEyMiwx
MiBAQCBjbGFzcyBSZW5kZXJTdHlsZTogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyU3R5bGU+IHsK
ICAgICBmcmllbmQgY2xhc3MgQW5pbWF0aW9uQmFzZTsgLy8gVXNlZCBieSBDU1MgYW5pbWF0aW9u
cy4gV2UgY2FuJ3QgYWxsb3cgdGhlbSB0byBhbmltYXRlIGJhc2VkIG9mZiB2aXNpdGVkIGNvbG9y
cy4KICAgICBmcmllbmQgY2xhc3MgQXBwbHlTdHlsZUNvbW1hbmQ7IC8vIEVkaXRpbmcgaGFzIHRv
IG9ubHkgcmV2ZWFsIHVudmlzaXRlZCBpbmZvLgogICAgIGZyaWVuZCBjbGFzcyBFZGl0aW5nU3R5
bGU7IC8vIEVkaXRpbmcgaGFzIHRvIG9ubHkgcmV2ZWFsIHVudmlzaXRlZCBpbmZvLgotICAgIGZy
aWVuZCBjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCiAg
ICAgZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsgLy8gSWdub3JlcyB2
aXNpdGVkIHN0eWxlcywgc28gbmVlZHMgdG8gYmUgYWJsZSB0byBzZWUgdW52aXNpdGVkIGluZm8u
CiAgICAgZnJpZW5kIGNsYXNzIFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yOyAvLyBV
c2VkIGJ5IENTUyBhbmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFz
ZWQgb2ZmIHZpc2l0ZWQgY29sb3JzLgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJTVkdSZXNvdXJj
ZTsgLy8gRklYTUU6IE5lZWRzIHRvIGFsdGVyIHRoZSB2aXNpdGVkIHN0YXRlIGJ5IGhhbmQuIFNo
b3VsZCBjbGVhbiB0aGUgU1ZHIGNvZGUgdXAgYW5kIG1vdmUgaXQgaW50byBSZW5kZXJTdHlsZSBw
ZXJoYXBzLgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJUcmVlQXNUZXh0OyAvLyBGSVhNRTogT25s
eSBuZWVkZWQgc28gdGhlIHJlbmRlciB0cmVlIGNhbiBrZWVwIGx5aW5nIGFuZCBkdW1wIHRoZSB3
cm9uZyBjb2xvcnMuICBSZWJhc2VsaW5pbmcgd291bGQgYWxsb3cgdGhpcyB0byBiZSB5YW5rZWQu
CiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5
LgorICAgIGZyaWVuZCBjbGFzcyBTdHlsZVJlc29sdmVyOzsgLy8gU2V0cyBtZW1iZXJzIGRpcmVj
dGx5LgogcHJvdGVjdGVkOgogCiAgICAgY2xhc3MgUmVuZGVyU3R5bGVCaXRmaWVsZHMgewpAQCAt
MjE5LDcgKzIxOSw3IEBAIHByb3RlY3RlZDoKICAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBt
X3N2Z1N0eWxlOwogI2VuZGlmCiAKLS8vICFTVEFSVCBTWU5DITogS2VlcCB0aGlzIGluIHN5bmMg
d2l0aCB0aGUgY29weSBjb25zdHJ1Y3RvciBpbiBSZW5kZXJTdHlsZS5jcHAgYW5kIGltcGxpY2l0
bHlJbmhlcml0ZWQoKSBpbiBDU1NTdHlsZVNlbGVjdG9yLmNwcAorLy8gIVNUQVJUIFNZTkMhOiBL
ZWVwIHRoaXMgaW4gc3luYyB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yIGluIFJlbmRlclN0eWxl
LmNwcCBhbmQgaW1wbGljaXRseUluaGVyaXRlZCgpIGluIFN0eWxlUmVzb2x2ZXIuY3BwCiAKICAg
ICAvLyBpbmhlcml0CiAgICAgc3RydWN0IEluaGVyaXRlZEZsYWdzIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oCmluZGV4IGU5NWM1NWI2MDY4YjUxYmYzOGY2Mzg1NDdjODU4M2ZkYWJjZDY4NDUuLmFlNzJi
ZDYwYWFiMThiZWM0OGExNmUyNjVhODQ0ODEwM2FkZDI0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aApAQCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRp
b25MaXN0OwotY2xhc3MgQ1NTU3R5bGVTZWxlY3RvcjsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFz
cyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE7CiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQpAQCAtNTMsNiArNTIsNyBAQCBjbGFzcyBTdHlsZUdyaWRJdGVtRGF0YTsKIGNsYXNzIFN0eWxl
TWFycXVlZURhdGE7CiBjbGFzcyBTdHlsZU11bHRpQ29sRGF0YTsKIGNsYXNzIFN0eWxlUmVmbGVj
dGlvbjsKK2NsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVRyYW5zZm9ybURhdGE7CiAK
IGNsYXNzIENvbnRlbnREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggMDI5MGJhOGI1ZWI2NzE1N2JjZjg2Mjdh
ZmE2N2M5NDllOTJmMmJhOS4uOWE3YjIzYjJjYjkzNzVmNWMzYzA2Zjk3ZTRhYTllNDgxMzc2ZTY5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZVRleHQuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0
Ojpjb21wdXRlTmV3U2NhbGVkRm9udEZvclN0eWxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGMK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSByZW5kZXJlci0+ZG9jdW1lbnQoKTsKICAgICBBU1NF
UlQoZG9jdW1lbnQpOwogICAgIAotICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3Ig
PSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpOworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2Vs
ZWN0b3IgPSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpOwogICAgIEFTU0VSVChzdHlsZVNlbGVj
dG9yKTsKIAogICAgIC8vIEFsdGVyIGZvbnQtc2l6ZSB0byB0aGUgcmlnaHQgb24tc2NyZWVuIHZh
bHVlIHRvIGF2b2lkIHNjYWxpbmcgdGhlIGdseXBocyB0aGVtc2VsdmVzLCBleGNlcHQgd2hlbiBH
ZW9tZXRyaWNQcmVjaXNpb24gaXMgc3BlY2lmaWVkCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBS
ZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlTmV3U2NhbGVkRm9udEZvclN0eWxlKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGMKICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uKHN0
eWxlLT5mb250RGVzY3JpcHRpb24oKSk7CiAKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBiZXR0
ZXIgaGFuZGxlIHRoZSBjYXNlIHdoZW4gd2UgY29tcHV0ZSB2ZXJ5IHNtYWxsIGZvbnRzIGJlbG93
IChiZWxvdyAxcHQpLgotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoQ1NTU3R5
bGVTZWxlY3Rvcjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoZG9jdW1lbnQsIHNj
YWxpbmdGYWN0b3IsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBmb250RGVzY3Jp
cHRpb24uY29tcHV0ZWRTaXplKCksIERvTm90VXNlU21hcnRNaW5pbXVtRm9yRm9udFNpemUpKTsK
KyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxlUmVzb2x2ZXI6OmdldENv
bXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKGRvY3VtZW50LCBzY2FsaW5nRmFjdG9yLCBmb250
RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6
ZSgpLCBEb05vdFVzZVNtYXJ0TWluaW11bUZvckZvbnRTaXplKSk7CiAKICAgICBzY2FsZWRGb250
ID0gRm9udChmb250RGVzY3JpcHRpb24sIDAsIDApOwogICAgIHNjYWxlZEZvbnQudXBkYXRlKHN0
eWxlU2VsZWN0b3ItPmZvbnRTZWxlY3RvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IGNjMDc5NmMyYjVjZmM5YjVhNTcw
ZDA0NzdmOTkzMTNkZDU5Y2M0M2MuLmY5NGVlODQwNGViZDhmOWM4ZWRlMGI0MGU5Y2E1NTQ3YWZi
NTI2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJT
dXBwb3J0LmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIGJvb2wgU1ZHUmVuZGVyU3VwcG9ydDo6aXNP
dmVyZmxvd0hpZGRlbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKICAgICAvLyBTVkcgZG9l
c24ndCBzdXBwb3J0IGluZGVwZW5kZW50IHgveSBvdmVyZmxvdwogICAgIEFTU0VSVChvYmplY3Qt
PnN0eWxlKCktPm92ZXJmbG93WCgpID09IG9iamVjdC0+c3R5bGUoKS0+b3ZlcmZsb3dZKCkpOwog
Ci0gICAgLy8gT1NDUk9MTCBpcyBuZXZlciBzZXQgZm9yIFNWRyAtIHNlZSBDU1NTdHlsZVNlbGVj
dG9yOjphZGp1c3RSZW5kZXJTdHlsZQorICAgIC8vIE9TQ1JPTEwgaXMgbmV2ZXIgc2V0IGZvciBT
VkcgLSBzZWUgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUKICAgICBBU1NFUlQob2Jq
ZWN0LT5zdHlsZSgpLT5vdmVyZmxvd1goKSAhPSBPU0NST0xMKTsKIAogICAgIC8vIFJlbmRlclNW
R1Jvb3Qgc2hvdWxkIG5ldmVyIHF1ZXJ5IGZvciBvdmVyZmxvdyBzdGF0ZSAtIGl0IHNob3VsZCBh
bHdheXMgY2xpcCBpdHNlbGYgdG8gdGhlIGluaXRpYWwgdmlld3BvcnQgc2l6ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAK
aW5kZXggYjRiZDhmYjE1NTQ3ZjQzYzkwYzYwOTQyYmZjOTJhODRlY2UzMjJjMS4uZjI0ZmY0YzAx
YzVjYzVlMDUyMjU4ZGM2Y2FhMzE5MDk5YWViNTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAKQEAgLTI4OSw3ICsy
ODksNyBAQCB2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjpjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShS
ZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUpIGNvbnN0CiAKIAogCi12b2lkIFJlbmRlclRoZW1lUVN0
eWxlOjphZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFk
anVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIERpdGNoIHRoZSBib3JkZXIuCiAgICAgc3R5
bGUtPnJlc2V0Qm9yZGVyKCk7CkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVFT
dHlsZTo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGks
IGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFk
anVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6
OmFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBhZGp1c3RUZXh0RmllbGRT
dHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIGksIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRl
clRoZW1lUVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lUVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAg
Ly8gV09SS0FST1VORCBiZWNhdXNlIGh0bWwuY3NzIHNwZWNpZmllcyAtd2Via2l0LWJvcmRlci1y
YWRpdXMgZm9yIDxzZWxlY3Q+IHNvIHdlIG92ZXJyaWRlIGl0IGhlcmUKICAgICAvLyBzZWUgYWxz
byBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5OQpAQCAtNTk0LDcg
KzU5NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBpLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVRU3R5bGU6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgc3R5bGUtPnNldEJveFNoYWRv
dyhudWxscHRyKTsKIH0KQEAgLTYyNyw3ICs2MjcsNyBAQCBib29sIFJlbmRlclRoZW1lUVN0eWxl
OjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdFNs
aWRlclRodW1iU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFk
anVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBSZW5kZXJUaGVtZTo6YWRq
dXN0U2xpZGVyVGh1bWJTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwogICAgIHN0eWxl
LT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CkBAIC02MzksNyArNjM5LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGksCiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIHBpLCByKTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKK3ZvaWQgUmVuZGVy
VGhlbWVRU3R5bGU6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIFJlbmRlclRoZW1lUVN0
eWxlOjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SQogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24o
bywgcGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTZWFyY2hGaWVs
ZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5
bGUqIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVt
ZVFTdHlsZS5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFT
dHlsZS5oCmluZGV4IGE4M2UwMmY1YTM4Y2ExNjA5MTI0ZjEyMzJhNjI2YTRmN2Y5MjU2NDMuLjAy
M2E3YzcyMWI1ZDcwNzQyYjgxZjEyNDcwMDgxOGQ1ZTA2MGUzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmgKQEAgLTUxLDE4
ICs1MSwxOCBAQCBwdWJsaWM6CiAgICAgUVN0eWxlKiBxU3R5bGUoKSBjb25zdDsKIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZp
ZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFT
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxp
c3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51
TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICNpZiBFTkFCTEUo
UFJPR1JFU1NfVEFHKQogICAgIC8vIFJldHVybnMgdGhlIGR1cmF0aW9uIG9mIHRoZSBhbmltYXRp
b24gZm9yIHRoZSBwcm9ncmVzcyBiYXIuCkBAIC03MSwxNyArNzEsMTcgQEAgcHJvdGVjdGVkOgog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFk
anVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNo
RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJj
aEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVj
b3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogI2lmbmRlZiBRVF9O
T19TUElOQk9YCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138623</attachid>
            <date>2012-04-24 12:41:46 -0700</date>
            <delta_ts>2012-04-24 12:49:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-84734-20120424164129.patch</filename>
            <type>text/plain</type>
            <size>299315</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVmNjQzZDdhMWRhMDJm
MDE4NjliYzFiNDY2YzkzMzdlN2MzYWQ3OC4uZTE5Nzg3NDExZmRkODZkODhlZGIwMmM1M2Y2ZDRi
YzkxN2E4NWI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwOSBAQAorMjAxMi0wNC0yNCAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5h
bWUgQ1NTU3R5bGVTZWxlY3RvciBjbGFzcyB0byBTdHlsZVJlc29sdmVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3MzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFRoZSBuYW1lIENTU1N0eWxlU2VsZWN0
b3IgaXMgY29uZnVzaW5nIGFzIGl0IGNvbmZsaWN0cyBhIGJpdCB3aXRoCisgICAgICAgIHRoZSBD
U1MgY29uY2VwdCBvZiBzZWxlY3RvcnMuIE9uZSBjb3VsZCB0aGluayBpdCdzIGFuIGVuY2Fwc3Vs
YXRpb24KKyAgICAgICAgb2YgdGhlIENTUyBzZWxlY3RvcnMgYnV0IGl0J3Mgbm90LCBpbiBmYWN0
IHRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUKKyAgICAgICAgb2YgZmluZGluZyB0aGUgUmVuZGVy
U3R5bGUgZm9yIGEgZ2l2ZW4gZWxlbWVudC4gVGhpcyBpcyB0aGUgZmlyc3QgcGF0Y2gKKyAgICAg
ICAgYXMgSSB3aWxsIGxhdGVyIHJlbmFtZSB0aGUgZmlsZXMsIGFuZCB0aGVuIHJlbmFtZSB0aGUg
bG9jYWwgdmFyaWFibGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IHJlbmFtaW5nLCBubyBi
ZWhhdmlvciBjaGFuZ2VzIHNob3VsZCBhcHBlYXIuCisKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJpbWl0aXZlVmFsdWU6
OnRvQ2FsY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxsYmFj
a3MpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6
ZmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmFkZEF1dGhvclJ1bGVzQW5kQ29sbGVjdFVzZXJSdWxlc0Zyb21TaGVldHMpOgorICAgICAgICAo
V2ViQ29yZTo6bWFrZVJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmRldGVy
bWluZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJ1bGVTZXRGb3JT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHls
ZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzZXR1cFNjb3BlU3Rh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHVzaFNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBvcFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OnB1c2hQYXJlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OnBvcFBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6cHVzaFBhcmVudFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6cG9wUGFyZW50U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6On5TdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN3
ZWVwTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpGZWF0dXJlczo6RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6RmVhdHVyZXM6On5GZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpGZWF0dXJlczo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkZlYXR1
cmVzOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRNYXRjaGVk
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRFbGVtZW50
U3R5bGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6bWF0Y2hVQVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aDoKKyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoRmVhdHVyZXMpOgorICAgICAg
ICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UXVlcnlFdmFsdWF0b3I6OmV2YWwpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lZGlhUXVlcnlFdmFsdWF0b3IpOgor
ICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5TWF0Y2hlcjo6cHJlcGFyZUV2YWx1YXRvcik6CisgICAgICAgICogY3NzL1NWR0NT
U1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBw
bHlTVkdQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaXRpYWxWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTo6YXBwbHlJbmhl
cml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlOjph
cHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGVmYXVs
dEJhc2U6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURlZmF1
bHQ6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU51bWJlcjo6
YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U3R5bGVJbWFnZTo6
YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXV0bzo6YXBwbHlJ
bmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5
SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBdXRvOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwOjpjb252ZXJ0VG9M
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5SW5oZXJp
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwOjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q2xpcDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29sb3I6OmFwcGx5SW5oZXJpdFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb2xvcjo6YXBwbHlJbml0aWFs
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbG9yOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb2xvcjo6YXBwbHlDb2xvclZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXJlY3Rpb246OmFwcGx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUxlbmd0aDo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U3RyaW5nOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlJbmhlcml0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlJbml0aWFs
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDo6YXBw
bHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udDo6YXBwbHlJbmhl
cml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnQ6OmFwcGx5SW5p
dGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250OjphcHBseVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6ZTo6YXBwbHlJbmhl
cml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjphcHBs
eUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6
OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRXZWlnaHQ6
OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRWYXJpYW50
TGlnYXR1cmVzOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlczo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2U6OmFwcGx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFw
cGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJ
bWFnZU1vZGlmaWVyOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2U6OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmVtcHR5RnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5SW5pdGlhbFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHRBbGlnbjo6YXBwbHlWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dERlY29yYXRpb246OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVVuaWNvZGVCaWRpOjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6YXBwbHlJbmhlcml0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6OmFwcGx5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHRFbXBoYXNpc1N0eWxl
OjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4
dEVtcGhhc2lzU3R5bGU6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHlsZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246Om1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphcHBseUluaGVyaXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlPdXRsaW5lU3R5bGU6OmFw
cGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlPdXRsaW5l
U3R5bGU6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlPdXRsaW5lU3R5bGU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9w
ZXJ0eVJlc2l6ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5
VmVydGljYWxBbGlnbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5QXNwZWN0UmF0aW86OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjpyZXNldEVmZmVjdGl2ZVpvb20pOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5RGlzcGxheTo6aXNWYWxpZERpc3BsYXlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGlzcGxheTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmFwcGx5SW5pdGlhbFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGbGV4OjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmxleDo6YXBwbHlJbml0aWFsVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZsZXg6OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyOjpTdHlsZUJ1aWxkZXIpOgorICAgICAgICAqIGNzcy9T
dHlsZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJvcGVydHlIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5SGFuZGxlcjo6YXBwbHlJbmhlcml0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlIYW5kbGVyOjphcHBseUluaXRpYWxWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eUhhbmRsZXI6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAqIGNzcy9TdHlsZU1lZGlhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTWVkaWE6
Om1hdGNoTWVkaXVtKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjpzZXROYW1lKToKKyAg
ICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dENTU01hdHJpeDo6c2V0TWF0cml4VmFsdWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVN0eWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnRlc3RBZGRlZFN0eWxlc2hlZXRSZXF1aXJlc1N0eWxlUmVjYWxjKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN0eWxlU2VsZWN0b3JJZkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c3R5bGVTZWxlY3Rvcik6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoU3R5bGVTZWxlY3RvclBhcmVudFB1c2hlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmJlZ2luUGFyc2luZ0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgICogZG9tL1NoYWRvd1Jv
b3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YXR0YWNoKToKKyAgICAgICAg
KiBkb20vU2hhZG93VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpyZWNh
bGNTaGFkb3dUcmVlU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJ
bkVsZW1lbnREZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6bGVnYWN5Rm9udFNpemVG
cm9tQ1NTVmFsdWUpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdl
ZCk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFBhZ2U6OnJlc3RvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnN0eWxlU2VsZWN0b3Ip
OgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxDYW52
YXNFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpnZXRNYXRj
aGVkQ1NTUnVsZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjphbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnZpc2l0ZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6
dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjphZGp1c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OmFkanVzdFRleHRBcmVhU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjphZGp1c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RDaGVja2JveFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0UmFkaW9TdHlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKFJl
bmRlclRoZW1lQmxhY2tCZXJyeSk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1l
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJU
cmFja1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlk
ZXJUaHVtYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RD
aGVja2JveFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RS
YWRpb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RCdXR0
b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxp
c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0
VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVz
dFRleHRBcmVhU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVz
dFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlv
blN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZs
OjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
RWZsOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVu
ZGVyVGhlbWVFZmwuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVHdGs6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3Jh
dGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lR3RrOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lR3RrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHBsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6YWRqdXN0VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6YWRqdXN0VGV4dEFyZWFTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0
OjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6
OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVRdDo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZVF0OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lUXQ6OmFkanVzdFNsaWRlclRodW1iU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0
OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVu
ZGVyVGhlbWVRdC5oOgorICAgICAgICAoUmVuZGVyVGhlbWVRdCk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZVF0TW9iaWxlOjphZGp1c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVF0TW9iaWxlOjphZGp1c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVF0TW9iaWxlOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmg6CisgICAgICAgIChSZW5kZXJUaGVtZVF0
TW9iaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcDoKKyAgICAg
ICAgKFJlbmRlclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6YWRq
dXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6YWRqdXN0
VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6YWRqdXN0
TWVudUxpc3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVd4OjphZGp1c3RN
ZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVl
Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5wdXRTcGVlY2g6OmFkanVzdElucHV0
RmllbGRTcGVlY2hCdXR0b25TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklucHV0
U3BlZWNoLmg6CisgICAgICAgIChSZW5kZXJJbnB1dFNwZWVjaCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1
c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0Q2hlY2tib3hT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0UmFkaW9TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RUZXh0RmllbGRTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0VGV4dEFyZWFTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0TWVudUxpc3RTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RNZXRlclN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hG
aWVsZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChSZW5kZXJUaGVtZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjphZGp1c3RJbm5lclNwaW5C
dXR0b25TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmg6CisgICAgICAgIChSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Lmg6CisgICAgICAg
IChSZW5kZXJUaGVtZUNocm9taXVtTGludXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9t
aXVtU2tpYTo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVDaHJvbWl1bVNraWE6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVz
dFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaDoKKyAgICAgICAgKFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQ2hyb21pdW1XaW46OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmFkanVzdFByb2dyZXNzQmFyU3R5bGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAg
IChSZW5kZXJUaGVtZUNocm9taXVtV2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lTWFjKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6c2V0
Rm9udEZyb21Db250cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
YWRqdXN0VGV4dEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmFkanVzdFRleHRBcmVhU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmFkanVzdFByb2dyZXNzQmFyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OmFkanVzdFNsaWRlclRodW1iU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnNldEZvbnRGcm9tQ29udHJvbFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0VGV4dEFyZWFTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2xpZGVyVGh1
bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2Vh
cmNoRmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRq
dXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5oOgorICAgICAgICAoUmVuZGVyVGhlbWVTYWZhcmkpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpbjo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZp
ZWxkRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjph
ZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaDoKKyAgICAgICAgKFJlbmRlclRo
ZW1lV2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RCdXR0b25T
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6YWRqdXN0VGV4dEZpZWxk
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmFkanVzdFRleHRBcmVh
U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luQ0U6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luQ0U6OmFk
anVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1
c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW5DRS5oOgorICAgICAgICAoUmVuZGVyVGhlbWVXaW5DRSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RUZXh0QXJlYVN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmlzU3R5bGVBdmFpbGFibGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlTmV3U2NhbGVkRm9udEZvclN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbik6CisKIDIwMTItMDQtMjQg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogYSBidW5jaCBvZiBoZWFwIHByb2ZpbGVyIGNsZWFudXBzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IDVmYzMzOGZhYzUxOTllZGQxYmNkZWU3NzBkMWFmYzliNGU1YTMyMjcuLjZjMjMwMTIyMmJi
YmNlMzQ3M2IzZGMyYTNkMmYyYjVkY2JhYTBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgUmVuYW1lIENTU1N0eWxlU2VsZWN0b3IgY2xhc3MgdG8gU3R5bGVS
ZXNvbHZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0NzM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBU
aGUgbmFtZSBDU1NTdHlsZVNlbGVjdG9yIGlzIGNvbmZ1c2luZyBhcyBpdCBjb25mbGljdHMgYSBi
aXQgd2l0aAorICAgICAgICB0aGUgQ1NTIGNvbmNlcHQgb2Ygc2VsZWN0b3JzLiBPbmUgY291bGQg
dGhpbmsgaXQncyBhbiBlbmNhcHN1bGF0aW9uCisgICAgICAgIG9mIHRoZSBDU1Mgc2VsZWN0b3Jz
IGJ1dCBpdCdzIG5vdCwgaW4gZmFjdCB0aGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlCisgICAgICAg
IG9mIGZpbmRpbmcgdGhlIFJlbmRlclN0eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQuIFRoaXMgaXMg
dGhlIGZpcnN0IHBhdGNoCisgICAgICAgIGFzIEkgd2lsbCBsYXRlciByZW5hbWUgdGhlIGZpbGVz
LCBhbmQgdGhlbiByZW5hbWUgdGhlIGxvY2FsIHZhcmlhYmxlcy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lUVN0eWxlOjphZGp1c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVFTdHlsZTo6YWRqdXN0VGV4dEFyZWFTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGRE
ZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lUVN0eWxl
KToKKwogMjAxMi0wNC0yNCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBNb3ZlIG5vdGlmaWNhdGlvbiBpY29uIGRvd25sb2FkIG91dCBvZiBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNzgy
OGM2NTQyZDNjODIxZjMwYTVmMzhlOTVmZTVkZWUyZGE4Y2VkMC4uNDIzODAwODk5NThkZGZjNTUx
YWU5MTU1NmVmMTc4MWVjODg2MmMzYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1iZXIobV92YWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RTdHlsZSwgem9vbSkpKTsKICAgICAgICAgY2FzZSBDYWxj
UGVyY2VudDoKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudExlbmd0aDoKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25MZW5ndGgoQ1NTU3R5bGVTZWxlY3Rvcjo6
Y29udmVydFRvRmxvYXRMZW5ndGgobV92YWx1ZS5nZXQoKSwgc3R5bGUsIHJvb3RTdHlsZSwgem9v
bSkpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25MZW5n
dGgoU3R5bGVSZXNvbHZlcjo6Y29udmVydFRvRmxvYXRMZW5ndGgobV92YWx1ZS5nZXQoKSwgc3R5
bGUsIHJvb3RTdHlsZSwgem9vbSkpKTsKICAgICAgICAgLy8gT25seSB0eXBlcyB0aGF0IGNvdWxk
IGJlIHBhcnQgb2YgYSBMZW5ndGggZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVkCiAgICAgICAg
IC8vIHRvIGEgQ2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxjUGVyY2VudE51bWJlciBtYWtlcyBubyBz
ZW5zZSBhcyBhIExlbmd0aC4KICAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggNTc4YThmZTcxNTMxNmM1MDQxNzk1
OTMxZTE1MDQzMzc1ZjFjNDQyOS4uZDhmYzhjM2RhYzVmMGNiNjYyYjhlZDE5ZTc3MGMwNTA3NzEz
YzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTMzMyw3ICsz
MzMsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxsYmFj
a3MoKQogICAgIC8vIEZJWE1FOiBNYWtlIERvY3VtZW50IGEgRm9udFNlbGVjdG9yQ2xpZW50IHNv
IHRoYXQgaXQgY2FuIHNpbXBseSByZWdpc3RlciBmb3IgaW52YWxpZGF0aW9uIGNhbGxiYWNrcy4K
ICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoQ1NTU3R5bGVT
ZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IG1fZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3JJZkV4aXN0
cygpKQorICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gbV9kb2N1bWVudC0+
c3R5bGVTZWxlY3RvcklmRXhpc3RzKCkpCiAgICAgICAgIHN0eWxlU2VsZWN0b3ItPmludmFsaWRh
dGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CiAgICAgaWYgKG1fZG9jdW1lbnQtPmluUGFnZUNh
Y2hlKCkgfHwgIW1fZG9jdW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZDgwYjg4MTNhYjY5YmNkM2FjNjg5YmRhNGE5MGY3MGNi
YjQ4NjdmMi4uMmNiZDYwODZiYWEwMTE3YWI0MGEyNzYzZDFjZjkxODgzMWY3MGU0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTMwMDksNyArMzAwOSw3IEBAIENTU1BhcnNlcjo6U2l6
ZVBhcmFtZXRlclR5cGUgQ1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIoQ1NTVmFsdWVMaXN0
KiBwYXJzZWRWCiAgICAgY2FzZSBDU1NWYWx1ZUxldHRlcjoKICAgICAgICAgaWYgKHByZXZQYXJh
bVR5cGUgPT0gTm9uZSB8fCBwcmV2UGFyYW1UeXBlID09IE9yaWVudGF0aW9uKSB7CiAgICAgICAg
ICAgICAvLyBOb3JtYWxpemUgdG8gUGFnZSBTaXplIHRoZW4gT3JpZW50YXRpb24gb3JkZXIgYnkg
cHJlcGVuZGluZy4KLSAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHNwZWNpZmllZCBieSB0aGUg
Q1NTMyBQYWdlZCBNZWRpYSBzcGVjaWZpY2F0aW9uLCBidXQgZm9yIHNpbXBsZXIgcHJvY2Vzc2lu
ZyBsYXRlciAoQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQYWdlU2l6ZVByb3BlcnR5KS4KKyAgICAg
ICAgICAgIC8vIFRoaXMgaXMgbm90IHNwZWNpZmllZCBieSB0aGUgQ1NTMyBQYWdlZCBNZWRpYSBz
cGVjaWZpY2F0aW9uLCBidXQgZm9yIHNpbXBsZXIgcHJvY2Vzc2luZyBsYXRlciAoU3R5bGVSZXNv
bHZlcjo6YXBwbHlQYWdlU2l6ZVByb3BlcnR5KS4KICAgICAgICAgICAgIHBhcnNlZFZhbHVlcy0+
cHJlcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWUtPmlkKSk7
CiAgICAgICAgICAgICByZXR1cm4gUGFnZVNpemU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCBkODdjOWRlZWU4ZmYxOGEyNTMwN2I1YzliYTNm
MDU1NTk2Yzc0MWRjLi4xYWUwNTFiZDI0NWNjMjk4OWYzZGY5Mjc4NGE3OTQyNzJkYmRiMjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0yMzUsNyArMjM1LDcg
QEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBPd25Q
dHI8VmVjdG9yPFJ1bGVEYXRhPiA+ID4gQXRvbVJ1bGVNYXA7CiAKLSAgICB2b2lkIGFkZFJ1bGVz
RnJvbVNoZWV0KFN0eWxlU2hlZXRJbnRlcm5hbCosIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Im
LCBDU1NTdHlsZVNlbGVjdG9yKiA9IDAsIGNvbnN0IENvbnRhaW5lck5vZGUqID0gMCk7CisgICAg
dm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0SW50ZXJuYWwqLCBjb25zdCBNZWRpYVF1
ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciogPSAwLCBjb25zdCBDb250YWluZXJOb2RlKiA9
IDApOwogCiAgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiwgYm9vbCBoYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yLCBib29sIGlzSW5S
ZWdpb25SdWxlID0gZmFsc2UpOwogICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUqLCBDU1NTZWxl
Y3RvciosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBjYW5Vc2VGYXN0Q2hl
Y2tTZWxlY3RvciwgYm9vbCBpc0luUmVnaW9uUnVsZSA9IGZhbHNlKTsKQEAgLTI0NSw3ICsyNDUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIHZvaWQgZGlzYWJsZUF1
dG9TaHJpbmtUb0ZpdCgpIHsgbV9hdXRvU2hyaW5rVG9GaXRFbmFibGVkID0gZmFsc2U7IH0KIAot
ICAgIGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6OkZlYXR1cmVzJiBmZWF0dXJlcygpIGNvbnN0IHsg
cmV0dXJuIG1fZmVhdHVyZXM7IH0KKyAgICBjb25zdCBTdHlsZVJlc29sdmVyOjpGZWF0dXJlcyYg
ZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CiAKICAgICBjb25zdCBWZWN0
b3I8UnVsZURhdGE+KiBpZFJ1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgY29uc3QgeyByZXR1
cm4gbV9pZFJ1bGVzLmdldChrZXkpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogY2xh
c3NSdWxlcyhBdG9taWNTdHJpbmdJbXBsKiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NSdWxl
cy5nZXQoa2V5KTsgfQpAQCAtMjY5LDcgKzI2OSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3R5
bGVSdWxlUGFnZSo+IG1fcGFnZVJ1bGVzOwogICAgIHVuc2lnbmVkIG1fcnVsZUNvdW50OwogICAg
IGJvb2wgbV9hdXRvU2hyaW5rVG9GaXRFbmFibGVkOwotICAgIENTU1N0eWxlU2VsZWN0b3I6OkZl
YXR1cmVzIG1fZmVhdHVyZXM7CisgICAgU3R5bGVSZXNvbHZlcjo6RmVhdHVyZXMgbV9mZWF0dXJl
czsKIAogICAgIHN0cnVjdCBSdWxlU2V0U2VsZWN0b3JQYWlyIHsKICAgICAgICAgUnVsZVNldFNl
bGVjdG9yUGFpcihDU1NTZWxlY3Rvciogc2VsZWN0b3IsIFBhc3NPd25QdHI8UnVsZVNldD4gcnVs
ZVNldCkgOiBzZWxlY3RvcihzZWxlY3RvciksIHJ1bGVTZXQocnVsZVNldCkgeyB9CkBAIC0yOTMs
NyArMjkzLDcgQEAgc3RhdGljIFN0eWxlU2hlZXRJbnRlcm5hbCogbWF0aE1MU3R5bGVTaGVldDsK
IHN0YXRpYyBTdHlsZVNoZWV0SW50ZXJuYWwqIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0Owogc3Rh
dGljIFN0eWxlU2hlZXRJbnRlcm5hbCogZnVsbHNjcmVlblN0eWxlU2hlZXQ7CiAKLVJlbmRlclN0
eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzX3N0eWxlTm90WWV0QXZhaWxhYmxlOworUmVuZGVyU3R5
bGUqIFN0eWxlUmVzb2x2ZXI6OnNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKIHN0YXRpYyB2b2lk
IGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0
eWxlKCk7CkBAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIFN0eWxlUHJvcGVydHlTZXQqIHJpZ2h0
VG9MZWZ0RGVjbGFyYXRpb24oKQogICAgIHJldHVybiByaWdodFRvTGVmdERlY2wuZ2V0KCk7CiB9
CiAKLUNTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50
LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKK1N0eWxlUmVzb2x2ZXI6OlN0eWxlUmVz
b2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykK
ICAgICA6IG1faGFzVUFBcHBlYXJhbmNlKGZhbHNlKQogICAgICwgbV9iYWNrZ3JvdW5kRGF0YShC
YWNrZ3JvdW5kRmlsbExheWVyKQogICAgICwgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlQWRkaXRp
b25zU2luY2VMYXN0U3dlZXAoMCkKQEAgLTQxOCw3ICs0MTgsNyBAQCBDU1NTdHlsZVNlbGVjdG9y
OjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1dGhvckFu
ZFVzZXJTdAogICAgIGFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKDAsIGRvY3VtZW50LT5zdHlsZVNo
ZWV0cygpLT52ZWN0b3IoKSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkQXV0aG9y
UnVsZXNBbmRDb2xsZWN0VXNlclJ1bGVzRnJvbVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0
eWxlU2hlZXRJbnRlcm5hbD4gPiogdXNlclNoZWV0cywgUnVsZVNldCYgdXNlclN0eWxlKQordm9p
ZCBTdHlsZVJlc29sdmVyOjphZGRBdXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hl
ZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldEludGVybmFsPiA+KiB1c2VyU2hlZXRz
LCBSdWxlU2V0JiB1c2VyU3R5bGUpCiB7CiAgICAgaWYgKCF1c2VyU2hlZXRzKQogICAgICAgICBy
ZXR1cm47CkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRBdXRo
b3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKGNvbnN0IFZlY3RvcjwKICAgICB9
CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3Rv
cjxDU1NTdHlsZVNlbGVjdG9yOjpSdWxlRmVhdHVyZT4mIHJ1bGVzKQorc3RhdGljIFBhc3NPd25Q
dHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFN0eWxlUmVzb2x2ZXI6OlJ1bGVG
ZWF0dXJlPiYgcnVsZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBydWxlcy5zaXplKCk7CiAgICAg
aWYgKCFzaXplKQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPFJ1bGVTZXQ+
IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxDU1NTdHlsZVNlbGVjdG9yOjpSdWxlRmVhdHVyCiAg
ICAgcmV0dXJuIHJ1bGVTZXQucmVsZWFzZSgpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmNvbGxlY3RGZWF0dXJlcygpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlcygp
CiB7CiAgICAgbV9mZWF0dXJlcy5jbGVhcigpOwogICAgIC8vIENvbGxlY3QgYWxsIGlkcyBhbmQg
cnVsZXMgdXNpbmcgc2libGluZyBzZWxlY3RvcnMgKDpmaXJzdC1jaGlsZCBhbmQgc2ltaWxhcikK
QEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RGZWF0dXJl
cygpCiB9CiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotY29uc3QgQ29udGFpbmVyTm9kZSog
Q1NTU3R5bGVTZWxlY3Rvcjo6ZGV0ZXJtaW5lU2NvcGUoY29uc3QgU3R5bGVTaGVldEludGVybmFs
KiBzaGVldCkKK2NvbnN0IENvbnRhaW5lck5vZGUqIFN0eWxlUmVzb2x2ZXI6OmRldGVybWluZVNj
b3BlKGNvbnN0IFN0eWxlU2hlZXRJbnRlcm5hbCogc2hlZXQpCiB7CiAgICAgQVNTRVJUKHNoZWV0
KTsKIApAQCAtNDg2LDcgKzQ4Niw3IEBAIGNvbnN0IENvbnRhaW5lck5vZGUqIENTU1N0eWxlU2Vs
ZWN0b3I6OmRldGVybWluZVNjb3BlKGNvbnN0IFN0eWxlU2hlZXRJbnRlcm5hbCoKICAgICByZXR1
cm4gKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpIHx8IHBhcmVudC0+aXNTaGFkb3dSb290KCkpID8g
cGFyZW50IDogMDsKIH0KIAotaW5saW5lIFJ1bGVTZXQqIENTU1N0eWxlU2VsZWN0b3I6OnJ1bGVT
ZXRGb3JTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3QKK2lubGluZSBSdWxl
U2V0KiBTdHlsZVJlc29sdmVyOjpydWxlU2V0Rm9yU2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSog
c2NvcGUpIGNvbnN0CiB7CiAgICAgaWYgKCFzY29wZS0+aGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQo
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00OTUsNyArNDk1LDcgQEAgaW5saW5lIFJ1bGVTZXQq
IENTU1N0eWxlU2VsZWN0b3I6OnJ1bGVTZXRGb3JTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSkgY28KIH0KICNlbmRpZgogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGVuZEF1dGhv
clN0eWxlc2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxl
U2hlZXQ+ID4mIHN0eWxlc2hlZXRzKQordm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JT
dHlsZXNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBzdHlsZXNoZWV0cykKIHsKICAgICAvLyBUaGlzIGhhbmRsZXMgc2hlZXRzIGFkZGVk
IHRvIHRoZSBlbmQgb2YgdGhlIHN0eWxlc2hlZXQgbGlzdCBvbmx5LiBJbiBvdGhlciBjYXNlcyB0
aGUgc3R5bGUgcmVzb2x2ZXIKICAgICAvLyBuZWVkcyB0byBiZSByZWNvbnN0cnVjdGVkLiBUbyBo
YW5kbGUgaW5zZXJ0aW9ucyB0b28gdGhlIHJ1bGUgb3JkZXIgbnVtYmVycyB3b3VsZCBuZWVkIHRv
IGJlIHVwZGF0ZWQuCkBAIC01MjcsNyArNTI3LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjph
cHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFIK
IH0KIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNl
dHVwU2NvcGVTdGFjayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQpCit2b2lkIFN0eWxlUmVz
b2x2ZXI6OnNldHVwU2NvcGVTdGFjayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQpCiB7CiAg
ICAgLy8gVGhlIHNjb3BpbmcgZWxlbWVudCBzdGFjayBzaG91bGRuJ3QgYmUgdXNlZCBpZiA8c3R5
bGUgc2NvcGVkPiBpc24ndCB1c2VkIGFueXdoZXJlLgogICAgIEFTU0VSVCghbV9zY29wZWRBdXRo
b3JTdHlsZXMuaXNFbXB0eSgpKTsKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OnNldHVwU2NvcGVTdGFjayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQpCiAgICAg
bV9zY29wZVN0YWNrUGFyZW50ID0gcGFyZW50OwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6
OnB1c2hTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGVQYXJlbnQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OnB1c2hTY29wZShjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZSwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVQYXJlbnQpCiB7CiAg
ICAgLy8gU2hvcnRjdXQ6IERvbid0IGJvdGhlciB3aXRoIHRoZSBzY29waW5nIGVsZW1lbnQgc3Rh
Y2sgaWYgPHN0eWxlIHNjb3BlZD4gaXNuJ3QgdXNlZCBhbnl3aGVyZS4KICAgICBpZiAobV9zY29w
ZWRBdXRob3JTdHlsZXMuaXNFbXB0eSgpKSB7CkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpwdXNoU2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0
IENvbnRhaW5lck5vZGUKICAgICBtX3Njb3BlU3RhY2tQYXJlbnQgPSBzY29wZTsKIH0KIAotdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjpwb3BTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6cG9wU2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUp
CiB7CiAgICAgLy8gT25seSBib3RoZXIgdG8gdXBkYXRlIHRoZSBzY29waW5nIGVsZW1lbnQgc3Rh
Y2sgaWYgaXQgaXMgY29uc2lzdGVudC4KICAgICBpZiAoc2NvcGVTdGFja0lzQ29uc2lzdGVudChz
Y29wZSkpIHsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnBvcFNj
b3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogfQogI2VuZGlmCiAKLXZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6cHVzaFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQordm9pZCBTdHls
ZVJlc29sdmVyOjpwdXNoUGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCiB7CiAgICAgY29u
c3QgQ29udGFpbmVyTm9kZSogcGFyZW50c1BhcmVudCA9IHBhcmVudC0+cGFyZW50T3JIb3N0RWxl
bWVudCgpOwogCkBAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpwdXNo
UGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCiAgICAgcHVzaFNjb3BlKHBhcmVudCwgcGFy
ZW50LT5wYXJlbnRPckhvc3ROb2RlKCkpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OnBv
cFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQordm9pZCBTdHlsZVJlc29sdmVyOjpwb3BQ
YXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKICAgICAvLyBOb3RlIHRoYXQgd2UgbWF5
IGdldCBpbnZva2VkIGZvciBzb21lIHJhbmRvbSBlbGVtZW50cyBpbiBzb21lIHdhY2t5IGNhc2Vz
IGR1cmluZyBzdHlsZSByZXNvbHZlLgogICAgIC8vIFBhdXNlIG1haW50YWluaW5nIHRoZSBzdGFj
ayBpbiB0aGlzIGNhc2UuCkBAIC01OTksMzEgKzU5OSwzMSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OnBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogICAgIHBvcFNjb3BlKHBhcmVu
dCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cHVzaFBhcmVudFNoYWRvd1Jvb3QoY29u
c3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFBhcmVu
dFNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCkKIHsKICAgICBBU1NFUlQo
c2hhZG93Um9vdC0+aG9zdCgpKTsKICAgICBwdXNoU2NvcGUoc2hhZG93Um9vdCwgc2hhZG93Um9v
dC0+aG9zdCgpKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpwb3BQYXJlbnRTaGFkb3dS
b290KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OnBv
cFBhcmVudFNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCkKIHsKICAgICBB
U1NFUlQoc2hhZG93Um9vdC0+aG9zdCgpKTsKICAgICBwb3BTY29wZShzaGFkb3dSb290KTsKIH0K
IAogLy8gVGhpcyBpcyBhIHNpbXBsaWZpZWQgc3R5bGUgc2V0dGluZyBmdW5jdGlvbiBmb3Iga2V5
ZnJhbWUgc3R5bGVzCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZEtleWZyYW1lU3R5bGUoUGFz
c1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
ZEtleWZyYW1lU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IHJ1bGUpCiB7CiAg
ICAgQXRvbWljU3RyaW5nIHMocnVsZS0+bmFtZSgpKTsKICAgICBtX2tleWZyYW1lc1J1bGVNYXAu
c2V0KHMuaW1wbCgpLCBydWxlKTsKIH0KIAotQ1NTU3R5bGVTZWxlY3Rvcjo6fkNTU1N0eWxlU2Vs
ZWN0b3IoKQorU3R5bGVSZXNvbHZlcjo6flN0eWxlUmVzb2x2ZXIoKQogewogICAgIG1fZm9udFNl
bGVjdG9yLT5jbGVhckRvY3VtZW50KCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c3dl
ZXBNYXRjaGVkUHJvcGVydGllc0NhY2hlKCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6c3dlZXBNYXRj
aGVkUHJvcGVydGllc0NhY2hlKCkKIHsKICAgICAvLyBMb29rIGZvciBjYWNoZSBlbnRyaWVzIGNv
bnRhaW5pbmcgYSBzdHlsZSBkZWNsYXJhdGlvbiB3aXRoIGEgc2luZ2xlIHJlZiBhbmQgcmVtb3Zl
IHRoZW0uCiAgICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1dGUg
bXV0YXRpb24gY2F1c2VzIGl0IHRvIHN3YXAgb3V0IGl0cyBBdHRyaWJ1dGU6OmRlY2woKQpAQCAt
NjQ0LDE4ICs2NDQsMTggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzd2VlcE1hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGUoKQogICAgICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUucmVtb3ZlKHRv
UmVtb3ZlW2ldKTsKIH0KIAotQ1NTU3R5bGVTZWxlY3Rvcjo6RmVhdHVyZXM6OkZlYXR1cmVzKCkK
K1N0eWxlUmVzb2x2ZXI6OkZlYXR1cmVzOjpGZWF0dXJlcygpCiAgICAgOiB1c2VzRmlyc3RMaW5l
UnVsZXMoZmFsc2UpCiAgICAgLCB1c2VzQmVmb3JlQWZ0ZXJSdWxlcyhmYWxzZSkKICAgICAsIHVz
ZXNMaW5rUnVsZXMoZmFsc2UpCiB7CiB9CiAKLUNTU1N0eWxlU2VsZWN0b3I6OkZlYXR1cmVzOjp+
RmVhdHVyZXMoKQorU3R5bGVSZXNvbHZlcjo6RmVhdHVyZXM6On5GZWF0dXJlcygpCiB7CiB9CiAg
ICAgCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OkZlYXR1cmVzOjphZGQoY29uc3QgQ1NTU3R5bGVT
ZWxlY3Rvcjo6RmVhdHVyZXMmIG90aGVyKQordm9pZCBTdHlsZVJlc29sdmVyOjpGZWF0dXJlczo6
YWRkKGNvbnN0IFN0eWxlUmVzb2x2ZXI6OkZlYXR1cmVzJiBvdGhlcikKIHsKICAgICBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPjo6aXRlcmF0b3IgZW5kID0gb3RoZXIuaWRzSW5SdWxlcy5lbmQo
KTsKICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OjppdGVyYXRvciBpdCA9IG90
aGVyLmlkc0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQpAQCAtNjcwLDcgKzY3MCw3
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6RmVhdHVyZXM6OmFkZChjb25zdCBDU1NTdHlsZVNl
bGVjdG9yOjpGZWF0dXJlcyYgb3RoZXIpCiAgICAgdXNlc0xpbmtSdWxlcyA9IHVzZXNMaW5rUnVs
ZXMgfHwgb3RoZXIudXNlc0xpbmtSdWxlczsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpG
ZWF0dXJlczo6Y2xlYXIoKQordm9pZCBTdHlsZVJlc29sdmVyOjpGZWF0dXJlczo6Y2xlYXIoKQog
ewogICAgIGlkc0luUnVsZXMuY2xlYXIoKTsKICAgICBhdHRyc0luUnVsZXMuY2xlYXIoKTsKQEAg
LTc5MCw3ICs3OTAsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JF
bGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgQVNTRVJUKG1hdGhNTFN0eWxlU2hlZXQgfHwg
ZGVmYXVsdFN0eWxlLT5mZWF0dXJlcygpLnNpYmxpbmdSdWxlcy5pc0VtcHR5KCkpOwogfQogCi12
b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiBt
YXRjaFJlc3VsdCwgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiBydWxl
LCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBib29sIGluUmVnaW9uUnVsZSkKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6YWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBT
dHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIGxp
bmtNYXRjaFR5cGUsIGJvb2wgaW5SZWdpb25SdWxlKQogewogICAgIG1hdGNoUmVzdWx0Lm1hdGNo
ZWRQcm9wZXJ0aWVzLmdyb3cobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpICsg
MSk7CiAgICAgTWF0Y2hlZFByb3BlcnRpZXMmIG5ld1Byb3BlcnRpZXMgPSBtYXRjaFJlc3VsdC5t
YXRjaGVkUHJvcGVydGllcy5sYXN0KCk7CkBAIC04MDAsNyArODAwLDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQs
IFN0eWxlUHJvcGUKICAgICBtYXRjaFJlc3VsdC5tYXRjaGVkUnVsZXMuYXBwZW5kKHJ1bGUpOwog
fQogCi1pbmxpbmUgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRFbGVtZW50U3R5bGVQcm9wZXJ0
aWVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnR5U2V0LCBi
b29sIGlzQ2FjaGVhYmxlKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkRWxlbWVudFN0
eWxlUHJvcGVydGllcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBTdHlsZVByb3BlcnR5U2V0KiBwcm9w
ZXJ0eVNldCwgYm9vbCBpc0NhY2hlYWJsZSkKIHsKICAgICBpZiAoIXByb3BlcnR5U2V0KQogICAg
ICAgICByZXR1cm47CkBAIC04MTIsNyArODEyLDcgQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBTdHkK
ICAgICAgICAgcmVzdWx0LmlzQ2FjaGVhYmxlID0gZmFsc2U7CiB9CiAKLXZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RS
dWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25z
KQordm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiBydWxl
cywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKHJ1bGVzKTsKICAgICBBU1NFUlQobV9lbGVt
ZW50KTsKQEAgLTg0MSw3ICs4NDEsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RN
YXRjaGluZ1J1bGVzKFJ1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LAogICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+dW5pdmVyc2FsUnVsZXMoKSwgZmlyc3RS
dWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMpOwogfQogCi12b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqIHJ1bGVzLCBpbnQm
IGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYg
b3B0aW9ucykKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdp
b24oUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRl
eCwgY29uc3QgTWF0Y2hPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9yZWdpb25Gb3JT
dHlsaW5nKQogICAgICAgICByZXR1cm47CkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihSdWxlU2V0KiBydWxlcywg
aW50JiBmaXJzdFIKICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c29ydEFuZFRy
YW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogewog
ICAgIGlmIChtX21hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg4
NSw3ICs4ODUsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNvcnRBbmRUcmFuc2Zlck1hdGNo
ZWRSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogICAgIH0KIH0KIAotdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9y
UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICNp
ZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgIGlmIChtX3Njb3BlZEF1dGhvclN0eWxlcy5pc0Vt
cHR5KCkpCkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFNj
b3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUUKICNlbmRp
ZgogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1
bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1
bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CiAgICAgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOwpAQCAt
OTM0LDcgKzkzNCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyhN
YXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1CiAgICAgc29ydEFuZFRyYW5z
ZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0
Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwg
Ym9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICAgICBpZiAoIW1fdXNlclN0eWxlKQogICAgICAg
ICByZXR1cm47CkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRj
aFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGUKICAg
ICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0KIAotdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXRjaFVBUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgUnVsZVNldCogcnVs
ZXMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0
LCBSdWxlU2V0KiBydWxlcykKIHsKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwogICAgIApA
QCAtOTg3LDcgKzk4Nyw3IEBAIGlubGluZSBib29sIE1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01h
dGNoaW5nVUFSdWxlcygpCiAKIGJvb2wgTWF0Y2hpbmdVQVJ1bGVzU2NvcGU6Om1fbWF0Y2hpbmdV
QVJ1bGVzID0gZmFsc2U7CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYgb3B0aW9ucykK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZl
Y3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxl
SW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIXJ1bGVzKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDY3LDEyICsxMDY3LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBjb21wYXJlUnVsZXMoY29uc3QgUnVsZURhdGEqIHIxLCBjb25zdCBSdWxlRGF0YSogcjIpCiAg
ICAgcmV0dXJuIChzcGVjaWZpY2l0eTEgPT0gc3BlY2lmaWNpdHkyKSA/IHIxLT5wb3NpdGlvbigp
IDwgcjItPnBvc2l0aW9uKCkgOiBzcGVjaWZpY2l0eTEgPCBzcGVjaWZpY2l0eTI7CiB9CiAKLXZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c29ydE1hdGNoZWRSdWxlcygpCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OnNvcnRNYXRjaGVkUnVsZXMoKQogewogICAgIHN0ZDo6c29ydChtX21hdGNoZWRSdWxlcy5i
ZWdpbigpLCBtX21hdGNoZWRSdWxlcy5lbmQoKSwgY29tcGFyZVJ1bGVzKTsKIH0KIAotdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCit2b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAg
ICBtYXRjaFVBUnVsZXMocmVzdWx0KTsKIApAQCAtMTExNyw3ICsxMTE3LDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiAjZW5kaWYK
IH0KIAotaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEVsZW1lbnQoRWxlbWVudCog
ZSkKK2lubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OmluaXRFbGVtZW50KEVsZW1lbnQqIGUpCiB7
CiAgICAgaWYgKG1fZWxlbWVudCAhPSBlKSB7CiAgICAgICAgIG1fZWxlbWVudCA9IGU7CkBAIC0x
MTMwLDcgKzExMzAsNyBAQCBpbmxpbmUgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0RWxlbWVu
dChFbGVtZW50KiBlKQogICAgIH0KIH0KIAotaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
aW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUs
IFBzZXVkb0lkIHBzZXVkb0lEKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEZvclN0
eWxlUmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lk
IHBzZXVkb0lEKQogewogICAgIG1fY2hlY2tlci5zZXRQc2V1ZG9TdHlsZShwc2V1ZG9JRCk7CiAK
QEAgLTExNTcsNyArMTE1Nyw3IEBAIGlubGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmluaXRG
b3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVuCiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgY1N0eWxlU2VhcmNoVGhyZXNob2xkID0gMTA7CiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgY1N0eWxlU2VhcmNoTGV2ZWxUaHJlc2hvbGQgPSAxMDsKIAotTm9kZSogQ1NTU3R5bGVT
ZWxlY3Rvcjo6bG9jYXRlQ291c2luTGlzdChFbGVtZW50KiBwYXJlbnQsIHVuc2lnbmVkJiB2aXNp
dGVkTm9kZUNvdW50KSBjb25zdAorTm9kZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRlQ291c2luTGlz
dChFbGVtZW50KiBwYXJlbnQsIHVuc2lnbmVkJiB2aXNpdGVkTm9kZUNvdW50KSBjb25zdAogewog
ICAgIGlmICh2aXNpdGVkTm9kZUNvdW50ID49IGNTdHlsZVNlYXJjaFRocmVzaG9sZCAqIGNTdHls
ZVNlYXJjaExldmVsVGhyZXNob2xkKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyMDQsNyArMTIw
NCw3IEBAIE5vZGUqIENTU1N0eWxlU2VsZWN0b3I6OmxvY2F0ZUNvdXNpbkxpc3QoRWxlbWVudCog
cGFyZW50LCB1bnNpZ25lZCYgdmlzaXRlZE5vZGVDCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hlc1J1bGVTZXQoUnVsZVNldCogcnVsZVNldCkKK2Jvb2wg
U3R5bGVSZXNvbHZlcjo6bWF0Y2hlc1J1bGVTZXQoUnVsZVNldCogcnVsZVNldCkKIHsKICAgICBp
ZiAoIXJ1bGVTZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMTksNyArMTIxOSw3IEBA
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hlc1J1bGVTZXQoUnVsZVNldCogcnVsZVNldCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFyZVN0
eWxlV2l0aENvbnRyb2woU3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QKK2Jvb2wgU3R5bGVS
ZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0CiB7CiAgICAgSFRNTElucHV0RWxlbWVudCogdGhpc0lucHV0RWxlbWVudCA9IGVsZW1l
bnQtPnRvSW5wdXRFbGVtZW50KCk7CiAgICAgSFRNTElucHV0RWxlbWVudCogb3RoZXJJbnB1dEVs
ZW1lbnQgPSBtX2VsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7CkBAIC0xMjkyLDcgKzEyOTIsNyBA
QCBpbmxpbmUgYm9vbCBlbGVtZW50SGFzRGlyZWN0aW9uQXV0byhFbGVtZW50KiBlbGVtZW50KQog
ICAgIHJldHVybiBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgdG9IVE1MRWxlbWVudChlbGVt
ZW50KS0+aGFzRGlyZWN0aW9uQXV0bygpOwogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmNh
blNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAorYm9v
bCBTdHlsZVJlc29sdmVyOjpjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoU3R5bGVkRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBlbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwogCkBAIC0xNDA3LDcgKzE0MDcsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgU3R5bGVkRWxlbWVudCogQ1NTU3R5bGVTZWxl
Y3Rvcjo6ZmluZFNpYmxpbmdGb3JTdHlsZVNoYXJpbmcoTm9kZSogbm9kZSwgdW5zaWduZWQmIGNv
dW50KSBjb25zdAoraW5saW5lIFN0eWxlZEVsZW1lbnQqIFN0eWxlUmVzb2x2ZXI6OmZpbmRTaWJs
aW5nRm9yU3R5bGVTaGFyaW5nKE5vZGUqIG5vZGUsIHVuc2lnbmVkJiBjb3VudCkgY29uc3QKIHsK
ICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAg
ICAgIGlmICghbm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpCkBAIC0xNDI4LDcgKzE0MjgsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgcGFyZW50U3R5bGVQcmV2ZW50c1NoYXJpbmcoY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlKQogICAgICAgICB8fCBwYXJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwogfQogCi1SZW5kZXJTdHlsZSogQ1NTU3R5bGVT
ZWxlY3Rvcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQorUmVuZGVyU3R5bGUqIFN0eWxlUmVzb2x2ZXI6
OmxvY2F0ZVNoYXJlZFN0eWxlKCkKIHsKICAgICBpZiAoIW1fc3R5bGVkRWxlbWVudCB8fCAhbV9w
YXJlbnRTdHlsZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBSZW5k
ZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQogICAgIHJldHVy
biBzaGFyZUVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hdGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogewogICAgIE1hdGNoaW5nVUFSdWxl
c1Njb3BlIHNjb3BlOwogCkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6Om1hdGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogICAgIH0KIH0KIAotUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JEb2N1bWVudChEb2N1
bWVudCogZG9jdW1lbnQsIENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQorUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JEb2N1bWVudChEb2N1bWVudCog
ZG9jdW1lbnQsIENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQogewogICAgIEZyYW1lKiBm
cmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogCkBAIC0xNTUxLDEwICsxNTUxLDEwIEBAIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9jdW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBDCiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1p
bHkoKS5hcHBlbmRGYW1pbHkoMCk7CiAgICAgICAgIH0KICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldEtleXdvcmRTaXplKENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7Ci0g
ICAgICAgIGludCBzaXplID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Zm9udFNpemVGb3JLZXl3b3JkKGRv
Y3VtZW50LCBDU1NWYWx1ZU1lZGl1bSwgZmFsc2UpOworICAgICAgICBpbnQgc2l6ZSA9IFN0eWxl
UmVzb2x2ZXI6OmZvbnRTaXplRm9yS2V5d29yZChkb2N1bWVudCwgQ1NTVmFsdWVNZWRpdW0sIGZh
bHNlKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoc2l6ZSk7CiAg
ICAgICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzID0gZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKTsK
LSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShDU1NTdHlsZVNlbGVjdG9y
OjpnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShkb2N1bWVudCwgZG9jdW1lbnRTdHls
ZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHNpemUsIHVzZVNWR1pv
b21SdWxlcykpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxl
UmVzb2x2ZXI6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKGRvY3VtZW50LCBkb2N1
bWVudFN0eWxlLmdldCgpLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgc2l6ZSwg
dXNlU1ZHWm9vbVJ1bGVzKSk7CiAgICAgfQogCiAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CkBAIC0xNTcxLDcgKzE1NzEsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0
dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CiB9CiAKLVBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50LCBSZW5kZXJTdHlsZSogZGVmYXVsdFBhcmVudCwKK1Bhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50
LCBSZW5kZXJTdHlsZSogZGVmYXVsdFBhcmVudCwKICAgICBTdHlsZVNoYXJpbmdCZWhhdmlvciBz
aGFyaW5nQmVoYXZpb3IsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3IsIFJl
bmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZykKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQg
aGFzIGEgcmVuZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndp
c2UgdGhlIHJlbmRlcmVyCkBAIC0xNjMzLDcgKzE2MzMsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwg
UmVuZAogICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJT
dHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZUtleWZyYW1lKiBrZXlmcmFtZSwgS2V5ZnJh
bWVWYWx1ZSYga2V5ZnJhbWVWYWx1ZSkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwg
Y29uc3QgU3R5bGVLZXlmcmFtZSoga2V5ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZyYW1lVmFs
dWUpCiB7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwogICAgIGlmIChrZXlmcmFtZS0+cHJvcGVy
dGllcygpKQpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NT
U3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSogZWwKICAg
ICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUq
IGVsZW1lbnRTdHlsZSwgS2V5ZnJhbWVMaXN0JiBsaXN0KQordm9pZCBTdHlsZVJlc29sdmVyOjpr
ZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSog
ZWxlbWVudFN0eWxlLCBLZXlmcmFtZUxpc3QmIGxpc3QpCiB7CiAgICAgbGlzdC5jbGVhcigpOwog
CkBAIC0xNzUzLDcgKzE3NTMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmtleWZyYW1lU3R5
bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJlbmRlclN0eWxlKgogICAgIH0KIH0K
IAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVG
b3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5
bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKQogewogICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xODAwLDcg
KzE4MDAsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1
ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLAogICAgIHJldHVybiBtX3N0eWxlLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6
c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHls
ZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKIHsKICAgICBpbml0Rm9yU3R5
bGVSZXNvbHZlKG1fY2hlY2tlci5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSk7IC8vIG1f
cm9vdEVsZW1lbnRTdHlsZSB3aWxsIGJlIHNldCB0byB0aGUgZG9jdW1lbnQgc3R5bGUuCiAKQEAg
LTE5MTIsNyArMTkxMiw3IEBAIHN0YXRpYyBFRGlzcGxheSBlcXVpdmFsZW50QmxvY2tEaXNwbGF5
KEVEaXNwbGF5IGRpc3BsYXksIGJvb2wgaXNGbG9hdGluZywgYm9vbCBzCiAgICAgcmV0dXJuIEJM
T0NLOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFbGVtZW50ICplKQordm9p
ZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgRWxlbWVudCAqZSkKIHsKICAgICAvLyBDYWNoZSBvdXIg
b3JpZ2luYWwgZGlzcGxheS4KICAgICBzdHlsZS0+c2V0T3JpZ2luYWxEaXNwbGF5KHN0eWxlLT5k
aXNwbGF5KCkpOwpAQCAtMjExMCw3ICsyMTEwLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjph
ZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbnQK
ICNlbmRpZgogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrUmVnaW9uU3R5bGUoRWxl
bWVudCogcmVnaW9uRWxlbWVudCkKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tSZWdpb25TdHls
ZShFbGVtZW50KiByZWdpb25FbGVtZW50KQogewogICAgIC8vIEZJWE1FIChCVUcgNzI0NzIpOiBX
ZSBkb24ndCBhZGQgQC13ZWJraXQtcmVnaW9uIHJ1bGVzIG9mIHNjb3BlZCBzdHlsZSBzaGVldHMg
Zm9yIHRoZSBtb21lbnQsCiAgICAgLy8gc28gYWxsIHJlZ2lvbiBydWxlcyBhcmUgZ2xvYmFsIGJ5
IGRlZmF1bHQuIFZlcmlmeSB3aGV0aGVyIHRoYXQgY2FuIHN0YW5kIG9yIG5lZWRzIGNoYW5naW5n
LgpAQCAtMjEzNCw3ICsyMTM0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1JlZ2lv
blN0eWxlKEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIENTU1N0eWxlU2VsZWN0b3I6OnVwZGF0ZUZvbnQoKQordm9pZCBTdHlsZVJlc29sdmVyOjp1
cGRhdGVGb250KCkKIHsKICAgICBpZiAoIW1fZm9udERpcnR5KQogICAgICAgICByZXR1cm47CkBA
IC0yMTQ2LDcgKzIxNDYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnVwZGF0ZUZvbnQoKQog
ICAgIG1fZm9udERpcnR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2Fj
aGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y2FjaGVCb3JkZXJB
bmRCYWNrZ3JvdW5kKCkKIHsKICAgICBtX2hhc1VBQXBwZWFyYW5jZSA9IG1fc3R5bGUtPmhhc0Fw
cGVhcmFuY2UoKTsKICAgICBpZiAobV9oYXNVQUFwcGVhcmFuY2UpIHsKQEAgLTIxNTYsMTIgKzIx
NTYsMTIgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjYWNoZUJvcmRlckFuZEJhY2tncm91bmQo
KQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6
c3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUp
CitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxl
bWVudChFbGVtZW50KiBlLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKICAgICByZXR1cm4g
cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZSwgTk9QU0VVRE8sIHJ1bGVzVG9JbmNsdWRlKTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5
bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2lnbmVk
IHJ1bGVzVG9JbmNsdWRlKQorUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6
cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHNldWRvSWQgcHNldWRvSWQs
IHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIGlmICghZSB8fCAhZS0+ZG9jdW1lbnQo
KS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjE5NSw3
ICsyMTk1LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNl
dWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwKICAgICByZXR1cm4gbV9ydWxlTGlz
dC5yZWxlYXNlKCk7CiB9CiAKLWlubGluZSBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2Vs
ZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZSkKK2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURh
dGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKIHsKICAgICBtX2R5bmFt
aWNQc2V1ZG8gPSBOT1BTRVVETzsKICAgICBtX2NoZWNrZXIuY2xlYXJIYXNVbmtub3duUHNldWRv
RWxlbWVudHMoKTsKQEAgLTIyMjksNyArMjIyOSw3IEBAIGlubGluZSBib29sIENTU1N0eWxlU2Vs
ZWN0b3I6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tSZWdp
b25TZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVs
ZW1lbnQpCitib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrUmVnaW9uU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KQogewogICAgIGlmICgh
cmVnaW9uU2VsZWN0b3IgfHwgIXJlZ2lvbkVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIyNDQsNyArMjI0NCw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tSZWdpb25T
ZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVsZW1lbnQqCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogICAgIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpkZXRlcm1pbmVTdHlsZXNo
ZWV0U2VsZWN0b3JTY29wZXMoU3R5bGVTaGVldEludGVybmFsKiBzdHlsZXNoZWV0LCBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiYgaWRTY29wZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
JiBjbGFzc1Njb3BlcykKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6ZGV0ZXJtaW5lU3R5bGVzaGVldFNl
bGVjdG9yU2NvcGVzKFN0eWxlU2hlZXRJbnRlcm5hbCogc3R5bGVzaGVldCwgSGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4mIGlkU2NvcGVzLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgY2xh
c3NTY29wZXMpCiB7CiAgICAgQVNTRVJUKCFzdHlsZXNoZWV0LT5pc0xvYWRpbmcoKSk7CiAKQEAg
LTIzNTAsNyArMjM1MCw3IEBAIFJ1bGVTZXQ6OlJ1bGVTZXQoKQogewogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKENTU1N0eWxlU2VsZWN0b3I6OkZl
YXR1cmVzJiBmZWF0dXJlcywgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorc3RhdGljIGlu
bGluZSB2b2lkIGNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihTdHlsZVJlc29sdmVyOjpGZWF0
dXJlcyYgZmVhdHVyZXMsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICBpZiAo
c2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKQogICAgICAgICBmZWF0dXJlcy5p
ZHNJblJ1bGVzLmFkZChzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOwpAQCAtMjM3Myw3ICsyMzcz
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihDU1NT
dHlsZVNlbGVjdG9yOjpGZWF0dXJlcyYgZmVhdHUKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNv
bGxlY3RGZWF0dXJlc0Zyb21SdWxlRGF0YShDU1NTdHlsZVNlbGVjdG9yOjpGZWF0dXJlcyYgZmVh
dHVyZXMsIGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKK3N0YXRpYyB2b2lkIGNvbGxlY3RGZWF0
dXJlc0Zyb21SdWxlRGF0YShTdHlsZVJlc29sdmVyOjpGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0
IFJ1bGVEYXRhJiBydWxlRGF0YSkKIHsKICAgICBib29sIGZvdW5kU2libGluZ1NlbGVjdG9yID0g
ZmFsc2U7CiAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBydWxlRGF0YS5zZWxlY3Rv
cigpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CkBAIC0y
Mzg5LDkgKzIzODksOSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tUnVsZURhdGEo
Q1NTU3R5bGVTZWxlY3Rvcjo6RmVhdHVyZXMmIGZlYXR1cmVzLCBjbwogICAgICAgICAgICAgZm91
bmRTaWJsaW5nU2VsZWN0b3IgPSB0cnVlOwogICAgIH0KICAgICBpZiAoZm91bmRTaWJsaW5nU2Vs
ZWN0b3IpCi0gICAgICAgIGZlYXR1cmVzLnNpYmxpbmdSdWxlcy5hcHBlbmQoQ1NTU3R5bGVTZWxl
Y3Rvcjo6UnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvcigpLCBy
dWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgZmVhdHVyZXMu
c2libGluZ1J1bGVzLmFwcGVuZChTdHlsZVJlc29sdmVyOjpSdWxlRmVhdHVyZShydWxlRGF0YS5y
dWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9yKCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlP
cmlnaW4oKSkpOwogICAgIGlmIChydWxlRGF0YS5jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2Vs
ZWN0b3IoKSkKLSAgICAgICAgZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQo
Q1NTU3R5bGVTZWxlY3Rvcjo6UnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5z
ZWxlY3RvcigpLCBydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAg
ICAgZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQoU3R5bGVSZXNvbHZlcjo6
UnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvcigpLCBydWxlRGF0
YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpKTsKIH0KICAgICAKIHZvaWQgUnVsZVNldDo6
YWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29u
c3QgUnVsZURhdGEmIHJ1bGVEYXRhKQpAQCAtMjQ3MCw3ICsyNDcwLDcgQEAgdm9pZCBSdWxlU2V0
OjphZGRSZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lvbiogcmVnaW9uUnVsZSwgYm9vbCBoYXNEb2N1
bWVudFNlY3VyaXQKICAgICBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLmFwcGVuZChSdWxl
U2V0U2VsZWN0b3JQYWlyKHJlZ2lvblJ1bGUtPnNlbGVjdG9yTGlzdCgpLmZpcnN0KCksIHJlZ2lv
blJ1bGVTZXQucmVsZWFzZSgpKSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hl
ZXQoU3R5bGVTaGVldEludGVybmFsKiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYg
bWVkaXVtLCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yLCBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZSkKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldElu
dGVybmFsKiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZVJl
c29sdmVyKiBzdHlsZVNlbGVjdG9yLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKIHsKICAg
ICBBU1NFUlQoc2hlZXQpOwogCkBAIC0yNTc3LDE4ICsyNTc3LDE4IEBAIHZvaWQgUnVsZVNldDo6
c2hyaW5rVG9GaXQoKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gdGhpcyBp
cyBtb3N0bHkgYm9yaW5nIHN0dWZmIG9uIGhvdyB0byBhcHBseSBhIGNlcnRhaW4gcnVsZSB0byB0
aGUgcmVuZGVyc3R5bGUuLi4KIAotTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0lu
dExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCitMZW5ndGgg
U3R5bGVSZXNvbHZlcjo6Y29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBk
b3VibGUgbXVsdGlwbGllcikKIHsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUgPyBwcmltaXRp
dmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50
Q29udmVyc2lvbiB8IEZyYWN0aW9uQ29udmVyc2lvbiB8IFZpZXdwb3J0UGVyY2VudGFnZUNvbnZl
cnNpb24+KHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpIDogTGVuZ3RoKFVuZGVmaW5lZCk7
CiB9CiAKLUxlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCitMZW5ndGggU3R5bGVSZXNvbHZl
cjo6Y29udmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
LCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0
aXBsaWVyKQogewogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZSA/IHByaW1pdGl2ZVZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IEZyYWN0aW9uQ29udmVyc2lvbiB8IFZpZXdwb3J0UGVyY2VudGFnZUNvbnZlcnNpb24+KHN0eWxl
LCByb290U3R5bGUsIG11bHRpcGxpZXIpIDogTGVuZ3RoKFVuZGVmaW5lZCk7CiB9CiAKIHRlbXBs
YXRlIDxib29sIGFwcGx5Rmlyc3Q+Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqIHJ1bGUs
IGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgYm9vbCBmaWx0ZXJSZWdpb25Q
cm9wZXJ0aWVzKQordm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnRpZXMoY29uc3QgU3R5
bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiBydWxlLCBib29sIGlzSW1wb3J0
YW50LCBib29sIGluaGVyaXRlZE9ubHksIGJvb2wgZmlsdGVyUmVnaW9uUHJvcGVydGllcykKIHsK
ICAgICBBU1NFUlQoIWZpbHRlclJlZ2lvblByb3BlcnRpZXMgfHwgbV9yZWdpb25Gb3JTdHlsaW5n
KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUHJvY2Vzc1J1bGUoZG9jdW1lbnQoKSwgcnVsZSk7CkBAIC0y
NjA3LDcgKzI2MDcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydGllcyhj
b25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZQogICAgICAgICB9CiAgICAg
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBjdXJyZW50LmlkKCk7CiAKLSAgICAgICAgaWYg
KGZpbHRlclJlZ2lvblByb3BlcnRpZXMgJiYgIUNTU1N0eWxlU2VsZWN0b3I6OmlzVmFsaWRSZWdp
b25TdHlsZVByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgaWYgKGZpbHRlclJlZ2lvblByb3Bl
cnRpZXMgJiYgIVN0eWxlUmVzb2x2ZXI6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KHByb3Bl
cnR5KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChhcHBseUZpcnN0KSB7
CkBAIC0yNjMyLDcgKzI2MzIsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZQogfQogCiB0ZW1w
bGF0ZSA8Ym9vbCBhcHBseUZpcnN0Pgotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseU1hdGNo
ZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgYm9vbCBpc0ltcG9y
dGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5KQor
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVz
dWx0JiBtYXRjaFJlc3VsdCwgYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBl
bmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5KQogewogICAgIGlmIChzdGFydEluZGV4ID09IC0x
KQogICAgICAgICByZXR1cm47CkBAIC0yNjU3LDEzICsyNjU3LDEzIEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hS
ZXN1bHQsIGJvCiAgICAgfQogfQogCi11bnNpZ25lZCBDU1NTdHlsZVNlbGVjdG9yOjpjb21wdXRl
TWF0Y2hlZFByb3BlcnRpZXNIYXNoKGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzKiBwcm9wZXJ0aWVz
LCB1bnNpZ25lZCBzaXplKQordW5zaWduZWQgU3R5bGVSZXNvbHZlcjo6Y29tcHV0ZU1hdGNoZWRQ
cm9wZXJ0aWVzSGFzaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyogcHJvcGVydGllcywgdW5zaWdu
ZWQgc2l6ZSkKIHsKICAgICAKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KHBy
b3BlcnRpZXMsIHNpemVvZihNYXRjaGVkUHJvcGVydGllcykgKiBzaXplKTsKIH0KIAotYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoUmFuZ2VzJiBhLCBjb25zdCBD
U1NTdHlsZVNlbGVjdG9yOjpNYXRjaFJhbmdlcyYgYikKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZVJlc29sdmVyOjpNYXRjaFJhbmdlcyYgYSwgY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hS
YW5nZXMmIGIpCiB7CiAgICAgcmV0dXJuIGEuZmlyc3RVQVJ1bGUgPT0gYi5maXJzdFVBUnVsZQog
ICAgICAgICAmJiBhLmxhc3RVQVJ1bGUgPT0gYi5sYXN0VUFSdWxlCkBAIC0yNjczLDIyICsyNjcz
LDIyIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaFJhbmdl
cyYgYSwgY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6CiAgICAgICAgICYmIGEubGFzdFVzZXJSdWxl
ID09IGIubGFzdFVzZXJSdWxlOwogfQogCi1ib29sIG9wZXJhdG9yIT0oY29uc3QgQ1NTU3R5bGVT
ZWxlY3Rvcjo6TWF0Y2hSYW5nZXMmIGEsIGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoUmFu
Z2VzJiBiKQorYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmFuZ2Vz
JiBhLCBjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaFJhbmdlcyYgYikKIHsKICAgICByZXR1cm4g
IShhID09IGIpOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6
TWF0Y2hlZFByb3BlcnRpZXMmIGEsIGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRQcm9w
ZXJ0aWVzJiBiKQorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQ
cm9wZXJ0aWVzJiBhLCBjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGllcyYgYikK
IHsKICAgICByZXR1cm4gYS5wcm9wZXJ0aWVzID09IGIucHJvcGVydGllcyAmJiBhLmxpbmtNYXRj
aFR5cGUgPT0gYi5saW5rTWF0Y2hUeXBlOwogfQogCi1ib29sIG9wZXJhdG9yIT0oY29uc3QgQ1NT
U3R5bGVTZWxlY3Rvcjo6TWF0Y2hlZFByb3BlcnRpZXMmIGEsIGNvbnN0IENTU1N0eWxlU2VsZWN0
b3I6Ok1hdGNoZWRQcm9wZXJ0aWVzJiBiKQorYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmVz
b2x2ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzJiBhLCBjb25zdCBTdHlsZVJlc29sdmVyOjpNYXRjaGVk
UHJvcGVydGllcyYgYikKIHsKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi1jb25zdCBDU1NT
dHlsZVNlbGVjdG9yOjpNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSogQ1NTU3R5bGVTZWxlY3Rv
cjo6ZmluZEZyb21NYXRjaGVkUHJvcGVydGllc0NhY2hlKHVuc2lnbmVkIGhhc2gsIGNvbnN0IE1h
dGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK2NvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGVJdGVtKiBTdHlsZVJlc29sdmVyOjpmaW5kRnJvbU1hdGNoZWRQcm9wZXJ0aWVz
Q2FjaGUodW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0KQogewog
ICAgIEFTU0VSVChoYXNoKTsKIApAQCAtMjcwOSw3ICsyNzA5LDcgQEAgY29uc3QgQ1NTU3R5bGVT
ZWxlY3Rvcjo6TWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0qIENTU1N0eWxlU2VsZWN0b3I6OmZp
bmRGcm9tTWEKICAgICByZXR1cm4gJmNhY2hlSXRlbTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIHVuc2lnbmVkIGhhc2gsIGNvbnN0IE1h
dGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVk
UHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlLCB1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hS
ZXN1bHQpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIG1hdGNoZWREZWNsYXJhdGlvbkNhY2hlQWRk
aXRpb25zQmV0d2VlblN3ZWVwcyA9IDEwMDsKICAgICBpZiAoKyttX21hdGNoZWRQcm9wZXJ0aWVz
Q2FjaGVBZGRpdGlvbnNTaW5jZUxhc3RTd2VlcCA+PSBtYXRjaGVkRGVjbGFyYXRpb25DYWNoZUFk
ZGl0aW9uc0JldHdlZW5Td2VlcHMpIHsKQEAgLTI3MjgsNyArMjcyOCw3IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSwgY29uCiAgICAgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlLmFkZChoYXNoLCBjYWNo
ZUl0ZW0pOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmludmFsaWRhdGVNYXRjaGVkUHJv
cGVydGllc0NhY2hlKCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6aW52YWxpZGF0ZU1hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGUoKQogewogICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5jbGVhcigpOwog
fQpAQCAtMjc1MCw3ICsyNzUwLDcgQEAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVJbk1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUmUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseU1hdGNoZWRQcm9wZXJ0
aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCiB7
CiAgICAgdW5zaWduZWQgY2FjaGVIYXNoID0gbWF0Y2hSZXN1bHQuaXNDYWNoZWFibGUgPyBjb21w
dXRlTWF0Y2hlZFByb3BlcnRpZXNIYXNoKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmRh
dGEoKSwgbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpKSA6IDA7CiAgICAgYm9v
bCBhcHBseUluaGVyaXRlZE9ubHkgPSBmYWxzZTsKQEAgLTI4MjksNyArMjgyOSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBjb21wYXJlUGFnZVJ1bGVzKGNvbnN0IFN0eWxlUnVsZVBhZ2UqIHIxLCBj
b25zdCBTdHlsZVJ1bGVQYWdlCiAgICAgcmV0dXJuIHIxLT5zZWxlY3RvcigpLT5zcGVjaWZpY2l0
eSgpIDwgcjItPnNlbGVjdG9yKCktPnNwZWNpZmljaXR5KCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgUnVsZVNldCogcnVs
ZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdl
TmFtZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmIHJl
c3VsdCwgUnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwg
Y29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKIHsKICAgICBpZiAoIXJ1bGVzKQogICAgICAgICByZXR1
cm47CkBAIC0yODQ1LDcgKzI4NDUsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFn
ZVJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIFJ1bGVTZXQqIHJ1bGVzLCBib29sCiAgICAgICAg
IGFkZE1hdGNoZWRQcm9wZXJ0aWVzKHJlc3VsdCwgbWF0Y2hlZFBhZ2VSdWxlc1tpXS0+cHJvcGVy
dGllcygpKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFBhZ2VSdWxlc0Zvckxp
c3QoVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgbWF0Y2hlZFJ1bGVzLCBjb25zdCBWZWN0b3I8U3R5
bGVSdWxlUGFnZSo+JiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBj
b25zdCBTdHJpbmcmIHBhZ2VOYW1lKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFBhZ2VSdWxl
c0Zvckxpc3QoVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgbWF0Y2hlZFJ1bGVzLCBjb25zdCBWZWN0
b3I8U3R5bGVSdWxlUGFnZSo+JiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQ
YWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQogewogICAgIHVuc2lnbmVkIHNpemUgPSBydWxl
cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAt
Mjg2OSw3ICsyODY5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFBhZ2VSdWxlc0Zv
ckxpc3QoVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgbWF0Y2hlZFJ1bGUKICAgICB9CiB9CiAKLWJv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNMZWZ0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAorYm9v
bCBTdHlsZVJlc29sdmVyOjppc0xlZnRQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0CiB7CiAgICAg
Ym9vbCBpc0ZpcnN0UGFnZUxlZnQgPSBmYWxzZTsKICAgICBpZiAoIW1fcm9vdEVsZW1lbnRTdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQpAQCAtMjg3OCwxMyArMjg3OCwxMyBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OmlzTGVmdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKICAgICBy
ZXR1cm4gKHBhZ2VJbmRleCArIChpc0ZpcnN0UGFnZUxlZnQgPyAxIDogMCkpICUgMjsKIH0KIAot
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjppc0ZpcnN0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAor
Ym9vbCBTdHlsZVJlc29sdmVyOjppc0ZpcnN0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBJbiBjYXNlIG9mIGZvcmNlZCBsZWZ0L3JpZ2h0IHBhZ2UsIHBhZ2UgYXQg
aW5kZXggMSAobm90IDApIGNhbiBiZSB0aGUgZmlyc3QgcGFnZS4KICAgICByZXR1cm4gKCFwYWdl
SW5kZXgpOwogfQogCi1TdHJpbmcgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5hbWUoaW50IC8qIHBh
Z2VJbmRleCAqLykgY29uc3QKK1N0cmluZyBTdHlsZVJlc29sdmVyOjpwYWdlTmFtZShpbnQgLyog
cGFnZUluZGV4ICovKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcGFnZSBpbmRl
eCB0byBwYWdlIG5hbWUgbWFwcGluZy4KICAgICByZXR1cm4gIiI7CkBAIC0yOTMyLDcgKzI5MzIs
NyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSos
IFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYQogICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdy
YXBwZXJNYXAsIHNoZWV0V3JhcHBlclNldCwgZG9jdW1lbnQtPnBhZ2VVc2VyU2hlZXQoKSk7CiB9
CiAKLUNTU1N0eWxlUnVsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6ZW5zdXJlRnVsbENTU09NV3JhcHBl
ckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1bGUpCitDU1NTdHlsZVJ1bGUqIFN0eWxlUmVzb2x2
ZXI6OmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IoU3R5bGVSdWxlKiBydWxlKQog
ewogICAgIGlmIChtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmlzRW1wdHkoKSkgewogICAg
ICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBt
X3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKQEAg
LTI5NDgsNyArMjk0OCw3IEBAIENTU1N0eWxlUnVsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6ZW5zdXJl
RnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1CiAgICAgcmV0dXJuIG1f
c3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUpLmdldCgpOwogfQogCi12b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENT
U1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQordm9pZCBTdHlsZVJlc29sdmVyOjph
cHBseVByb3BlcnR5VG9TdHlsZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFJl
bmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpbml0RWxlbWVudCgwKTsKICAgICBpbml0Rm9yU3R5
bGVSZXNvbHZlKDAsIHN0eWxlKTsKQEAgLTI5NTYsNyArMjk1Niw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUq
IHZhbHVlLCBSCiAgICAgYXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKGlkLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
bHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1
ZSkKIHsKICAgICBpZiAodmFsdWUpCiAgICAgICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsK
QEAgLTI5OTgsNyArMjk5OCw3IEBAIGlubGluZSBib29sIGlzVmFsaWRWaXNpdGVkTGlua1Byb3Bl
cnR5KENTU1Byb3BlcnR5SUQgaWQpCiAKIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMt
cmVnaW9ucy8jdGhlLWF0LXJlZ2lvbi1zdHlsZS1ydWxlCiAvLyBGSVhNRTogYWRkIGluY3JlbWVu
dGFsIHN1cHBvcnQgZm9yIG90aGVyIHJlZ2lvbiBzdHlsaW5nIHByb3BlcnRpZXMuCi1pbmxpbmUg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIGlkKQoraW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6aXNWYWxpZFJlZ2lvblN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkKIHsKICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKQEAgLTMwMTgsMTQgKzMwMTgsMTQgQEAgaW5s
aW5lIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBpZCkKIC8vIHdpZHRoL2hlaWdodC9ib3JkZXIvcGFkZGluZy8uLi4gZnJvbSB0
aGUgUmVuZGVyU3R5bGUgLT4gZm9yIFNWRyB0aGVzZSB2YWx1ZXMgd291bGQgbmV2ZXIgc2NhbGUs
CiAvLyBpZiB3ZSdkIHBhc3MgYSAxLjAgem9vbSBmYWN0b3IgZXZlcnlod2VyZS4gU28gd2Ugb25s
eSBwYXNzIGEgem9vbSBmYWN0b3Igb2YgMS4wIGZvciBzcGVjaWZpYwogLy8gcHJvcGVydGllcyB0
aGF0IGFyZSBOT1QgYWxsb3dlZCB0byBzY2FsZSB3aXRoaW4gYSB6b29tZWQgU1ZHIGRvY3VtZW50
IChsZXR0ZXIvd29yZC1zcGFjaW5nL2ZvbnQtc2l6ZSkuCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6
OnVzZVNWR1pvb21SdWxlcygpCitib29sIFN0eWxlUmVzb2x2ZXI6OnVzZVNWR1pvb21SdWxlcygp
CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOwog
fQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKIAotc3RhdGljIGJvb2wgY3JlYXRlR3Jp
ZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBMZW5ndGgmIGxlbmd0aCkKK3N0YXRpYyBib29sIGNyZWF0ZUdy
aWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgTGVuZ3RoJiBsZW5ndGgpCiB7CiAgICAgTGVuZ3RoIHdvcmtpbmdM
ZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZl
cnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IFZpZXdwb3J0UGVyY2VudGFnZUNvbnZlcnNpb24g
fCBBdXRvQ29udmVyc2lvbj4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVu
dFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogICAgIGlmICh3
b3JraW5nTGVuZ3RoLmlzVW5kZWZpbmVkKCkpCkBAIC0zMDM4LDcgKzMwMzgsNyBAQCBzdGF0aWMg
Ym9vbCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSwgQ1NTU3R5bGVTZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBjcmVh
dGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPExlbmd0aD4mIGxlbmd0aHMs
IENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNr
TGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxMZW5ndGg+JiBsZW5ndGhzLCBTdHlsZVJlc29s
dmVyKiBzZWxlY3RvcikKIHsKICAgICAvLyBIYW5kbGUgJ25vbmUnLgogICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CkBAIC0zMDg1LDcgKzMwODUsNyBAQCBzdGF0aWMgYm9vbCBj
cmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBMZW5ndGgmIHBvc2l0aW9uKQogfQog
I2VuZGlmCiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkLCBDU1NWYWx1ZSAqdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogewogICAgIGJvb2wgaXNJbmhl
cml0ID0gbV9wYXJlbnROb2RlICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCk7CiAgICAgYm9v
bCBpc0luaXRpYWwgPSB2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCAoIW1fcGFyZW50Tm9kZSAm
JiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpKTsKQEAgLTQxNjUsNyArNDE2NSw3IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1
ZSAqdmFsdWUpCiAgICAgfQogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxBdHRh
Y2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmls
bExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJbml0
aWFsVmFsdWUoKSkgewogICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsQXR0YWNobWVudChsYXllci0+dHlwZSgpKSk7CkBAIC00MTkxLDcgKzQxOTEsNyBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbAogICAgIH0KIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjptYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1
ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlz
SW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNldENsaXAoRmlsbExheWVyOjppbml0
aWFsRmlsbENsaXAobGF5ZXItPnR5cGUoKSkpOwpAQCAtNDIwNSw3ICs0MjA1LDcgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxh
eWVyLCBDU1NWYWx1ZSogdmEKICAgICBsYXllci0+c2V0Q2xpcCgqcHJpbWl0aXZlVmFsdWUpOwog
fQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVy
OjptYXBGaWxsQ29tcG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKICAgICAg
ICAgbGF5ZXItPnNldENvbXBvc2l0ZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlKGxh
eWVyLT50eXBlKCkpKTsKQEAgLTQyMTksNyArNDIxOSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWFwRmlsbENvbXBvc2l0ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NW
YWx1CiAgICAgbGF5ZXItPnNldENvbXBvc2l0ZSgqcHJpbWl0aXZlVmFsdWUpOwogfQogCi12b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxPcmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVy
KiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsT3Jp
Z2luKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNldE9y
aWdpbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2luKGxheWVyLT50eXBlKCkpKTsKQEAgLTQy
MzMsNyArNDIzMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbE9yaWdpbihDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSoKICAgICBsYXllci0+c2V0T3Jp
Z2luKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gQ1NTU3R5
bGVTZWxlY3Rvcjo6c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSog
dmFsdWUpCitQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlSW1hZ2Uo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZS0+aXNJbWFnZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRPclBlbmRpbmdGcm9tVmFs
dWUocHJvcGVydHksIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSkpOwpAQCAtNDI0
OSw3ICs0MjQ5LDcgQEAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNlbGVjdG9yOjpz
dHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1YKICAgICByZXR1cm4gMDsKIH0K
IAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNlbGVjdG9yOjpjYWNoZWRPclBlbmRp
bmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1hZ2VWYWx1ZSogdmFsdWUp
CitQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmNhY2hlZE9yUGVuZGluZ0Zy
b21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFnZVZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UgPSB2YWx1ZS0+Y2FjaGVkT3JQZW5kaW5nSW1h
Z2UoKTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCkBAIC00MjU3
LDcgKzQyNTcsNyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1N0eWxlU2VsZWN0b3I6OmNh
Y2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlECiAgICAgcmV0dXJuIGltYWdlLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNlbGVjdG9yOjpn
ZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSogdmFsdWUpCitQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVz
b2x2ZXI6OmdlbmVyYXRlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzUGVu
ZGluZygpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcy5hZGQocHJvcGVydHkp
OwpAQCAtNDI2Nyw3ICs0MjY3LDcgQEAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNl
bGVjdG9yOjpnZW5lcmF0ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHkKIH0KIAogI2lm
IEVOQUJMRShDU1NfSU1BR0VfU0VUKQotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNl
bGVjdG9yOjpzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NT
SW1hZ2VTZXRWYWx1ZSogdmFsdWUpCitQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2
ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NJbWFn
ZVNldFZhbHVlKiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UgPSB2YWx1
ZS0+Y2FjaGVkT3JQZW5kaW5nSW1hZ2VTZXQoZG9jdW1lbnQoKSk7CiAgICAgaWYgKGltYWdlICYm
IGltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQpAQCAtNDI3Niw3ICs0Mjc2LDcgQEAgUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNlbGVjdG9yOjpzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm8KIH0KICNlbmRpZgogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZp
bGxJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1
ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgIGxheWVyLT5zZXRJbWFnZShGaWxs
TGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UobGF5ZXItPnR5cGUoKSkpOwpAQCAtNDI4Niw3ICs0Mjg2
LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsSW1hZ2UoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSwgRmlsbExheWVyKiBsYXllciwgQ1MKICAgICBsYXllci0+c2V0SW1hZ2Uoc3R5bGVJ
bWFnZShwcm9wZXJ0eSwgdmFsdWUpKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBG
aWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFs
dWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxSZXBlYXRYKENTU1Byb3BlcnR5SUQsIEZp
bGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzSW5p
dGlhbFZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNldFJlcGVhdFgoRmlsbExheWVyOjppbml0
aWFsRmlsbFJlcGVhdFgobGF5ZXItPnR5cGUoKSkpOwpAQCAtNDMwMCw3ICs0MzAwLDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5
ZXIqIGxheWVyLCBDU1NWYWx1ZSoKICAgICBsYXllci0+c2V0UmVwZWF0WCgqcHJpbWl0aXZlVmFs
dWUpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNv
bHZlcjo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewogICAg
ICAgICBsYXllci0+c2V0UmVwZWF0WShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WShsYXll
ci0+dHlwZSgpKSk7CkBAIC00MzE0LDcgKzQzMTQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVl
KgogICAgIGxheWVyLT5zZXRSZXBlYXRZKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLXZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXll
ciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsU2l6ZShDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgIGxheWVyLT5zZXRTaXplVHlw
ZShTaXplTm9uZSk7CkBAIC00MzU5LDcgKzQzNTksNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2
YQogICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0
b3I6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsWFBvc2l0aW9uKENTU1By
b3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgbGF5ZXItPnNldFhQb3NpdGlvbihG
aWxsTGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uKGxheWVyLT50eXBlKCkpKTsKQEAgLTQzODYs
NyArNDM4Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFhQb3NpdGlvbihDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1CiAgICAgbGF5ZXItPnNldFhQb3Np
dGlvbihsKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWVBvc2l0aW9uKENT
U1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5
bGVSZXNvbHZlcjo6bWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgp
KSB7CiAgICAgICAgIGxheWVyLT5zZXRZUG9zaXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFlQ
b3NpdGlvbihsYXllci0+dHlwZSgpKSk7CkBAIC00NDEzLDcgKzQ0MTMsNyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBs
YXllciwgQ1NTVmFsdQogICAgIGxheWVyLT5zZXRZUG9zaXRpb24obCk7CiB9CiAKLXZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENT
U1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGVsYXkoQW5p
bWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlz
SW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgYW5pbWF0aW9uLT5zZXREZWxheShBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25EZWxheSgpKTsKQEAgLTQ0MjcsNyArNDQyNyw3IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENT
U1ZhbHVlKiB2YWx1ZSkKICAgICBhbmltYXRpb24tPnNldERlbGF5KHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNlY29uZHM+KCkpOwogfQogCi12
b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb24qIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkRp
cmVjdGlvbihBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5p
bWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGlyZWN0aW9uKCkpOwpAQCAtNDQ1NCw3ICs0NDU0LDcg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9u
KiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIH0KIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjptYXBBbmltYXRpb25EdXJhdGlvbihBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUq
IHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EdXJhdGlvbihBbmltYXRp
b24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJbml0
aWFsVmFsdWUoKSkgewogICAgICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKEFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uKCkpOwpAQCAtNDQ2OCw3ICs0NDY4LDcgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EdXJhdGlvbihBbmltYXRpb24qIGFuaW1hdGlv
biwgQ1NTVmFsdWUqIHZhbHUKICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNlY29uZHM+KCkpOwog
fQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1hdGlv
biogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0
aW9uRmlsbE1vZGUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewogICAgICAgICBsYXllci0+c2V0RmlsbE1vZGUo
QW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRmlsbE1vZGUoKSk7CkBAIC00NDk1LDcgKzQ0OTUs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1hdGlv
biogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0aW9uKiBhbmltYXRpb24sIENT
U1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9u
Q291bnQoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRp
b25Db3VudChBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCgpKTsKQEAg
LTQ1MTIsNyArNDUxMiw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uSXRl
cmF0aW9uQ291bnQoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlCiAgICAgICAgIGFuaW1h
dGlvbi0+c2V0SXRlcmF0aW9uQ291bnQocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7
CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uTmFtZShBbmltYXRpb24q
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlv
bk5hbWUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZS0+aXNJbml0aWFsVmFsdWUoKSkgewogICAgICAgICBsYXllci0+c2V0TmFtZShBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25OYW1lKCkpOwpAQCAtNDUyOSw3ICs0NTI5LDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVl
KiB2YWx1ZSkKICAgICAgICAgbGF5ZXItPnNldE5hbWUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmlu
Z1ZhbHVlKCkpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvblBsYXlT
dGF0ZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2
ZXI6Om1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFs
dWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAgIGxheWVy
LT5zZXRQbGF5U3RhdGUoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uUGxheVN0YXRlKCkpOwpA
QCAtNDU0NCw3ICs0NTQ0LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25Q
bGF5U3RhdGUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGxheWVyLT5z
ZXRQbGF5U3RhdGUocGxheVN0YXRlKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBB
bmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQor
dm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24qIGFuaW1h
dGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUo
KSkgewogICAgICAgICBhbmltYXRpb24tPnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmlt
YXRlQWxsKTsKQEAgLTQ1NjgsNyArNDU2OCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
QW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1CiAg
ICAgfQogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVz
b2x2ZXI6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CiAg
ICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uOjppbml0aWFsQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24oKSk7CkBAIC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiogYW5pbWF0
aW9uLCBDU1NWYWx1ZQogICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKExpbmVh
clRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwTmluZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdWUqIHZhbHVl
LCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcE5pbmVQaWVj
ZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNl
SW1hZ2UmIGltYWdlKQogewogICAgIC8vIElmIHdlJ3JlIG5vdCBhIHZhbHVlIGxpc3QsIHRoZW4g
d2UgYXJlICJub25lIiBhbmQgZG9uJ3QgbmVlZCB0byBhbHRlciB0aGUgZW1wdHkgaW1hZ2UgYXQg
YWxsLgogICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQpAQCAtNDY3Niw3
ICs0Njc2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBOaW5lUGllY2VJbWFnZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUKICAgICB9CiB9CiAKLXZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZShDU1NWYWx1ZSogdmFsdWUsIE5p
bmVQaWVjZUltYWdlJiBpbWFnZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwTmluZVBpZWNlSW1h
Z2VTbGljZShDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKIHsKICAgICBp
ZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNCb3JkZXJJbWFnZVNsaWNlVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDcwOSw3ICs0NzA5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBO
aW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGkKICAg
ICBpbWFnZS5zZXRGaWxsKGJvcmRlckltYWdlU2xpY2UtPm1fZmlsbCk7CiB9CiAKLUxlbmd0aEJv
eCBDU1NTdHlsZVNlbGVjdG9yOjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUqIHZhbHVl
KQorTGVuZ3RoQm94IFN0eWxlUmVzb2x2ZXI6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1
ZSogdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgpOwpAQCAtNDc1NCw3ICs0NzU0LDcgQEAgTGVu
Z3RoQm94IENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSog
dmFsdWUpCiAgICAgcmV0dXJuIGJveDsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBO
aW5lUGllY2VJbWFnZVJlcGVhdChDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFn
ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoQ1NTVmFsdWUq
IHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDgwMiw3ICs0ODAy
LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdChDU1NW
YWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJgogICAgIGltYWdlLnNldFZlcnRpY2FsUnVsZSh2
ZXJ0aWNhbFJ1bGUpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrRm9yVGV4dFNp
emVBZGp1c3QoKQordm9pZCBTdHlsZVJlc29sdmVyOjpjaGVja0ZvclRleHRTaXplQWRqdXN0KCkK
IHsKICAgICBpZiAobV9zdHlsZS0+dGV4dFNpemVBZGp1c3QoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDgxMiw3ICs0ODEyLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja0ZvclRleHRT
aXplQWRqdXN0KCkKICAgICBtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24obmV3Rm9udERlc2Ny
aXB0aW9uKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja0Zvclpvb21DaGFuZ2Uo
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCit2b2lkIFN0eWxl
UmVzb2x2ZXI6OmNoZWNrRm9yWm9vbUNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICBpZiAoc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA9PSBw
YXJlbnRTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKQogICAgICAgICByZXR1cm47CkBAIC00ODIzLDcg
KzQ4MjMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrRm9yWm9vbUNoYW5nZShSZW5k
ZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbgogICAgIHN0eWxlLT5zZXRGb250RGVz
Y3JpcHRpb24obmV3Rm9udERlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjpjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNoZWNrRm9yR2VuZXJpY0Zh
bWlseUNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkK
IHsKICAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIGNoaWxkRm9udCA9IHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKTsKIApAQCAtNDg2MSwxMyArNDg2MSwxMyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmNoZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRl
clN0eQogICAgIHN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24obmV3Rm9udERlc2NyaXB0aW9uKTsK
IH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRGb250U2l6ZShGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6c2V0Rm9u
dFNpemUoRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGZsb2F0IHNpemUpCiB7CiAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoc2l6ZSk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZSht
X2NoZWNrZXIuZG9jdW1lbnQoKSwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJz
b2x1dGVTaXplKCksIHNpemUsIHVzZVNWR1pvb21SdWxlcygpKSk7CiB9CiAKLWZsb2F0IENTU1N0
eWxlU2VsZWN0b3I6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKERvY3VtZW50KiBk
b2N1bWVudCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBz
cGVjaWZpZWRTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcykKK2Zsb2F0IFN0eWxlUmVzb2x2ZXI6
OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKERvY3VtZW50KiBkb2N1bWVudCwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBzcGVjaWZpZWRTaXpl
LCBib29sIHVzZVNWR1pvb21SdWxlcykKIHsKICAgICBmbG9hdCB6b29tRmFjdG9yID0gMS4wZjsK
ICAgICBpZiAoIXVzZVNWR1pvb21SdWxlcykgewpAQCAtNDg3NiwxMCArNDg3NiwxMCBAQCBmbG9h
dCBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShEb2N1
bWVudCogZG9jdW1lbnQsIFJlbgogICAgICAgICAgICAgem9vbUZhY3RvciAqPSBmcmFtZS0+dGV4
dFpvb21GYWN0b3IoKTsKICAgICB9CiAKLSAgICByZXR1cm4gQ1NTU3R5bGVTZWxlY3Rvcjo6Z2V0
Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoZG9jdW1lbnQsIHpvb21GYWN0b3IsIGlzQWJz
b2x1dGVTaXplLCBzcGVjaWZpZWRTaXplKTsKKyAgICByZXR1cm4gU3R5bGVSZXNvbHZlcjo6Z2V0
Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoZG9jdW1lbnQsIHpvb21GYWN0b3IsIGlzQWJz
b2x1dGVTaXplLCBzcGVjaWZpZWRTaXplKTsKIH0KIAotZmxvYXQgQ1NTU3R5bGVTZWxlY3Rvcjo6
Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqIGRvY3VtZW50LCBmbG9h
dCB6b29tRmFjdG9yLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBzcGVjaWZpZWRTaXplLCBF
U21hcnRNaW5pbXVtRm9yRm9udFNpemUgdXNlU21hcnRNaW5pbXVtRm9yRm9udFNpemUpCitmbG9h
dCBTdHlsZVJlc29sdmVyOjpnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShEb2N1bWVu
dCogZG9jdW1lbnQsIGZsb2F0IHpvb21GYWN0b3IsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0
IHNwZWNpZmllZFNpemUsIEVTbWFydE1pbmltdW1Gb3JGb250U2l6ZSB1c2VTbWFydE1pbmltdW1G
b3JGb250U2l6ZSkKIHsKICAgICAvLyBUZXh0IHdpdGggYSAwcHggZm9udCBzaXplIHNob3VsZCBu
b3QgYmUgdmlzaWJsZSBhbmQgdGhlcmVmb3JlIG5lZWRzIHRvIGJlCiAgICAgLy8gZXhlbXB0IGZy
b20gbWluaW11bSBmb250IHNpemUgcnVsZXMuIEFjaWQzIHJlbGllcyBvbiB0aGlzIGZvciBwaXhl
bC1wZXJmZWN0CkBAIC00OTY0LDcgKzQ5NjQsNyBAQCBzdGF0aWMgY29uc3QgaW50IHN0cmljdEZv
bnRTaXplVGFibGVbZm9udFNpemVUYWJsZU1heCAtIGZvbnRTaXplVGFibGVNaW4gKyAxXVt0bwog
Ly8gZmFjdG9ycyBmb3IgZWFjaCBrZXl3b3JkIHZhbHVlLgogc3RhdGljIGNvbnN0IGZsb2F0IGZv
bnRTaXplRmFjdG9yc1t0b3RhbEtleXdvcmRzXSA9IHsgMC42MGYsIDAuNzVmLCAwLjg5ZiwgMS4w
ZiwgMS4yZiwgMS41ZiwgMi4wZiwgMy4wZiB9OwogCi1mbG9hdCBDU1NTdHlsZVNlbGVjdG9yOjpm
b250U2l6ZUZvcktleXdvcmQoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQga2V5d29yZCwgYm9vbCBz
aG91bGRVc2VGaXhlZERlZmF1bHRTaXplKQorZmxvYXQgU3R5bGVSZXNvbHZlcjo6Zm9udFNpemVG
b3JLZXl3b3JkKERvY3VtZW50KiBkb2N1bWVudCwgaW50IGtleXdvcmQsIGJvb2wgc2hvdWxkVXNl
Rml4ZWREZWZhdWx0U2l6ZSkKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+
c2V0dGluZ3MoKTsKICAgICBpZiAoIXNldHRpbmdzKQpAQCAtNDk5NSw3ICs0OTk1LDcgQEAgc3Rh
dGljIGludCBmaW5kTmVhcmVzdExlZ2FjeUZvbnRTaXplKGludCBwaXhlbEZvbnRTaXplLCBjb25z
dCBUKiB0YWJsZSwgaW50IG11bHQKICAgICByZXR1cm4gdG90YWxLZXl3b3JkcyAtIDE7CiB9CiAK
LWludCBDU1NTdHlsZVNlbGVjdG9yOjpsZWdhY3lGb250U2l6ZShEb2N1bWVudCogZG9jdW1lbnQs
IGludCBwaXhlbEZvbnRTaXplLCBib29sIHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUpCitpbnQg
U3R5bGVSZXNvbHZlcjo6bGVnYWN5Rm9udFNpemUoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgcGl4
ZWxGb250U2l6ZSwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplKQogewogICAgIFNldHRp
bmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpOwogICAgIGlmICghc2V0dGluZ3Mp
CkBAIC01MDQ4LDcgKzUwNDgsNyBAQCBzdGF0aWMgQ29sb3IgY29sb3JGb3JDU1NWYWx1ZShpbnQg
Y3NzVmFsdWVJZCkKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0
ZW1Db2xvcihjc3NWYWx1ZUlkKTsKIH0KIAotQ29sb3IgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29sb3JG
cm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBib29sIGZvclZpc2l0
ZWRMaW5rKSBjb25zdAorQ29sb3IgU3R5bGVSZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBib29sIGZvclZpc2l0ZWRMaW5rKSBjb25zdAog
ewogICAgIGlmICh2YWx1ZS0+aXNSR0JDb2xvcigpKQogICAgICAgICByZXR1cm4gQ29sb3IodmFs
dWUtPmdldFJHQkEzMlZhbHVlKCkpOwpAQCAtNTA3MiwxNyArNTA3MiwxNyBAQCBDb2xvciBDU1NT
dHlsZVNlbGVjdG9yOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSog
dmFsdWUsIGJvb2wgZgogICAgIH0KIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpoYXNTZWxl
Y3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcgJmF0dHJuYW1lKSBjb25zdAorYm9v
bCBTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJp
bmcgJmF0dHJuYW1lKSBjb25zdAogewogICAgIHJldHVybiBtX2ZlYXR1cmVzLmF0dHJzSW5SdWxl
cy5jb250YWlucyhhdHRybmFtZS5pbXBsKCkpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFkZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChjb25zdCBNZWRpYVF1ZXJ5RXhw
KiBleHByLCBib29sIHJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkVmlld3BvcnREZXBl
bmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlFeHAqIGV4cHIsIGJvb2wgcmVz
dWx0KQogewogICAgIG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cy5hcHBlbmQo
YWRvcHRQdHIobmV3IE1lZGlhUXVlcnlSZXN1bHQoKmV4cHIsIHJlc3VsdCkpKTsKIH0KIAotYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjphZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSBjb25zdAorYm9v
bCBTdHlsZVJlc29sdmVyOjphZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSBjb25zdAogewogICAg
IHVuc2lnbmVkIHMgPSBtX3ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuc2l6ZSgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzOyBpKyspIHsKQEAgLTUxMjEsNyArNTEy
MSw3IEBAIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgZ2V0VHJhbnNm
b3JtT3BlcmF0aW9uVHlwZShXZWJLaXRDU1NUcmFuCiAgICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJh
dGlvbjo6Tk9ORTsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1P
cGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIFRyYW5zZm9ybU9wZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpCitib29s
IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFs
dWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgVHJhbnNmb3Jt
T3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucykKIHsKICAgICBpZiAoIWluVmFsdWUgfHwgIWluVmFs
dWUtPmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAgb3V0T3BlcmF0aW9ucy5jbGVhcigpOwpAQCAt
NTQwMiwxNCArNTQwMiwxNCBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBl
IGZpbHRlck9wZXJhdGlvbkZvclR5cGUoV2ViS2l0Q1NTRmlsdGVyVmFsdQogfQogCiAjaWYgRU5B
QkxFKENTU19TSEFERVJTKQotU3R5bGVTaGFkZXIqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlU2hh
ZGVyKENTU1ZhbHVlKiB2YWx1ZSkKK1N0eWxlU2hhZGVyKiBTdHlsZVJlc29sdmVyOjpzdHlsZVNo
YWRlcihDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc1dlYktpdENTU1NoYWRl
clZhbHVlKCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRPclBlbmRpbmdTdHlsZVNoYWRlckZyb21W
YWx1ZShzdGF0aWNfY2FzdDxXZWJLaXRDU1NTaGFkZXJWYWx1ZSo+KHZhbHVlKSk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKLVN0eWxlU2hhZGVyKiBDU1NTdHlsZVNlbGVjdG9yOjpjYWNoZWRPclBlbmRp
bmdTdHlsZVNoYWRlckZyb21WYWx1ZShXZWJLaXRDU1NTaGFkZXJWYWx1ZSogdmFsdWUpCitTdHls
ZVNoYWRlciogU3R5bGVSZXNvbHZlcjo6Y2FjaGVkT3JQZW5kaW5nU3R5bGVTaGFkZXJGcm9tVmFs
dWUoV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHZhbHVlKQogewogICAgIFN0eWxlU2hhZGVyKiBzaGFk
ZXIgPSB2YWx1ZS0+Y2FjaGVkT3JQZW5kaW5nU2hhZGVyKCk7CiAgICAgaWYgKHNoYWRlciAmJiBz
aGFkZXItPmlzUGVuZGluZ1NoYWRlcigpKQpAQCAtNTQxNyw3ICs1NDE3LDcgQEAgU3R5bGVTaGFk
ZXIqIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlZE9yUGVuZGluZ1N0eWxlU2hhZGVyRnJvbVZhbHVl
KFdlYktpdENTU1NoYWQKICAgICByZXR1cm4gc2hhZGVyOwogfQogCi12b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmxvYWRQZW5kaW5nU2hhZGVycygpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5k
aW5nU2hhZGVycygpCiB7CiAgICAgaWYgKCFtX3N0eWxlLT5oYXNGaWx0ZXIoKSB8fCAhbV9oYXNQ
ZW5kaW5nU2hhZGVycykKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ0OSw3ICs1NDQ5LDcgQEAgc3Rh
dGljIGJvb2wgc29ydFBhcmFtZXRlcnNCeU5hbWVDb21wYXJhdG9yKGNvbnN0IFJlZlB0cjxDdXN0
b21GaWx0ZXJQYXJhbWV0ZXI+JgogICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4o
YS0+bmFtZSgpLCBiLT5uYW1lKCkpOwogfQogCi1QYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFt
ZXRlcj4gQ1NTU3R5bGVTZWxlY3Rvcjo6cGFyc2VDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbXRlcihj
b25zdCBTdHJpbmcmIG5hbWUsIENTU1ZhbHVlTGlzdCogdmFsdWVzKQorUGFzc1JlZlB0cjxDdXN0
b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVyTnVtYmVy
UGFyYW10ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUxpc3QqIHZhbHVlcykKIHsKICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyPiBudW1iZXJQYXJhbWV0ZXIgPSBD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmFsdWVzLT5sZW5ndGgoKTsgKytpKSB7CkBAIC01NDY0LDcgKzU0NjQs
NyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gQ1NTU3R5bGVTZWxlY3Rvcjo6
cGFyc2VDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbQogICAgIHJldHVybiBudW1iZXJQYXJhbWV0ZXIu
cmVsZWFzZSgpOwogfQogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OnBhcnNlQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdChDU1NWYWx1ZSogcGFyYW1ldGVyc1ZhbHVlLCBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXJMaXN0JiBwYXJhbWV0ZXJMaXN0KQorYm9vbCBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QoQ1NTVmFsdWUqIHBhcmFtZXRlcnNWYWx1ZSwgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVyTGlzdCkKIHsKICAgICBIYXNoU2V0PFN0cmluZz4g
a25vd25QYXJhbWV0ZXJOYW1lczsKICAgICBDU1NWYWx1ZUxpc3RJdGVyYXRvciBwYXJhbWV0ZXJJ
dGVyYXRvcihwYXJhbWV0ZXJzVmFsdWUpOwpAQCAtNTUyNiw3ICs1NTI2LDcgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QoQ1NTVmFsdWUqIHBh
cmFtZXRlcnNWYWx1ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDdXN0b21G
aWx0ZXJPcGVyYXRpb24+IENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJh
dGlvbihXZWJLaXRDU1NGaWx0ZXJWYWx1ZSogZmlsdGVyVmFsdWUpCitQYXNzUmVmUHRyPEN1c3Rv
bUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uKFdlYktpdENTU0ZpbHRlclZhbHVlKiBmaWx0ZXJWYWx1ZSkKIHsKICAgICBBU1NFUlQoZmls
dGVyVmFsdWUtPmxlbmd0aCgpKTsKIApAQCAtNTYxMCw3ICs1NjEwLDcgQEAgUGFzc1JlZlB0cjxD
dXN0b21GaWx0ZXJPcGVyYXRpb24+IENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZUN1c3RvbUZpbHRl
ck9wZXJhdGlvbigKIH0KICNlbmRpZgogCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZUZp
bHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgRmlsdGVyT3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucykKK2Jv
b2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBGaWx0ZXJPcGVy
YXRpb25zJiBvdXRPcGVyYXRpb25zKQogewogICAgIEFTU0VSVChvdXRPcGVyYXRpb25zLmlzRW1w
dHkoKSk7CiAgICAgCkBAIC01NzQ2LDcgKzU3NDYsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBz
dAogCiAjZW5kaWYKIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NTdHlsZVNlbGVjdG9yOjps
b2FkUGVuZGluZ0ltYWdlKFN0eWxlUGVuZGluZ0ltYWdlKiBwZW5kaW5nSW1hZ2UpCitQYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2UoU3R5bGVQZW5k
aW5nSW1hZ2UqIHBlbmRpbmdJbWFnZSkKIHsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNl
TG9hZGVyKCk7CiAKQEAgLTU3NzEsNyArNTc3MSw3IEBAIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4g
Q1NTU3R5bGVTZWxlY3Rvcjo6bG9hZFBlbmRpbmdJbWFnZShTdHlsZVBlbmRpbmdJbWFnZSogcGVu
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bG9hZFBlbmRpbmdJ
bWFnZXMoKQordm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlcygpCiB7CiAgICAg
aWYgKG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IDA3MDY2YTBjNGM0ZmRjNGZm
ODM5YjA0NTUwYTQ0OTE1N2RkZmM2MTUuLmQ4MTM5NmNiOGMzY2ExM2Y2MDk5NDE2YTE1ZWY1MTk2
YjNlYWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMTE4LDEx
ICsxMTgsMTEgQEAgZW51bSBSdWxlTWF0Y2hpbmdCZWhhdmlvciB7CiB9OwogCiAvLyBUaGlzIGNs
YXNzIHNlbGVjdHMgYSBSZW5kZXJTdHlsZSBmb3IgYSBnaXZlbiBlbGVtZW50IGJhc2VkIG9uIGEg
Y29sbGVjdGlvbiBvZiBzdHlsZXNoZWV0cy4KLWNsYXNzIENTU1N0eWxlU2VsZWN0b3IgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1N0eWxlU2VsZWN0b3IpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK2NsYXNzIFN0eWxlUmVzb2x2ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFN0eWxlUmVzb2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBD
U1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiwgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMp
OwotICAgIH5DU1NTdHlsZVNlbGVjdG9yKCk7CisgICAgU3R5bGVSZXNvbHZlcihEb2N1bWVudCos
IGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKTsKKyAgICB+U3R5bGVSZXNvbHZlcigpOwog
CiAgICAgLy8gVXNpbmcgdGhlc2UgZHVyaW5nIHRyZWUgd2FsayB3aWxsIGFsbG93IHN0eWxlIHNl
bGVjdG9yIHRvIG9wdGltaXplIGNoaWxkIGFuZCBkZXNjZW5kYW50IHNlbGVjdG9yIGxvb2t1cHMu
CiAgICAgdm9pZCBwdXNoUGFyZW50RWxlbWVudChFbGVtZW50Kik7CkBAIC0yNzQsNyArMjc0LDcg
QEAgcHVibGljOgogICAgIHN0cnVjdCBGZWF0dXJlcyB7CiAgICAgICAgIEZlYXR1cmVzKCk7CiAg
ICAgICAgIH5GZWF0dXJlcygpOwotICAgICAgICB2b2lkIGFkZChjb25zdCBDU1NTdHlsZVNlbGVj
dG9yOjpGZWF0dXJlcyYpOworICAgICAgICB2b2lkIGFkZChjb25zdCBTdHlsZVJlc29sdmVyOjpG
ZWF0dXJlcyYpOwogICAgICAgICB2b2lkIGNsZWFyKCk7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+IGlkc0luUnVsZXM7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+IGF0dHJzSW5SdWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9y
LmNwcAppbmRleCA3M2QyNDNmZTA3MWIzMzA3NmFiN2YxOGJiZWIxYWI5YjEzZWY3MjYxLi44ZTU3
Y2Q5MmIwNTI4ZTM2Mzk1YTI4ZWM4MDdjOWU2ZjlmY2E3ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJv
b2wgYXBwbHlSZXN0cmljdG9yKE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgciwgYm9vbCB2YWx1ZSkK
ICAgICByZXR1cm4gciA9PSBNZWRpYVF1ZXJ5OjpOb3QgPyAhdmFsdWUgOiB2YWx1ZTsKIH0KIAot
Ym9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKGNvbnN0IE1lZGlhUXVlcnlTZXQqIHF1ZXJ5
U2V0LCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKSBjb25zdAorYm9vbCBNZWRpYVF1
ZXJ5RXZhbHVhdG9yOjpldmFsKGNvbnN0IE1lZGlhUXVlcnlTZXQqIHF1ZXJ5U2V0LCBTdHlsZVJl
c29sdmVyKiBzdHlsZVNlbGVjdG9yKSBjb25zdAogewogICAgIGlmICghcXVlcnlTZXQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgK
aW5kZXggMjZiNzIzODk2NTRmMjgxOTY2ZTFmOTZiN2M0OTJkNGI2ODIyOGIwOC4uOWVlZTBmMDIw
ZjI4OWNjNzEzYjkzMDVhOGJlN2MwYTJhN2VhZWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5oCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDU1NTdHlsZVNlbGVjdG9y
OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIE1lZGlhUXVlcnlFeHA7
CiBjbGFzcyBNZWRpYVF1ZXJ5U2V0OworY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBTdHlsZVJl
c29sdmVyOwogCiAvKioKICAqIENsYXNzIHRoYXQgZXZhbHVhdGVzIGNzcyBtZWRpYSBxdWVyaWVz
IGFzIGRlZmluZWQgaW4KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIGJvb2wgbWVkaWFU
eXBlTWF0Y2hTcGVjaWZpYyhjb25zdCBjaGFyKiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdDsKIAog
ICAgIC8qKiBFdmFsdWF0ZXMgYSBsaXN0IG9mIG1lZGlhIHF1ZXJpZXMgKi8KLSAgICBib29sIGV2
YWwoY29uc3QgTWVkaWFRdWVyeVNldCosIENTU1N0eWxlU2VsZWN0b3IqID0gMCkgY29uc3Q7Cisg
ICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhUXVlcnlTZXQqLCBTdHlsZVJlc29sdmVyKiA9IDApIGNv
bnN0OwogCiAgICAgLyoqIEV2YWx1YXRlcyBtZWRpYSBxdWVyeSBzdWJleHByZXNzaW9uLCBpZSAi
YW5kIChtZWRpYS1mZWF0dXJlOiB2YWx1ZSkiIHBhcnQgKi8KICAgICBib29sIGV2YWwoY29uc3Qg
TWVkaWFRdWVyeUV4cCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hl
ci5jcHAKaW5kZXggMzYzYmEyMWJkMWVkYzIyZjc3N2JhYTYwMDA4ZTBiODBkZWU0ZTcxNi4uZWVm
MGI5MDkyYTI0MzU5OGNhOWYxMjUwNTE4YzY4ODAyMWRhMmQxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFBhc3NPd25QdHI8TWVk
aWFRdWVyeUV2YWx1YXRvcj4gTWVkaWFRdWVyeU1hdGNoZXI6OnByZXBhcmVFdmFsdWF0b3IoKSBj
b25zdAogICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBtX2RvY3VtZW50LT5zdHls
ZVNlbGVjdG9yKCk7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IG1fZG9jdW1l
bnQtPnN0eWxlU2VsZWN0b3IoKTsKICAgICBpZiAoIXN0eWxlU2VsZWN0b3IpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5
bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKaW5kZXggNjgyZTM0ZjRlYjgwYjk5ZTRmNjQzOTBkNzMxNzllODc2Yzg4NjY4Ni4uZDdjNmFk
NjA5YzExYTI3MjUyYjM4MTk0NzI1ZGNhNjk2NWQ2ZDk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBDb2xv
ciBjb2xvckZyb21TVkdDb2xvckNTU1ZhbHVlKFNWR0NvbG9yKiBzdmdDb2xvciwgY29uc3QgQ29s
b3ImIGZnQ29sb3IpCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQor
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENT
U1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IDA7CkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gSWYgeW91
IGNyYXNoIGhlcmUsIGl0J3MgYmVjYXVzZSB5b3UgYWRkZWQgYSBjc3MgcHJvcGVydHkgYW5kIGFy
ZSBub3QgaGFuZGxpbmcgaXQKLSAgICAgICAgICAgIC8vIGluIGVpdGhlciB0aGlzIHN3aXRjaCBz
dGF0ZW1lbnQgb3IgdGhlIG9uZSBpbiBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5Cisg
ICAgICAgICAgICAvLyBpbiBlaXRoZXIgdGhpcyBzd2l0Y2ggc3RhdGVtZW50IG9yIHRoZSBvbmUg
aW4gU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eQogICAgICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSgwLCAidW5pbXBsZW1lbnRlZCBwcm9wZXJ0eUlEOiAlZCIsIGlkKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IGRi
Nzg0NWY4M2Y5MTRkN2VjMzEyYzZhNTVjYTU1MTdiN2JhMWMyNGIuLmU0MjMxZjcxNzZjY2I4ZWFh
NTk3OGJhYjZhNDRmMjEyZjMyNzMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIEFwcGx5UHJvcGVydHlFeHBhbmRpbmcgewogcHVibGlj
OgogCiAgICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+Ci0gICAgc3RhdGljIGlubGluZSB2
b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0
YXRpYyBpbmxpbmUgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
cikKICAgICB7CiAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUludmFsaWQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGhhbmRs
ZXIuYXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsK
ICAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8b25lPihzZWxlY3Rvcik7CiAgICAgICAgIGFwcGx5
SW5oZXJpdFZhbHVlPHR3bz4oc2VsZWN0b3IpOwpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+Ci0gICAgc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAg
IHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvcikKICAgICB7CiAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUludmFsaWQpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGhh
bmRsZXIuYXBwbHlJbml0aWFsVmFsdWUoc2VsZWN0b3IpOwogICAgIH0KIAotICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0
YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAg
IHsKICAgICAgICAgYXBwbHlJbml0aWFsVmFsdWU8b25lPihzZWxlY3Rvcik7CiAgICAgICAgIGFw
cGx5SW5pdGlhbFZhbHVlPHR3bz4oc2VsZWN0b3IpOwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+Ci0gICAgc3RhdGljIGlu
bGluZSB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVl
KiB2YWx1ZSkKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKGlkID09IENT
U1Byb3BlcnR5SW52YWxpZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNiw3ICsxMDYsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBoYW5kbGVyLmFwcGx5VmFsdWUoc2VsZWN0b3IsIHZhbHVl
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAg
aWYgKCFleHBhbmRWYWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyNiw5ICsxMjYsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBT
ZXR0ZXJUeXBlIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KICAg
ICBzdGF0aWMgR2V0dGVyVHlwZSB2YWx1ZShSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIChz
dHlsZS0+KmdldHRlckZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGljIEluaXRpYWxUeXBlIGluaXRp
YWwoKSB7IHJldHVybiAoKmluaXRpYWxGdW5jdGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKSB7IHNldFZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCB2YWx1ZShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpOyB9Ci0gICAg
c3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Ip
IHsgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGluaXRpYWwoKSk7IH0KLSAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqLCBDU1NWYWx1ZSopIHsgfQorICAgIHN0
YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKSB7IHNl
dFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCB2YWx1ZShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkp
OyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IpIHsgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGluaXRpYWwoKSk7IH0KKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqLCBDU1NWYWx1ZSopIHsgfQogICAg
IHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5
SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFs
dWUpOyB9CiB9OwogCkBAIC0xMzYsNyArMTM2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEdldHRl
clR5cGUsIEdldHRlclR5cGUgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QK
IGNsYXNzIEFwcGx5UHJvcGVydHlEZWZhdWx0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBz
ZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFNldHRlclR5cGUgdmFsdWUpIHsgKHN0eWxlLT4q
c2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAg
ICAgewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCAqc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSkpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBOdW1i
ZXJUeXBlLCBOdW1iZXJUeXBlIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0
CiBjbGFzcyBBcHBseVByb3BlcnR5TnVtYmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBz
ZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIE51bWJlclR5cGUgdmFsdWUpIHsgKHN0eWxlLT4q
c2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAg
ICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogdGVtcGxhdGUgPFN0eWxlSW1h
Z2UqIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJT
dHlsZTo6KnNldHRlckZ1bmN0aW9uKShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KSwgU3R5bGVJbWFn
ZSogKCppbml0aWFsRnVuY3Rpb24pKCksIENTU1Byb3BlcnR5SUQgcHJvcGVydHk+CiBjbGFzcyBB
cHBseVByb3BlcnR5U3R5bGVJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKSB7IChzZWxl
Y3Rvci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShzZWxlY3Rvci0+c3R5bGVJbWFnZShwcm9w
ZXJ0eSwgdmFsdWUpKTsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc2VsZWN0b3ItPnN0eWxlKCktPipzZXR0
ZXJGdW5jdGlvbikoc2VsZWN0b3ItPnN0eWxlSW1hZ2UocHJvcGVydHksIHZhbHVlKSk7IH0KICAg
ICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQogICAgIHsKICAgICAgICAg
UHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8U3R5bGVJ
bWFnZSosIGdldHRlckZ1bmN0aW9uLCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBzZXR0ZXJGdW5j
dGlvbiwgU3R5bGVJbWFnZSosIGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKQEAg
LTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFzQXV0byhSZW5kZXJT
dHlsZSogc3R5bGUpIHsgcmV0dXJuIChzdHlsZS0+Kmhhc0F1dG9GdW5jdGlvbikoKTsgfQogICAg
IHN0YXRpYyB2b2lkIHNldEF1dG8oUmVuZGVyU3R5bGUqIHN0eWxlKSB7IChzdHlsZS0+KnNldEF1
dG9GdW5jdGlvbikoKTsgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBpZiAoaGFzQXV0byhz
ZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpCiAgICAgICAgICAgICBzZXRBdXRvKHNlbGVjdG9yLT5z
dHlsZSgpKTsKQEAgLTE5OCw5ICsxOTgsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzZXRWYWx1
ZShzZWxlY3Rvci0+c3R5bGUoKSwgdmFsdWUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkpKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9y
KiBzZWxlY3RvcikgeyBzZXRBdXRvKHNlbGVjdG9yLT5zdHlsZSgpKTsgfQorICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKSB7IHNldEF1dG8o
c2VsZWN0b3ItPnN0eWxlKCkpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjE5LDEyICsyMTksMTIgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3Bl
cnR5Q2xpcCB7CiBwcml2YXRlOgotICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCisgICAg
c3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZS0+Y29u
dmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IEZyYWN0aW9uQ29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzZWxlY3Rvci0+c3R5bGUoKSwg
c2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSk7CiAgICAgfQogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZh
bHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5o
ZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCk7CiAgICAgICAgIGlm
ICghcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkKQEAgLTIzMywxMyArMjMzLDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IpCiAgICAgewogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0Q2xpcChMZW5ndGgo
KSwgTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSk7CiAgICAgICAgIHNlbGVjdG9yLT5zdHls
ZSgpLT5zZXRIYXNDbGlwKGZhbHNlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3Rh
dGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZh
bHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjczLDE5ICsyNzMsMTkgQEAgdGVtcGxhdGUgPENvbG9ySW5o
ZXJpdCBpbmhlcml0Q29sb3JGcm9tUGFyZW50LAogICAgICAgICAgIENvbG9yICgqaW5pdGlhbEZ1
bmN0aW9uKSgpID0gJmRlZmF1bHRJbml0aWFsQ29sb3I+CiBjbGFzcyBBcHBseVByb3BlcnR5Q29s
b3IgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0
eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgLy8gVmlzaXRlZCBsaW5rIHN0
eWxlIGNhbiBuZXZlciBleHBsaWNpdGx5IGluaGVyaXQgZnJvbSBwYXJlbnQgdmlzaXRlZCBsaW5r
IHN0eWxlIHNvIG5vIHNlcGFyYXRlIGdldHRlcnMgYXJlIG5lZWRlZC4KICAgICAgICAgQ29sb3Ig
Y29sb3IgPSAoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPipnZXR0ZXJGdW5jdGlvbikoKTsKICAg
ICAgICAgYXBwbHlDb2xvclZhbHVlKHNlbGVjdG9yLCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6
IChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+KmRlZmF1bHRGdW5jdGlvbikoKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IpCiAgICAgewogICAgICAgICBhcHBseUNvbG9yVmFsdWUoc2VsZWN0b3IsIGluaXRp
YWxGdW5jdGlvbigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5Q29sb3JWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
ciwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5Q29sb3JWYWx1ZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvciwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKICAgICAg
ICAgaWYgKHNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSkKICAgICAgICAg
ICAgIChzZWxlY3Rvci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShjb2xvcik7CkBAIC0zMTUs
NyArMzE1LDcgQEAgcHVibGljOgogdGVtcGxhdGUgPFRleHREaXJlY3Rpb24gKFJlbmRlclN0eWxl
OjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVu
Y3Rpb24pKFRleHREaXJlY3Rpb24pLCBUZXh0RGlyZWN0aW9uICgqaW5pdGlhbEZ1bmN0aW9uKSgp
PgogY2xhc3MgQXBwbHlQcm9wZXJ0eURpcmVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVl
KQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0PFRleHRE
aXJlY3Rpb24sIGdldHRlckZ1bmN0aW9uLCBUZXh0RGlyZWN0aW9uLCBzZXR0ZXJGdW5jdGlvbiwg
VGV4dERpcmVjdGlvbiwgaW5pdGlhbEZ1bmN0aW9uPjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFs
dWUpOwogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc2VsZWN0b3ItPmVsZW1lbnQoKTsKQEAg
LTM0Niw3ICszNDYsNyBAQCB0ZW1wbGF0ZSA8TGVuZ3RoIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1
bmN0aW9uKSgpIGNvbnN0LAogY2xhc3MgQXBwbHlQcm9wZXJ0eUxlbmd0aCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBMZW5ndGggdmFsdWUp
IHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zODksNyArMzg5LDcgQEAgdGVtcGxhdGUgPFN0cmlu
Z0lkZW50QmVoYXZpb3IgaWRlbnRCZWhhdmlvciwgY29uc3QgQXRvbWljU3RyaW5nJiAoUmVuZGVy
U3R5bGU6OioKIGNsYXNzIEFwcGx5UHJvcGVydHlTdHJpbmcgewogcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9Ci0gICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVl
KQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQxMSw3ICs0MTEsNyBAQCB0ZW1wbGF0ZSA8
TGVuZ3RoU2l6ZSAoUmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAo
UmVuZGVyU3R5bGU6OgogY2xhc3MgQXBwbHlQcm9wZXJ0eUJvcmRlclJhZGl1cyB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBMZW5ndGhTaXpl
IHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFs
dWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDg0LDEwICs0ODQsMTAgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQsCiAgICAgICAgICAgdm9pZCAoRmlsbExheWVyOjoqc2V0RnVuY3Rpb24p
KHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OlNldHRlciksCiAgICAgICAgICAg
dm9pZCAoRmlsbExheWVyOjoqY2xlYXJGdW5jdGlvbikoKSwKICAgICAgICAgICB0eXBlbmFtZSBG
aWxsTGF5ZXJBY2Nlc3NvclR5cGVzPFQ+OjpHZXR0ZXIgKCppbml0aWFsRnVuY3Rpb24pKEVGaWxs
TGF5ZXJUeXBlKSwKLSAgICAgICAgICB2b2lkIChDU1NTdHlsZVNlbGVjdG9yOjoqbWFwRmlsbEZ1
bmN0aW9uKShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgorICAgICAgICAg
IHZvaWQgKFN0eWxlUmVzb2x2ZXI6OiptYXBGaWxsRnVuY3Rpb24pKENTU1Byb3BlcnR5SUQsIEZp
bGxMYXllciosIENTU1ZhbHVlKik+CiBjbGFzcyBBcHBseVByb3BlcnR5RmlsbExheWVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9y
KiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29s
dmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gKHNl
bGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7CiAgICAgICAgIEZpbGxM
YXllciogcHJldkNoaWxkID0gMDsKQEAgLTUxMSw3ICs1MTEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHls
ZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIEZpbGxMYXllciogY3VyckNoaWxk
ID0gKHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7CiAgICAgICAg
IChjdXJyQ2hpbGQtPipzZXRGdW5jdGlvbikoKCppbml0aWFsRnVuY3Rpb24pKGZpbGxMYXllclR5
cGUpKTsKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAoY3VyckNoaWxk
LT4qY2xlYXJGdW5jdGlvbikoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVl
KQogICAgIHsKICAgICAgICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSAoc2VsZWN0b3ItPnN0eWxl
KCktPiphY2Nlc3NMYXllcnNGdW5jdGlvbikoKTsKICAgICAgICAgRmlsbExheWVyKiBwcmV2Q2hp
bGQgPSAwOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAogY2xhc3Mg
QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGggewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNl
dFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgVCB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5j
dGlvbikodmFsdWUpOyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIC8vIG5vdGU6IENTU1Byb3BlcnR5TGV0dGVyL1dvcmRTcGFjaW5nIHJpZ2h0IG5vdyBzZXRz
IHRvIHplcm8gaWYgaXQncyBub3QgYSBwcmltaXRpdmUgdmFsdWUgZm9yIHNvbWUgcmVhc29uLi4u
CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKQEAgLTYwNSwyMSArNjA1
LDIxIEBAIHB1YmxpYzoKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBUIChGb250RGVzY3JpcHRpb246
OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoRm9udERlc2NyaXB0aW9uOjoqc2V0dGVy
RnVuY3Rpb24pKFQpLCBUIGluaXRpYWxWYWx1ZT4KIGNsYXNzIEFwcGx5UHJvcGVydHlGb250IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb24gPSBzZWxlY3Rvci0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAgIChmb250RGVz
Y3JpcHRpb24uKnNldHRlckZ1bmN0aW9uKSgoc2VsZWN0b3ItPnBhcmVudEZvbnREZXNjcmlwdGlv
bigpLipnZXR0ZXJGdW5jdGlvbikoKSk7CiAgICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3Jp
cHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+Zm9udERlc2NyaXB0
aW9uKCk7CiAgICAgICAgIChmb250RGVzY3JpcHRpb24uKnNldHRlckZ1bmN0aW9uKShpbml0aWFs
VmFsdWUpOwogICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTY1MSw3ICs2NTEsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gc2l6ZSAvIDEuMmY7
CiAgICAgfQogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgZmxvYXQgc2l6ZSA9IHNl
bGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7
CiAKQEAgLTY2NSw3ICs2NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvcikKICAgICB7CiAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24g
PSBzZWxlY3Rvci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAgIGZsb2F0IHNp
emUgPSBzZWxlY3Rvci0+Zm9udFNpemVGb3JLZXl3b3JkKHNlbGVjdG9yLT5kb2N1bWVudCgpLCBD
U1NWYWx1ZU1lZGl1bSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7CkBA
IC02NzksNyArNjc5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFs
dWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc1MCw3ICs3NTAsNyBAQCBw
dWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlGb250V2VpZ2h0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzgwLDcgKzc4MCw3IEBAIHB1
YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgcGFyZW50
Rm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPnBhcmVudEZvbnREZXNjcmlwdGlvbigpOwogICAg
ICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNj
cmlwdGlvbigpOwpAQCAtNzkyLDcgKzc5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgc2VsZWN0b3It
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQog
ICAgIHsKICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9y
LT5mb250RGVzY3JpcHRpb24oKTsKIApAQCAtODAzLDcgKzgwMyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBGb250RGVzY3Jp
cHRpb246OkxpZ2F0dXJlc1N0YXRlIGNvbW1vbkxpZ2F0dXJlc1N0YXRlID0gRm9udERlc2NyaXB0
aW9uOjpOb3JtYWxMaWdhdHVyZXNTdGF0ZTsKICAgICAgICAgRm9udERlc2NyaXB0aW9uOjpMaWdh
dHVyZXNTdGF0ZSBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRpb246
Ok5vcm1hbExpZ2F0dXJlc1N0YXRlOwpAQCAtODY5LDcgKzg2OSw3IEBAIHRlbXBsYXRlIDxCb3Jk
ZXJJbWFnZVR5cGUgYm9yZGVySW1hZ2VUeXBlLAogICAgICAgICAgIHZvaWQgKFJlbmRlclN0eWxl
Ojoqc2V0dGVyRnVuY3Rpb24pKGNvbnN0IE5pbmVQaWVjZUltYWdlJik+CiBjbGFzcyBBcHBseVBy
b3BlcnR5Qm9yZGVySW1hZ2UgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUp
CiAgICAgewogICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZTsKICAgICAgICAgaWYgKGJvcmRl
ckltYWdlVHlwZSA9PSBNYXNrKQpAQCAtODkyLDcgKzg5Miw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIGlubGluZSBjb25zdCBOaW5lUGllY2VJbWFnZSYgZ2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0
eWxlKSB7IHJldHVybiB0eXBlID09IEltYWdlID8gc3R5bGUtPmJvcmRlckltYWdlKCkgOiBzdHls
ZS0+bWFza0JveEltYWdlKCk7IH0KICAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0VmFsdWUoUmVu
ZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBOaW5lUGllY2VJbWFnZSYgdmFsdWUpIHsgcmV0dXJuIHR5
cGUgPT0gSW1hZ2UgPyBzdHlsZS0+c2V0Qm9yZGVySW1hZ2UodmFsdWUpIDogc3R5bGUtPnNldE1h
c2tCb3hJbWFnZSh2YWx1ZSk7IH0KIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVy
aXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIE5p
bmVQaWVjZUltYWdlIGltYWdlKGdldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpKSk7CiAgICAgICAg
IHN3aXRjaCAobW9kaWZpZXIpIHsKQEAgLTkxMiw3ICs5MTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBpbWFnZSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAg
c3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAg
ICAgewogICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzZWxlY3Rvci0+c3R5
bGUoKSkpOwogICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7CkBAIC05MzYsNyArOTM2LDcgQEAg
cHVibGljOgogICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgaW1hZ2UpOwogICAg
IH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBOaW5lUGll
Y2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSkpOwogICAgICAgICBzd2l0
Y2ggKG1vZGlmaWVyKSB7CkBAIC05NjIsNyArOTYyLDcgQEAgcHVibGljOgogdGVtcGxhdGUgPENT
U1Byb3BlcnR5SUQgaWQsIFN0eWxlSW1hZ2UqIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9u
KSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShQYXNzUmVmUHRy
PFN0eWxlSW1hZ2U+KSwgU3R5bGVJbWFnZSogKCppbml0aWFsRnVuY3Rpb24pKCk+CiBjbGFzcyBB
cHBseVByb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkg
eyAoc2VsZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2VsZWN0b3ItPnN0eWxlSW1h
Z2UoaWQsIHZhbHVlKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0
dGVyRnVuY3Rpb24pKHNlbGVjdG9yLT5zdHlsZUltYWdlKGlkLCB2YWx1ZSkpOyB9CiAgICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7CiAgICAgICAgIFByb3Bl
cnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFN0eWxlSW1hZ2Uq
LCBnZXR0ZXJGdW5jdGlvbiwgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiwgc2V0dGVyRnVuY3Rpb24s
IFN0eWxlSW1hZ2UqLCBpbml0aWFsRnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7CkBAIC05NzQs
OCArOTc0LDggQEAgZW51bSBDb3VudGVyQmVoYXZpb3Ige0luY3JlbWVudCA9IDAsIFJlc2V0fTsK
IHRlbXBsYXRlIDxDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9yPgogY2xhc3MgQXBwbHlQ
cm9wZXJ0eUNvdW50ZXIgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGVtcHR5RnVuY3Rpb24o
Q1NTU3R5bGVTZWxlY3RvciopIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2b2lkIGVtcHR5RnVuY3Rp
b24oU3R5bGVSZXNvbHZlciopIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgQ291bnRlckRpcmVjdGl2
ZU1hcCYgbWFwID0gc2VsZWN0b3ItPnN0eWxlKCktPmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7
CiAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIHBhcmVudE1hcCA9IHNlbGVjdG9yLT5wYXJl
bnRTdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwpAQCAtMTAwMiw3ICsxMDAyLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1
ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA1MywxOSArMTA1MywxOSBAQCBwdWJsaWM6CiAK
IGNsYXNzIEFwcGx5UHJvcGVydHlDdXJzb3IgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsKICAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvcihzZWxlY3Rvci0+cGFyZW50U3R5bGUo
KS0+Y3Vyc29yKCkpOwogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0Q3Vyc29yTGlzdChz
ZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Y3Vyc29ycygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAg
ICB7CiAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5jbGVhckN1cnNvckxpc3QoKTsKICAgICAg
ICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNv
cigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgc2VsZWN0b3ItPnN0eWxlKCktPmNsZWFyQ3Vyc29yTGlzdCgpOwogICAgICAgICBpZiAodmFs
dWUtPmlzVmFsdWVMaXN0KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHB1YmxpYzoKIAogY2xh
c3MgQXBwbHlQcm9wZXJ0eVRleHRBbGlnbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVl
KiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMjIsNyArMTEyMiw3IEBAIHB1YmxpYzoKIAogY2xh
c3MgQXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUp
CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgRVRleHREZWNvcmF0aW9uIHQgPSBSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CiAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0
SXRlcmF0b3IgaSh2YWx1ZSk7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewpAQCAtMTE0MSw3
ICsxMTQxLDcgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5VW5pY29kZUJpZGkgewog
cHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAo
dmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAgICAgIEVVbmljb2RlQmlkaSByZW5kZXJl
clVuaWNvZGVCaWRpID0gUmVuZGVyU3R5bGU6OmluaXRpYWxVbmljb2RlQmlkaSgpOwpAQCAtMTE3
MSw3ICsxMTcxLDcgQEAgcHVibGljOgogCiBjbGFzcyBBcHBseVByb3BlcnR5TGluZUhlaWdodCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlm
ICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEy
ODUsOSArMTI4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIHB1
YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9y
KikgeyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciopIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShTdHlsZVJlc29sdmVyKikgeyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUo
U3R5bGVSZXNvbHZlciopIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHNlbGVjdG9y
LT5zdHlsZSgpLT5yZXNldFBhZ2VTaXplVHlwZSgpOwogICAgICAgICBMZW5ndGggd2lkdGg7CkBA
IC0xMzU4LDIxICsxMzU4LDIxIEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVRleHRF
bXBoYXNpc1N0eWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVy
aXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIHNlbGVjdG9y
LT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50
ZXh0RW1waGFzaXNGaWxsKCkpOwogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVt
cGhhc2lzTWFyayhzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEVtcGhhc2lzTWFyaygpKTsK
ICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoc2Vs
ZWN0b3ItPnBhcmVudFN0eWxlKCktPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciog
c2VsZWN0b3IpCiAgICAgewogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhh
c2lzRmlsbChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwoKSk7CiAgICAgICAg
IHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dEVtcGhhc2lzTWFyaygpKTsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRl
eHRFbXBoYXNpc0N1c3RvbU1hcmsoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNDdXN0
b21NYXJrKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVl
TGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKQEAgLTE0MjUs
NyArMTQyNSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAogICAgICAgICAgIGJvb2wgKEFuaW1h
dGlvbjo6KnRlc3RGdW5jdGlvbikoKSBjb25zdCwKICAgICAgICAgICB2b2lkIChBbmltYXRpb246
OipjbGVhckZ1bmN0aW9uKSgpLAogICAgICAgICAgIFQgKCppbml0aWFsRnVuY3Rpb24pKCksCi0g
ICAgICAgICAgdm9pZCAoQ1NTU3R5bGVTZWxlY3Rvcjo6Km1hcEZ1bmN0aW9uKShBbmltYXRpb24q
LCBDU1NWYWx1ZSopLAorICAgICAgICAgIHZvaWQgKFN0eWxlUmVzb2x2ZXI6OiptYXBGdW5jdGlv
bikoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKSwKICAgICAgICAgICBBbmltYXRpb25MaXN0KiAoUmVu
ZGVyU3R5bGU6OiphbmltYXRpb25HZXR0ZXJGdW5jdGlvbikoKSwKICAgICAgICAgICBjb25zdCBB
bmltYXRpb25MaXN0KiAoUmVuZGVyU3R5bGU6OippbW11dGFibGVBbmltYXRpb25HZXR0ZXJGdW5j
dGlvbikoKSBjb25zdD4KIGNsYXNzIEFwcGx5UHJvcGVydHlBbmltYXRpb24gewpAQCAtMTQzNSwx
MSArMTQzNSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgdGVzdChjb25zdCBBbmltYXRp
b24qIGFuaW1hdGlvbikgeyByZXR1cm4gKGFuaW1hdGlvbi0+KnRlc3RGdW5jdGlvbikoKTsgfQog
ICAgIHN0YXRpYyB2b2lkIGNsZWFyKEFuaW1hdGlvbiogYW5pbWF0aW9uKSB7IChhbmltYXRpb24t
PipjbGVhckZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGljIFQgaW5pdGlhbCgpIHsgcmV0dXJuICgq
aW5pdGlhbEZ1bmN0aW9uKSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgbWFwKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKSB7IChz
ZWxlY3Rvci0+Km1hcEZ1bmN0aW9uKShhbmltYXRpb24sIHZhbHVlKTsgfQorICAgIHN0YXRpYyB2
b2lkIG1hcChTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgQW5pbWF0aW9uKiBhbmltYXRpb24sIENT
U1ZhbHVlKiB2YWx1ZSkgeyAoc2VsZWN0b3ItPiptYXBGdW5jdGlvbikoYW5pbWF0aW9uLCB2YWx1
ZSk7IH0KICAgICBzdGF0aWMgQW5pbWF0aW9uTGlzdCogYWNjZXNzQW5pbWF0aW9ucyhSZW5kZXJT
dHlsZSogc3R5bGUpIHsgcmV0dXJuIChzdHlsZS0+KmFuaW1hdGlvbkdldHRlckZ1bmN0aW9uKSgp
OyB9CiAgICAgc3RhdGljIGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoUmVuZGVyU3R5
bGUqIHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPippbW11dGFibGVBbmltYXRpb25HZXR0ZXJGdW5j
dGlvbikoKTsgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBBbmltYXRpb25MaXN0KiBsaXN0
ID0gYWNjZXNzQW5pbWF0aW9ucyhzZWxlY3Rvci0+c3R5bGUoKSk7CiAgICAgICAgIGNvbnN0IEFu
aW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBhbmltYXRpb25zKHNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpKTsKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNsZWFyKGxp
c3QtPmFuaW1hdGlvbihpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFs
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJ
bml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBBbmlt
YXRpb25MaXN0KiBsaXN0ID0gYWNjZXNzQW5pbWF0aW9ucyhzZWxlY3Rvci0+c3R5bGUoKSk7CiAg
ICAgICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpCkBAIC0xNDY2LDcgKzE0NjYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBjbGVhcihsaXN0LT5hbmltYXRpb24oaSkpOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVl
KiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBBbmltYXRpb25MaXN0KiBsaXN0
ID0gYWNjZXNzQW5pbWF0aW9ucyhzZWxlY3Rvci0+c3R5bGUoKSk7CiAgICAgICAgIHNpemVfdCBj
aGlsZEluZGV4ID0gMDsKQEAgLTE0OTUsMTkgKzE0OTUsMTkgQEAgcHVibGljOgogCiBjbGFzcyBB
cHBseVByb3BlcnR5T3V0bGluZVN0eWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAg
ICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6
Om91dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpzZXRPdXRs
aW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxp
bmVTdHlsZUlzQXV0bz46OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKICAgICAgICAgQXBw
bHlQcm9wZXJ0eURlZmF1bHRCYXNlPEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpvdXRsaW5l
U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGUsIEVCb3Jk
ZXJTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+OjphcHBseUluaGVyaXRW
YWx1ZShzZWxlY3Rvcik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFs
dWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0
aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBBcHBseVBy
b3BlcnR5RGVmYXVsdEJhc2U8T3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5
bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlSXNB
dXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRsaW5lU3R5bGVJc0F1
dG8+OjphcHBseUluaXRpYWxWYWx1ZShzZWxlY3Rvcik7CiAgICAgICAgIEFwcGx5UHJvcGVydHlE
ZWZhdWx0QmFzZTxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlLCBFQm9y
ZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6YXBwbHlJbml0aWFsVmFsdWUoc2VsZWN0
b3IpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAg
ICBBcHBseVByb3BlcnR5RGVmYXVsdDxPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6Om91dGxp
bmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5
bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVTdHls
ZUlzQXV0bz46OmFwcGx5VmFsdWUoc2VsZWN0b3IsIHZhbHVlKTsKICAgICAgICAgQXBwbHlQcm9w
ZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZSwgRUJv
cmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5VmFsdWUoc2VsZWN0b3IsIHZh
bHVlKTsKQEAgLTE1MTgsNyArMTUxOCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0
eVJlc2l6ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE1NDgsNyArMTU0OCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eVZl
cnRpY2FsQWxpZ24gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAg
ewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVy
dHlBc3BlY3RSYXRpbyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhl
cml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBpZiAoIXNl
bGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5oYXNBc3BlY3RSYXRpbygpKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTU3OSwxNCArMTU3OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+
YXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJ
bml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8oUmVuZGVyU3R5bGU6OmluaXRp
YWxIYXNBc3BlY3RSYXRpbygpKTsKICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVj
dFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5h
dG9yKCkpOwogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0
b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb051bWVyYXRvcigpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+
aXNBc3BlY3RSYXRpb1ZhbHVlKCkpIHsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5z
ZXRIYXNBc3BlY3RSYXRpbyhmYWxzZSk7CkBAIC0xNjA2LDI2ICsxNjA2LDI2IEBAIHB1YmxpYzoK
IAogY2xhc3MgQXBwbHlQcm9wZXJ0eVpvb20gewogcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBy
ZXNldEVmZmVjdGl2ZVpvb20oQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGlj
IHZvaWQgcmVzZXRFZmZlY3RpdmVab29tKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yKQogICAgIHsK
ICAgICAgICAgLy8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0LiBUaGlzIGFsbG93cyB0aGUgc2V0
Wm9vbSBtZXRob2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3IHpvb20gaW4gZWZmZWN0Lgog
ICAgICAgICBzZWxlY3Rvci0+c2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvci0+cGFyZW50U3R5bGUo
KSA/IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5lZmZlY3RpdmVab29tKCkgOiBSZW5kZXJTdHls
ZTo6aW5pdGlhbFpvb20oKSk7CiAgICAgfQogCiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBw
bHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAg
ICAgICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwogICAgICAgICBzZWxlY3Rvci0+c2V0
Wm9vbShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+em9vbSgpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikK
ICAgICB7CiAgICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7CiAgICAgICAgIHNl
bGVjdG9yLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NW
YWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKQEAgLTE2NTks
NyArMTY1OSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgQXBwbHlQcm9wZXJ0eURpc3BsYXkgewogcHJp
dmF0ZToKLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZERpc3BsYXlWYWx1ZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgRURpc3BsYXkgZGlzcGxheVByb3BlcnR5VmFsdWUpCisgICAg
c3RhdGljIGlubGluZSBib29sIGlzVmFsaWREaXNwbGF5VmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIEVEaXNwbGF5IGRpc3BsYXlQcm9wZXJ0eVZhbHVlKQogICAgIHsKICNpZiBFTkFCTEUo
U1ZHKQogICAgICAgICBpZiAoc2VsZWN0b3ItPmVsZW1lbnQoKSAmJiBzZWxlY3Rvci0+ZWxlbWVu
dCgpLT5pc1NWR0VsZW1lbnQoKSAmJiBzZWxlY3Rvci0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0g
Tk9QU0VVRE8pCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0
VmFsdWUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBFRGlzcGxheSBk
aXNwbGF5ID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmRpc3BsYXkoKTsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRGlzcGxheVZhbHVlKHNlbGVjdG9yLCBkaXNwbGF5KSkKQEAgLTE2NzksMTIgKzE2
NzksMTIgQEAgcHVibGljOgogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0RGlzcGxheShk
aXNwbGF5KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikKICAgICB7CiAgICAgICAgIHNlbGVjdG9yLT5zdHls
ZSgpLT5zZXREaXNwbGF5KFJlbmRlclN0eWxlOjppbml0aWFsRGlzcGxheSgpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTcwNSwyMSArMTcw
NSwyMSBAQCBwdWJsaWM6CiAKIGNsYXNzIEFwcGx5UHJvcGVydHlGbGV4IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
cikKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvcikKICAgICB7CiAgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxmbG9hdCwgJlJl
bmRlclN0eWxlOjpwb3NpdGl2ZUZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldFBvc2l0aXZl
RmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE5lZ2F0aXZlRmxleD46OmFwcGx5SW5o
ZXJpdFZhbHVlKHNlbGVjdG9yKTsKICAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPGZs
b2F0LCAmUmVuZGVyU3R5bGU6Om5lZ2F0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6c2V0
TmVnYXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0eWxlOjppbml0aWFsUG9zaXRpdmVGbGV4Pjo6
YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOwogICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVs
dEJhc2U8TGVuZ3RoLCAmUmVuZGVyU3R5bGU6OmZsZXhQcmVmZXJyZWRTaXplLCBMZW5ndGgsICZS
ZW5kZXJTdHlsZTo6c2V0RmxleFByZWZlcnJlZFNpemUsIExlbmd0aCwgJlJlbmRlclN0eWxlOjpp
bml0aWFsRmxleFByZWZlcnJlZFNpemU+OjphcHBseUluaGVyaXRWYWx1ZShzZWxlY3Rvcik7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IpCiAgICAgewogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0UG9z
aXRpdmVGbGV4KFJlbmRlclN0eWxlOjppbml0aWFsUG9zaXRpdmVGbGV4KCkpOwogICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0TmVnYXRpdmVGbGV4KFJlbmRlclN0eWxlOjppbml0aWFsTmVn
YXRpdmVGbGV4KCkpOwogICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0RmxleFByZWZlcnJl
ZFNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4UHJlZmVycmVkU2l6ZSgpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwpAQCAt
MTc3NiwxOCArMTc3NiwxOCBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigpCiAgICAgICAg
IG1fcHJvcGVydHlNYXBbaV0gPSBQcm9wZXJ0eUhhbmRsZXIoKTsKIAogICAgIC8vIFBsZWFzZSBr
ZWVwIENTUyBwcm9wZXJ0eSBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlci4KLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQXBwbHlQcm9wZXJ0
eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1l
bnQsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExh
eWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFj
aG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1l
bnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxB
dHRhY2htZW50LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVI
YW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDbGlwLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91
bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXND
bGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVy
OjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJkNTU1N0eWxlU2VsZWN0
b3I6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIEJhY2tn
cm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJl
bmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQs
ICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxs
TGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50
LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBBcHBseVBy
b3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBCYWNr
Z3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZS
ZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNDbGlwU2V0LCAmRmls
bExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVyOjpjbGVhckNsaXAs
ICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxDbGlw
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50LCAm
UmVuZGVyU3R5bGU6OmJhY2tncm91bmRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRCYWNrZ3JvdW5k
Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsICZSZW5k
ZXJTdHlsZTo6aW52YWxpZENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIEFwcGx5UHJvcGVydHlGaWxsTGF5
ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBCYWNrZ3JvdW5kRmls
bExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHls
ZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNJbWFnZVNldCwgJkZpbGxMYXllcjo6
aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExheWVyOjpjbGVhckltYWdlLCAmRmls
bExheWVyOjppbml0aWFsRmlsbEltYWdlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEltYWdl
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kT3JpZ2luLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRPcmlnaW4sIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAm
RmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3JpZ2luLCAmRmlsbExheWVyOjpz
ZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmlsbExheWVyOjppbml0aWFsRmls
bE9yaWdpbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxPcmlnaW4+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwg
QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUltYWdlKiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2UsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3Vu
ZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0lt
YWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UsICZGaWxsTGF5
ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZTdHlsZVJlc29s
dmVyOjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8
RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgQmFja2dyb3VuZEZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJh
Y2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmln
aW4sICZGaWxsTGF5ZXI6OnNldE9yaWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxs
TGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2luLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbj46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b25ZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExh
eWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwg
JkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQb3NpdGlvbiwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxs
WFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0
aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAm
UmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dy
b3VuZExheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3NpdGlv
biwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBCYWNrZ3JvdW5kRmlsbExh
eWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6
YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6
OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZTdHlsZVJlc29sdmVy
OjptYXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBCYWNrZ3JvdW5kRmls
bExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHls
ZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5
ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVh
cllQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZTdHlsZVJlc29s
dmVyOjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBBcHBseVByb3BlcnR5RXhwYW5k
aW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBCYWNrZ3JvdW5k
RmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJT
dHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAmRmlsbExh
eWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpjbGVhclJl
cGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJkNTU1N0eWxlU2VsZWN0b3I6
Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxF
RmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQmFja2dyb3VuZEZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6
cmVwZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZ
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBG
aWxsUmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUs
IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5
ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6
OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxT
aXplLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBBcHBs
eVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXRYLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRM
YXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNSZXBl
YXRYU2V0LCAmRmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmls
bExheWVyOjpjbGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJlN0
eWxlUmVzb2x2ZXI6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQXBwbHlQcm9wZXJ0
eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQmFj
a2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAm
UmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwg
JkZpbGxMYXllcjo6cmVwZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6
Y2xlYXJSZXBlYXRZLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZTdHlsZVJlc29s
dmVyOjptYXBGaWxsUmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8
RmlsbFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEJhY2tncm91bmRGaWxsTGF5ZXIs
ICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNr
Z3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZG
aWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5p
dGlhbEZpbGxTaXplLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVy
KCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlciwgQXBwbHlQcm9w
ZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIEFw
cGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRG
cm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6
OnNldEJvcmRlckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQm9yZGVy
Qm90dG9tQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwpAQCAt
MTg4OSwxOSArMTg4OSwxOSBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigpCiAgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIEFwcGx5UHJvcGVydHlVbmlj
b2RlQmlkaTo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduLCBBcHBseVByb3BlcnR5VmVydGljYWxBbGlnbjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5
LCBFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5LCBFVmlzaWJpbGl0eSwg
JlJlbmRlclN0eWxlOjppbml0aWFsVmlzaWJpbGl0eT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIEFwcGx5
UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkZWxheSwgJkFuaW1hdGlvbjo6
c2V0RGVsYXksICZBbmltYXRpb246OmlzRGVsYXlTZXQsICZBbmltYXRpb246OmNsZWFyRGVsYXks
ICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EZWxheSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1h
cEFuaW1hdGlvbkRlbGF5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJT
dHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBBcHBseVByb3BlcnR5QW5p
bWF0aW9uPEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpkaXJlY3Rp
b24sICZBbmltYXRpb246OnNldERpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25TZXQs
ICZBbmltYXRpb246OmNsZWFyRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9u
RGlyZWN0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAmUmVu
ZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNy
ZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRHVyYXRpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0
aW9uOjpkdXJhdGlvbiwgJkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246OmlzRHVy
YXRpb25TZXQsICZBbmltYXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRpYWxB
bmltYXRpb25EdXJhdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkR1cmF0aW9u
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9u
cz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248dW5zaWduZWQs
ICZBbmltYXRpb246OmZpbGxNb2RlLCAmQW5pbWF0aW9uOjpzZXRGaWxsTW9kZSwgJkFuaW1hdGlv
bjo6aXNGaWxsTW9kZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJGaWxsTW9kZSwgJkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvbkZpbGxNb2RlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9u
RmlsbE1vZGUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjph
bmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwgQXBwbHlQcm9wZXJ0eUFuaW1h
dGlvbjxkb3VibGUsICZBbmltYXRpb246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJ
dGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlv
bjo6Y2xlYXJJdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJh
dGlvbkNvdW50LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQs
ICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25z
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25OYW1lLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFN0cmluZyYs
ICZBbmltYXRpb246Om5hbWUsICZBbmltYXRpb246OnNldE5hbWUsICZBbmltYXRpb246OmlzTmFt
ZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJOYW1lLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9u
TmFtZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbk5hbWUsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25Q
bGF5U3RhdGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248RUFuaW1QbGF5U3RhdGUsICZBbmltYXRp
b246OnBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6c2V0UGxheVN0YXRlLCAmQW5pbWF0aW9uOjppc1Bs
YXlTdGF0ZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQbGF5U3RhdGUsICZBbmltYXRpb246OmluaXRp
YWxBbmltYXRpb25QbGF5U3RhdGUsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25QbGF5
U3RhdGUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmlt
YXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVu
Y3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWlu
Z0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBB
bmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAm
UmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LCBBcHBseVByb3BlcnR5
QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5
LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0
aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25E
ZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1h
dGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxBbmlt
YXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6ZGlyZWN0aW9uLCAmQW5pbWF0
aW9uOjpzZXREaXJlY3Rpb24sICZBbmltYXRpb246OmlzRGlyZWN0aW9uU2V0LCAmQW5pbWF0aW9u
OjpjbGVhckRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRpcmVjdGlvbiwg
JlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nl
c3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0
aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24s
ICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5pbWF0aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5p
bWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRHVyYXRp
b24sICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EdXJhdGlvbiwgJlJlbmRlclN0eWxlOjph
Y2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZp
bGxNb2RlLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPHVuc2lnbmVkLCAmQW5pbWF0aW9uOjpmaWxs
TW9kZSwgJkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUsICZBbmltYXRpb246OmlzRmlsbE1vZGVTZXQs
ICZBbmltYXRpb246OmNsZWFyRmlsbE1vZGUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25G
aWxsTW9kZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkZpbGxNb2RlLCAmUmVuZGVyU3R5
bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uSXRlcmF0aW9uQ291bnQsIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0
aW9uOjppdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6c2V0SXRlcmF0aW9uQ291bnQsICZBbmlt
YXRpb246OmlzSXRlcmF0aW9uQ291bnRTZXQsICZBbmltYXRpb246OmNsZWFySXRlcmF0aW9uQ291
bnQsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCwgJlN0eWxlUmVz
b2x2ZXI6Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0Fu
aW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgQXBw
bHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBTdHJpbmcmLCAmQW5pbWF0aW9uOjpuYW1lLCAmQW5p
bWF0aW9uOjpzZXROYW1lLCAmQW5pbWF0aW9uOjppc05hbWVTZXQsICZBbmltYXRpb246OmNsZWFy
TmFtZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbk5hbWUsICZTdHlsZVJlc29sdmVyOjpt
YXBBbmltYXRpb25OYW1lLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJT
dHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBBcHBseVByb3BlcnR5QW5p
bWF0aW9uPEVBbmltUGxheVN0YXRlLCAmQW5pbWF0aW9uOjpwbGF5U3RhdGUsICZBbmltYXRpb246
OnNldFBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6aXNQbGF5U3RhdGVTZXQsICZBbmltYXRpb246OmNs
ZWFyUGxheVN0YXRlLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uUGxheVN0YXRlLCAmU3R5
bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uUGxheVN0YXRlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0Fu
aW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdG
dW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdGdW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xl
YXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJT
dHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBcHBl
YXJhbmNlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxDb250cm9sUGFydCwgJlJlbmRlclN0eWxlOjph
cHBlYXJhbmNlLCBDb250cm9sUGFydCwgJlJlbmRlclN0eWxlOjpzZXRBcHBlYXJhbmNlLCBDb250
cm9sUGFydCwgJlJlbmRlclN0eWxlOjppbml0aWFsQXBwZWFyYW5jZT46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW8s
IEFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHksIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVCYWNrZmFjZVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6YmFja2ZhY2VW
aXNpYmlsaXR5LCBFQmFja2ZhY2VWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OnNldEJhY2tmYWNl
VmlzaWJpbGl0eSwgRUJhY2tmYWNlVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjppbml0aWFsQmFj
a2ZhY2VWaXNpYmlsaXR5Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q2xpcCk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENvbXBvc2l0ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxDb21wb3NpdGVPcGVyYXRvciwgQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAm
UmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dy
b3VuZExheWVycywgJkZpbGxMYXllcjo6aXNDb21wb3NpdGVTZXQsICZGaWxsTGF5ZXI6OmNvbXBv
c2l0ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9zaXRlLCAmRmlsbExheWVyOjpjbGVhckNvbXBvc2l0
ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUsICZDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5Rmls
bExheWVyPENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21w
b3NpdGUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3Vu
ZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0Nv
bXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRlLCAmRmlsbExheWVyOjpzZXRDb21wb3Np
dGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENv
bXBvc2l0ZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxDb21wb3NpdGU+OjpjcmVhdGVIYW5kbGVy
KCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRP
cmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbik7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFNpemUpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZp
dCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlckZpdCwgJlJlbmRlclN0eWxlOjpib3JkZXJG
aXQsIEVCb3JkZXJGaXQsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyRml0LCBFQm9yZGVyRml0LCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwpAQCAtMTk2
MSwyNCArMTk2MSwyNCBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigpCiAgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVN
YXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6Om1hcnF1ZWVEaXJlY3Rpb24sIEVNYXJxdWVl
RGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OnNldE1hcnF1ZWVEaXJlY3Rpb24sIEVNYXJxdWVlRGly
ZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJxdWVlRGlyZWN0aW9uPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
U3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVNYXJxdWVlQmVoYXZpb3IsICZSZW5kZXJTdHls
ZTo6bWFycXVlZUJlaGF2aW9yLCBFTWFycXVlZUJlaGF2aW9yLCAmUmVuZGVyU3R5bGU6OnNldE1h
cnF1ZWVCZWhhdmlvciwgRU1hcnF1ZWVCZWhhdmlvciwgJlJlbmRlclN0eWxlOjppbml0aWFsTWFy
cXVlZUJlaGF2aW9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxF
RmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIE1hc2tGaWxs
TGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNr
TGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1l
bnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVu
dCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPEVGaWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgTWFz
a0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNldCwgJkZpbGxMYXllcjo6YXR0
YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZpbGxMYXllcjo6Y2xlYXJBdHRh
Y2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQsICZTdHlsZVJlc29sdmVy
OjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBBcHBseVByb3BlcnR5Qm9yZGVy
SW1hZ2U8TWFzaywgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsICZSZW5kZXJTdHlsZTo6
bWFza0JveEltYWdlLCAmUmVuZGVyU3R5bGU6OnNldE1hc2tCb3hJbWFnZT46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveElt
YWdlT3V0c2V0LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjxNYXNrLCBPdXRzZXQ+
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8
TWFzaywgUmVwZWF0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSwgQXBwbHlQcm9wZXJ0eUJvcmRlcklt
YWdlTW9kaWZpZXI8TWFzaywgU2xpY2U+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgQXBwbHlQcm9w
ZXJ0eUJvcmRlckltYWdlU291cmNlPENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNl
LCAmUmVuZGVyU3R5bGU6Om1hc2tCb3hJbWFnZVNvdXJjZSwgJlJlbmRlclN0eWxlOjpzZXRNYXNr
Qm94SW1hZ2VTb3VyY2UsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hc2tCb3hJbWFnZVNvdXJjZT46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlV2lkdGgsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPE1h
c2ssIFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjph
Y2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6Omlz
Q2xpcFNldCwgJkZpbGxMYXllcjo6Y2xpcCwgJkZpbGxMYXllcjo6c2V0Q2xpcCwgJkZpbGxMYXll
cjo6Y2xlYXJDbGlwLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAsICZDU1NTdHlsZVNlbGVj
dG9yOjptYXBGaWxsQ2xpcD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxDb21wb3NpdGVPcGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBNYXNr
RmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6
bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNDb21wb3NpdGVTZXQsICZGaWxsTGF5ZXI6OmNvbXBv
c2l0ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9zaXRlLCAmRmlsbExheWVyOjpjbGVhckNvbXBvc2l0
ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUsICZDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8U3R5
bGVJbWFnZSosIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBNYXNrRmlsbExheWVyLCAmUmVu
ZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZp
bGxMYXllcjo6aXNJbWFnZVNldCwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldElt
YWdlLCAmRmlsbExheWVyOjpjbGVhckltYWdlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdl
LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBBcHBseVBy
b3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIE1h
c2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxl
OjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3JpZ2lu
LCAmRmlsbExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmlsbExh
eWVyOjppbml0aWFsRmlsbE9yaWdpbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxPcmlnaW4+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tDbGlwLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tM
YXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNDbGlwU2V0LCAm
RmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVyOjpjbGVhckNs
aXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxD
bGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENvbXBvc2l0ZU9w
ZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIE1hc2tGaWxsTGF5ZXIsICZS
ZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAm
RmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRlLCAmRmlsbExh
eWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbENvbXBvc2l0ZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxDb21wb3NpdGU+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUltYWdlKiwgQ1NTUHJv
cGVydHlXZWJraXRNYXNrSW1hZ2UsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNz
TWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0ltYWdl
U2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UsICZGaWxsTGF5ZXI6
OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZTdHlsZVJlc29sdmVy
OjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZp
bGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgTWFza0ZpbGxMYXllciwgJlJlbmRl
clN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxs
TGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxsTGF5ZXI6OnNldE9y
aWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3Jp
Z2luLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBBcHBs
eVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZPjo6Y3JlYXRlSGFuZGxlcigp
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Y
LCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25YLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZS
ZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxs
TGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpj
bGVhclhQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZDU1NTdHls
ZVNlbGVjdG9yOjptYXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBNYXNr
RmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6
bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3NpdGlv
biwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBNYXNrRmlsbExheWVyLCAm
UmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywg
JkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxM
YXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQb3NpdGlvbiwgJkZpbGxMYXll
cjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZTdHlsZVJlc29sdmVyOjptYXBGaWxsWFBvc2l0aW9u
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNZ
UG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0
aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZ
UG9zaXRpb24sICZTdHlsZVJlc29sdmVyOjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRY
LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRYLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMs
ICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAmRmls
bExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpjbGVh
clJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJkNTU1N0eWxlU2VsZWN0
b3I6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgTWFza0ZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXll
cnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVwZWF0WSwgJkZpbGxM
YXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbFJlcGVhdFksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WT46OmNy
ZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
TWFza1NpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1NpemUsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVy
cywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxs
TGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwg
JkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNp
emU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXRYLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6
aXNSZXBlYXRYU2V0LCAmRmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRY
LCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0
WCwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
WSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6
cmVwZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZ
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZTdHlsZVJlc29sdmVyOjptYXBGaWxs
UmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0TWFza1NpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENT
U1Byb3BlcnR5V2Via2l0TWFza1NpemUsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNj
ZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1Np
emVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6
OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAmU3R5bGVSZXNvbHZlcjo6
bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCAmUmVuZGVyU3R5
bGU6Om1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIEVNYXRjaE5lYXJlc3RNYWlsQmxv
Y2txdW90ZUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3Rl
Q29sb3IsIEVNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsK
ICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQXBwbHlQ
cm9wZXJ0eURlZmF1bHQ8RU5CU1BNb2RlLCAmUmVuZGVyU3R5bGU6Om5ic3BNb2RlLCBFTkJTUE1v
ZGUsICZSZW5kZXJTdHlsZTo6c2V0TkJTUE1vZGUsIEVOQlNQTW9kZSwgJlJlbmRlclN0eWxlOjpp
bml0aWFsTkJTUE1vZGU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLCBBcHBseVByb3BlcnR5RXhwYW5k
aW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YLCBD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWT46OmNyZWF0ZUhhbmRsZXIoKSk7CkBA
IC0yMDAzLDEwICsyMDAzLDEwIEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBBcHBs
eVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0
eWxlOjpzZXRUcmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1P
cmlnaW5ZPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDxm
bG9hdCwgJlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OnNldFRy
YW5zZm9ybU9yaWdpblosICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblo+Ojpj
cmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybVN0eWxlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVHJhbnNmb3JtU3R5bGUzRCwg
JlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1TdHlsZTNELCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRl
clN0eWxlOjpzZXRUcmFuc2Zvcm1TdHlsZTNELCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0
eWxlOjppbml0aWFsVHJhbnNmb3JtU3R5bGUzRD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LCBBcHBseVBy
b3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNl
dERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAm
QW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBB
bmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0
eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5p
bWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0
aW9uLCAmQW5pbWF0aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9u
LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24sICZDU1NTdHlsZVNlbGVjdG9y
OjptYXBBbmltYXRpb25EdXJhdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywg
JlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBBcHBseVBy
b3BlcnR5QW5pbWF0aW9uPENTU1Byb3BlcnR5SUQsICZBbmltYXRpb246OnByb3BlcnR5LCAmQW5p
bWF0aW9uOjpzZXRQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9wZXJ0eVNldCwgJkFuaW1hdGlv
bjo6Y2xlYXJQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblByb3BlcnR5LCAm
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUHJvcGVydHksICZSZW5kZXJTdHlsZTo6YWNj
ZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25U
aW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNl
dFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0
aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlv
biwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwg
JkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0Rl
bGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uRGVsYXksICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxl
OjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6
ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5pbWF0aW9uOjppc0R1cmF0aW9u
U2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uRHVyYXRpb24sICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EdXJhdGlvbiwgJlJlbmRl
clN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvblByb3BlcnR5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPENTU1Byb3BlcnR5SUQs
ICZBbmltYXRpb246OnByb3BlcnR5LCAmQW5pbWF0aW9uOjpzZXRQcm9wZXJ0eSwgJkFuaW1hdGlv
bjo6aXNQcm9wZXJ0eVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvblByb3BlcnR5LCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uUHJv
cGVydHksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJh
bnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1h
dGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5n
RnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1Rp
bWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0
aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZTdHlsZVJlc29sdmVyOjptYXBB
bmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywg
JlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIEFwcGx5UHJvcGVydHlEZWZh
dWx0PEVVc2VyRHJhZywgJlJlbmRlclN0eWxlOjp1c2VyRHJhZywgRVVzZXJEcmFnLCAmUmVuZGVy
U3R5bGU6OnNldFVzZXJEcmFnLCBFVXNlckRyYWcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJE
cmFnPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRVc2VyTW9kaWZ5LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVXNlck1vZGlmeSwgJlJl
bmRlclN0eWxlOjp1c2VyTW9kaWZ5LCBFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxlOjpzZXRVc2Vy
TW9kaWZ5LCBFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxlOjppbml0aWFsVXNlck1vZGlmeT46OmNy
ZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
VXNlclNlbGVjdCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVVzZXJTZWxlY3QsICZSZW5kZXJTdHls
ZTo6dXNlclNlbGVjdCwgRVVzZXJTZWxlY3QsICZSZW5kZXJTdHlsZTo6c2V0VXNlclNlbGVjdCwg
RVVzZXJTZWxlY3QsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJTZWxlY3Q+OjpjcmVhdGVIYW5k
bGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCmluZGV4IDY5MmVhYjYzMmY2ZTdhNjRl
NWMwZjg3MmI5Njg3NjZlMGJjYzczNWMuLmJjY2U4ZjRiODEyNjNmNjEwY2YwMDdlNDVmMTA4ODc2
NGQ1YzM0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmgKQEAgLTMxLDIwICszMSwyMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU1N0eWxlU2VsZWN0b3I7CiBjbGFz
cyBDU1NWYWx1ZTsKIGNsYXNzIFN0eWxlQnVpbGRlcjsKK2NsYXNzIFN0eWxlUmVzb2x2ZXI7CiAK
IGNsYXNzIFByb3BlcnR5SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqSW5o
ZXJpdEZ1bmN0aW9uKShDU1NTdHlsZVNlbGVjdG9yKik7Ci0gICAgdHlwZWRlZiB2b2lkICgqSW5p
dGlhbEZ1bmN0aW9uKShDU1NTdHlsZVNlbGVjdG9yKik7Ci0gICAgdHlwZWRlZiB2b2lkICgqQXBw
bHlGdW5jdGlvbikoQ1NTU3R5bGVTZWxlY3RvciosIENTU1ZhbHVlKik7CisgICAgdHlwZWRlZiB2
b2lkICgqSW5oZXJpdEZ1bmN0aW9uKShTdHlsZVJlc29sdmVyKik7CisgICAgdHlwZWRlZiB2b2lk
ICgqSW5pdGlhbEZ1bmN0aW9uKShTdHlsZVJlc29sdmVyKik7CisgICAgdHlwZWRlZiB2b2lkICgq
QXBwbHlGdW5jdGlvbikoU3R5bGVSZXNvbHZlciosIENTU1ZhbHVlKik7CiAgICAgUHJvcGVydHlI
YW5kbGVyKCkgOiBtX2luaGVyaXQoMCksIG1faW5pdGlhbCgwKSwgbV9hcHBseSgwKSB7IH0KICAg
ICBQcm9wZXJ0eUhhbmRsZXIoSW5oZXJpdEZ1bmN0aW9uIGluaGVyaXQsIEluaXRpYWxGdW5jdGlv
biBpbml0aWFsLCBBcHBseUZ1bmN0aW9uIGFwcGx5KSA6IG1faW5oZXJpdChpbmhlcml0KSwgbV9p
bml0aWFsKGluaXRpYWwpLCBtX2FwcGx5KGFwcGx5KSB7IH0KLSAgICB2b2lkIGFwcGx5SW5oZXJp
dFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKSBjb25zdCB7IEFTU0VSVChtX2luaGVy
aXQpOyAoKm1faW5oZXJpdCkoc2VsZWN0b3IpOyB9Ci0gICAgdm9pZCBhcHBseUluaXRpYWxWYWx1
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikgY29uc3QgeyBBU1NFUlQobV9pbml0aWFsKTsg
KCptX2luaXRpYWwpKHNlbGVjdG9yKTsgfQotICAgIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdCB7IEFTU0VSVChtX2FwcGx5
KTsgKCptX2FwcGx5KShzZWxlY3RvciwgdmFsdWUpOyB9CisgICAgdm9pZCBhcHBseUluaGVyaXRW
YWx1ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvcikgY29uc3QgeyBBU1NFUlQobV9pbmhlcml0KTsg
KCptX2luaGVyaXQpKHNlbGVjdG9yKTsgfQorICAgIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IpIGNvbnN0IHsgQVNTRVJUKG1faW5pdGlhbCk7ICgqbV9pbml0
aWFsKShzZWxlY3Rvcik7IH0KKyAgICB2b2lkIGFwcGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QgeyBBU1NFUlQobV9hcHBseSk7ICgqbV9hcHBs
eSkoc2VsZWN0b3IsIHZhbHVlKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5oZXJpdCAmJiBtX2luaXRpYWwgJiYgbV9hcHBseTsgfQogICAgIEluaGVyaXRGdW5jdGlv
biBpbmhlcml0RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXQ7IH0KICAgICBJbml0
aWFsRnVuY3Rpb24gaW5pdGlhbEZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pbml0aWFsOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVNZWRpYS5jcHAKaW5kZXggYmEyNjY0ZGQxY2Q0MTM1OWVhMmUzZjI5MTUyMWMz
MWRjMWMxOTEyYi4uMWE3YzMxMjM0ZTlmOWU5YjdjOTVhNGVmNWFmZTM2MjRjMjAyOGI0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIFN0eWxlTWVk
aWE6Om1hdGNoTWVkaXVtKGNvbnN0IFN0cmluZyYgcXVlcnkpIGNvbnN0CiAgICAgaWYgKCFkb2N1
bWVudEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1N0eWxlU2VsZWN0
b3IqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpOworICAgIFN0eWxl
UmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpOwogICAg
IGlmICghc3R5bGVTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggZmEwZGNiZWE0Y2Jk
NjBjMDA4NTBhYmMzOWI3MjRhNTYzYmE4ZjhkNy4uODFiMDQ3NTZiNmIyMDUzM2UxZDk1OTQwYmIx
NmMxMTJlN2I0YzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tl
eWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFt
ZXNSdWxlLmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFdlYktpdENTU0tleWZyYW1lc1J1bGU6
OnNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIG1fa2V5ZnJhbWVzUnVsZS0+c2V0
TmFtZShuYW1lKTsKIAotICAgIC8vIFNpbmNlIHRoZSBuYW1lIGlzIHVzZWQgaW4gdGhlIGtleWZy
YW1lIG1hcCBsaXN0IGluIENTU1N0eWxlU2VsZWN0b3IsIHdlIG5lZWQKKyAgICAvLyBTaW5jZSB0
aGUgbmFtZSBpcyB1c2VkIGluIHRoZSBrZXlmcmFtZSBtYXAgbGlzdCBpbiBTdHlsZVJlc29sdmVy
LCB3ZSBuZWVkCiAgICAgLy8gdG8gcmVjb21wdXRlIHRoZSBzdHlsZSBzaGVldCB0byBnZXQgdGhl
IHVwZGF0ZWQgbmFtZS4KICAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBhcmVu
dFN0eWxlU2hlZXQoKSkKICAgICAgICAgc3R5bGVTaGVldC0+c3R5bGVTaGVldENoYW5nZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXggYWZlYmE3MWY4OWU5OTI4
YjhmNGU1ZmE1MDQxYTYxMmM5ZmRmNGRlZC4uMWU4NDcxZmY1NzEyM2Q3NDFlOTdmMTU0Y2Y5OWM5
ODJkMzE5NDNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJp
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgdm9pZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7Ci0gICAgICAgIGlmICghQ1NT
U3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZS5nZXQoKSwgMCwg
MCwgb3BlcmF0aW9ucykpIHsKKyAgICAgICAgaWYgKCFTdHlsZVJlc29sdmVyOjpjcmVhdGVUcmFu
c2Zvcm1PcGVyYXRpb25zKHZhbHVlLmdldCgpLCAwLCAwLCBvcGVyYXRpb25zKSkgewogICAgICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyOTgyZDQ1YWEyODM5MjlkYWMzZjY2ZmYwNjBjOGIz
Njc4ZTRjZDRlLi5hZmFkNmI2ODUyOGMzMmI0ZWRhZDZkMGJiYWE3NzI2MGU5N2FlZjgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE3MjUsNyArMTcyNSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgLy8gc3R5bGUgc2VsZWN0
b3IgbWF5IHNldCB0aGlzIGFnYWluIGR1cmluZyByZWNhbGMKICAgICAgICAgbV9oYXNOb2Rlc1dp
dGhQbGFjZWhvbGRlclN0eWxlID0gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IGRvY3VtZW50U3R5bGUgPSBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3Vt
ZW50KHRoaXMsIG1fc3R5bGVTZWxlY3RvciA/IG1fc3R5bGVTZWxlY3Rvci0+Zm9udFNlbGVjdG9y
KCkgOiAwKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlID0gU3R5
bGVSZXNvbHZlcjo6c3R5bGVGb3JEb2N1bWVudCh0aGlzLCBtX3N0eWxlU2VsZWN0b3IgPyBtX3N0
eWxlU2VsZWN0b3ItPmZvbnRTZWxlY3RvcigpIDogMCk7CiAgICAgICAgIFN0eWxlQ2hhbmdlIGNo
ID0gTm9kZTo6ZGlmZihkb2N1bWVudFN0eWxlLmdldCgpLCByZW5kZXJlcigpLT5zdHlsZSgpLCB0
aGlzKTsKICAgICAgICAgaWYgKGNoICE9IE5vQ2hhbmdlKQogICAgICAgICAgICAgcmVuZGVyZXIo
KS0+c2V0U3R5bGUoZG9jdW1lbnRTdHlsZS5yZWxlYXNlKCkpOwpAQCAtMTk2Miw3ICsxOTYyLDcg
QEAgdm9pZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVTZWxlY3RvcigpCiAgICAgYm9vbCBtYXRjaEF1
dGhvckFuZFVzZXJTdHlsZXMgPSB0cnVlOwogICAgIGlmIChTZXR0aW5ncyogZG9jU2V0dGluZ3Mg
PSBzZXR0aW5ncygpKQogICAgICAgICBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgPSBkb2NTZXR0
aW5ncy0+YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoKTsKLSAgICBtX3N0eWxlU2VsZWN0b3Ig
PSBhZG9wdFB0cihuZXcgQ1NTU3R5bGVTZWxlY3Rvcih0aGlzLCBtYXRjaEF1dGhvckFuZFVzZXJT
dHlsZXMpKTsKKyAgICBtX3N0eWxlU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgU3R5bGVSZXNvbHZl
cih0aGlzLCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpKTsKICAgICBjb21iaW5lQ1NTRmVhdHVy
ZUZsYWdzKCk7CiB9CiAKQEAgLTMzOTgsNyArMzM5OCw3IEBAIGJvb2wgRG9jdW1lbnQ6OnRlc3RB
ZGRlZFN0eWxlc2hlZXRSZXF1aXJlc1N0eWxlUmVjYWxjKFN0eWxlU2hlZXRJbnRlcm5hbCogc3R5
bGVzCiAgICAgLy8gVGhlbiB0ZXN0IGlmIHdlIGFjdHVhbGx5IGhhdmUgYW55IG9mIHRob3NlIGlu
IHRoZSB0cmVlIGF0IHRoZSBtb21lbnQuCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4g
aWRTY29wZXM7IAogICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGNsYXNzU2NvcGVzOwot
ICAgIGlmICghQ1NTU3R5bGVTZWxlY3Rvcjo6ZGV0ZXJtaW5lU3R5bGVzaGVldFNlbGVjdG9yU2Nv
cGVzKHN0eWxlc2hlZXQsIGlkU2NvcGVzLCBjbGFzc1Njb3BlcykpCisgICAgaWYgKCFTdHlsZVJl
c29sdmVyOjpkZXRlcm1pbmVTdHlsZXNoZWV0U2VsZWN0b3JTY29wZXMoc3R5bGVzaGVldCwgaWRT
Y29wZXMsIGNsYXNzU2NvcGVzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgLy8gSW52YWxp
ZGF0ZSB0aGUgc3VidHJlZXMgdGhhdCBtYXRjaCB0aGUgc2NvcGVzLgogICAgIE5vZGUqIG5vZGUg
PSBmaXJzdENoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGM0ZTFkMzg3NjZlZTVkZDIy
NDE5MDNiYjUxOTRkZjgyMjc1OWJhZGYuLjFiNDI1YjU3NzZlM2NkMTUyNmE4YmJmNTFlMjk1MmQw
MjgxMTUzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC02MSw3ICs2MSw2IEBAIGNsYXNzIEFY
T2JqZWN0Q2FjaGU7CiBjbGFzcyBBdHRyOwogY2xhc3MgQ0RBVEFTZWN0aW9uOwogY2xhc3MgQ1NT
U3R5bGVEZWNsYXJhdGlvbjsKLWNsYXNzIENTU1N0eWxlU2VsZWN0b3I7CiBjbGFzcyBDU1NTdHls
ZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZFJlc291cmNl
TG9hZGVyOwpAQCAtMTI2LDYgKzEyNSw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU2VnbWVudGVkU3RyaW5nOwogY2xhc3MgU2V0
dGluZ3M7CitjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0
eWxlU2hlZXRJbnRlcm5hbDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwpAQCAtNDU0LDE0ICs0NTQs
MTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NyY2RvY0RvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9pc1NyY2RvY0RvY3VtZW50OyB9CiAKLSAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNl
bGVjdG9ySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlU2VsZWN0b3IuZ2V0KCk7IH0K
KyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9ySWZFeGlzdHMoKSBjb25zdCB7IHJldHVy
biBtX3N0eWxlU2VsZWN0b3IuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNWaWV3U291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1ZpZXdTb3VyY2U7IH0KICAgICB2b2lkIHNldElzVmlld1NvdXJjZShi
b29sKTsKIAogICAgIGJvb2wgc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlczsgfQogCi0gICAgQ1NTU3R5bGVT
ZWxlY3Rvciogc3R5bGVTZWxlY3RvcigpCisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3Rv
cigpCiAgICAgeyAKICAgICAgICAgaWYgKCFtX3N0eWxlU2VsZWN0b3IpCiAgICAgICAgICAgICBj
cmVhdGVTdHlsZVNlbGVjdG9yKCk7CkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBwcml2YXRlOgogCiAg
ICAgaW50IG1fZ3VhcmRSZWZDb3VudDsKIAotICAgIE93blB0cjxDU1NTdHlsZVNlbGVjdG9yPiBt
X3N0eWxlU2VsZWN0b3I7CisgICAgT3duUHRyPFN0eWxlUmVzb2x2ZXI+IG1fc3R5bGVTZWxlY3Rv
cjsKICAgICBib29sIG1fZGlkQ2FsY3VsYXRlU3R5bGVTZWxlY3RvcjsKICAgICBib29sIG1faGFz
RGlydHlTdHlsZVNlbGVjdG9yOwogICAgIFZlY3RvcjxPd25QdHI8Rm9udERhdGE+ID4gbV9jdXN0
b21Gb250czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjMTc1MjQxM2M3ZTY1ZTI0YTRlMGZm
YjkxZDhiNDdmODQ0MzllNDNiLi43OTcxZjYyOGNjOGE0MDc4MTA3YTJjNzBmZTMxMGY2YzE3MGFm
YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEVsZW1lbnQqIG1fcGFyZW50OwotICAgIENTU1N0eWxlU2VsZWN0b3Iq
IG1fcHVzaGVkU3R5bGVTZWxlY3RvcjsKKyAgICBTdHlsZVJlc29sdmVyKiBtX3B1c2hlZFN0eWxl
U2VsZWN0b3I7CiB9OwogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC02OTcsNyAr
Njk3LDcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0cikK
ICAgICAgICAgc2V0SGFzTmFtZSghYXR0ci0+aXNOdWxsKCkpOwogCiAgICAgaWYgKCFuZWVkc1N0
eWxlUmVjYWxjKCkgJiYgZG9jdW1lbnQoKS0+YXR0YWNoZWQoKSkgewotICAgICAgICBDU1NTdHls
ZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcklmRXhp
c3RzKCk7CisgICAgICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMoKTsKICAgICAgICAgaWYgKCFzdHlsZVNlbGVjdG9yIHx8
IHN0eWxlU2VsZWN0b3ItPmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0dHItPm5hbWUoKS5sb2Nh
bE5hbWUoKSkpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQpAQCAt
MTM0OCw3ICsxMzQ4LDcgQEAgdm9pZCBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWYKIHZvaWQgRWxlbWVudDo6
YmVnaW5QYXJzaW5nQ2hpbGRyZW4oKQogewogICAgIGNsZWFySXNQYXJzaW5nQ2hpbGRyZW5GaW5p
c2hlZCgpOwotICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBkb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMoKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVj
dG9yID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcklmRXhpc3RzKCk7CiAgICAgaWYgKHN0eWxl
U2VsZWN0b3IgJiYgYXR0YWNoZWQoKSkKICAgICAgICAgc3R5bGVTZWxlY3Rvci0+cHVzaFBhcmVu
dEVsZW1lbnQodGhpcyk7CiB9CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIEVsZW1lbnQ6OmZp
bmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgQ29udGFpbmVyTm9kZTo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCk7CiAgICAgc2V0SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpOwogICAgIGNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgpLCB0cnVlLCBsYXN0Q2hp
bGQoKSwgMCwgMCk7Ci0gICAgaWYgKENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBk
b2N1bWVudCgpLT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMoKSkKKyAgICBpZiAoU3R5bGVSZXNvbHZl
ciogc3R5bGVTZWxlY3RvciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JJZkV4aXN0cygpKQog
ICAgICAgICBzdHlsZVNlbGVjdG9yLT5wb3BQYXJlbnRFbGVtZW50KHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggZTc1MGJjMjJiNDRkYjc1YTdlZTQ5NmJlOTk0MWJi
ZTlmODQyM2VhNS4uMTk0YTU2ZmU3YzQzY2FmMzg4NzFhMzJhMWY2NWFlNDVjZDk4ZDgzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgU2hhZG93
Um9vdDo6c2V0QXBwbHlBdXRob3JTaGVldHMoYm9vbCB2YWx1ZSkKIAogdm9pZCBTaGFkb3dSb290
OjphdHRhY2goKQogewotICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBkb2N1
bWVudCgpLT5zdHlsZVNlbGVjdG9yKCk7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3Rv
ciA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKICAgICBzdHlsZVNlbGVjdG9yLT5wdXNo
UGFyZW50U2hhZG93Um9vdCh0aGlzKTsKICAgICBEb2N1bWVudEZyYWdtZW50OjphdHRhY2goKTsK
ICAgICBzdHlsZVNlbGVjdG9yLT5wb3BQYXJlbnRTaGFkb3dSb290KHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1RyZWUuY3BwCmluZGV4IDE3MWNkZGIxNzYzMjdjZWViM2UwMWRjYWYzZTVkYjU1YTky
NTJmYTkuLjdhNjBiN2U1MWM5NDExMzdkYTg5ODQ3NmZhMzllOTI2ODcyZmY5NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNoYWRvd1RyZWU6
OnJlY2FsY1NoYWRvd1RyZWVTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgaWYg
KG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKSkKICAgICAgICAgcmVhdHRhY2hI
b3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICBlbHNlIHsKLSAgICAgICAgQ1NTU3R5bGVTZWxl
Y3Rvciogc3R5bGVTZWxlY3RvciA9IHlvdW5nZXN0LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9y
KCk7CisgICAgICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IgPSB5b3VuZ2VzdC0+ZG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwogCiAgICAgICAgIHN0eWxlU2VsZWN0b3ItPnB1c2hQ
YXJlbnRTaGFkb3dSb290KHlvdW5nZXN0KTsKICAgICAgICAgZm9yIChOb2RlKiBuID0geW91bmdl
c3QtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA5ZGQzY2U0MDMxOTRjYzRhNzMzM2M2YWM0
YmRiOWEzYTMwMGIyOGJkLi5iNjk2Y2Y0MDQ4ZDk3MmE3Y2EzMzNmM2FhODRhNDA5MTUxYzUxMDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xMDQ2LDcgKzEw
NDYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZUZyb21NYXRj
aGVkUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGVsZQogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdl
U3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzRm9yRWxlbWVudChlbGVtZW50LAotICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpBdXRob3JD
U1NSdWxlcyB8IENTU1N0eWxlU2VsZWN0b3I6OkNyb3NzT3JpZ2luQ1NTUnVsZXMpOworICAgICAg
ICBTdHlsZVJlc29sdmVyOjpBdXRob3JDU1NSdWxlcyB8IFN0eWxlUmVzb2x2ZXI6OkNyb3NzT3Jp
Z2luQ1NTUnVsZXMpOwogICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBpbmxpbmUgc3R5bGUgZGVjbGFy
YXRpb24sIGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRha2UgcHJlY2VkZW5jZSAKICAg
ICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KICAgICBpZiAobV9tdXRhYmxlU3R5
bGUpCkBAIC0xMDk4LDcgKzEwOTgsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVG
cm9tUnVsZXNBbmRDb250ZXh0KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIE5vZGUqCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIDEuIFJlbW92ZSBzdHlsZSBmcm9tIG1hdGNoZWQgcnVsZXMgYmVj
YXVzZSBzdHlsZSByZW1haW4gd2l0aG91dCByZXBlYXRpbmcgaXQgaW4gaW5saW5lIHN0eWxlIGRl
Y2xhcmF0aW9uCi0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlRnJvbU1hdGNoZWRS
dWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVT
ZWxlY3Rvcjo6QWxsQnV0RW1wdHlDU1NSdWxlcyk7CisgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1l
bnQoZWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxsQnV0RW1wdHlDU1NSdWxlcyk7CiAgICAgaWYg
KHN0eWxlRnJvbU1hdGNoZWRSdWxlcyAmJiAhc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5pc0VtcHR5
KCkpCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdEluKG1fbXV0YWJs
ZVN0eWxlLmdldCgpLCBzdHlsZUZyb21NYXRjaGVkUnVsZXMtPmVuc3VyZUNTU1N0eWxlRGVjbGFy
YXRpb24oKSk7CiAKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1v
dmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
aWYgKCFtX211dGFibGVTdHlsZSB8fCBtX211dGFibGVTdHlsZS0+aXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gZGVmYXVsdFN0eWxlID0g
c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBDU1NTdHlsZVNlbGVjdG9y
OjpVQUFuZFVzZXJDU1NSdWxlcyk7CisgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGRlZmF1
bHRTdHlsZSA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgU3R5bGVS
ZXNvbHZlcjo6VUFBbmRVc2VyQ1NTUnVsZXMpOwogCiAgICAgcmVtb3ZlUHJvcGVydGllc0luU3R5
bGUobV9tdXRhYmxlU3R5bGUuZ2V0KCksIGRlZmF1bHRTdHlsZS5nZXQoKSk7CiB9CkBAIC0xNTM0
LDEwICsxNTM0LDEwIEBAIGludCBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShEb2N1bWVudCog
ZG9jdW1lbnQsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgYm9vCiB7CiAgICAgaWYgKGlzQ1NT
VmFsdWVMZW5ndGgodmFsdWUpKSB7CiAgICAgICAgIGludCBwaXhlbEZvbnRTaXplID0gdmFsdWUt
PmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgICAgICBpbnQgbGVn
YWN5Rm9udFNpemUgPSBDU1NTdHlsZVNlbGVjdG9yOjpsZWdhY3lGb250U2l6ZShkb2N1bWVudCwg
cGl4ZWxGb250U2l6ZSwgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUpOworICAgICAgICBp
bnQgbGVnYWN5Rm9udFNpemUgPSBTdHlsZVJlc29sdmVyOjpsZWdhY3lGb250U2l6ZShkb2N1bWVu
dCwgcGl4ZWxGb250U2l6ZSwgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUpOwogICAgICAg
ICAvLyBVc2UgbGVnYWN5IGZvbnQgc2l6ZSBvbmx5IGlmIHBpeGVsIHZhbHVlIG1hdGNoZXMgZXhh
Y3RseSB0byB0aGF0IG9mIGxlZ2FjeSBmb250IHNpemUuCiAgICAgICAgIGludCBjc3NQcmltaXRp
dmVFcXVpdmFsZW50ID0gbGVnYWN5Rm9udFNpemUgLSAxICsgQ1NTVmFsdWVYU21hbGw7Ci0gICAg
ICAgIGlmIChtb2RlID09IEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplIHx8IENTU1N0eWxlU2VsZWN0
b3I6OmZvbnRTaXplRm9yS2V5d29yZChkb2N1bWVudCwgY3NzUHJpbWl0aXZlRXF1aXZhbGVudCwg
c2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUpID09IHBpeGVsRm9udFNpemUpCisgICAgICAg
IGlmIChtb2RlID09IEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplIHx8IFN0eWxlUmVzb2x2ZXI6OmZv
bnRTaXplRm9yS2V5d29yZChkb2N1bWVudCwgY3NzUHJpbWl0aXZlRXF1aXZhbGVudCwgc2hvdWxk
VXNlRml4ZWRGb250RGVmYXVsdFNpemUpID09IHBpeGVsRm9udFNpemUpCiAgICAgICAgICAgICBy
ZXR1cm4gbGVnYWN5Rm9udFNpemU7CiAKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDgzODIzZDU5YWQ5NzAwOGEyOTMxZjU4
ZjI5NDRhNDBhOGQxYmY5MjMuLjFmYTIwMmYyNjc5YjZkMWQ0MmIzOWU4NjgzMjBjZDVkNzMxNTVm
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNjMz
LDcgKzE2MzMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNo
YW5nZWQoKQogICAgIC8vIFVwZGF0ZSBmb3IgY2FwcyBsb2NrIHN0YXRlCiAgICAgbV9mcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwogCi0gICAgLy8g
QmVjYXVzZSBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKCkgYW5kCisgICAgLy8g
QmVjYXVzZSBTdHlsZVJlc29sdmVyOjpjaGVja09uZVNlbGVjdG9yKCkgYW5kCiAgICAgLy8gUmVu
ZGVyVGhlbWU6OmlzRm9jdXNlZCgpIGNoZWNrIGlmIHRoZSBmcmFtZSBpcyBhY3RpdmUsIHdlIGhh
dmUgdG8KICAgICAvLyB1cGRhdGUgc3R5bGUgYW5kIHRoZW1lIHN0YXRlIHRoYXQgZGVwZW5kZWQg
b24gdGhvc2UuCiAgICAgaWYgKE5vZGUqIG5vZGUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1
c2VkTm9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCA4YmJh
NTExNjExMDE4NGZmZWEwMDA2OWNmNjExMWEyYTgxZWEyMzc2Li4xOWVlZWExYzVhMDI2Yjg3MjAx
ZWM4YjRiMjVhZDdhNjIxYTExMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5j
cHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBDYWNoZWRQYWdlOjpyZXN0b3JlKFBhZ2UqIHBhZ2Up
CiAKICAgICBpZiAobV9uZWVkU3R5bGVSZWNhbGNGb3JWaXNpdGVkTGlua3MpIHsKICAgICAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChDU1NTdHlsZVNl
bGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3Io
KSkKKyAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gZnJhbWUt
PmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKSkKICAgICAgICAgICAgICAgICBzdHlsZVNlbGVj
dG9yLT5hbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGVkMDMzMGNlMGJiMDAwNjE1
YWUxOWM4NjIyZDg1MzFjZWVkMWJiYzIuLjAzYTQ5MDhjNWM3N2EyZGUxYTg5Y2M3N2JkMjRkYTJm
MWUwNTUzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBA
IC00NjMsNyArNDYzLDcgQEAgU2VjdXJpdHlPcmlnaW4qIEhUTUxDYW52YXNFbGVtZW50OjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCk7CiB9CiAKLUNTU1N0eWxlU2VsZWN0b3IqIEhUTUxDYW52YXNFbGVtZW50OjpzdHlsZVNlbGVj
dG9yKCkKK1N0eWxlUmVzb2x2ZXIqIEhUTUxDYW52YXNFbGVtZW50OjpzdHlsZVNlbGVjdG9yKCkK
IHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDQ5NmY0MDE0MGFhNGZjMDM0Zjg5NzM4
MTM0ODAxMmM0YWExYmY2NjcuLjIwYTIyNWIwNzI5NWY1OWU3YTc2YWE5MjE2MTkzN2MzM2ZhYThh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTEyMiw3ICsx
MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW5UYWludGVkKCkgeyBtX29yaWdpbkNs
ZWFuID0gZmFsc2U7IH0KICAgICBib29sIG9yaWdpbkNsZWFuKCkgY29uc3QgeyByZXR1cm4gbV9v
cmlnaW5DbGVhbjsgfQogCi0gICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcigpOwor
ICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlU2VsZWN0b3IoKTsKIAogICAgIEFmZmluZVRyYW5zZm9y
bSBiYXNlVHJhbnNmb3JtKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAppbmRleCBlMjJhMWU2OWNiZDhmNTc4ZTVjYTI2YTEwODMzNWU0MmU1M2ZlODMzLi4w
ZmE0ZjJkOGQzODRmOTRkZTk2YzFjYWYyNTQ3NGY0OWQ2MDQ4Y2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgICAgIGJvb2wgbWVkaWFRdWVyeU1hdGNoZXMgPSB0
cnVlOwogICAgICAgICBpZiAoIW1fbWVkaWEuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGUgPSBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZv
ckRvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBk
b2N1bWVudFN0eWxlID0gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JEb2N1bWVudChkb2N1bWVudCgp
KTsKICAgICAgICAgICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSA9IE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRpYSk7CiAgICAgICAgICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvcihkb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3
KCktPm1lZGlhVHlwZSgpLCBkb2N1bWVudCgpLT5mcmFtZSgpLCBkb2N1bWVudFN0eWxlLmdldCgp
KTsKICAgICAgICAgICAgIG1lZGlhUXVlcnlNYXRjaGVzID0gZXZhbHVhdG9yLmV2YWwobWVkaWEu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjU1MTBlYmVhMTU4ZTJmODA5ZjA4M2RlNjkzMWE0
OGNkOTc0YmRhMS4uODk5NzE1ZTU1ZDA2NjgxNzA2ODgwNmQyYWRjMDA1ZDQyMWQxYzZlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC0xOTQzLDcgKzE5NDMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAgbmV3U3R5bGUtPmZv
bnQoKS51cGRhdGUobmV3U3R5bGUtPmZvbnQoKS5mb250U2VsZWN0b3IoKSk7CiAKICAgICAvLyBO
b3cgbWFwIHRoZSBmb250IHByb3BlcnR5IGxvbmdoYW5kcyBpbnRvIHRoZSBzdHlsZS4KLSAgICBD
U1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gY2FudmFzKCktPnN0eWxlU2VsZWN0b3Io
KTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVjdG9yID0gY2FudmFzKCktPnN0eWxlU2Vs
ZWN0b3IoKTsKICAgICBzdHlsZVNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9TdHlsZShDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHksIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
Rm9udEZhbWlseSkuZ2V0KCksIG5ld1N0eWxlLmdldCgpKTsKICAgICBzdHlsZVNlbGVjdG9yLT5h
cHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsIHRlbXBEZWNs
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKS5nZXQoKSk7CiAgICAg
c3R5bGVTZWxlY3Rvci0+YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnQsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCmluZGV4IDgxMTQzNzc1ZjNiNzhjNjFiODBmNjNhNmYwNGQzOWU0MzAwMjkwZGYu
LjU3YmM1Y2IxZTFhNjRjNWE1YTIxYzNmNDA1YjQyNDVhODA4NDFmOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTcyLDE1ICs1NzIs
MTUgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICByZWNhbGNTdHlsZUZvclBzZXVkb1N0
YXRlSWZOZWVkZWQoZWxlbWVudCwgZm9yY2VkUHNldWRvQ2xhc3NlcyA/IGZvcmNlZFBzZXVkb0Ns
YXNzZXMtPmdldCgpIDogMCk7CiAKICAgICAvLyBNYXRjaGVkIHJ1bGVzLgotICAgIENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yID0gZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVj
dG9yKCk7Ci0gICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+
c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQ1NTUnVs
ZXMpOworICAgIFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yID0gZWxlbWVudC0+b3duZXJEb2N1bWVu
dCgpLT5zdHlsZVNlbGVjdG9yKCk7CisgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVs
ZXMgPSBzZWxlY3Rvci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgU3R5bGVSZXNvbHZl
cjo6QWxsQ1NTUnVsZXMpOwogICAgIG1hdGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxl
TGlzdChtYXRjaGVkUnVsZXMuZ2V0KCksIHNlbGVjdG9yKTsKIAogICAgIC8vIFBzZXVkbyBlbGVt
ZW50cy4KICAgICBpZiAoIWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1ZGVQc2V1ZG8pIHsKICAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1
bGVzPiA+IHBzZXVkb0VsZW1lbnRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlBzZXVkb0lkUnVsZXM+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1
ZG9JZCA9IEZJUlNUX1BVQkxJQ19QU0VVRE9JRDsgcHNldWRvSWQgPCBBRlRFUl9MQVNUX0lOVEVS
TkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCAr
IDEpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNoZWRSdWxlcyA9IHNl
bGVjdG9yLT5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgQ1NT
U3R5bGVTZWxlY3Rvcjo6QWxsQ1NTUnVsZXMpOworICAgICAgICAgICAgUmVmUHRyPENTU1J1bGVM
aXN0PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQo
ZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAg
ICAgIGlmIChtYXRjaGVkUnVsZXMgJiYgbWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKSkgewogICAgICAg
ICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1bGVzPiBwc2V1ZG9T
dHlsZXMgPSBUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1bGVzOjpjcmVhdGUoKQogICAgICAg
ICAgICAgICAgICAgICAuc2V0UHNldWRvSWQoc3RhdGljX2Nhc3Q8aW50Pihwc2V1ZG9JZCkpCkBA
IC01OTcsOCArNTk3LDggQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5
PiA+IGluaGVyaXRlZFN0eWxlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpJbmhlcml0ZWRTdHlsZUVudHJ5Pjo6Y3JlYXRlKCk7CiAgICAgICAgIEVsZW1lbnQqIHBhcmVu
dEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIHdoaWxlIChwYXJl
bnRFbGVtZW50KSB7Ci0gICAgICAgICAgICBDU1NTdHlsZVNlbGVjdG9yKiBwYXJlbnRTZWxlY3Rv
ciA9IHBhcmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwotICAg
ICAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRT
ZWxlY3Rvci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgQ1NTU3R5bGVTZWxl
Y3Rvcjo6QWxsQ1NTUnVsZXMpOworICAgICAgICAgICAgU3R5bGVSZXNvbHZlciogcGFyZW50U2Vs
ZWN0b3IgPSBwYXJlbnRFbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsK
KyAgICAgICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFy
ZW50U2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVz
b2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpJbmhlcml0ZWRTdHlsZUVudHJ5PiBwYXJlbnRTdHlsZSA9IFR5cGVCdWlsZGVyOjpDU1M6Oklu
aGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRD
U1NSdWxlcyhidWlsZEFycmF5Rm9yUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLmdldCgpLCBz
ZWxlY3RvcikpOwogICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPnN0eWxlKCkgJiYgcGFy
ZW50RWxlbWVudC0+c3R5bGUoKS0+bGVuZ3RoKCkpIHsKQEAgLTk0NCw3ICs5NDQsNyBAQCBUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlOjpPcmlnaW46OkVudW0gSW5zcGVjdG9yQ1NTQWdlbnQ6OmRl
dGVjdE9yaWdpbihDU1NTdHlsZQogICAgIHJldHVybiBvcmlnaW47CiB9CiAKLVBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gSW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QsIENT
U1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IpCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IEluc3BlY3RvckNTU0FnZW50OjpidWls
ZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0LCBTdHlsZVJlc29sdmVyKiBz
dHlsZVNlbGVjdG9yKQogewogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT4gPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3QpCkBAIC05NTUs
OSArOTU1LDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnUKICAgICAgICAgaWYgKCFydWxlKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgLy8gQ1NTUnVsZXMgcmV0dXJuZWQgYnkg
Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgbGFjayBwYXJlbnQgcG9pbnRl
cnMgc2luY2UgdGhhdCBpbmZvbWF0aW9uIGlzIG5vdCBjaGVhcGx5IGF2YWlsYWJsZS4KKyAgICAg
ICAgLy8gQ1NTUnVsZXMgcmV0dXJuZWQgYnkgU3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVs
ZW1lbnQgbGFjayBwYXJlbnQgcG9pbnRlcnMgc2luY2UgdGhhdCBpbmZvbWF0aW9uIGlzIG5vdCBj
aGVhcGx5IGF2YWlsYWJsZS4KICAgICAgICAgLy8gU2luY2UgdGhlIGluc3BlY3RvciB3YW50cyB0
byB3YWxrIHRoZSBwYXJlbnQgY2hhaW4sIHdlIGNvbnN0cnVjdCB0aGUgZnVsbCB3cmFwcGVycyBo
ZXJlLgotICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBmYWN0b3JlZCBiZXR0ZXIuIENT
U1N0eWxlU2VsZWN0b3I6OnN0eWxlUnVsZXNGb3JFbGVtZW50IHNob3VsZCByZXR1cm4gYSBTdHls
ZVJ1bGUgdmVjdG9yLCBub3QgYSBDU1NSdWxlTGlzdC4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y291bGQgYmUgZmFjdG9yZWQgYmV0dGVyLiBTdHlsZVJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxl
bWVudCBzaG91bGQgcmV0dXJuIGEgU3R5bGVSdWxlIHZlY3Rvciwgbm90IGEgQ1NTUnVsZUxpc3Qu
CiAgICAgICAgIGlmICghcnVsZS0+cGFyZW50U3R5bGVTaGVldCgpKSB7CiAgICAgICAgICAgICBy
dWxlID0gc3R5bGVTZWxlY3Rvci0+ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3Rvcihy
dWxlLT5zdHlsZVJ1bGUoKSk7CiAgICAgICAgICAgICBpZiAoIXJ1bGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDcxNGI4NmQ1MzhkZGQ4YzBj
YmJhYWMzYjBkNWRhYTZlMWYzYTkzMzcuLjJiNTZjODI1NGRiMzYzNDkwZGRiNzA4ZDBlNWRhMTgx
YzljNDhkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0
KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKICAg
ICBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlOjpPcmlnaW46OkVudW0gZGV0ZWN0T3JpZ2luKENT
U1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIENTU1N0eWxlU2VsZWN0
b3IqKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIFN0eWxlUmVz
b2x2ZXIqKTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWls
ZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CiAKICAgICAvLyBJbnNwZWN0b3JE
T01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCAzNzFhZjZjOGMyMmMyMWQxM2Q2YWU4YmU4NDkxYTY4YjQzMDY3MDYzLi5hOGZj
Y2RjOTJhZWU3ODU0YTE0NTZjNzhlY2NjN2FmNWRlMWIzOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCkBAIC0xMjgzLDEyICsxMjgzLDEyIEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+
IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0
CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IENTU1N0eWxlU2VsZWN0b3I6OkF1
dGhvckNTU1J1bGVzOworICAgIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gU3R5bGVSZXNvbHZl
cjo6QXV0aG9yQ1NTUnVsZXM7CiAgICAgaWYgKCFhdXRob3JPbmx5KQotICAgICAgICBydWxlc1Rv
SW5jbHVkZSB8PSBDU1NTdHlsZVNlbGVjdG9yOjpVQUFuZFVzZXJDU1NSdWxlczsKKyAgICAgICAg
cnVsZXNUb0luY2x1ZGUgfD0gU3R5bGVSZXNvbHZlcjo6VUFBbmRVc2VyQ1NTUnVsZXM7CiAgICAg
aWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCkpIHsKICAgICAgICAg
aWYgKHNldHRpbmdzLT5jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxl
ZCgpKQotICAgICAgICAgICAgcnVsZXNUb0luY2x1ZGUgfD0gQ1NTU3R5bGVTZWxlY3Rvcjo6Q3Jv
c3NPcmlnaW5DU1NSdWxlczsKKyAgICAgICAgICAgIHJ1bGVzVG9JbmNsdWRlIHw9IFN0eWxlUmVz
b2x2ZXI6OkNyb3NzT3JpZ2luQ1NTUnVsZXM7CiAgICAgfQogICAgIAogICAgIFBzZXVkb0lkIHBz
ZXVkb0lkID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKENTU1NlbGVjdG9yOjpwYXJzZVBzZXVkb1R5
cGUocHNldWRvRWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZDE1YjE2ZmQ1YmVlMzEz
ODhhZmI5MmFiNWRkOWIzYmMwNmY4ZTAzOS4uMDMxNTA2OWEwNjBiZWI0OGM0NTQyMmNhMGEwOTUz
Zjg0YzQxMGI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC04MzQsNyArODM0LDcgQEAgdm9pZCBQ
YWdlOjphbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cCogZ3JvdXApCiAgICAgICAgIGlm
IChwYWdlLT5tX2dyb3VwICE9IGdyb3VwKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoQ1NT
U3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNl
bGVjdG9yKCkpCisgICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9
IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCkpCiAgICAgICAgICAgICAgICAgc3R5
bGVTZWxlY3Rvci0+YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwogICAgICAgICB9CiAgICAgfQpA
QCAtODUyLDcgKzg1Miw3IEBAIHZvaWQgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3Jv
dXAqIGdyb3VwLCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2gpCiAgICAgICAgIGlmIChwYWdlLT5t
X2dyb3VwICE9IGdyb3VwKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gcGFnZS0+bV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoQ1NTU3R5bGVTZWxl
Y3Rvciogc3R5bGVTZWxlY3RvciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCkp
CisgICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5bGVTZWxlY3RvciA9IGZyYW1lLT5k
b2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCkpCiAgICAgICAgICAgICAgICAgc3R5bGVTZWxlY3Rv
ci0+dmlzaXRlZFN0YXRlQ2hhbmdlZCh2aXNpdGVkTGlua0hhc2gpOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCAwZjIzMzAxYTE1MzA4YWU5YjJhYzMzZjljNmUzZmQzNDMyNTU0ZWUx
Li5lMmZiMjFlZDJjMjM3ZDBkZmUwMGE5MzExNmM5OGRkMmFhNGYxYTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApA
QCAtNTQ3LDcgKzU0Nyw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRy
b2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kCiAgICAgaWYgKGJsZW5k
ZWRTdHlsZSAhPSBuZXdTdHlsZSkgewogICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9ucy90cmFu
c2l0aW9ucyBjaGFuZ2Ugb3BhY2l0eSBvciB0cmFuc2Zvcm0sIHdlIG5lZWQgdG8gdXBkYXRlCiAg
ICAgICAgIC8vIHRoZSBzdHlsZSB0byBpbXBvc2UgdGhlIHN0YWNraW5nIHJ1bGVzLiBOb3RlIHRo
YXQgdGhpcyBpcyBhbHNvCi0gICAgICAgIC8vIGRvbmUgaW4gQ1NTU3R5bGVTZWxlY3Rvcjo6YWRq
dXN0UmVuZGVyU3R5bGUoKS4KKyAgICAgICAgLy8gZG9uZSBpbiBTdHlsZVJlc29sdmVyOjphZGp1
c3RSZW5kZXJTdHlsZSgpLgogICAgICAgICBpZiAoYmxlbmRlZFN0eWxlLT5oYXNBdXRvWkluZGV4
KCkgJiYgKGJsZW5kZWRTdHlsZS0+b3BhY2l0eSgpIDwgMS4wZiB8fCBibGVuZGVkU3R5bGUtPmhh
c1RyYW5zZm9ybSgpKSkKICAgICAgICAgICAgIGJsZW5kZWRTdHlsZS0+c2V0WkluZGV4KDApOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAppbmRleCBjNjRiOTZlYzBkMGM4NzY4MTA5NDBl
YTAxMGQ3NWIzNzZmMGNkYWIwLi43MGM0Mzg5YjljNTFhMjdlYTJkYTM5YzVkOTI4YjdlOTc4YTIw
NDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRl
clRoZW1lQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCB2b2lk
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6c2V0QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxl
KSBjb25zdAogICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9tKHZlcnRQYWRkaW5nKTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHNldEJ1dHRvblN0eWxlKHN0eWxl
KTsKICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9XRUJLSVRfR1JBQik7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OmFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgc2V0QnV0dG9uU3R5bGUoc3R5bGUp
OwogfQpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWlu
dFRleHRBcmVhKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mCiAgICAgcmV0
dXJuIHBhaW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNoRmllbGQob2JqZWN0LCBpbmZvLCBy
ZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFRleHRGaWVsZFN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHNl
dEJ1dHRvblN0eWxlKHN0eWxlKTsKIH0KQEAgLTI3MCwxMiArMjcwLDEyIEBAIGJvb2wgUmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUGFpbnRJbmZvCiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNo
RmllbGQob2JqZWN0LCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVy
cnk6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRq
dXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKIHsKICAgICBzZXRCdXR0b25TdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
CiB7CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9
IDEzOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Q2FuY2VsQnV0dG9uU2l6ZSA9IDk7
CkBAIC0zMjAsNyArMzIwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGMKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZW51TGlzdEJ1
dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdE1lbnVMaXN0QnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
CiB7CiAgICAgLy8gVGhlc2Ugc2VlbSB0byBiZSByZWFzb25hYmxlIHBhZGRpbmcgdmFsdWVzIGZy
b20gb2JzZXJ2YXRpb24uCiAgICAgY29uc3QgaW50IHBhZGRpbmdMZWZ0ID0gODsKQEAgLTQ2MCwx
MiArNDYwLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludEJ1dHRvbihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0TWVudUxpc3RTdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiBjc3MsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZW51TGlzdFN0eWxlKFN0
eWxlUmVzb2x2ZXIqIGNzcywgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBj
b25zdAogewogICAgIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoY3NzLCBzdHlsZSwgZWxlbWVu
dCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RDaGVja2JveFN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgc2V0Q2hl
Y2tib3hTaXplKHN0eWxlKTsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwpAQCAt
NDc1LDcgKzQ3NSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RDaGVja2Jv
eFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSoKICAgICBzdHlsZS0+c2V0Q3Vy
c29yKENVUlNPUl9XRUJLSVRfR1JBQik7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5
OjphZGp1c3RSYWRpb1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFJhZGlv
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
CiB7CiAgICAgc2V0UmFkaW9TaXplKHN0eWxlKTsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51
bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9S
ZW5kZXJUaGVtZUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKaW5kZXggNjJjYjczOWQ4MjMwNWI0ZWZmNmY5NTcy
MGU0M2M2Y2VlZWU2NWZhYy4uYzk3NTY4N2JmYTZhNzI4ZDE5MGNjNGE5OGI0NDI4ZTRjMjRiY2E4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNhbGN1bGF0ZUJ1dHRvblNpemUoUmVuZGVyU3R5bGUqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwpAQCAtNTgsMjEgKzU4LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENv
bG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdCB7IHJldHVybiBz
dHlsZS0+aGFzQXBwZWFyYW5jZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRG
aWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRl
eHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFy
Y2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29s
IHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0
QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RDaGVja2JveFN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0UmFkaW9TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29s
dmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBh
aW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IGM2NzAzNTRhYzc2
ODViN2UxNjMzOGQyMTAzZmZlYmUxZTY5NWJiOTAuLjJkNGU1Yjg2ODA2ZDVhMTJhMDQ5MGNmMjYy
MGVkNzI3NDVmMDQ3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9S
ZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRl
clRoZW1lRWZsLmNwcApAQCAtODQ0LDcgKzg0NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5m
CiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgU2xpZGVyVmVydGljYWwsIGluZm8s
IHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJUcmFja1N0eWxl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJUcmFja1N0
eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50
LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVF
ZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTbGlkZXJU
cmFja1N0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CkBAIC04NjEsNyArODYxLDcgQEAg
dm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgUmVuZGVyU3QKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChkZXNjLT5t
aW4uaGVpZ2h0KCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJUaHVt
YlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTbGlkZXJU
aHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRo
dW1iU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKICAgICBhZGp1c3RTbGlkZXJUcmFj
a1N0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CkBAIC04ODgsNyArODg4LDcgQEAgYm9v
bCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwg
Y29uc3QgUGFpbnRJbmZvJiBpbmYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFkanVzdENoZWNrYm94U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewogICAgICAg
ICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2Uo
KS0+dGhlbWUoKSktPmFkanVzdENoZWNrYm94U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50
KTsKQEAgLTkwOSw3ICs5MDksNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludENoZWNrYm94
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sCiAgICAgcmV0dXJu
IHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgQ2hlY2tCb3gsIGluZm8sIHJlY3QpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lRWZsOjphZGp1c3RSYWRpb1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lRWZsOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAg
ICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdl
KCktPnRoZW1lKCkpLT5hZGp1c3RSYWRpb1N0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7
CkBAIC05MzAsNyArOTMwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRSYWRpbyhSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb24KICAgICByZXR1cm4g
cGFpbnRUaGVtZVBhcnQob2JqZWN0LCBSYWRpb0J1dHRvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lRWZsOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGlm
ICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CiAg
ICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+
cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0QnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVt
ZW50KTsKQEAgLTk1Myw3ICs5NTMsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludEJ1dHRv
bihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjbwogICAgIHJl
dHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIEJ1dHRvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3Zv
aWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkg
ewogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50
KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdE1lbnVMaXN0U3R5bGUoc2VsZWN0b3IsIHN0eWxl
LCBlbGVtZW50KTsKQEAgLTk3MSw3ICs5NzEsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWlu
dE1lbnVMaXN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sCiAg
ICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgQ29tYm9Cb3gsIGluZm8sIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0CiB7CiAgICAgYWRqdXN0TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUs
IGVsZW1lbnQpOwogfQpAQCAtOTgxLDcgKzk4MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYK
ICAgICByZXR1cm4gcGFpbnRNZW51TGlzdChvYmplY3QsIGluZm8sIHJlY3QpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lRWZsOjphZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkg
ewogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50
KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFRleHRGaWVsZFN0eWxlKHNlbGVjdG9yLCBzdHls
ZSwgZWxlbWVudCk7CkBAIC05OTksNyArOTk5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFp
bnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywK
ICAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBUZXh0RmllbGQsIGluZm8sIHJlY3Qp
OwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0CiB7CiAgICAgYWRqdXN0VGV4dEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50
KTsKIH0KQEAgLTEwMDksNyArMTAwOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGV4
dEFyZWEoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywKICAgICBy
ZXR1cm4gcGFpbnRUZXh0RmllbGQob2JqZWN0LCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5k
b2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwq
PihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVs
ZERlY29yYXRpb25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwpAQCAtMTAyNSw3ICsx
MDI1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24o
UmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW4KICAgICByZXR1cm4gcGFpbnRUaGVtZVBh
cnQob2JqZWN0LCBTZWFyY2hGaWVsZERlY29yYXRpb24sIGluZm8sIHJlY3QpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYm
IGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgewogICAgICAgICBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVz
dFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7
CkBAIC0xMDQxLDcgKzEwNDEsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUAogICAgIHJldHVy
biBwYWludFRoZW1lUGFydChvYmplY3QsIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbiwgaW5mbywg
cmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsK
ICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgp
LT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5
bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uCiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgU2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQt
PmRvY3VtZW50KCktPnBhZ2UoKSkgewogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVm
bCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKQEAgLTEwNzMs
NyArMTA3Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxC
dXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhCiAgICAgcmV0dXJuIHBhaW50VGhl
bWVQYXJ0KG9iamVjdCwgU2VhcmNoRmllbGRDYW5jZWxCdXR0b24sIGluZm8sIHJlY3QpOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVz
b2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgp
LT5wYWdlKCkpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50
LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZFN0eWxlKHNl
bGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CkBAIC0xMTEyLDcgKzExMTIsNyBAQCB2b2lkIFJlbmRl
clRoZW1lRWZsOjpzeXN0ZW1Gb250KGludCBwcm9wSWQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERl
c2NyaXB0aW9uKSBjbwogfQogCiAjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKLXZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBz
dHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCBjZWYzMmI4NWY1NDcxNmExOWEzYjM5ZWRhMTll
M2I4YmM1NzdjYzE3Li5kMTVlZTBiY2VhMWM5ODY2ZDliMjFlZDc0YTc4YmUzZjA1ZGI5Y2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaApAQCAtMTE3
LDQ2ICsxMTcsNDYgQEAgcHVibGljOgogICAgIC8vIFN5c3RlbSBmb250cy4KICAgICB2aXJ0dWFs
IHZvaWQgc3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRpb24mKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RDaGVja2JveFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q2hl
Y2tib3hTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFJhZGlv
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRpbyhSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxl
KFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJl
c29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1i
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
bGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIApAQCAtMTY1LDcgKzE2NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0Rm9udFNpemUoaW50IGZvbnRzaXpl
KTsKIAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFBy
b2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQ
cm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGFu
aW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDky
MGIwMDdmYTVjMDA4YjNiZjQ4ZGViMzIxOTI2ZmE4ZjI5OGI5YWYuLjExOGQ2NjQwMWUwYjVmN2Vl
MjA1MTU3ZTJkMDJhZDMxNzlhYzc2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMjA0LDE0ICsyMDQsMTQgQEAgc3RhdGljIEd0a1N0
YXRlVHlwZSBndGtJY29uU3RhdGUoUmVuZGVyVGhlbWUqIHRoZW1lLCBSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCkKICAgICByZXR1cm4gR1RLX1NUQVRFX05PUk1BTDsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgV2ViQ29yZTo6RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVHdGs6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFdlYkNvcmU6OkVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8g
U29tZSBsYXlvdXQgdGVzdHMgY2hlY2sgZXhwbGljaXRseSB0aGF0IGJ1dHRvbnMgaWdub3JlIGxp
bmUtaGVpZ2h0LgogICAgIGlmIChzdHlsZS0+YXBwZWFyYW5jZSgpID09IFB1c2hCdXR0b25QYXJ0
KQogICAgICAgICBzdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVI
ZWlnaHQoKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdE1lbnVMaXN0U3R5bGUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVS
ZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QK
IHsKICAgICAvLyBUaGUgdGVzdHMgY2hlY2sgZXhwbGljaXRseSB0aGF0IHNlbGVjdCBtZW51IGJ1
dHRvbnMgaWdub3JlIGxpbmUgaGVpZ2h0LgogICAgIHN0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFJl
bmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZQogICAgIHN0eWxlLT5yZXNldEJvcmRlclJhZGl1cygpOwogfQogCi12
b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAg
ICAgYWRqdXN0TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogfQpAQCAtMjc2LDcg
KzI3Niw3IEBAIHN0YXRpYyBHdGtJY29uU2l6ZSBnZXRJY29uU2l6ZUZvclBpeGVsU2l6ZShnaW50
IHBpeGVsU2l6ZSkKICAgICByZXR1cm4gR1RLX0lDT05fU0laRV9ESUFMT0c7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNv
bnN0Cit2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlKSBjb25zdAogewogICAgIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoc2Vs
ZWN0b3IsIHN0eWxlLCBlKTsKIH0KQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMgdm9pZCBhZGp1
c3RTZWFyY2hGaWVsZEljb25TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgc3R5bGUtPnNl
dEhlaWdodChMZW5ndGgoaGVpZ2h0LCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lR3Rr
OjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQg
UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBj
b25zdAogewogICAgIGFkanVzdFNlYXJjaEZpZWxkSWNvblN0eWxlKHN0eWxlKTsKIH0KQEAgLTM0
MSw3ICszNDEsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0
c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplYwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVt
ZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIGFkanVzdFNlYXJjaEZpZWxkSWNvblN0eWxlKHN0
eWxlKTsKIH0KQEAgLTM2MCw3ICszNjAsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjbwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmll
bGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRT
dHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlKSBjb25zdAogewogICAgIC8vIFdlIGNhbm5vdCBnaXZlIGEgcHJvcGVyIHJlbmRlcmluZyB3
aGVuIGJvcmRlciByYWRpdXMgaXMgYWN0aXZlLCB1bmZvcnR1bmF0ZWx5LgogICAgIHN0eWxlLT5y
ZXNldEJvcmRlclJhZGl1cygpOwpAQCAtMzk3LDEyICszOTcsMTIgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRDYXBzTG9ja0luZGljYXRvcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwg
Y29uc3QgUGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRq
dXN0U2xpZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRyYWNr
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
CiB7CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIFJl
bmRlclRoZW1lOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVu
dCk7CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKQEAgLTY0MSw3ICs2NDEsNyBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQ3VycmVudFRpbWUoUmVuZGVyT2JqZWN0
KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUFJPR1JFU1Nf
VEFHKQotdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVHdGs6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgc3R5bGUtPnNldEJveFNoYWRv
dyhudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
R3RrLmgKaW5kZXggOWEzZDI4ODQzMTk2NTYwODY4NWE0MTU4ZjkxNmVkNjcwMjcxNmU0Ny4uMjNi
MDhmZmVhYTY5MmFiNDZjOGQzZDhlNDIzNWI5OWQyNjhhZWQ4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRS
YWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKQEAgLTEyNSwyOCArMTI1LDI4IEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBUaGUgZm9ybWVyIGlzIHVzZWQgd2hlbiBhIG1lbnUgbGlzdCBidXR0b24g
aGFzIGJlZW4gc3R5bGVkLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlCiAgICAgLy8gQXF1YSB0aGVt
ZWQgY29udHJvbHMgd2hlbmV2ZXIgcG9zc2libGUuIFdlIGFsd2F5cyB3YW50IHRvIHVzZSBHVEsr
IHRoZW1pbmcsIHNvCiAgICAgLy8gd2UgZG9uJ3QgbWFpbnRhaW4gdGhpcyBkaWZmZXJlbnRpYXRp
b24uCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqIGUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
ZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tT
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRo
dW1iU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIApAQCAtMTcxLDEzICsxNzEs
MTMgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCiAgICAgdmlydHVhbCBk
b3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVz
cyopIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jl
c3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJv
Z3Jlc3NCYXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBw
YWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHBhaW50Q2Fwc0xvY2tJbmRpY2F0
b3IoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCmlu
ZGV4IDUwNjc1ZDFlOTQwYjM4ZWY2NDZjYTkwMTYzM2VmZGQ1Yjk3OGIyNTUuLjA2MDM4M2FjMWU0
ZjVkNjA5YWMwMWQxNWQxM2ZhMTg3ZWFkZWZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVj
dCwgY29uc3QgUGFpbnRJbmYKIH0KICNlbmRpZgogCi12b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1
c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdElubmVyU3Bp
bkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
KSBjb25zdAogewogICAgIEd0a1N0eWxlKiBndGtTdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxl
KGd0a1NwaW5CdXR0b24oKSk7CiAgICAgY29uc3QgUGFuZ29Gb250RGVzY3JpcHRpb24qIGZvbnRE
ZXNjcmlwdGlvbiA9IGd0a1N0eWxlLT5mb250X2Rlc2M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCmluZGV4IDEwZGZjY2Y4Y2RkYTFlODRiYzMw
YjBjNTBkMzczY2QxYmY1OTE3YzcuLjU0MTNiYjc5NTMyNDg1M2MyMGNkZDE3N2MyN2RkNTYzMDA4
MTU2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
azMuY3BwCkBAIC03NzQsNyArNzc0LDcgQEAgc3RhdGljIGdpbnQgc3BpbkJ1dHRvbkFycm93U2l6
ZShHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGFycm93U2l6ZSAtIGFycm93
U2l6ZSAlIDI7IC8vIEZvcmNlIGV2ZW4uCiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVz
dElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0SW5uZXJTcGlu
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCop
IGNvbnN0CiB7CiAgICAgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0ID0gZ2V0U3R5bGVDb250ZXh0
KEdUS19UWVBFX1NQSU5fQlVUVE9OKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9S
ZW5kZXJUaGVtZVF0LmNwcAppbmRleCAwY2E5YTk1MWE2NDhmNjMyZjBhODgyYjE5ZGZkNzc3MGQ0
ZGM3Y2UzLi4yNjg4ZjlkZmFmY2MzZjY5ZThkOTliOGFiZTI3YjM4NjI2YTI1ZGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcApAQCAtMzE5LDcgKzMx
OSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6c2V0QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSogc3R5
bGUpIGNvbnN0CiAgICAgY29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoc3R5bGUpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lUXQ6OmFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVF0Ojph
ZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKIHsKICAgICAvLyBSZXNldHRpbmcgdGhlIHN0eWxlIGxpa2UgdGhpcyBs
ZWFkcyB0byBkaWZmZXJlbmNlcyBsaWtlOgogICAgIC8vIC0gUmVuZGVyVGV4dENvbnRyb2wge0lO
UFVUfSBhdCAoMiwyKSBzaXplIDE2OHgyNSBbYmdjb2xvcj0jRkZGRkZGXSBib3JkZXI6ICgycHgg
aW5zZXQgIzAwMDAwMCldCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZVF0Ojph
ZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LAogICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZVF0OjphZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lUXQ6OmFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBhZGp1c3RUZXh0
RmllbGRTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwogfQpAQCAtMzQyLDcgKzM0Miw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50CiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8s
IGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lUXQ6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVy
KCk7CiAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdE1lbnVM
aXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRQogICAgIHNl
dFBvcHVwUGFkZGluZyhzdHlsZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0TWVu
dUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0TWVudUxpc3RCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QK
IHsKICAgICAvLyBIZWlnaHQgaXMgbG9ja2VkIHRvIGF1dG8uCiAgICAgc3R5bGUtPnNldEhlaWdo
dChMZW5ndGgoQXV0bykpOwpAQCAtMzgzLDE4ICszODMsMTggQEAgZG91YmxlIFJlbmRlclRoZW1l
UXQ6OmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3Mq
IHJlbmQKICAgICByZXR1cm4gMC4xOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFBy
b2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAg
ICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KICNlbmRpZgogCi12b2lkIFJlbmRl
clRoZW1lUXQ6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVz
dFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0CiB7CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZl
ciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QK
IHsKICAgICBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzZWxlY3Rvciwgc3R5
bGUsIGVsZW1lbnQpOwogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CkBAIC00MDYs
NyArNDA2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFNlYXJjaEZpZWxkKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwKICAgICByZXR1cm4gcGFpbnRUZXh0RmllbGQo
bywgcGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkU3R5
bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKK3ZvaWQg
UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gUmVzZXR0aW5nIHRoZSBz
dHlsZSBsaWtlIHRoaXMgbGVhZHMgdG8gZGlmZmVyZW5jZXMgbGlrZToKQEAgLTQyMCw3ICs0MjAs
NyBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eQogICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxl
KHN0eWxlKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsCit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBl
KSBjb25zdAogewogICAgIC8vIExvZ2ljIHRha2VuIGZyb20gUmVuZGVyVGhlbWVDaHJvbWl1bS5j
cHAuCkBAIC00NzIsNyArNDcyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmYKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGREZWNv
cmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mCiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxk
RGVjb3JhdGlvbihvLCBwaSwgcik7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsCit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpCiB9CiAKICNp
Zm5kZWYgUVRfTk9fU1BJTkJPWAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RJbm5lclNwaW5C
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LAordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJl
c29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8v
IFVzZSB0aGUgc2FtZSB3aWR0aCBhcyBvdXIgbmF0aXZlIHNjcm9sbGJhcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCmluZGV4IDAzYjcxNjA3ZDNhYjI3YTA4Njlm
MTdjNDkyZjhlYTQxMmY0NWNkMTcuLjUxODVhZmU2ZDcxMzIxZGI4MmRmOGRmMzkzN2MwYmM2Njk2
ZDRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgKQEAg
LTk5LDM5ICs5OSwzOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnV0dG9u
U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRG
aWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50
VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NT
U3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCi0gICAg
dmlydHVhbCB2b2lkIGFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9n
cmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKICAgICAvLyBSZXR1cm5zIHRoZSByZXBlYXQgaW50ZXJ2YWwgb2YgdGhlIGFuaW1hdGlvbiBm
b3IgdGhlIHByb2dyZXNzIGJhci4KICAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25SZXBlYXRJ
bnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2xpZGVyVHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29y
YXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVj
b3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CiAKICNpZm5kZWYgUVRfTk9fU1BJTkJPWAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVu
ZGVyVGhlbWVRdE1vYmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJU
aGVtZVF0TW9iaWxlLmNwcAppbmRleCAwNjg1MjJhM2Y0ZjE4NzQyODVhZmU5MzQxZjc0ZjFkNDQ4
M2RkOGU3Li5iYTIzN2MyZDZjNWJlMzE5NmIzMTc2NzI2MTBiYTg2MTA4OTMzNjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmNwcApA
QCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVRdE1vYmlsZTo6Y29tcHV0ZVNpemVC
YXNlZE9uU3R5bGUoUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKSBjb25zCiAgICAgICAgIHJlbmRl
clN0eWxlLT5zZXRNaW5IZWlnaHQoTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVkKSk7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVRdE1vYmlsZTo6YWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIERp
dGNoIHRoZSBib3JkZXIuCiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CkBAIC02NzMsNyArNjcz
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVF0TW9iaWxlOjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVRdE1vYmlsZTo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lUXRNb2JpbGU6OmFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIC8vIFJlc2V0dGluZyB0aGUgc3R5
bGUgbGlrZSB0aGlzIGxlYWRzIHRvIGRpZmZlcmVuY2VzIGxpa2U6CiAgICAgLy8gLSBSZW5kZXJU
ZXh0Q29udHJvbCB7SU5QVVR9IGF0ICgyLDIpIHNpemUgMTY4eDI1IFtiZ2NvbG9yPSNGRkZGRkZd
IGJvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KQEAgLTcyMSw3ICs3MjEsNyBAQCBib29sIFJl
bmRlclRoZW1lUXRNb2JpbGU6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZVF0TW9iaWxlOjphZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
UXRNb2JpbGU6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBSZW5kZXJUaGVtZVF0
OjphZGp1c3RNZW51TGlzdFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CiAgICAgc3R5bGUtPnNl
dFBhZGRpbmdMZWZ0KExlbmd0aChtZW51TGlzdFBhZGRpbmcsIEZpeGVkKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmgKaW5kZXggMWMyNDgw
ZjM1ZWExNTRhZmMxMDQwZGViN2MwY2JjYjQ3NGE4MjNmNS4uOTUyYWE0ZjhhMTc4N2NhMTY2MjA2
ODEyMjA1YTNjMWJiNWFkMjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1JlbmRlclRoZW1lUXRNb2JpbGUuaApAQCAtNTgsMTQgKzU4LDE0IEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRU
ZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBh
aW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5k
ZXJUaGVtZVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3gu
Y3BwCmluZGV4IGM4YTE3NTBlZWM0MTE2M2Y4YWRjYjgzNzgxZDFmZWVmNTc4MDJhZTMuLjhhYzhh
OWE2MWE3MzIyNzU1MGQ1NGU1Mjk1MGM0ZGFjNWQ2MmQ5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwCkBAIC03MywxOCArNzMsMTggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVj
dCosIEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lk
IGFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIGludCBtaW5pbXVtTWVudUxpc3RTaXplKFJlbmRl
clN0eWxlKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBib29sIGlz
Q29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IEJvcmRlckRhdGEmLApAQCAt
MjU3LDcgKzI1Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXeDo6c3VwcG9ydHNGb2N1cyhDb250cm9s
UGFydCBwYXJ0KSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJUaGVtZVd4OjphZGp1c3RC
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVd4OjphZGp1c3RCdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
KSBjb25zdAogewogICAgIGFkZEludHJpbnNpY01hcmdpbnMoc3R5bGUpOwogfQpAQCAtMzAzLDcg
KzMwMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXeDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlclRoZW1lV3g6OmFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZVd4OjphZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KikgY29uc3QKIHsKIAogfQpAQCAtMzM1LDcgKzMzNSw3IEBAIGludCBSZW5k
ZXJUaGVtZVd4OjptaW5pbXVtTWVudUxpc3RTaXplKFJlbmRlclN0eWxlKikgY29uc3QKICAgICBy
ZXR1cm4gTUlOSU1VTV9NRU5VX0xJU1RfU0laRTsgCiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXeDo6
YWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXeDo6YWRqdXN0TWVudUxpc3RTdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsK
ICAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CiAKQEAgLTM3Myw3ICszNzMsNyBAQCBib29sIFJl
bmRlclRoZW1lV3g6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZVd4OjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVd4OjphZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklucHV0U3BlZWNoLmNwcAppbmRleCA5MjdhMWVlMTNiMTU0ZjY4N2FjMWVlNzE4
NDBjNmM5MzdlZTJhY2MyLi4zNzBhZTBhZWMwNDQ4Y2ViZTMxODZmMzA5OTQyNWVjNTMwNzcxMzhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbnB1dFNwZWVjaC5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRTcGVlY2hCdXR0b25T
aXplID0gMTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgbWluU3BlZWNoQnV0dG9uU2l6ZSA9IDg7CiBz
dGF0aWMgY29uc3QgZmxvYXQgbWF4U3BlZWNoQnV0dG9uU2l6ZSA9IDQwOwogCi12b2lkIFJlbmRl
cklucHV0U3BlZWNoOjphZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUoQ1NTU3R5bGVT
ZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopCit2b2lkIFJlbmRlcklucHV0
U3BlZWNoOjphZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopCiB7CiAgICAgLy8gU2NhbGUgdGhlIGJ1dHRv
biBzaXplIGJhc2VkIG9uIHRoZSBmb250IHNpemUuCiAgICAgZmxvYXQgZm9udFNjYWxlID0gc3R5
bGUtPmZvbnRTaXplKCkgLyBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5wdXRTcGVlY2guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbnB1dFNwZWVjaC5oCmluZGV4IDYzZWY4YWU2NWM0Y2M4
NjM5NzMwZTE4MjcyZmNmMmM4MmIxNTFiYjYuLmYzN2I4MzZmNDg5YWE2YmM0MTBmNWI4NDUxZmJj
YTgxMWNlYmY3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bnB1dFNwZWVjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbnB1dFNw
ZWVjaC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVu
ZGVySW5wdXRTcGVlY2ggewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFkanVzdElucHV0Rmll
bGRTcGVlY2hCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50Kik7CisgICAgc3RhdGljIHZvaWQgYWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgYm9v
bCBwYWludElucHV0RmllbGRTcGVlY2hCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKaW5kZXggZjFiYzFmYTI1ODk1ODVlYjhmNzliOTBjMGM3M2FmNGIyZWUzNjkw
ZS4uYWU3NTVjZWY2ZmRkZDVhNTBmMDdmNDI4NjgzNDY4YTA1Y2Y0ZDVkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFJlbmRlclRo
ZW1lOjpSZW5kZXJUaGVtZSgpCiB7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGUsCit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBVQUhhc0FwcGVhcmFuY2UsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwg
Y29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9y
KQogewogICAgIC8vIEZvcmNlIGlubGluZSBhbmQgdGFibGUgZGlzcGxheSBzdHlsZXMgdG8gYmUg
aW5saW5lLWJsb2NrIChleGNlcHQgZm9yIHRhYmxlLSB3aGljaCBpcyBibG9jaykKQEAgLTg0NCw3
ICs4NDQsNyBAQCBib29sIFJlbmRlclRoZW1lOjppc0RlZmF1bHQoY29uc3QgUmVuZGVyT2JqZWN0
KiBvKSBjb25zdAogCiAjaWYgIVVTRShORVdfVEhFTUUpCiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFk
anVzdENoZWNrYm94U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RDaGVja2JveFN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAg
IC8vIEEgc3VtbWFyeSBvZiB0aGUgcnVsZXMgZm9yIGNoZWNrYm94IGRlc2lnbmVkIHRvIG1hdGNo
IFdpbklFOgogICAgIC8vIHdpZHRoL2hlaWdodCAtIGhvbm9yZWQgKFdpbklFIGFjdHVhbGx5IHNj
YWxlcyBpdHMgY29udHJvbCBmb3Igc21hbGwgd2lkdGhzLCBidXQgbGV0cyBpdCBvdmVyZmxvdyBm
b3Igc21hbGwgaGVpZ2h0cy4pCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6
YWRqdXN0Q2hlY2tib3hTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGUKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lOjphZGp1c3RSYWRpb1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0UmFkaW9TdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsK
ICAgICAvLyBBIHN1bW1hcnkgb2YgdGhlIHJ1bGVzIGZvciBjaGVja2JveCBkZXNpZ25lZCB0byBt
YXRjaCBXaW5JRToKICAgICAvLyB3aWR0aC9oZWlnaHQgLSBob25vcmVkIChXaW5JRSBhY3R1YWxs
eSBzY2FsZXMgaXRzIGNvbnRyb2wgZm9yIHNtYWxsIHdpZHRocywgYnV0IGxldHMgaXQgb3ZlcmZs
b3cgZm9yIHNtYWxsIGhlaWdodHMuKQpAQCAtODc4LDMyICs4NzgsMzIgQEAgdm9pZCBSZW5kZXJU
aGVtZTo6YWRqdXN0UmFkaW9TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW4KICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lOjphZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdEJ1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBj
b25zdAogewogICAgIC8vIE1vc3QgcGxhdGZvcm1zIHdpbGwgY29tcGxldGVseSBob25vciBhbGwg
Q1NTLCBhbmQgc28gd2UgaGF2ZSBubyBuZWVkIHRvIGFkanVzdCB0aGUgc3R5bGUKICAgICAvLyBh
dCBhbGwgYnkgZGVmYXVsdC4gIFdlIHdpbGwgc3RpbGwgYWxsb3cgdGhlIHRoZW1lIGEgY3JhY2sg
YXQgc2V0dGluZyB1cCBhIGRlc2lyZWQgdmVydGljYWwgc2l6ZS4KICAgICBzZXRCdXR0b25TaXpl
KHN0eWxlKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Cit2b2lk
IFJlbmRlclRoZW1lOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0KICNlbmRpZgogCi12b2lkIFJlbmRl
clRoZW1lOjphZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFRleHRGaWVsZFN0
eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAogewogfQog
Ci12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0
VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3QKIHsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhl
bWU6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0CiB7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotdm9pZCBSZW5k
ZXJUaGVtZTo6YWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIHsKICAgICBSZW5kZXJJbnB1dFNwZWVjaDo6YWRqdXN0SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CiB9CkBAIC05MTUsNyArOTE1
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRJbnB1dEZpZWxkU3BlZWNoQnV0dG9uKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEkKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FVEVS
X1RBRykKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdE1ldGVyU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
OjphZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CkBA
IC05NDgsNyArOTQ4LDcgQEAgZG91YmxlIFJlbmRlclRoZW1lOjphbmltYXRpb25EdXJhdGlvbkZv
clByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVz
dFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0CiB7CiB9CiAjZW5kaWYKQEAgLTk1OCwxNSArOTU4LDE1IEBAIGJvb2wgUmVuZGVyVGhl
bWU6OnNob3VsZEhhdmVTcGluQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkg
Y29uc3QKICAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5pc1N0ZXBwYWJsZSgpICYmICFpbnB1dEVs
ZW1lbnQtPmlzUmFuZ2VDb250cm9sKCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdE1l
bnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAogewogfQogCi12b2lk
IFJlbmRlclRoZW1lOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2xp
ZGVyVHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3QKIHsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQg
UmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgYWRqdXN0U2xpZGVyVGh1bWJT
aXplKHN0eWxlKTsKIH0KQEAgLTk3NSwyMyArOTc1LDIzIEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFk
anVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0CiB7CiB9CiAKLXZvaWQgUmVu
ZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hG
aWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAog
ewogfQogCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9p
ZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJl
c29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lOjphZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3QKIHsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdAogewogfQogCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDk4YmEzYWFjZTBh
MDM5NjJkMGNhNzM2ODViYzY4ZjM0YzZjYmY1OGMuLjRiZmI3ZTY1ZjAyNmZhMGM0OGRkODIxZTM5
NzA0NDVjNmFlODE5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAvLyBtZXRyaWNzIGFuZCBkZWZhdWx0cyBnaXZl
biB0aGUgY29udGVudHMgb2YgdGhlIHN0eWxlLiAgVGhpcyBpbmNsdWRlcyBzb3BoaXN0aWNhdGVk
IG9wZXJhdGlvbnMgbGlrZQogICAgIC8vIHNlbGVjdGlvbiBvZiBjb250cm9sIHNpemUgYmFzZWQg
b2ZmIHRoZSBmb250LCB0aGUgZGlzYWJsaW5nIG9mIGFwcGVhcmFuY2Ugd2hlbiBjZXJ0YWluIG90
aGVyIHByb3BlcnRpZXMgbGlrZQogICAgIC8vICJib3JkZXIiIGFyZSBzZXQsIG9yIGlmIHRoZSBh
cHBlYXJhbmNlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHRoZW1lLgotICAgIHZvaWQgYWRqdXN0
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCosICBib29sIFVB
SGFzQXBwZWFyYW5jZSwKKyAgICB2b2lkIGFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqLCAgYm9vbCBVQUhhc0FwcGVhcmFuY2UsCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBCb3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3Im
IGJhY2tncm91bmRDb2xvcik7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gcGFp
bnQgdGhlIHdpZGdldCBhcyBhIGJhY2tncm91bmQgb2YgdGhlIFJlbmRlck9iamVjdC4gIEEgd2lk
Z2V0J3MgZm9yZWdyb3VuZCwgZS5nLiwgdGhlCkBAIC0yMzUsNjggKzIzNSw2OCBAQCBwcm90ZWN0
ZWQ6CiAKICNpZiAhVVNFKE5FV19USEVNRSkKICAgICAvLyBNZXRob2RzIGZvciBlYWNoIGFwcGVh
cmFuY2UgdmFsdWUuCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdENoZWNrYm94U3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqKSBjb25zdCB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSYWRpb1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmFk
aW9TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
UmFkaW9TaXplKFJlbmRlclN0eWxlKikgY29uc3QgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50
QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEJ1dHRvblNpemUoUmVuZGVyU3R5
bGUqKSBjb25zdCB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJ
bm5lclNwaW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGFkanVz
dFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBw
YWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVh
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJl
YShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1
ZTsgfQogCiAjaWYgRU5BQkxFKE1FVEVSX1RBRykKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWV0
ZXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1ldGVyU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1ldGVyKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJvZ3Jl
c3NCYXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gp
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50SW5w
dXRGaWVsZFNwZWVjaEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUcmFj
a1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVy
VGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmll
bGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVz
dFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29y
YXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAKaW5k
ZXggMGFkYTE2Y2NmNGYwZTUwYTFkY2NiMjcwNjJmMTk4MGZmZjAyZTk0YS4uOGI3MTIzMDg4MzY1
ZGM2YmYyYjY0NTU3ZjA2YzhlMzViZmQyOWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCkBAIC03NSw3ICs3
NSw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6ZXh0cmFEZWZhdWx0U3R5
bGVTaGVldCgpCiAgICAgICAgIFN0cmluZyh0aGVtZUNocm9taXVtQW5kcm9pZFVzZXJBZ2VudFN0
eWxlU2hlZXQsIHNpemVvZih0aGVtZUNocm9taXVtQW5kcm9pZFVzZXJBZ2VudFN0eWxlU2hlZXQp
KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YWRqdXN0SW5uZXJTcGlu
QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjphZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKIHsKICAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpKSB7
CiAgICAgICAgIC8vIE1hdGNoIENocm9taXVtIExpbnV4IHNwaW4gYnV0dG9uIHN0eWxlIGluIGxh
eW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtQW5kcm9pZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1BbmRyb2lkLmgKaW5kZXggNTM0OTAxMzVjNjQzMmU3MWY0YzA1M2IxODI5Mjgy
ODYyYzBmYjQxYy4uM2RjZDZkZjkzNjZkNWU1MGI3N2RkMWRjZWM2MmY3MTY0MjI5MDhkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1B
bmRyb2lkLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDb2xvciBz
eXN0ZW1Db2xvcihpbnQgY3NzVmFsaWRJZCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGVsZWdhdGVzTWVudUxp
c3RSZW5kZXJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAK
aW5kZXggZDRlZDJhMWU3ODQyYWUwYWYyMTFjZDkyNzZlZmZhYzEwN2I3MmQzNy4uMDE5Njk0ZjBk
NmI2MTQ0MjIxNDMzZmNlNmU5Y2M3ZTU1ZGU0NGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKQEAgLTMwNSw3ICsz
MDUsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkZXJUaHVtYihS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAor
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewog
ICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRJbm5lclNwaW5CdXR0b24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggMzNiNmY1NDI1
NjUzNjNjMGJlOTlhZjAzNGNhNjFjZTk2ZmEyZGYyMy4uN2UzMDgwODNmNjE3ZDExNWU3MWYxMTNk
N2Q2MmMzZTFjZjMzY2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtTGludXguaApAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdmlydHVhbCBi
b29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0
b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJl
c29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAgICAgdmlydHVhbCBib29sIHBvcHNNZW51QnlTcGFj
ZU9yUmV0dXJuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKaW5kZXgg
ZmI3OTlmMzExMTg0YjVjY2UzZTc1NmNlM2VkMmE3NDFjZTQ0NmJkMS4uNDBiYjBhMzliZDM3Y2Ew
ZjJlNDE0YzRkZTc4NGE3N2E2ZWI4ODc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAg
dm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6c2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKICAgICBzZXRDaGVja2JveFNpemUoc3R5bGUpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVDaHJv
bWl1bVNraWE6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIGlmIChzdHlsZS0+YXBwZWFyYW5jZSgpID09
IFB1c2hCdXR0b25QYXJ0KSB7CiAgICAgICAgIC8vIElnbm9yZSBsaW5lLWhlaWdodC4KQEAgLTI0
MSw3ICsyNDEsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFRleHRBcmVh
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLAogICAgIHJldHVybiBwYWludFRl
eHRGaWVsZChvLCBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRq
dXN0U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNl
YXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCopIGNvbnN0CiB7CiAgICAgIC8vIElnbm9yZSBsaW5lLWhlaWdodC4KICAgICAgc3R5bGUtPnNl
dExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwpAQCAtMjUyLDcg
KzI1Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2VhcmNoRmllbGQo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mCiAgICAgcmV0dXJuIHBhaW50VGV4dEZp
ZWxkKG8sIGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6
YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBTY2FsZSB0aGUgYnV0dG9u
IHNpemUgYmFzZWQgb24gdGhlIGZvbnQgc2l6ZQogICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0eWxl
LT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplOwpAQCAtMjk5LDE0ICsy
OTksMTQgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIGNhbmNlbEIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlv
blN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBj
b25zdAordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0U2VhcmNoRmllbGREZWNv
cmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCop
IGNvbnN0CiB7CiAgICAgSW50U2l6ZSBlbXB0eVNpemUoMSwgMTEpOwogICAgIHN0eWxlLT5zZXRX
aWR0aChMZW5ndGgoZW1wdHlTaXplLndpZHRoKCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldEhl
aWdodChMZW5ndGgoZW1wdHlTaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCopIGNvbnN0CiB7CiAgICAgLy8gU2NhbGUgdGhlIGRlY29yYXRpb24gc2l6ZSBiYXNlZCBvbiB0
aGUgZm9udCBzaXplCiAgICAgZmxvYXQgZm9udFNjYWxlID0gc3R5bGUtPmZvbnRTaXplKCkgLyBk
ZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemU7CkBAIC0zNDAsNyArMzQwLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJl
bmRlck9iamVjdCogbWEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVD
aHJvbWl1bVNraWE6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAg
ICAgLy8gU2NhbGUgdGhlIGJ1dHRvbiBzaXplIGJhc2VkIG9uIHRoZSBmb250IHNpemUKICAgICBm
bG9hdCBmb250U2NhbGUgPSBzdHlsZS0+Zm9udFNpemUoKSAvIGRlZmF1bHRDb250cm9sRm9udFBp
eGVsU2l6ZTsKQEAgLTQ2NiwxMyArNDY2LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNr
aWE6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQCiAj
ZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0TWVudUxpc3RT
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBXZWJD
b3JlOjpFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRq
dXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBXZWJDb3JlOjpFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8vIEhlaWdodCBpcyBsb2Nr
ZWQgdG8gYXV0byBvbiBhbGwgYnJvd3NlcnMuCiAgICAgc3R5bGUtPnNldExpbmVIZWlnaHQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lQ2hy
b21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAg
ICAgYWRqdXN0TWVudUxpc3RTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaAppbmRleCA4
MjhhNjQwZDU1OGE4MjJlOGNlZjc2ZGRiODg2NDBkMDQ2OGYzNTk2Li5iYjAzNDc1ZTQ2MmI1MDRh
ZjdmYTlhNGYwNjE0ZTVkYWRjMWMzNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaApAQCAtNzAsMjIgKzcwLDIyIEBAIGNsYXNz
IFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhIDogcHVibGljIFJlbmRlclRoZW1lIHsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdEJ1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFk
anVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhQ29udHJvbHNCYWNrZ3JvdW5kKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKQEAgLTEwNiw4ICsxMDYs
OCBAQCBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtU2tpYSA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7
CiAgICAgICAgIC8vIEluIHNob3J0LCB3ZSBlaXRoZXIgZ28gZG93biB0aGUgTWVudUxpc3QgY29k
ZSBwYXRoIG9yIHRoZSBNZW51TGlzdEJ1dHRvbgogICAgICAgICAvLyBjb2RlcGF0aC4gV2UgbmV2
ZXIgZ28gZG93biBib3RoLiBBbmQgaW4gYm90aCBjYXNlcywgdGhleSByZW5kZXIgdGhlCiAgICAg
ICAgIC8vIGVudGlyZSBtZW51bGlzdC4KLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVM
aXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0
dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICNpZiBFTkFCTEUoUFJPR1JFU1Nf
VEFHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1XaW4uY3BwCmluZGV4IDFkYzRkM2NkMmU2OWU0N2EzNDljMTE2YzJhMDkwY2YwNGU4MmNhOWYu
LjYwNTY2NTk3NmEzNWYxZWNjY2NmMzYyOGRlZTdiZGNhYjIzMTUyZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTcw
Niw3ICs3MDYsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGV4dEZpZWxk
SW50ZXJuYWwoUmVuZGVyT2JqZWN0KiBvLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBS
ZW5kZXJUaGVtZUNocm9taXVtV2luOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbjo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgaW50IHdp
ZHRoID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOwogICAg
IHN0eWxlLT5zZXRXaWR0aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7CkBAIC03NjAsNyArNzYwLDcg
QEAgZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmFuaW1hdGlvbkR1cmF0aW9uRm9yUHJv
Z3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqIHIKICAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25G
cmFtZVJhdGU7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6YWRqdXN0UHJvZ3Jl
c3NCYXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKaW5k
ZXggYzQ3YTY3OTEwZDgwNzhhNmViYjdhYTU3MzJmZjM0MWE5NWU1ZWU0NC4uNzg1NmQwMzlmOWY4
MzZjZGM1YjhmOGMxNWQzOThiM2RhMTJkMmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCkBAIC04NiwxMyArODYsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBTZWUgY29tbWVudCBpbiBSZW5kZXJUaGVtZUNo
cm9taXVtU2tpYTo6c2V0RGVmYXVsdEZvbnRTaXplKCkgcmVnYXJkaW5nIHVnbGluZXNzIG9mIHRo
aXMgaGFjay4KICAgICAgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdEZvbnRTaXplKGludCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJT
cGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCiAgICAgICAgIHZpcnR1YWwgZG91YmxlIGFu
aW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0Jh
cihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJv
Z3Jlc3NCYXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICAgICAgdmlydHVh
bCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLmgKaW5kZXggNjZjOGFkNDk5OTVjNTFiN2VlY2Q5MDE2OWY4OGIxOTYxYTQxODc2
ZC4uZWJiYjIzNTJjNThiYzllYjUwMjRhYjk4YTM1NGMzNTM0ZWFhNWExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKQEAgLTEwMyw0MSArMTAzLDQxIEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3JzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFRl
eHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RU
ZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVy
KiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAj
aWYgRU5BQkxFKFBST0dSRVNTX1RBRykKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJvZ3Jlc3NC
YXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFBy
b2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHls
ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1i
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFNl
YXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2Vh
cmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29y
YXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICNpZiBFTkFCTEUoVklERU8pCkBA
IC0xOTAsNyArMTkwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNpemVGcm9tRm9udChSZW5k
ZXJTdHlsZSosIGNvbnN0IEludFNpemUqIHNpemVzKSBjb25zdDsKICAgICBJbnRTaXplIHNpemVG
b3JGb250KFJlbmRlclN0eWxlKiwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGNvbnN0OwogICAgIElu
dFNpemUgc2l6ZUZvclN5c3RlbUZvbnQoUmVuZGVyU3R5bGUqLCBjb25zdCBJbnRTaXplKiBzaXpl
cykgY29uc3Q7Ci0gICAgdm9pZCBzZXRGb250RnJvbUNvbnRyb2xTaXplKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIE5TQ29udHJvbFNpemUpIGNvbnN0OworICAgIHZvaWQgc2V0Rm9u
dEZyb21Db250cm9sU2l6ZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBOU0NvbnRyb2xT
aXplKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQ2hlY2tlZFN0YXRlKE5TQ2VsbCosIGNvbnN0
IFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKE5TQ2VsbCosIGNv
bnN0IFJlbmRlck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCmluZGV4IDAwNzU0NTJlODk1M2IxNmU0YWU2NDU0MWFjOTk4YjIyYjE0ZDI4MTcuLjRj
YmI4YWYyZjkxODIxNWZlNDY4ZGZmOGI5MWM0MGY2MWVhMDg3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIFJl
bmRlclRoZW1lTWFjOjpzZXRTaXplRnJvbUZvbnQoUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJ
bnRTaXplKiBzaXplcykgYwogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLmhl
aWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lTWFjOjpzZXRGb250RnJvbUNv
bnRyb2xTaXplKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIE5TQ29udHJv
bFNpemUgY29udHJvbFNpemUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lTWFjOjpzZXRGb250RnJv
bUNvbnRyb2xTaXplKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIE5TQ29udHJv
bFNpemUgY29udHJvbFNpemUpIGNvbnN0CiB7CiAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNj
cmlwdGlvbjsKICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7CkBA
IC03MjYsNyArNzI2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZU1hYzo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0CiB7CiB9CiAKQEAgLTc0OCw3ICs3NDgsNyBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lTWFj
OjphZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0VGV4dEFyZWFTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0KIApAQCAt
OTUzLDcgKzk1Myw3IEBAIGRvdWJsZSBSZW5kZXJUaGVtZU1hYzo6YW5pbWF0aW9uRHVyYXRpb25G
b3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0CiAgICAgcmV0dXJuIHByb2dyZXNz
QW5pbWF0aW9uTnVtRnJhbWVzICogcHJvZ3Jlc3NBbmltYXRpb25GcmFtZVJhdGU7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lTWFjOjph
ZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdAogewogfQogCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBzdGF0aWMgY29uc3QgSW50
U2l6ZSogbWVudUxpc3RCdXR0b25TaXplcygpCiAgICAgcmV0dXJuIHNpemVzOwogfQogCi12b2lk
IFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRl
clRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgTlNDb250cm9sU2l6
ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSk7CiAKQEAgLTEyNjQsNyAr
MTI2NCw3IEBAIGludCBSZW5kZXJUaGVtZU1hYzo6cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20o
UmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFJlbmRl
clRoZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZU1hYzo6
YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS0+Zm9u
dFNpemUoKSAvIGJhc2VGb250U2l6ZTsKIApAQCAtMTMwNiw3ICsxMzA2LDcgQEAgaW50IFJlbmRl
clRoZW1lTWFjOjptaW5pbXVtTWVudUxpc3RTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QK
IGNvbnN0IGludCB0cmFja1dpZHRoID0gNTsKIGNvbnN0IGludCB0cmFja1JhZGl1cyA9IDI7CiAK
LXZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lTWFjOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVs
bHB0cik7CiB9CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2xpZGVy
VGh1bWJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2xp
ZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIFJlbmRlclRoZW1lOjphZGp1c3RTbGlk
ZXJUaHVtYlN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgc3R5bGUtPnNldEJv
eFNoYWRvdyhudWxscHRyKTsKQEAgLTE0NzksNyArMTQ3OSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVN
YWM6OnNldFNlYXJjaEZpZWxkU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgc2V0
U2l6ZUZyb21Gb250KHN0eWxlLCBzZWFyY2hGaWVsZFNpemVzKCkpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBPdmVycmlkZSBib3Jk
ZXIuCiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CkBAIC0xNTY3LDcgKzE1NjcsNyBAQCBjb25z
dCBJbnRTaXplKiBSZW5kZXJUaGVtZU1hYzo6Y2FuY2VsQnV0dG9uU2l6ZXMoKSBjb25zdAogICAg
IHJldHVybiBzaXplczsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmll
bGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5c3RlbUZvbnQoc3R5
bGUsIGNhbmNlbEJ1dHRvblNpemVzKCkpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6
ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAtMTU4Miw3ICsxNTgyLDcgQEAgY29uc3QgSW50U2l6ZSog
UmVuZGVyVGhlbWVNYWM6OnJlc3VsdHNCdXR0b25TaXplcygpIGNvbnN0CiB9CiAKIGNvbnN0IGlu
dCBlbXB0eVJlc3VsdHNPZmZzZXQgPSA5Owotdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2Vh
cmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hG
aWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKIHsKICAgICBJbnRTaXplIHNpemUgPSBzaXplRm9yU3lzdGVtRm9udChz
dHlsZSwgcmVzdWx0c0J1dHRvblNpemVzKCkpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgo
c2l6ZS53aWR0aCgpIC0gZW1wdHlSZXN1bHRzT2Zmc2V0LCBGaXhlZCkpOwpAQCAtMTU5NSw3ICsx
NTk1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29u
c3QKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29u
c3QKIHsKICAgICBJbnRTaXplIHNpemUgPSBzaXplRm9yU3lzdGVtRm9udChzdHlsZSwgcmVzdWx0
c0J1dHRvblNpemVzKCkpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgp
LCBGaXhlZCkpOwpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGEK
IH0KIAogY29uc3QgaW50IHJlc3VsdHNBcnJvd1dpZHRoID0gNTsKLXZvaWQgUmVuZGVyVGhlbWVN
YWM6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZU1h
Yzo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0g
c2l6ZUZvclN5c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKICAgICBzdHls
ZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSArIHJlc3VsdHNBcnJvd1dpZHRoLCBGaXhl
ZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAK
aW5kZXggNDY3MmVmZTRiY2U1Yjk4ZWVhYzkxZWU2ZTgxNmY2ZWYxYjkwMzQ5OC4uMTJjOTI1Y2Iz
OWI3ZmJmYmE0Y2UyYjdiZDJlM2MwNDNlODk1ZDE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVNhZmFyaTo6c2V0U2l6ZUZyb21Gb250KFJlbmRlclN0eWxlKiBzdHlsZSwgY29u
c3QgSW50U2l6ZSogc2l6ZXMKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZS5o
ZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6c2V0Rm9udEZy
b21Db250cm9sU2l6ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNh
ZmFyaTo6c2V0Rm9udEZyb21Db250cm9sU2l6ZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplKSBjb25zdAogewogICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247CiAgICAgZm9udERlc2NyaXB0aW9uLnNl
dElzQWJzb2x1dGVTaXplKHRydWUpOwpAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVTYWZhcmk6OnNldEJ1dHRvblBhZGRpbmdGcm9tQ29udHJvbFNpemUoUmVuZGVyU3R5bGUqIHN0
eWxlLCBOU0NvCiAgICAgc3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKDAsIEZpeGVkKSk7
CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAg
IC8vIFRoZXJlIGFyZSB0aHJlZSBhcHBlYXJhbmNlIGNvbnN0YW50cyBmb3IgYnV0dG9ucy4KICAg
ICAvLyAoMSkgUHVzaC1idXR0b24gaXMgdGhlIGNvbnN0YW50IGZvciB0aGUgZGVmYXVsdCBBcXVh
IHN5c3RlbSBidXR0b24uICBQdXNoIGJ1dHRvbnMgd2lsbCBub3Qgc2NhbGUgdmVydGljYWxseSBh
bmQgd2lsbCBub3QgYWxsb3cKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRq
dXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVu
dCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RUZXh0RmllbGRTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0KIApAQCAt
NjQzLDcgKzY0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RUZXh0QXJlYVN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZVNhZmFyaTo6YWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3QKIHsKIH0KIApAQCAtODU5LDcgKzg1OSw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIHBhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1l
U2FmYXJpOjphZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lU2Fm
YXJpOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgTlNDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSk7CiAKQEAgLTkyNCw3ICs5MjQsNyBA
QCBpbnQgUmVuZGVyVGhlbWVTYWZhcmk6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9tKFJlbmRl
clN0eWxlKiBzdHlsZSkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJU
aGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxl
Y3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIGZsb2F0
IGZvbnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gYmFzZUZvbnRTaXplOwogICAgIApAQCAt
OTg4LDcgKzk4OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUp
IGNvbnN0IAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShT
dHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBj
b25zdCAKIHsgCiAgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1iU3R5bGUoc2VsZWN0
b3IsIHN0eWxlLCBlKTsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOyAKQEAgLTEw
NDIsNyArMTA0Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnNldFNlYXJjaEZpZWxkU2l6
ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgc2V0U2l6ZUZyb21Gb250KHN0eWxlLCBz
ZWFyY2hGaWVsZFNpemVzKCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RT
ZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RT
ZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gT3ZlcnJpZGUgYm9yZGVyLgogICAgIHN0
eWxlLT5yZXNldEJvcmRlcigpOwpAQCAtMTA5Miw3ICsxMDkyLDcgQEAgY29uc3QgSW50U2l6ZSog
UmVuZGVyVGhlbWVTYWZhcmk6OmNhbmNlbEJ1dHRvblNpemVzKCkgY29uc3QKICAgICByZXR1cm4g
c2l6ZXM7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBJbnRTaXplIHNpemUgPSBz
aXplRm9yU3lzdGVtRm9udChzdHlsZSwgY2FuY2VsQnV0dG9uU2l6ZXMoKSk7CiAgICAgc3R5bGUt
PnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CkBAIC0xMTA2LDcgKzExMDYs
NyBAQCBjb25zdCBJbnRTaXplKiBSZW5kZXJUaGVtZVNhZmFyaTo6cmVzdWx0c0J1dHRvblNpemVz
KCkgY29uc3QKIH0KIAogY29uc3QgaW50IGVtcHR5UmVzdWx0c09mZnNldCA9IDk7Ci12b2lkIFJl
bmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5
bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKIHsKICAgICBJbnRTaXplIHNpemUgPSBzaXplRm9yU3lzdGVtRm9udChzdHlsZSwg
cmVzdWx0c0J1dHRvblNpemVzKCkpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53
aWR0aCgpIC0gZW1wdHlSZXN1bHRzT2Zmc2V0LCBGaXhlZCkpOwpAQCAtMTExOCw3ICsxMTE4LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1
bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBzaXplID0gc2l6ZUZvclN5
c3RlbUZvbnQoc3R5bGUsIHJlc3VsdHNCdXR0b25TaXplcygpKTsKICAgICBzdHlsZS0+c2V0V2lk
dGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKQEAgLTExNDEsNyArMTE0MSw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0CiB9CiAKIGNvbnN0IGludCByZXN1bHRzQXJyb3dXaWR0aCA9
IDU7Ci12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0U2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBJbnRTaXplIHNpemUgPSBzaXplRm9y
U3lzdGVtRm9udChzdHlsZSwgcmVzdWx0c0J1dHRvblNpemVzKCkpOwogICAgIHN0eWxlLT5zZXRX
aWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpICsgcmVzdWx0c0Fycm93V2lkdGgsIEZpeGVkKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCmluZGV4IDg1ZGRi
NGQ1MGE0NjRmZGQ1YzNmYmE1M2I0YzcyMDRiMDJkN2VjOTMuLjA1YjFmYjVlYTM1MzIxOGUxMDg2
ZDU1NTRkMDhhMmVkMmI3OTRjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVNhZmFyaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVNhZmFyaS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGlu
dCBtaW5pbXVtTWVudUxpc3RTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OyAKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVy
VGh1bWJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
IAogICAgIAogICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdChSZW5kZXJT
dHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nUmlnaHQo
UmVuZGVyU3R5bGUqKSBjb25zdDsKQEAgLTkyLDM4ICs5MiwzOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5
bGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBXZWJDb3JlOjpFbGVtZW50KikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRCdXR0b25TaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVh
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVh
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlz
dEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVh
bCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogIAogICAgIHZpcnR1YWwgYm9vbCBwYWludENhcHNMb2NrSW5k
aWNhdG9yKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
QEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U2l6ZUZyb21Gb250KFJl
bmRlclN0eWxlKiwgY29uc3QgSW50U2l6ZSogc2l6ZXMpIGNvbnN0OwogICAgIEludFNpemUgc2l6
ZUZvckZvbnQoUmVuZGVyU3R5bGUqLCBjb25zdCBJbnRTaXplKiBzaXplcykgY29uc3Q7CiAgICAg
SW50U2l6ZSBzaXplRm9yU3lzdGVtRm9udChSZW5kZXJTdHlsZSosIGNvbnN0IEludFNpemUqIHNp
emVzKSBjb25zdDsKLSAgICB2b2lkIHNldEZvbnRGcm9tQ29udHJvbFNpemUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgTlNDb250cm9sU2l6ZSkgY29uc3Q7CisgICAgdm9pZCBzZXRG
b250RnJvbUNvbnRyb2xTaXplKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIE5TQ29udHJv
bFNpemUpIGNvbnN0OwogCiAgICAgLy8gSGVscGVycyBmb3IgYWRqdXN0aW5nIGFwcGVhcmFuY2Ug
YW5kIGZvciBwYWludGluZwogICAgIGNvbnN0IEludFNpemUqIGNoZWNrYm94U2l6ZXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IGVk
MzRlZTc3MmE0YzkxYTIyNjlhMzVkZjkzODJhOGJkNzg2YmM2MTYuLjA0ZDU0YjI5NDdkM2NlZTVh
OTRiZmIyNWE2NjZlNDdhNGExMmE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcApAQCAtNjg3LDcgKzY4Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46
OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RJ
bm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0
SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICBpbnQgd2lkdGggPSA6OkdldFN5c3Rl
bU1ldHJpY3MoU01fQ1hWU0NST0xMKTsKICAgICBpZiAod2lkdGggPD0gMCkKQEAgLTc1NCwxMyAr
NzU0LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEluCiAgICAgcmV0dXJuIHBhaW50TWVudUxp
c3RCdXR0b24obywgaSwgcik7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVM
aXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0U3R5
bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKIHsKICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKICAgICBhZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVX
aW46OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVX
aW46OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICAvLyBUaGVzZSBhcmUg
dGhlIHBhZGRpbmdzIG5lZWRlZCB0byBwbGFjZSB0aGUgdGV4dCBjb3JyZWN0bHkgaW4gdGhlIDxz
ZWxlY3Q+IGJveAogICAgIGNvbnN0IGludCBkcm9wRG93bkJveFBhZGRpbmdUb3AgICAgPSAyOwpA
QCAtODYyLDcgKzg2Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGQo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0CiAgICAgcmV0dXJuIHBh
aW50VGV4dEZpZWxkKG8sIGksIHIpOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RT
ZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFy
Y2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gT3ZlcnJpZGUgcGFkZGluZ1NpemUgdG8gbWF0
Y2ggQXBwS2l0IHRleHQgcG9zaXRpb25pbmcuCiAgICAgY29uc3QgaW50IHBhZGRpbmcgPSAxOwpA
QCAtODk5LDcgKzg5OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRD
YW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gU2NhbGUgdGhlIGJ1dHRvbiBzaXpl
IGJhc2VkIG9uIHRoZSBmb250IHNpemUKICAgICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS0+Zm9u
dFNpemUoKSAvIGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZTsKQEAgLTkwOCwxNCArOTA4LDE0
IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0CiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgo
Y2FuY2VsQnV0dG9uU2l6ZSwgRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRq
dXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVX
aW46OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgSW50U2l6
ZSBlbXB0eVNpemUoMSwgMTEpOwogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoZW1wdHlTaXpl
LndpZHRoKCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoZW1wdHlTaXpl
LmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVX
aW46OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAg
IC8vIFNjYWxlIHRoZSBkZWNvcmF0aW9uIHNpemUgYmFzZWQgb24gdGhlIGZvbnQgc2l6ZQogICAg
IGZsb2F0IGZvbnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250
UGl4ZWxTaXplOwpAQCAtOTQ4LDcgKzk0OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsKICAgICAvLyBTY2FsZSB0
aGUgYnV0dG9uIHNpemUgYmFzZWQgb24gdGhlIGZvbnQgc2l6ZQogICAgIGZsb2F0IGZvbnRTY2Fs
ZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAppbmRleCAwMWEzYWQ4ZTA4OWI0
MjkzOGI1Y2U1YThhZTljMzQ4OTdlNGY4YzQ4Li5kMjMzN2MzNjFmNDNjYzc0NDJkOTgxZmM1NDRk
YjVhZTk4YWFjNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
aApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwpAQCAtODUsOSArODUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHIpCiAgICAgeyByZXR1cm4gcGFpbnRUZXh0RmllbGQobywgaSwgcik7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVh
bCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCkBA
IC05NywyNiArOTcsMjYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHBvcHVwT3B0aW9u
U3VwcG9ydHNUZXh0SW5kZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNl
YXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRp
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRz
RGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3Jh
dGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqKSBjb25zdCB7fQotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0Rmll
bGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50Kikg
Y29uc3Qge30KLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3Qge30KKyAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCopIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0Rmll
bGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29u
c3QgeyB9CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0IHsgfQogCiAgICAgc3RhdGlj
IHZvaWQgc2V0V2ViS2l0SXNCZWluZ1VubG9hZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcAppbmRleCA0YTdiYjI1NDY2Mjc5OTU4Zjk5OGVj
N2Q1N2VjMGJjYjhjNjUxMDBjLi41NjkwZDVmN2Y5N2ViMDZjZTgzNTVkOGI2NjAyODI1ODRkNjQw
ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5D
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3Bw
CkBAIC0yMzUsNyArMjM1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbkNFOjpwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0TWVudUxpc3RTdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
KSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
CiB7CiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CiAgICAgYWRqdXN0TWVudUxpc3RCdXR0b25T
dHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVXaW5DRTo6YWRqdXN0QnV0dG9uSW5uZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpIGNv
bnN0CiAgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aCgzLCBGaXhlZCkpOwogfQogCi12
b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3Zv
aWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAg
IC8vIE92ZXJyaWRlIHBhZGRpbmcgc2l6ZSB0byBtYXRjaCBBcHBLaXQgdGV4dCBwb3NpdGlvbmlu
Zy4KICAgICBjb25zdCBpbnQgcGFkZGluZyA9IDE7CkBAIC0zOTIsMjEgKzM5MiwyMSBAQCBib29s
IFJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkg
Y29uc3QKIHsKICAgICBJbnRTaXplIGNhbmNlbFNpemUoMTMsIDExKTsKICAgICBzdHlsZS0+c2V0
V2lkdGgoTGVuZ3RoKGNhbmNlbFNpemUud2lkdGgoKSwgRml4ZWQpKTsKICAgICBzdHlsZS0+c2V0
SGVpZ2h0KExlbmd0aChjYW5jZWxTaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJl
bmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxl
KFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUp
IGNvbnN0CiB7CiAgICAgSW50U2l6ZSBlbXB0eVNpemUoMSwgMTEpOwogICAgIHN0eWxlLT5zZXRX
aWR0aChMZW5ndGgoZW1wdHlTaXplLndpZHRoKCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldEhl
aWdodChMZW5ndGgoZW1wdHlTaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi12b2lkIFJlbmRl
clRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBj
b25zdAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZSkgY29uc3QKIHsKICAgICBJbnRTaXplIG1hZ25pZmllclNpemUoMTUsIDExKTsK
ICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKG1hZ25pZmllclNpemUud2lkdGgoKSwgRml4ZWQp
KTsKQEAgLTQxOSw3ICs0MTksNyBAQCBib29sIFJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgSW50U2l6ZSBtYWduaWZp
ZXJTaXplKDE1LCAxMSk7CiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChtYWduaWZpZXJTaXpl
LndpZHRoKCksIEZpeGVkKSk7CkBAIC00MzIsNyArNDMyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdp
bkNFOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVXaW5DRTo6YWRq
dXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbkNFOjph
ZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBw
YWRkaW5ncyBuZWVkZWQgdG8gcGxhY2UgdGhlIHRleHQgY29ycmVjdGx5IGluIHRoZSA8c2VsZWN0
PiBib3gKICAgICBjb25zdCBpbnQgZHJvcERvd25Cb3hQYWRkaW5nVG9wICAgID0gMjsKQEAgLTUy
OSw3ICs1MjksNyBAQCBib29sIFJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2xpZGVyVGh1bWIoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbgogICAgIHJldHVybiByYzsKIH0K
IAotdm9pZCBSZW5kZXJUaGVtZVdpbkNFOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lV2luQ0U6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNv
bHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKIHsK
ICAgICBjb25zdCBpbnQgcGFkZGluZyA9IDE7CiAgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0KExl
bmd0aChwYWRkaW5nLCBGaXhlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luQ0UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbkNFLmgKaW5kZXggYTdkZjQ4OTY3ZmFlYzYzZmU5ODJiNzBhYmI3MDlhOThmZmFhYzNm
Yy4uZGVlMjM3ZWFmMmViMmRkNDlhYTQzOWNmNWI4ZDhlYjUyOGUxNDhlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5oCkBAIC04MSw5ICs4MSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCiAgICAg
ICAgIHsgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOyB9CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVM
aXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIApAQCAtOTMsMjYgKzkzLDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgcG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNl
YXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFy
Y2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3Jh
dGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHRoZW1lQ2hhbmdlZCgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHls
ZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3Qg
e30KLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdCB7fQotICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3Qge30KKyAgICAgICAgdmlydHVhbCB2b2lkIGFk
anVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqKSBjb25zdCB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxl
KFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdCB7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlcios
IFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0IHsgfQogCiAgICAgICAgIHN0YXRp
YyB2b2lkIHNldFdlYktpdElzQmVpbmdVbmxvYWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAzODM3YTcwMzI3NzBkOGI3ZmE4
MzUyM2I5ZTY0NWJjY2RlN2Q2MzIzLi41ZDcxYjk2NzEyMDFlYWMzNDVjMTNhMjlkZmZkODBiMjAy
ZTM0YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBib29sIFJlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNv
bnN0IFJlbmRlclN0eWxlJiBvKSBjb25zdAogCiBib29sIFJlbmRlclN0eWxlOjppc1N0eWxlQXZh
aWxhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhpcyAhPSBDU1NTdHlsZVNlbGVjdG9yOjpz
dHlsZU5vdFlldEF2YWlsYWJsZSgpOworICAgIHJldHVybiB0aGlzICE9IFN0eWxlUmVzb2x2ZXI6
OnN0eWxlTm90WWV0QXZhaWxhYmxlKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHBzZXVkb0Jp
dChQc2V1ZG9JZCBwc2V1ZG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCmluZGV4IGNiOGJkYjRjYTQxMjlkYjI4MjE4NDU2OTFkOTg0ODY3N2NlZGIxODku
LmFiMzRhYWNhMmEyMDVmY2U1NjdjYjZmZjg0NjMyODdjNWYwNWY2OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMDUsMTMgKzEwNSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBzdGQ6Om1heDsKIAogY2xhc3MgQm9yZGVyRGF0
YTsKLWNsYXNzIENTU1N0eWxlU2VsZWN0b3I7CiBjbGFzcyBDb3VudGVyQ29udGVudDsKIGNsYXNz
IEN1cnNvckxpc3Q7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFpcjsKIGNsYXNzIFNoYWRvd0Rh
dGE7CiBjbGFzcyBTdHlsZUltYWdlOworY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OwogCiBjbGFzcyBDb250ZW50RGF0YTsKQEAgLTEyMiwxMiArMTIyLDEy
IEBAIGNsYXNzIFJlbmRlclN0eWxlOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJTdHlsZT4gewog
ICAgIGZyaWVuZCBjbGFzcyBBbmltYXRpb25CYXNlOyAvLyBVc2VkIGJ5IENTUyBhbmltYXRpb25z
LiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0ZWQgY29sb3Jz
LgogICAgIGZyaWVuZCBjbGFzcyBBcHBseVN0eWxlQ29tbWFuZDsgLy8gRWRpdGluZyBoYXMgdG8g
b25seSByZXZlYWwgdW52aXNpdGVkIGluZm8uCiAgICAgZnJpZW5kIGNsYXNzIEVkaXRpbmdTdHls
ZTsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8uCi0gICAgZnJp
ZW5kIGNsYXNzIENTU1N0eWxlU2VsZWN0b3I7IC8vIFNldHMgbWVtYmVycyBkaXJlY3RseS4KICAg
ICBmcmllbmQgY2xhc3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOyAvLyBJZ25vcmVzIHZp
c2l0ZWQgc3R5bGVzLCBzbyBuZWVkcyB0byBiZSBhYmxlIHRvIHNlZSB1bnZpc2l0ZWQgaW5mby4K
ICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I7IC8vIFVz
ZWQgYnkgQ1NTIGFuaW1hdGlvbnMuIFdlIGNhbid0IGFsbG93IHRoZW0gdG8gYW5pbWF0ZSBiYXNl
ZCBvZmYgdmlzaXRlZCBjb2xvcnMuCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclNWR1Jlc291cmNl
OyAvLyBGSVhNRTogTmVlZHMgdG8gYWx0ZXIgdGhlIHZpc2l0ZWQgc3RhdGUgYnkgaGFuZC4gU2hv
dWxkIGNsZWFuIHRoZSBTVkcgY29kZSB1cCBhbmQgbW92ZSBpdCBpbnRvIFJlbmRlclN0eWxlIHBl
cmhhcHMuCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclRyZWVBc1RleHQ7IC8vIEZJWE1FOiBPbmx5
IG5lZWRlZCBzbyB0aGUgcmVuZGVyIHRyZWUgY2FuIGtlZXAgbHlpbmcgYW5kIGR1bXAgdGhlIHdy
b25nIGNvbG9ycy4gIFJlYmFzZWxpbmluZyB3b3VsZCBhbGxvdyB0aGlzIHRvIGJlIHlhbmtlZC4K
ICAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHku
CisgICAgZnJpZW5kIGNsYXNzIFN0eWxlUmVzb2x2ZXI7IC8vIFNldHMgbWVtYmVycyBkaXJlY3Rs
eS4KIHByb3RlY3RlZDoKIAogICAgIGNsYXNzIFJlbmRlclN0eWxlQml0ZmllbGRzIHsKQEAgLTIx
OSw3ICsyMTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGF0YVJlZjxTVkdSZW5kZXJTdHlsZT4gbV9z
dmdTdHlsZTsKICNlbmRpZgogCi0vLyAhU1RBUlQgU1lOQyE6IEtlZXAgdGhpcyBpbiBzeW5jIHdp
dGggdGhlIGNvcHkgY29uc3RydWN0b3IgaW4gUmVuZGVyU3R5bGUuY3BwIGFuZCBpbXBsaWNpdGx5
SW5oZXJpdGVkKCkgaW4gQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKy8vICFTVEFSVCBTWU5DITogS2Vl
cCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3RvciBpbiBSZW5kZXJTdHlsZS5j
cHAgYW5kIGltcGxpY2l0bHlJbmhlcml0ZWQoKSBpbiBTdHlsZVJlc29sdmVyLmNwcAogCiAgICAg
Ly8gaW5oZXJpdAogICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aAppbmRleCBlOTVjNTViNjA2OGI1MWJmMzhmNjM4NTQ3Yzg1ODNmZGFiY2Q2ODQ1Li5hZTcyYmQ2
MGFhYjE4YmVjNDhhMTZlMjY1YTg0NDgxMDNhZGQyNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgK
QEAgLTM5LDcgKzM5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9u
TGlzdDsKLWNsYXNzIENTU1N0eWxlU2VsZWN0b3I7CiBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3Mg
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
QEAgLTUzLDYgKzUyLDcgQEAgY2xhc3MgU3R5bGVHcmlkSXRlbURhdGE7CiBjbGFzcyBTdHlsZU1h
cnF1ZWVEYXRhOwogY2xhc3MgU3R5bGVNdWx0aUNvbERhdGE7CiBjbGFzcyBTdHlsZVJlZmxlY3Rp
b247CitjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVUcmFuc2Zvcm1EYXRhOwogCiBj
bGFzcyBDb250ZW50RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IDAyOTBiYThiNWViNjcxNTdiY2Y4NjI3YWZh
NjdjOTQ5ZTkyZjJiYTkuLjlhN2IyM2IyY2I5Mzc1ZjVjM2MwNmY5N2U0YWE5ZTQ4MTM3NmU2OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmVUZXh0LmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6
Y29tcHV0ZU5ld1NjYWxlZEZvbnRGb3JTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjCiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVuZGVyZXItPmRvY3VtZW50KCk7CiAgICAgQVNTRVJU
KGRvY3VtZW50KTsKICAgICAKLSAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0g
ZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKTsKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVNlbGVj
dG9yID0gZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKTsKICAgICBBU1NFUlQoc3R5bGVTZWxlY3Rv
cik7CiAKICAgICAvLyBBbHRlciBmb250LXNpemUgdG8gdGhlIHJpZ2h0IG9uLXNjcmVlbiB2YWx1
ZSB0byBhdm9pZCBzY2FsaW5nIHRoZSBnbHlwaHMgdGhlbXNlbHZlcywgZXhjZXB0IHdoZW4gR2Vv
bWV0cmljUHJlY2lzaW9uIGlzIHNwZWNpZmllZApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgUmVu
ZGVyU1ZHSW5saW5lVGV4dDo6Y29tcHV0ZU5ld1NjYWxlZEZvbnRGb3JTdHlsZShSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBjCiAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbihzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkpOwogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYmV0dGVy
IGhhbmRsZSB0aGUgY2FzZSB3aGVuIHdlIGNvbXB1dGUgdmVyeSBzbWFsbCBmb250cyBiZWxvdyAo
YmVsb3cgMXB0KS4KLSAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKENTU1N0eWxl
U2VsZWN0b3I6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKGRvY3VtZW50LCBzY2Fs
aW5nRmFjdG9yLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkU2l6ZSgpLCBEb05vdFVzZVNtYXJ0TWluaW11bUZvckZvbnRTaXplKSk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShTdHlsZVJlc29sdmVyOjpnZXRDb21w
dXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShkb2N1bWVudCwgc2NhbGluZ0ZhY3RvciwgZm9udERl
c2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUo
KSwgRG9Ob3RVc2VTbWFydE1pbmltdW1Gb3JGb250U2l6ZSkpOwogCiAgICAgc2NhbGVkRm9udCA9
IEZvbnQoZm9udERlc2NyaXB0aW9uLCAwLCAwKTsKICAgICBzY2FsZWRGb250LnVwZGF0ZShzdHls
ZVNlbGVjdG9yLT5mb250U2VsZWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBjYzA3OTZjMmI1Y2ZjOWI1YTU3MGQw
NDc3Zjk5MzEzZGQ1OWNjNDNjLi5mOTRlZTg0MDRlYmQ4ZjljOGVkZTBiNDBlOWNhNTU0N2FmYjUy
NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBib29sIFNWR1JlbmRlclN1cHBvcnQ6OmlzT3Zl
cmZsb3dIaWRkZW4oY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgLy8gU1ZHIGRvZXNu
J3Qgc3VwcG9ydCBpbmRlcGVuZGVudCB4L3kgb3ZlcmZsb3cKICAgICBBU1NFUlQob2JqZWN0LT5z
dHlsZSgpLT5vdmVyZmxvd1goKSA9PSBvYmplY3QtPnN0eWxlKCktPm92ZXJmbG93WSgpKTsKIAot
ICAgIC8vIE9TQ1JPTEwgaXMgbmV2ZXIgc2V0IGZvciBTVkcgLSBzZWUgQ1NTU3R5bGVTZWxlY3Rv
cjo6YWRqdXN0UmVuZGVyU3R5bGUKKyAgICAvLyBPU0NST0xMIGlzIG5ldmVyIHNldCBmb3IgU1ZH
IC0gc2VlIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlCiAgICAgQVNTRVJUKG9iamVj
dC0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgIT0gT1NDUk9MTCk7CiAKICAgICAvLyBSZW5kZXJTVkdS
b290IHNob3VsZCBuZXZlciBxdWVyeSBmb3Igb3ZlcmZsb3cgc3RhdGUgLSBpdCBzaG91bGQgYWx3
YXlzIGNsaXAgaXRzZWxmIHRvIHRoZSBpbml0aWFsIHZpZXdwb3J0IHNpemUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCmlu
ZGV4IGI0YmQ4ZmIxNTU0N2Y0M2M5MGM2MDk0MmJmYzkyYTg0ZWNlMzIyYzEuLmYyNGZmNGMwMWM1
Y2M1ZTA1MjI1OGRjNmNhYTMxOTA5OWFlYjUxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCkBAIC0yODksNyArMjg5
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6Y29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoUmVu
ZGVyU3R5bGUqIHJlbmRlclN0eWxlKSBjb25zdAogCiAKIAotdm9pZCBSZW5kZXJUaGVtZVFTdHls
ZTo6YWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKIHsKICAgICAvLyBEaXRjaCB0aGUgYm9yZGVyLgogICAgIHN0eWxl
LT5yZXNldEJvcmRlcigpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVRU3R5
bGU6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBj
b25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RUZXh0QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjph
ZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgYWRqdXN0VGV4dEZpZWxkU3R5
bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBib29s
IFJlbmRlclRoZW1lUVN0eWxlOjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZVFTdHlsZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBSZW5k
ZXJUaGVtZVFTdHlsZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiBz
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAogewogICAgIC8v
IFdPUktBUk9VTkQgYmVjYXVzZSBodG1sLmNzcyBzcGVjaWZpZXMgLXdlYmtpdC1ib3JkZXItcmFk
aXVzIGZvciA8c2VsZWN0PiBzbyB3ZSBvdmVycmlkZSBpdCBoZXJlCiAgICAgLy8gc2VlIGFsc28g
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTkKQEAgLTU5NCw3ICs1
OTQsNyBAQCBib29sIFJlbmRlclRoZW1lUVN0eWxlOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2b2lkIFJlbmRlclRo
ZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3co
bnVsbHB0cik7CiB9CkBAIC02MjcsNyArNjI3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVFTdHlsZTo6
cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGksCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlk
ZXJUaHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgUmVuZGVyVGhlbWU6OmFkanVz
dFNsaWRlclRodW1iU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKICAgICBzdHlsZS0+
c2V0Qm94U2hhZG93KG51bGxwdHIpOwpAQCAtNjM5LDcgKzYzOSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVRU3R5bGU6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBpLAogICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBwaSwgcik7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsCit2b2lkIFJlbmRlclRo
ZW1lUVN0eWxlOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShTdHlsZVJlc29sdmVy
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlKSBjb25zdAogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVFTdHls
ZTo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEkKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKG8s
IHBpLCByKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJT
dHlsZSogc3R5bGUsCit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTZWFyY2hGaWVsZFJl
c3VsdHNEZWNvcmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVsZW1lbnQqIGUpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVR
U3R5bGUuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5
bGUuaAppbmRleCBhODNlMDJmNWEzOGNhMTYwOTEyNGYxMjMyYTYyNmE0ZjdmOTI1NjQzLi4wMjNh
N2M3MjFiNWQ3MDc0MmI4MWYxMjQ3MDA4MThkNWUwNjBlMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5oCkBAIC01MSwxOCAr
NTEsMTggQEAgcHVibGljOgogICAgIFFTdHlsZSogcVN0eWxlKCkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvcios
IFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RC
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAjaWYgRU5BQkxFKFBS
T0dSRVNTX1RBRykKICAgICAvLyBSZXR1cm5zIHRoZSBkdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9u
IGZvciB0aGUgcHJvZ3Jlc3MgYmFyLgpAQCAtNzEsMTcgKzcxLDE3IEBAIHByb3RlY3RlZDoKICNl
bmRpZgogCiAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTbGlkZXJUcmFja1N0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHlsZShTdHls
ZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZp
ZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hG
aWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25T
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICNpZm5kZWYgUVRfTk9f
U1BJTkJPWAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>